[TuT] PayDay poeni[FIXED]

Započeo xyzcod2, April 18, 2013, 09:05:00 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

PayDay TuT by xyz


Posto vidim da vecina vise voli radit modove od 0 pa im treba PayDay sistem.Odlucio sam da napravi jedan mali tutorial za njih.
Znaci u ovom tutorialu naucit cete napraviti payday.Radit cemo jednostavan,a izgledat ce ovako:znaci kada igrac sakupi 30 minuta igre dobija 300$,te cemo dodati da igrac moze pogledati broj svojih minuta/payday-a u statsu kada upise /stats.Pa krenimo


POTREBNO:
-SISTEM SPREMANJA-REG/LOG SISTEM PO MOGUCNOSTI SA SPREMANJEM,AKO NEMATE POKUSAJTE NAPRAVITI,PO NEKOM TUT-U
-ZCMD PROCESOR KOMANDI


1. Korak-namjestanje timer-a
Za pocetak cemo pod public OnGameModeInit dodati timer
SetTimer("minute",1000*60,true);//minute=ime timera,*60 koliko sekundi treba za 1 payday poen,mozete umjesto 1000*60 staviti 60000 isto je

Krenimo dalje
2. Korak-zapisivanje PayDay poena u igracev fajl kada izade/ude(INI)
Prvo trebate napraviti enum
enum pInfo
{

pPaytime
};
new PlayerInfo[MAX_PLAYERS][pInfo];

ako vec imate enum samo unutar njega dodate(NAPOMENA:PRIPAZITE,ZADNJI ENUM UVIJEK MORA BITI BEZ ZAREZA!)
pPaytime
pa krenimo dalje,sada pod onplayerdisconnect dodajte
   new INI:File = INI_Open(UserPath(playerid)); //Zapisuje podatke u igracevu fajl datoteku
INI_SetTag(File,"data"); //Takoder zapisuje podatke u igracevu fajl datoteku
INI_WriteInt(File,"Paytime",PlayerInfo[playerid][pPaytime]); //Zapisuje koliko igrac ima Paytime-a ,zapisuje ga u igracevu fajl datoteku
return 1;

kod mene je to ovako:
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open(UserPath(playerid)); //Zapisuje podatke u igracevu fajl datoteku
INI_SetTag(File,"data"); //Takoder zapisuje podatke u igracevu fajl datoteku
INI_WriteInt(File,"Paytime",PlayerInfo[playerid][pPaytime]); //Zapisuje koliko igrac ima Paytime-a ,zapisuje ga u igracevu fajl datoteku
return 1;
}

zatim pod stock gdje spremate podatke dodajte

INI_Int("Paytime",PlayerInfo[playerid][pPaytime]);
return 1;

kod mene to izgleda ovako:
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Paytime",PlayerInfo[playerid][pPaytime]);
return 1;
}

sada pod ondialogresponse gdje vam je register dialog dodate
INI_WriteInt(File,"Paytime",0);
kod mene je to ovako
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registracija","REGISTER TEKS-NEBITAN JE","Registriraj","Odustani"); //Tekst koji se prikazuje prilikom registracije u dialog-nebitan je u ovom tutorialu,naveo sam ga da pokazem kako je to kod mene
new INI:File = INI_Open(UserPath(playerid)); //Otvara/zapisuje u igracevu fajl datoteku(ni sam neznam xd)
INI_SetTag(File,"data"); //Zapisuje u igracevu fajl datoteku
INI_WriteInt(File,"Paytime",0);//Zapisuje u igracevu fajl datoteku
INI_Close(File); //Zatvara fajl
}
}

Zavrsili smo sa spremanjem,sada krecemo da dobivanje place

3. Korak-izrada public-a,dobivanje place
Negdje u modu napravite public
public minute()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue; //Ako je igrac konektiran na server igracu se broje payday poeni,ako nije,ne broje se
PlayerInfo[i][pPaytime] ++; //Dodaje se 1 payday poen nakon 1 minute
if(PlayerInfo[i][pPaytime]==30) //Broj payday poena koji igrac mora zadovoljavati da bi dobio placu
{
PlayerInfo[i][pPaytime] = 0;
SendClientMessage(i,COLOR_LIGHTBLUE,"Payday. Zaradili ste 300$."); //Ispisuje igracu poruku da je sakupio 30 payday poena te da je dobio 300$
GivePlayerMoney(i,300); //Daje igracu 300$,mozete promjeniti
}
}
return 1;
}

To smo sada zavrsili,sada nam slijedi 4. ujedno i zadnji korak a to je radenje prikaza broja payday poena igracu.

