Friday - 18. 09. 2026 •  Ucitavanje...
Link #1 Link #2 Link #3 Link #4 Link #5

!!

Registruj se i otključaj pun sadržaj

Kao gost imaš ograničen pristup forumu.
Registracijom dobijaš pristup svim temama, možeš pisati poruke, učestvovati u diskusijama i biti dio naše zajednice.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - V01D

Pages: [1]
1
Filterscipts | Includes | Plugins / [FS] Object Attacher
« on: November 29, 2024, 07:17:50 PM »
Ime : Object Attacher ( koristi se za attach-ovanje objekata na igraca )
Tip (FS, INC, PLUGIN) : FS
Slike / Video : You are not allowed to view links. Register or Login
Izradio : XpDeviL
Download Link : You are not allowed to view links. Register or Login

2
SAMP Tutorijali / [TUTORIAL] Samp Voice
« on: November 24, 2024, 09:05:14 PM »
Samp Voice Tutorial

E ovako, vec dosta vas je sigurno culo za sampvoice, ubacivanje voice chat-a itd..
Odlucio sam da napravim ovaj tutorial opet sa razlogom na ima nesto malo detaljnije objasnjeno na
ovom forumu, pa da sami mozete iskoristiti za nesto svoje.


Pre svega, sta je samp voice?

- Samp voice je plugin i include koji omogucava implementaciju voice chat-a tacnije pricanja unutar samp igre.
- Za samp voice su potrebni server-side ( plugin i include ) i client-side ( fajl koji igrac skida i ubacuje u gta sa )


Za sta se koristi?

- Pricanje ingame, ali njegove mogucnosti su mnogo sire od toga, pored raznih voice kanala koje igraci mogu koristiti,
i dobra stvar ovoga je sto se moze staviti na skoro bilo koju tipku koja postoji na tastaturi


Gde se moze skinuti sampvoice?

You are not allowed to view links. Register or Login

Na github linku mozete naci server-side i client-side, kao i source kod client-side dela koji mozete build-ati i napraviti
neku svoju modifikaciju.


Kako da ubacim sampvoice u svoj server?

- Pre svega, u sampvoice pluginu je moguce napraviti 2 vrste stream-a, jedan globalni, drugi lokalni. Globalni nije vezan za lokaciju ili bilo sta slicno,
dok lokalni moze biti vezan za objekat, lokaciju, igraca ili slicno..

- Jako prosto, bice objasnjeno u kodu ispod
- Sada cu sa slicnim koracima objasniti i drugi nacin upotrebe ( oba slucaja cu staviti u jedan kod  i detaljno objasniti unutar koda )
- Na primer, u ovom slucaju zelimo da svaka banda i mafija na serveru imaju poseban voice chat izmedju sebe
- I takodje da mogu da se cuju globalno, bilo gde
- Ovo moze da sluzi kao radio za PD, radio za bande/mafije, moze da se koristi za razne stvari

Code: You are not allowed to view links. Register or Login
#include <sampvoice> //Prvo negde pri vrhu skripte include-amo sampvoice.inc

#define nekiKey                 0x58 //Ovo na sluzi za define KEY-a koji ce igrac pritisnuti za voice chat
#define orgKey                  0x42 //Ovo ce nam sluziti kao define za KEY koji ce igras pritiskati za org chat

//Izecemo i u obzir jednu promenljivu kada su u pitanju dinamicne organizacije ( sto vecina modova koristi )
#define MAX_ORG                 15 //Na primer

//I takodje uzecemo u obzir clana organizacije kao PlayerInfo[playerid][xClan]

// < ! >

new SV_LSTREAM:lstream[MAX_PLAYERS] = { SV_NULL, ... }; //Deklarisemo lokalni stream gde cemo da ubacujemo igrace koji su u blizini
new SV_GSTREAM:orgStream[MAX_ORG] = { SV_NULL, ... }; //Deklarisemo globalni stream, gde ubacujemo clanove iste organizacije


public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid) //Ovo je callback koji se poziva kada igrac pritisne activation key koji smo dodali
{
    if(keyid == nekiKey && lstream[playerid]) SvAttachSpeakerToStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvAttachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ako igrac pritisne orgKey, ubacuje ga u voice sa ostalim clanovima svoje organizacije
}

