U ovom tutu cu vam pokazati kaok da napravite jednostavan event sistem slican kao na CLRP sa cpovima i sve
Zapocnimo
Pravljenje enuma
Prije svega da nebude zbrke sa vasim enumima napravicemo vlastiti enum za evente
Pri vrhu skripte dodajte sljecece:
enum eInfo
{
};
new EventInfo[MAX_PLAYERS][eInfo];
Da pojasnim .Enum je funkcija u koju mozete pisati svoje funkcije npr za registracija lozinka itd npr pLozinka, pAdmin, itd...
Izmedju zagradica u enumu dodacemo sljedece : pSFrace , to bi trebalo vako izgledati
enum eInfo
{
pSFrace
};
new EventInfo[MAX_PLAYERS][eInfo];
Da nebi imali problema sa warninzima na pocetak skripte ako nemate dodajte #pragma tabsize 0
New-s i Define
Sada ce mo definisati neke stvari pri vrhu skripte dodajte ovo
new sfpocetak = 0;
new sfc1,sfc2,sfc3,sfc4,sfc5,sfc6;
new RCP[MAX_PLAYERS];
new PrvoMjesto = 999;
new DrugoMjesto = 999;
new TreceMjesto = 999;
da pojasnim , new sfpocetak = 0; oznacava start sf racea, new sfc1,sfc2,sfc3,sfc4,sfc5,sfc6; To su definicije vozila koja ce mo koristiti, u ovom slucaju ja sam 6 vozila definiso,new RCP[MAX_PLAYERS]; to je new oznaka za Check pointe racea(crveni kruzici kroz koje se prolazi
opet iznad ovih new-ova dodajte definicije ovih boja ako ih nemate ako imate nemojte dodavati
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_LIGHTGREEN 0x9ACD32AA
#define COLOR_YELLOW 0xDABB3EAA
Timeri
Na redu su timeri. Pri vrhu dodajte slejdece
forward SfTimer();
forward SfTimer2();
forward SfTimer3(playerid);
To su kao definicije za publice koje ce mo dodati
Sada izmedju ostalih publica dodajte ovo
public SfTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(EventInfo[i][pGliserrace] == 1)
{
if(IsPlayerConnected(i))
{
GameTextForPlayer(i, "~b~2",1000,4);
SetTimer("SfTimer2",1000,0);
}
}
}
}
public SfTimer2()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(EventInfo[i][pGliserrace] == 1)
{
if(IsPlayerConnected(i))
{
GameTextForPlayer(i, "~b~1",1000,4);
SetTimer("SfTimer3",1000,0);
}
}
}
}
public SfTimer3(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(EventInfo[i][pGliserrace] == 1)
{
if(IsPlayerConnected(i))
{
TogglePlayerControllable(i, 1);
GameTextForPlayer(i, "~r~START !!!",1000,4);
SetPlayerRaceCheckpoint(playerid,0,X,Y,Z(prvog cpa),X,Y,Z(Drugog cpa),6);
RCP[playerid] = 1;
}
}
}
}
Da pojasnim, ovii timeri ce se pokretati komandom i svi koji su na eventu pojavit ce im se brojanje od 3 do start .
Zasto i 1 i 2 cp u jednom redu?
Dakle pravicemo Cpove koji pokazuju put jedan do drugog,prvi cp je onaj cp pocetni a kada ubacite kordinate drugog cpa ona kao strelica u prvom cpu pokazivat ce put na drugi cp da nebi bilo zabune
Cp-ovi
Dosli su na red CP-ovi.Dakle otidjite tamo gdje vam je istaliran gta i nadjite samp debug. pokrenuti ga i odlaziti na mjesta gdje ocete cpove i kucati /save
Onda otvoriti : MY documents ---> GTA San Andreas User Files ---> SAMP ---> savedpositions
Onda ce te unutra dobiti nesto ovakvo:AddPlayerClass(0,-2126.5186,-106.8968,35.3203,8.3661,0,0,0,0,0,0); //
To sto sam crnim oznacio to su kordinate vaseg cpa
Sada pod public OnPlayerEnterCheckpoint(playerid) dodajte sljedece:
if (!IsPlayerInAnyVehicle(playerid))
{
return 1;
}
if(RCP[playerid] == 0) { DisablePlayerCheckpoint(playerid); }
else if(RCP[playerid] == 1) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2073.3728,-67.0730,34.7398,-2025.0029,-67.3533,34.7379 ,6); RCP[playerid] = 2; }
else if(RCP[playerid] == 2) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2025.0029,-67.3533,34.7379,-2008.4272,20.5034,32.3119 ,6); RCP[playerid] = 3; }
else if(RCP[playerid] == 3) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2008.4272,20.5034,32.3119,-2007.0002,306.9487,34.4671 ,6); RCP[playerid] = 4; }
else if(RCP[playerid] == 4) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2007.0002,306.9487,34.4671,-2243.0217,317.2373,34.7387 ,6); RCP[playerid] = 5; }
else if(RCP[playerid] == 5) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2243.0217,317.2373,34.7387,-2257.8828,65.5433,34.7377 ,6); RCP[playerid] = 6; }
else if(RCP[playerid] == 6) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2257.8828,65.5433,34.7377,-2372.9924,-0.9352,34.7303,6); RCP[playerid] = 7; }
else if(RCP[playerid] == 7) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2372.9924,-0.9352,34.7303,-2328.8132,-193.8194,34.7381 ,6); RCP[playerid] = 8; }
else if(RCP[playerid] == 8) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2328.8132,-193.8194,34.7381,-2223.4875,-192.8943,34.7714 ,6); RCP[playerid] = 9; }
else if(RCP[playerid] == 9) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2223.4875,-192.8943,34.7714,-2163.9258,-88.4102,34.7379 ,6); RCP[playerid] = 10; }
else if(RCP[playerid] == 10) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2163.9258,-88.4102,34.7379,-2076.6343,-72.2841,34.7379 ,6); RCP[playerid] = 11; }
else if(RCP[playerid] == 11) { DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,1,-2076.6343,-72.2841,34.7379,-2076.6343,-72.2841,34.7379 ,8); RCP[playerid] = 12; }
else if(RCP[playerid] == 12)//Kraj SF
{
RCP[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
new string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(PrvoMjesto == 999)
{
PrvoMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste prvi i osvojili 10.000$");
GivePlayerMoney(playerid,10000);
foreach (Player, i)
{format(string, sizeof(string), "* Prvo mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string);}
}
else if(DrugoMjesto == 999)
{
DrugoMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste drugi i osvojili 5000$");
GivePlayerMoney(playerid,5000);
foreach (Player, i)
{format(string, sizeof(string), "* Drugo mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string);}
}
else if(TreceMjesto == 999)
{
TreceMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste treci i osvojili 2500$");
GivePlayerMoney(playerid,2500);
foreach (Player, i)
{format(string, sizeof(string), "* Trece mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string); SendClientMessage(i, COLOR_WHITE, "** SF Race je zavrsen **"); RCP[i] = 0; DisablePlayerRaceCheckpoint(i);}
}
}
Ja sam ubacio neke svoje kordinate Cpova a vi ubacite svoje dakle
SetPlayerRaceCheckpoint(playerid,1,X,Y,Z(cp1),X,Y,Z(cp2) ,8);
U ovom slucaju ja sam koristio 11 cpova , na kraju svakog cpa mozete vidjeti : RCP[playerid] = nekibroj; }
to je znak da igracu daje drugi cp a DisablePlayerRaceCheckpoint(playerid); unistava postojeci CP
Kada dodjete do kraja cpova onda postavite samo
else if(RCP[playerid] == zadnjibroj)//Kraj SF
i ispod toga ide ovako
{
RCP[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
new string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(PrvoMjesto == 999)
{
PrvoMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste prvi i osvojili 10.000$");
GivePlayerMoney(playerid,10000);
foreach (Player, i)
{format(string, sizeof(string), "* Prvo mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string);}
}
else if(DrugoMjesto == 999)
{
DrugoMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste drugi i osvojili 5000$");
GivePlayerMoney(playerid,5000);
foreach (Player, i)
{format(string, sizeof(string), "* Drugo mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string);}
}
else if(TreceMjesto == 999)
{
TreceMjesto = playerid;
SendClientMessage(playerid,COLOR_WHITE,"Zavrsili ste treci i osvojili 2500$");
GivePlayerMoney(playerid,2500);
foreach (Player, i)
{format(string, sizeof(string), "* Trece mjesto: %s.",name);SendClientMessage(i, COLOR_WHITE, string); SendClientMessage(i, COLOR_WHITE, "** SF Race je zavrsen **"); RCP = 0; DisablePlayerRaceCheckpoint(i);}
}
}
Znaci imaju poruke i nagrade , GivePlayerMoney to je funkcija za davanje novca igracu,SendClientMessage za slanje poruke igracu itd...
Komande
Na red su dosle komande,napravicemo sljedece komande . /eventi ---> za admina da pokrene event da se moze tp na njega , /sfrace ---> za admina da starta event i tom komandom pokrece one timere sto smo na pocetku pravili, /join ---> ako je admin otvorio port igrac ce se moci tpati do eventa, /sfracevozila ---> za stvaranje vozila za taj race ,/sfraceunisti ---> za unistavanje eventa i vozila
Na dno skripte ako koristite ZCMD dodajte :
CMD:eventi(playerid, params[])
{
if(!IsPlayerAdmin(playerid))//provjera dali je igrac rcon admin
{
SendClientMessage(playerid,0xAA3333AA,"Nisi rcon ulogovan Admin!"); return 1;//ako nije ne prikazuje mu dialog vec mu izbacuje poruku da nije rcon
}
if(IsPlayerAdmin(playerid))
{
ShowPlayerDialog(playerid,3000,DIALOG_STYLE_LIST ,"Eventi","SF race","Odaberi","Odustani");// pokazuje adminu dialog
}
return 1;
}
Zatim komanda za vozila, Napomena:otidjite u debug i koristite /v za stvaranje vozila udjite u vozilo odvezite ga gdje treba da stoji i kucajte /save, onda idite MY documents ---> GTA San Andreas User Files ---> SAMP ---> savedpositions i tamo ce te naci nesto ovakvo
AddStaticVehicle(522,-2076.6343,-72.2841,34.7379,271.2175,3,8); //
To sto sam oznacio debelim slovima to je id vozila kordinate vozila i rotacija vozila:
AddStaticVehicle(ID vozila,X,Y,Z,R,3,8);
Zatim na dno skripte dodajte
CMD:sfvozila(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,0xAA3333AA,"Nisi rcon ulogovan Admin!"); return 1;
}
sfc1 = CreateVehicle(411,-2099.7856,-67.7308,34.8990,272.0963,0,3,3600); //0
sfc2 = CreateVehicle(411,-2099.7454,-72.6821,34.8990,271.2906,0,3,3600); //1
sfc3 = CreateVehicle(411,-2109.7085,-68.0383,34.8990,270.4995,0,3,3600); //2
sfc4 = CreateVehicle(411,-2109.8630,-72.5671,34.8990,267.8230,0,3,3600); //3
sfc5 = CreateVehicle(411,-2119.4590,-67.8781,34.8990,270.0498,0,3,3600); //4
sfc6 = CreateVehicle(411,-2119.3311,-72.4200,34.9029,271.1670,0,3,3600); //5
return 1;
}
ovo createvehicle oznacava da stvara vozilo, a vi stavljajte rotaciju id i kordinate svoje ovo je samo primjer
Zatim komanda za unistavanje eventa
CMD:unistisf(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,0xAA3333AA,"Nisi rcon ulogovan Admin!"); return 1;
}
DestroyVehicle(sfc1);
DestroyVehicle(sfc2);
DestroyVehicle(sfc3);
DestroyVehicle(sfc4);
DestroyVehicle(sfc5);
DestroyVehicle(sfc6);
new sfpocetak = 0;
EventInfo[playerid][pSFrace] == 0
return 1;
}
Ova komanda unistava vozila port itd.. da neduzim
Zatim komanda za join
CMD:join(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
//if(PlayerInfo[playerid][pJailed] != 0) ubaci svoju funkciju za zatvor
//return SendClientMessage(playerid,COLOR_GREY,"{f9e8b7}Ovu komandu ne mozete koristiti dok ste u zatvoru!");
//}
//{
ShowPlayerDialog(playerid,3001,DIALOG_STYLE_LIST ,"Eventi","SF race","Odaberi","Odustani");
}
return 1;
}
Nezaboravite staviti svoju provjeru dali je igrac u zatvoru
Zatim komanda sfstart sa kojom pokrecemo one timere i pokrecemo trku
CMD:sfstart(playerid, params[])
{
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,0xAA3333AA,"Nisi rcon ulogovan Admin!"); return 1;
}
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
SendClientMessage(playerid, COLOR_YELLOW, "{0084e3}Aktivirao si SF Race !");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(EventInfo[i][pSFrace] == 1)
{
if(IsPlayerConnected(i))
{
SendClientMessage(i,COLOR_LIGHTBLUE, "{0084e3}SF Race pocinje za 3 sekunde !");
GameTextForPlayer(i, "~b~3",1000,4);
SetTimer("SfTimer",1000,0);
TogglePlayerControllable(i, 0);
}
}
}
return 1;
}
Eh sada pod ondialogresponse dodajte ovo :
if(dialogid == 3000)
{
if(response)
{
switch(listitem)
{
case 0://SFRACE
{
sfpocetak = 1;//stavlja funkciju da je poceo sf i da se moze portati do tamo
SendClientMessageToAll(COLOR_WHITE,"{F3FF02}Trka SF je pocela, kucajte {FF0000}/join {F3FF02}da se prijavite");
}
}
}
}
if(dialogid == 3001)
{
if(response)
{
switch(listitem)
{
case 0://sfrace
{
if(sfpocetak != 1)//provjera dali je poceo taj event
{
SendClientMessage(playerid,COLOR_WHITE,"Taj event nije jos poceo, ili je broj ucesnika ogranicen!");
ShowPlayerDialog(playerid,3001,DIALOG_STYLE_LIST ,"Eventi","SFrace","Odaberi","Odustani");
return 1;
}
else
{
SetPlayerPos(playerid, X,Y,Z);//kordinate gdje da se igrac spawna
EventInfo[playerid][pSFrace] = 1;//stavlja igracu provjeru da je na eventu
}
}
}
}
}
Da bi uspjesno radile komande /join i /evemto morate imati ovo
Nezaboravite izmjeniti kordinate
To bi bilo to ako sam sta izostavio ili pogresno uradio recite .
Da se ne pravite manglupi ovaj tut sam rucno piso i nisam izvvukao iz nikakvog moda ili uzeo za samp foruma
Uzivajte
Jako lep TUT,samo tako nastavi.
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 14:34:39 POSLE PODNE
Jako lep TUT,samo tako nastavi.
Tut sam objavio prije tacno 30 sec, i ti si za tih 30 sec nasao i procitao citav tut,hmm zanimljivo nabijanje postova . ali sve u svemu hvala
i opet se ponavlja ista prica, ovaj tut je dobar, nisam ga procitao celog ali sam povrsno citao i shvatio sam da je dobar, samo mi je opet malo cudno da u pawn skriptanju trazis pomoc oko Textdrawa a ovde razbijas tutorijale
lol enum nije funkcija, nije ti potrebno toliko timera, sve to možeš sa jednim i kod ti je strašno neuredan
Citat: Blaeks poslato Februar 06, 2013, 14:37:14 POSLE PODNE
i opet se ponavlja ista prica, ovaj tut je dobar, nisam ga procitao celog ali sam povrsno citao i shvatio sam da je dobar, samo mi je opet malo cudno da u pawn skriptanju trazis pomoc oko Textdrawa a ovde razbijas tutorijale
brate kazem ti da ja rijetko kad ulazim na BS ali moj burazer ulazi pa trazi pomoc
slay_ to sam pisao da bi pocetnicima bilo lakse,kako sam boogati sa 1 timerom mogao to sve uraditi ne lupaj gluposti djabe
Citat: N1XTON poslato Februar 06, 2013, 14:35:23 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 14:34:39 POSLE PODNE
Jako lep TUT,samo tako nastavi.
Tut sam objavio prije tacno 30 sec, i ti si za tih 30 sec nasao i procitao citav tut,hmm zanimljivo nabijanje postova . ali sve u svemu hvala
Za tih 30sec se moze svasta videti.To sto ti ides u prvi razred osnovne pa ti treba 30min da procitas tvoja je stvar.
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 16:25:02 POSLE PODNE
Citat: N1XTON poslato Februar 06, 2013, 14:35:23 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 14:34:39 POSLE PODNE
Jako lep TUT,samo tako nastavi.
Tut sam objavio prije tacno 30 sec, i ti si za tih 30 sec nasao i procitao citav tut,hmm zanimljivo nabijanje postova . ali sve u svemu hvala
Za tih 30sec se moze svasta videti.To sto ti ides u prvi razred osnovne pa ti treba 30min da procitas tvoja je stvar.
Ti ovde razbijas i uradivas dobre tutove al nmg ti vjerovat da si ti sam napravio zato jer stalno trazis pomoc oko TD-ova? ako ti je brat neka si napravi acc i eto :S
Citat: [Legend City] beNNy poslato Februar 06, 2013, 18:13:58 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 16:25:02 POSLE PODNE
Citat: N1XTON poslato Februar 06, 2013, 14:35:23 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 14:34:39 POSLE PODNE
Jako lep TUT,samo tako nastavi.
Tut sam objavio prije tacno 30 sec, i ti si za tih 30 sec nasao i procitao citav tut,hmm zanimljivo nabijanje postova . ali sve u svemu hvala
Za tih 30sec se moze svasta videti.To sto ti ides u prvi razred osnovne pa ti treba 30min da procitas tvoja je stvar.
Ti ovde razbijas i uradivas dobre tutove al nmg ti vjerovat da si ti sam napravio zato jer stalno trazis pomoc oko TD-ova? ako ti je brat neka si napravi acc i eto :S
aj nepravi se pametan vec prati malo forum i svatit ces da su registracije onemogucene trenutno
Citat: N1XTON poslato Februar 06, 2013, 18:32:30 POSLE PODNE
Citat: [Legend City] beNNy poslato Februar 06, 2013, 18:13:58 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 16:25:02 POSLE PODNE
Citat: N1XTON poslato Februar 06, 2013, 14:35:23 POSLE PODNE
Citat: Maxwellâ,,¢ poslato Februar 06, 2013, 14:34:39 POSLE PODNE
Jako lep TUT,samo tako nastavi.
Tut sam objavio prije tacno 30 sec, i ti si za tih 30 sec nasao i procitao citav tut,hmm zanimljivo nabijanje postova . ali sve u svemu hvala
Za tih 30sec se moze svasta videti.To sto ti ides u prvi razred osnovne pa ti treba 30min da procitas tvoja je stvar.
Ti ovde razbijas i uradivas dobre tutove al nmg ti vjerovat da si ti sam napravio zato jer stalno trazis pomoc oko TD-ova? ako ti je brat neka si napravi acc i eto :S
aj nepravi se pametan vec prati malo forum i svatit ces da su registracije onemogucene trenutno
trebo se je prije registrovat ili kontaktiraj Dude-a za to.
Sumnjam da si ti ovo radio....
ovo je ok samo mozda nebude radilo na svim modovima...
Sta hejtujete lika koj djavo? Bravo, lep tut samo nastavi
Citat: Dimi poslato Februar 06, 2013, 19:21:46 POSLE PODNE
Sta hejtujete lika koj djavo? Bravo, lep tut samo nastavi
mi ne hejtujemo lika niti kakvog djavola, nego kad bi malo zasao u njegov rad na forumu shvatio bi , a ne samo da pises bezvezne komentare
Citat: Blaeks poslato Februar 06, 2013, 19:50:00 POSLE PODNE
Citat: Dimi poslato Februar 06, 2013, 19:21:46 POSLE PODNE
Sta hejtujete lika koj djavo? Bravo, lep tut samo nastavi
mi ne hejtujemo lika niti kakvog djavola, nego kad bi malo zasao u njegov rad na forumu shvatio bi , a ne samo da pises bezvezne komentare
brate mozda nije njegov mozda jeste bar je pomogao , znam mu rad na forumu i napise ovde nixtonov brat vidjao sam 2-3 puta ja msm
Citat: Slay_ poslato Februar 06, 2013, 14:40:43 POSLE PODNE
lol enum nije funkcija, nije ti potrebno toliko timera, sve to možeš sa jednim i kod ti je strašno neuredan
Slažem se.
Citat: N1XTON poslato Februar 06, 2013, 14:41:58 POSLE PODNE
slay_ to sam pisao da bi pocetnicima bilo lakse,kako sam boogati sa 1 timerom mogao to sve uraditi ne lupaj [cenzura]osti djabe
O moguće je, to Å¡to ti to ne znaÅ¡ napraviti ne znaÄi da je nemoguće. ;)
e nebi da se svadjam tut sam napiso da bi pocetnicima pomogao a vi pricajte sta ocete boli me briga.hvala svima koji me podrzavaju
Lijep TuT..
hvala ti
Dobar tut posluzit ce novimea ;D
Odlican tut :)
Svaka Äast korisnO! :)
Citat: N1XTON poslato Februar 06, 2013, 14:41:58 POSLE PODNE
slay_ to sam pisao da bi pocetnicima bilo lakse,kako sam boogati sa 1 timerom mogao to sve uraditi ne lupaj [cenzura]osti djabe
Po ovome Å¡to si pisao se može isÄitati samo to da si i sam poÄetnik.
Jednim timerom si mogao kontrolirati sve što si ovdje sa više njih.
Primjer:
new
timerConnect[MAX_PLAYERS char] = {0},
lokalniTimer;
public OnGameModeInit()
{
lokalniTimer = SetTimer("LokalniTimer", 1000, true); // 1 sekunda, ponavljanje
return (true);
}
public OnPlayerConnect(playerid)
{
timerConnect{playerid} = (25); // Pokrecemo timer od 25 sekundi
return (true);
}
forward LokalniTimer();
public LokalniTimer()
{
for(new i, igraca = GetMaxPlayers(); i < igraca; ++ i) // ili foreach() ako koristis
{
if(IsPlayerConnected(i))
{
if(timerConnect{i} >= 1) // Provjerava dali je timer pokrenut
{
-- timerConnect{i}; // discount - odbrojavanje
if(timerConnect{i} == 0) // dali je timer odbrojan
{
timerConnect{i} = (0); // Gasimo timer - iako nije potrebno jer blok se izvrsava samo ako je timer vrijednost >= 1 - a ako je 0 onda nema potrebe za ovime, ali eto, da shvatis lakse...
SendClientMessage(i, -1, "Proslo je 25 sekundi od kada si se prikljucio na server!");
}
}
}
}
return (true);
}
Evo ti, malo prouÄi i prestani biti bezobrazan. Pozdrav!
EDIT: Evo ti primjer sa viÅ¡e timera ako i dalje nisi shvatio o Äemu se ovdje radi....
new
timerConnect[MAX_PLAYERS char] = {0},
lokalniTimer,
timerDeath[MAX_PLAYERS char] = {0};
public OnGameModeInit()
{
lokalniTimer = SetTimer("LokalniTimer", 1000, true); // 1 sekunda, ponavljanje
return (true);
}
public OnPlayerConnect(playerid)
{
timerConnect{playerid} = (25); // Pokrecemo timer od 25 sekundi
return (true);
}
public OnPlayerDeath(playerid, killerid, reason)
{
timerDeath{playerid} = (10); // pokrecemo timer od 10 sekundi
return (true);
}
forward LokalniTimer();
public LokalniTimer()
{
for(new i, igraca = GetMaxPlayers(); i < igraca; ++ i) // ili foreach() ako koristis
{
if(IsPlayerConnected(i))
{
if(timerConnect{i} >= 1) // Provjerava dali je timer pokrenut
{
-- timerConnect{i};
if(timerConnect{i} == 0)
{
timerConnect{i} = (0); // Gasimo timer
SendClientMessage(i, -1, "Proslo je 25 sekundi od kada si se prikljucio na server!");
}
}
else if(timerDeath{i} >= 1)
{
-- timerDeath{i};
if(timerDeath{i} == 0)
{
timerDeath{i} = (0);
SendClientMessage(i, -1, "Proslo je 10 sekundi od tvoje smrti!");
}
}
}
}
return (true);
}
public OnGameModeExit()
{
return KillTimer(lokalniTimer);
}
Zašto niko slike ne stavlja... :P ?
Citat: C R U Z. poslato Avgust 03, 2014, 14:44:21 POSLE PODNE
Zašto niko slike ne stavlja... :P ?
zašto refreshaš stare teme???????????????????????????????????????????????
jel t ividiš napomenu da ne refreshajes???
lock.