4. Korak-izrada prikaza broja payday poena igracu
Sada cemo napraviti komandu sa ZCMD procesorom.
CMD:stats(playerid,params[])
{
new string[128];
format(string,sizeof(string),"[PayDay: %i]",PlayerInfo[playerid][pPaytime]);//Iscitava paytime sa igracevog fajla te ispisuje u numerickom obliku
SendClientMessage(playerid,COLOR_LIGHTBLUE,string); //Ispisuje u numerickom obliku
return 1;
}


evo i definicija boje ako nemate
#define COLOR_LIGHTBLUE 0x33CCFFAA

Eto ovo je sve od tutoriala,nadam se da sam vam pomogao,ako imate bilokakvih pitanja,problema obratite se ovdje u topicu ili na PP/PM.
FIXANO!!!-Doraden dio koji falio!
Poslednja Izmena: April 19, 2013, 06:51:24 PRE PODNE od [BS:RP]xyzcod2


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

dobar
pohvale
bas mi je ovo SAD trebalo :D
Mislim dakle Boze
Na Zari sve i svasta

hvala,nadam se da je pomoglo :D
Poslednja Izmena: April 20, 2013, 12:43:38 POSLE PODNE od [BS:RP]xyzcod2


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

Stavi da nakom odredjenog broja respekata digne mu se lvl biti ce bolje
Mislim dakle Boze
Na Zari sve i svasta

FIXANO !!!
Poslednja Izmena: April 19, 2013, 06:52:14 PRE PODNE od [BS:RP]xyzcod2


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!




[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!




[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

vrtis kroz 500 igraca, pa tek onda proveravas da li je igrac konektovan, dok se i dalje vrtis kroz 500 igraca, inace ovako tut nije los, samo ispravi te neke greskice

Citat: Blaeks poslato April 19, 2013, 18:35:06 POSLE PODNE
vrtis kroz 500 igraca, pa tek onda proveravas da li je igrac konektovan, dok se i dalje vrtis kroz 500 igraca, inace ovako tut nije los, samo ispravi te neke greskice
hvala,na sto tocno mislis?nekontam ovo sto si napiso


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

public minute()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue; //Ako je igrac konektiran na server igracu se broje payday poeni,ako nije,ne broje se
PlayerInfo[i][pPaytime] ++; //Dodaje se 1 payday poen nakon 1 minute
if(PlayerInfo[i][pPaytime]==30) //Broj payday poena koji igrac mora zadovoljavati da bi dobio placu
{
PlayerInfo[i][pPaytime] = 0;
SendClientMessage(i,COLOR_LIGHTBLUE,"Payday. Zaradili ste 300$."); //Ispisuje igracu poruku da je sakupio 30 payday poena te da je dobio 300$
GivePlayerMoney(i,300); //Daje igracu 300$,mozete promjeniti
}
}
return 1;
}
znaci ovde vrtis 500 igraca for(new i=0; i<MAX_PLAYERS; i++) dok si mogao foreachom, onda ispod toga tek proveravas konekciju igraca..

Citat: Blaeks poslato April 19, 2013, 18:39:50 POSLE PODNE
public minute()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue; //Ako je igrac konektiran na server igracu se broje payday poeni,ako nije,ne broje se
PlayerInfo[i][pPaytime] ++; //Dodaje se 1 payday poen nakon 1 minute
if(PlayerInfo[i][pPaytime]==30) //Broj payday poena koji igrac mora zadovoljavati da bi dobio placu
{
PlayerInfo[i][pPaytime] = 0;
SendClientMessage(i,COLOR_LIGHTBLUE,"Payday. Zaradili ste 300$."); //Ispisuje igracu poruku da je sakupio 30 payday poena te da je dobio 300$
GivePlayerMoney(i,300); //Daje igracu 300$,mozete promjeniti
}
}
return 1;
}
znaci ovde vrtis 500 igraca for(new i=0; i<MAX_PLAYERS; i++) dok si mogao foreachom, onda ispod toga tek proveravas konekciju igraca..
hmm,jesi li ovako mislio
public minute()
{
for (new i = 0; i != MAX_PLAYERS; ++i)
{
    if (IsPlayerConnected(i))continue;
{
PlayerInfo[i][pPaytime] ++;
if(PlayerInfo[i][pPaytime]==20)
{
PlayerInfo[i][pPaytime] = 0;
SendClientMessage(i,COLOR_LIGHTBLUE,"Payday. Zaradili ste300$.");
GivePlayerMoney(i,300);
return 1;
}
}
}
return 1;
}


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!




[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!