public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid) //Callback gada prestane da ga drzi
{
    if(keyid == nekiKey && lstream[playerid]) SvDetachSpeakerFromStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvDetachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //slican princip kao gore
}

// < ! >

public OnPlayerConnect(playerid) { //Kada se igrac connectuje na server

        if(!SvGetVersion(playerid)) SendClientMessage(playerid, -1, "Nemate validnu verziju SAMPA ( R1 ili R3 ) ili nemate voice chat!"); //Proverava verziju sampa i da li igrac ima voice chat
    else if(!SvHasMicro(playerid)) SendClientMessage(playerid, -1, "Nemate mikrofon za voice chat!"); //provera da li ima mikrofon
    else if((lstream[playerid] = SvCreateDLStreamAtPlayer(40.0, SV_INFINITY, playerid, 0xff0000ff, "L"))) { // red color

        SendClientMessage(playerid, -1, "Voice Chat uspesno ucitan, koristite tipku 'X' za pricanje!");
        SvAddKey(playerid, nekiKey);
        SvAddKey(playerid, orgKey); //Ovde dodajemo key-eve koji ce se koristiti

        //Ukoliko ispuni sve uslove, ubacuje ga u lokalni chat i dodaje key koji smo naveli gore
    }

        return 1;
}

public OnGameModeInit() {

        //Pri ucitavanju organizaciju dodajte sledece ( to mozete naci preko labela ili pickup-a za org u OnGameModeInit )
        orgStream[orgID] = SvCreateGStream(0xffff0000, "ORG CHAT");

        return 1;
}

public OnPlayerDisconnect(playerid) { //kada igrac izadje sa servera

        if(lstream[playerid]) { //Ako se nalazi u lokalnom stream-u
        SvDeleteStream(lstream[playerid]); //Izbacuje ga iz voice chat-a
        lstream[playerid] = SV_NULL;
    }

        return 1;
}

// < ! >
// Sada moramo napraviti nesto cime ce igrac organizacije zapravo da udje u taj stream, moze to da se radi
// Pri connectu ukoliko je igrac clan organizacije, da ga ubaci u taj stream
// I takodje kada zapravo ucitamo njegov account
if(PlayerInfo[playerid][xClan] >= 1) {

        SvAttachListenerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ubacuje ga u stream organizacije koje je clan
}

Kako promeniti neki key koji zelimo da koristimo?

- KEY-eve mozemo da menjamo koristeci ASCII tabelu i hex vrednosti odredjenih karaktera ( You are not allowed to view links. Register or Login )
- Sada, sve sto treba da uradimo je da izvucemo hexadecimalnu vrednost karaktera koji zelimo da koristimo
- Primer : Ako zelimo da koristimo slovo 'P' za pokretanje voice chat-a ( You are not allowed to view links. Register or Login )
- Isto vazi za svaki karakter, kada smo nasli odgovarajuci broj, dodamo 0x ispred njega i stavimo umesto naseg define-a za key

Zakljucak?

- Interesantan include i plugin koji nije za svakoga. Onaj koji zeli da koristi nadam se da ce pomocu ovoga uspeti da napravi nesto novo i zanimljivo koristeci plugin, posto ima ogroman broj mogucnosti koji koristimo samo kao lokalni chat.. Na GitHub linku imaju prikazane funkcije i za sta zapravo sluze. Sada je ostalo samo na vama na pustite masti na volju i odradimo nesto zanimljivo sa ovim :D <3

3
SAMP Tutorijali / [TUTORIAL] Ternary Operator
« on: November 24, 2024, 09:01:43 PM »
TERNARY OPERATOR UPOTREBA

Pravim ovaj tutorial zato sto ljudi idalje ne znaju zasto se koristi niti da uopste postoji ternary operator. Trudio sam se da objasnim najbanalnije moguce i najosnovnije tako da kada pocetnici vide da neko ovo koriste, ne pomisle da je neka crna magija u pitanju..

Code: You are not allowed to view links. Register or Login
new bool:isPlayerHelper[MAX_PLAYERS]; //Uzmimo za primer jednu bool promenljivu

//Negde u skripti joj dodelimo vrednost true ili false
isPlayerHelper[playerid] = true;


//Zatim primer ternary operatora mozemo videti u par primera :

CMD:jesamlihelper(playerid) { //Banalan primer u komandi

   SendClientMessage(playerid, -1, isPlayerHelper[playerid] ? "Jeste Helper" : "Nije helper");

   //Uzimamo primer SendClientMessage koja ima 3 argumenta

   // playerid -> ID igraca kome saljemo poruku
   // boja -> U ovom slucaju -1 ( BELA )
   // string -> Poruka koja se salje

   return 1;
}

E sada, u primeru iznad, zamenili smo argument string iz SendClientMessage funckije i iskoristili ternary operator u istoj

U prevodu proverili smo vrednost promenljive isPlayerHelper[playerid] i na osnovu vrednosti iste poslali odredjenu poruku

Ternary Operator je zapravo kraca verzija if/else provere, i moze dosta da skrati posao

Kako bi ovaj primer izgledao sa IF/ELSE ?

Code: You are not allowed to view links. Register or Login
CMD:jesamlihelper(playerid) { //Banalan primer u komandi

   if(isPlayerHelper[playerid]) {
      SendClientMessage(playerid, -1, "Jeste Helper");
   }
   else {
      SendClientMessage(playerid, -1, "Nije helper");
   }

   return 1;
}


Sta se zapravo desava?

Ternary operator funkcionise tako sto prvo postavimo odredjeni uslov, a zatim sta ce se desiti ako je uslov ispunjen ili nije ispunjen


Code: You are not allowed to view links. Register or Login
USLOV ? akoJeIspunjen : akoNijeIspunjen

Takodje, ternary operator se moze koristiti u raznim slucajevima, takodje jos jedan banalniji primer sa brojevima :

Code: You are not allowed to view links. Register or Login
new a = 3,
   b = 5;

new rezultat;

//Sada cemo da proverimo da li su a i b jednaki, ako jesu pomozicemo ih, ako nisu sabracemo ih i staviti vrednost u promenljivu rezultat

rezultat = (a == b) ? a * b : a + b;

//Ovde bi promenljiva rezultat imala vrednost 8

Nadam se da je sada malo jasnije cemu ovo sve sluzi, zasto se koristi i koliko je zapravo korisno za upotrebu

Ukoliko nekome bilo sta iz ovog tutoriala nije jasno, slobodno moze da pita

4
SAMP Tutorijali / [TUTORIAL] Y_TIMERS
« on: November 24, 2024, 08:56:03 PM »
Y_TIMERS
Posto vidim da ljudi idalje, iz bog zna kog razloga, koriste SetTimer i SetTimerEx, odlucio sam napraviti cool tutorial na temu Y_Timers koji su definitivno laksa i bolja varijanta..

NAMENJENO POCETNICIMA

Ovaj include se nalazi unutar YSI!

Pa da pocnemo..

POZIVANJE TIMERA

Pre svega, kako pozivamo najobcniji timer
Za pozivanje koristimo "defer"

Code: You are not allowed to view links. Register or Login
defer NekiTimer(vrednosti koje zelimo preneti);
Ovo deluje zbunjujuce, ali sada cu pokazati upotrebu u tipa robu banke..

Code: You are not allowed to view links. Register or Login
CMD:robbanka(playerid, params[])
{
defer BankaRobTimer(playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0x1874CDFF, "Zapoceo si pljacku banke!Ukoliko izadjes, pljacka ce se prekinuti!");
return 1;
}

Iznad se nalazi najprostija komanda za rob banke.. Pre svega, defer sluzi kao i SetTimer, pritom kod njega ne moramo da definisemo timer, vec samo da ga "upotrebimo"
Unutar
Code: You are not allowed to view links. Register or Login
( ) mozemo videti "playerid", znaci da prenosimo varijablu playerid, takodje mozemo preneti bilo koju varijablu i da pritom moze da se iskoristi unutar samog timera..

Kako oznaciti kraj timera??

Code: You are not allowed to view links. Register or Login
timer BankaRobTimer[90000](playerid)
{
        TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
        GivePlayerMoney(playerid, 90000);
}

Za to koristimo "timer", prosto, brzo, lako i jednostavno :D

Sta ovo sve znaci??

timer BankaRobTimer[90000](playerid) ->
                      timer -> Naznacavamo da je timer, da ne objasnjavam previse xD
                      BankaRobTimer -> Ovde navodimo ime timera
                      [90000] -> Broj u milisekundama nakon koga ce se timer zavrsiti
                      (playerid) -> varijabla koju smo preneli u timer

Sve ovo unutar timera :

Code: You are not allowed to view links. Register or Login
TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, 0x1874CDFF, "Uspesno si opljackao banku!");
        GivePlayerMoney(playerid, 90000);

Je zapravo ono sto se desi kada se timer zavrsi..

PTASK

Ovo je zanimljiva stvar, za sta sluzi PTASK?

PTASK je timer koji vrti za svakog igraca posebno, nesto nalik onoga sto vidjate na mnogo modova za PlayerTD-ove, banka, plata..

To je jedan nacin na koji moze da se koristi, on se ponavlja neogranicen broj puta ukoliko se ne zaustavi..

Code: You are not allowed to view links. Register or Login
ptask TimerIgrac[1000](playerid)
{
    new banka[10], zlato[10], plata[10], level[5];
    format(banka, 10, "%d$", PlayerInfo[playerid][pBankaNovac]);
    PlayerTextDrawSetString(playerid,BankaTD[playerid], banka);
    format(zlato, 10, "%dg", PlayerInfo[playerid][pBankaZlato]);
    PlayerTextDrawSetString(playerid, ZlatoTD[playerid], zlato);
    format(plata, 10, "%d$", PlayerInfo[playerid][pPlata]);
    PlayerTextDrawSetString(playerid, PlataTD[playerid], plata);
    format(level, 5, "%d", PlayerInfo[playerid][pLevel]);
    PlayerTextDrawSetString(playerid, LevelTD[playerid], level);
}

Ovo je jedan primer, na svaku jednu sekundu da se igracu "update-uju" tdovi za platu, zlato, level i novac u banci.. Ukoliko samo odradite ovo, timer ce sam da se automatski pokrene kada igrac udje na server, tako da ne morate da brinete gde ce te ga staviti itd itd..

TASK

Task je ista stvar kao i PTASK, ponavljajuci timer koji vrti za sve igrace.. Ovo bi mozda biti neke server poruke ili tako nesto, zavisi sta preferirate.

Takodje se koristi isto kao i PTASK, samo bez varijabli

Code: You are not allowed to view links. Register or Login
task ImeTimera[vreme]()
STOPIRANJE TIMERA

Ukoliko ipak zelite da zaustavite odredjeni timer, ide malo na cudniji nacin :/
Code: You are not allowed to view links. Register or Login
new Timer:NovoImeTimera; //Prvo cemo napraviti novu varijablu NovoImeTimera

NovoImeTimera = defer NasTimer(playerid); //Zatim cemo pokrenuti timer

stop NasTimer; //Koristimo "stop" da bi ga zaustavili kada to nama odgovara

Takodje, NasTimer koristimo kao i obican timer, pozivamo ga, zatim koristimo "timer" da bi oznacili sta ce se desiti kada se zavrsi
"Stop" koristimo kada zelimo da timer prestane a pritom ne dodje do kraja, tako da ukoliko ga "stopiramo", ono sto smo stavili da se desi u "timer" se nece ni desiti..

ZAKLJUCAK

Po meni, jako korisna stvar, pogotovo za pocetnike, takodje je mnogo "optimizovanija" nego SetTimer i SetTimerEx..
Svako ima svoje misljenje..
Prvi mi je tutorial, tako da prihvatam svaku kritiku.. Tutorial je takodje namenjen pocetnicima, tako da sam se potrudio pojasnim uz razne primere, sto bolje mogu.
Hvala na citanju <3 ;D

5
SA-MP Gamemode & Skripte / [GM] Valhalla RPG
« on: November 23, 2024, 06:53:12 PM »
Ime Gamemode-a : Valhalla
Skripter : V01D
Izvorni Skripter(GameMode) : V01D
Vrsta (RPG, DM, FR, RP) : RPG
Slike : You are not allowed to view links. Register or Login You are not allowed to view links. Register or Login You are not allowed to view links. Register or Login
Download Link : You are not allowed to view links. Register or Login

Pages: [1]

Vrati se na pocetak
SMF 2.0.19 | SMF © 2021, Simple Machines
Page created in 0.072 seconds with 16 queries.
ZBS © 2011 - 2024, Zapadni Balkan SA:MP
Weiss X 10.2 © 2014, Jade Works Studio
Footer background belongs to GTA Forums
SimplePortal 2.3.7 © 2008-2026, SimplePortal