[TuT] PayDay sistem[UPDATED]

Započeo xyzcod2, April 26, 2013, 19:02:56 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

PayDay TuT by xyzcod2 [UPDATED]

Ovaj Tutorial je UPDATE od http://balkan-samp.com/forum/index.php?topic=72352.0
U proslom Tutorial-u ste naucili napraviti jednostavan PayDay sistem u kojem je igrac dobivao samo placu.
Odlucio sam napraviti UPDATE pa eto.
U UPDATED verziji cete nauciti napraviti PayDay sistem sa dobivanjem place,dodavanjem respekta,odredeni respekt dobiva odredeni lvl i sve to sa spremanjem!

U ovom Tutorialu potrebno je:
-ZCMD procesor komandi
-SISTEM SPREMANJA-REG/LOG SISTEM PO MOGUCNOSTI SA SPREMANJEM,AKO NEMATE PREPORUCUJEM DA NAPRAVITE PO NEKOM TUTORIALU.


Pa krenimo !!!

1. Korak-TIMER

u public OnGameModeInit cemo 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

Sada smo namjestili Timer pa idemo dalje

2. Korak-ZAPISIVANJE PAYDAY POENA,RESPEKT-A I LEVEL-A U IGRACEV FALJ [INI]

Prvo trebamo napraviti enum
enum pInfo
{
      pLevel,
      pRespekti,
      pPaytime
};
new PlayerInfo[MAX_PLAYERS][pInfo];

ako vec imate enum samo unutar njega dodate(NAPOMENA:PRIPAZITE,ZADNJI ENUM UVIJEK MORA BITI BEZ ZAREZA!)

pLevel,
pRespekti
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
INI_WriteInt(File,"Respekti",PlayerInfo[playerid][pRespekti]);//Zapisuje koliko igrac ima Respekta,zapisuje ga u igracevu fajl datoteku
INI_WriteInt(File,"Level",GetPlayerScore(playerid));//Zapisuje igracev Level ,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
INI_WriteInt(File,"Respekti",PlayerInfo[playerid][pRespekti]);//Zapisuje koliko igrac ima Respekta,zapisuje ga u igracevu fajl datoteku
INI_WriteInt(File,"Level",GetPlayerScore(playerid));//Zapisuje igracev Level ,zapisuje ga u igracevu fajl datoteku
return 1;
}

zatim pod stock gdje spremate podatke dodajte

INI_Int("Paytime",PlayerInfo[playerid][pPaytime]); //Zapisuje paytime
INI_Int("Respekti",PlayerInfo[playerid][pRespekti]); //Zapisuje Respekte
INI_Int("Level",PlayerInfo[playerid][pLevel]); //Zapisuje Level

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]); //Zapisuje paytime-paydaypoene
INI_Int("Respekti",PlayerInfo[playerid][pRespekti]); //Zapisuje respekte
INI_Int("Level",PlayerInfo[playerid][pLevel]);//Zapisuje respekte
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,te mu postavlja payday poene na 0 kad se registrira
INI_WriteInt(File,"Respekti",0);//Zapisuje u igracevu fajl datoteku,te mu postavlja respekte na 0 kad se registrira
INI_WriteInt(File,"Level",1);//Zapisuje u igracevu fajl datoteku,te mu postavlja Level 1 kad se registrira
INI_Close(File); //Zatvara fajl
}
}

Zavrsili smo sa spremanjem,sada krecemo na dobivanje place,respekata,levela,payday poena

3. Korak-IZRADA PUBLIC-a,DOBIVANJE PLACE,RESPEKTA,PAYDAY POENA,PROMICANJE LEVELA


forward minute();
public minute()
{
foreach(Player, i)
{
    new string[128];
if(!IsPlayerConnected(i)) continue; //Ako je igrac konektiran na server igracu se broje payday poeni,ako nije,ne broje se
PlayerInfo[i][pPaytime] ++; //dodaje mu se 1 payday poen
if(PlayerInfo[i][pPaytime] == 40) //Broj payday poena koji igrac mora zadovoljavati da bi dobio placu, mozete promjeniti
{
PlayerInfo[i][pPaytime] = 0;//PayTime mu se vraca na 0
PlayerInfo[i][pRespekti] ++; //kada igrac primi placu dobit ce 1 respekt
    new iskustvo = 0, osnova = 0, placa = 0; osnova = 100 + random(99); placa = osnova*PlayerInfo[i][pLevel];//Osnovica place je 100+ random od 99,mozete promjeniti osnovicu po zelji
    iskustvo = (PlayerInfo[i][pLevel] * 2) + 2;
        format(string,sizeof(string),"Placa, radili ste 40 minuta i zaradili placu u iznosu od  $%i", placa);
        SendClientMessage(i, COLOR_LIGHTBLUE, string);//Å¡alje igraču poruku u COLOR_LIGHTBLUE boji
GivePlayerMoney(i, placa); //Daje igracu placu
if(PlayerInfo[i][pRespekti] >= iskustvo)
{
    PlayerInfo[i][pLevel] ++;
    SetPlayerScore(i, PlayerInfo[i][pLevel]);
    PlayerInfo[i][pRespekti] = 0;
format(string, sizeof(string), "LEVEL UP | Presli ste na novi level, sada ste level %d", PlayerInfo[i][pLevel]);
SendClientMessage(i, COLOR_LIGHTBLUE, string);
}
}
}
return 1;
}


Ja sam ovdje stavio  do Level-a 3 za koji trebate 6 respekta,vi mozete podesavati po volji!

4. Korak-STATS

CMD:stats(playerid,params[])
{
new string[128];
format(string,sizeof(string),"[PayDay: %i] [Respekti: %i] [Level: %i]",PlayerInfo[playerid][pPaytime],PlayerInfo[playerid][pRespekti],GetPlayerScore(playerid)); //Iscitava iz igracevog statsa paydaypoene,respekte i level
SendClientMessage(playerid,COLOR_LIGHTBLUE,string); //Ispisuje poruku u COLOR_LIGHTBLUE boji
return 1;
}


eto vam i za boju define
#define COLOR_LIGHTBLUE 0x33CCFFAA

TUTORIAL JE ZAVRSEN,NADAM SE DA VAM SE SVIDIO.
AKO NADETE BUG MOLIM DA MI KAZETE.AKO IMATE KAKVIH PITANJA ILI VAM NESTO NIJE JASNO SLOBODNO PITAJTE NA PP/PM ILI U POSTU.
Poslednja Izmena: Jul 21, 2014, 16:30:38 POSLE PODNE od 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!

mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut  :)


Citat: Markonו poslato April 26, 2013, 21:08:59 POSLE PODNE
Nije lose :)
Citat: Blaeks poslato April 26, 2013, 20:27:31 POSLE PODNE
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut  :)
hvala :D


[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!


hvala :D


[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!

D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(293) : warning 235: public function lacks forward declaration (symbol "minute")
D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(335) : error 017: undefined symbol "iznosplace"
D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(407) : warning 203: symbol is never used: "stats"

Citat: Niggaman poslato Maj 12, 2013, 22:22:12 POSLE PODNE
D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(293) : warning 235: public function lacks forward declaration (symbol "minute")
D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(335) : error 017: undefined symbol "iznosplace"
D:\Miro\Saved Games\Mirko\Selfmade\gamemodes\Quantum.pwn(407) : warning 203: symbol is never used: "stats"
iznos place ti je ovo:
new osnova = 0, placa = 0; osnova = 100 + random(99); placa = osnova*PlayerInfo[i][pLevel];//ovo je za pare, to valjda znate neau objašnjavati
iznosplace,to samo preimenujes u placa
a stats sto si radio?:P
daj mi komandu da vidim i to za prvi eror
Poslednja Izmena: Maj 12, 2013, 22:27:33 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!

CMD:stats(playerid,params[])
{
   new string[128];
   format(string,sizeof(string),"[PayDay: %i] [Respekti: %i] [Level: %i]",PlayerInfo[playerid][pPaytime],PlayerInfo[playerid][pRespekti],GetPlayerScore(playerid)); //Iscitava iz igracevog statsa paydaypoene,respekte i level
   SendClientMessage(playerid,COLOR_LIGHTBLUE,string); //Ispisuje poruku u COLOR_LIGHTBLUE boji
   return 1;
}


(407) : warning 203: symbol is never used: "stats"

jesi zatvorio zagradu u prijasnjem kodu(prije stats komande)?


[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!

jesam stvarno nezz u cemu sam pogrijesio

hvala brate ovo mi je trebalo.Koristim u svojem modu sto sam sad poceo radit :DD
Trenutni projekt: Miami Life Roleplay, radnja u LV
Bizz System 100%
House System 0%
Car Ownership 0%
Log/reg System 100%
Poslovi 10%
Anticheat 0%
Organizacije 10%
Event System 0%
Komande 15%
Ako zelite posjetiti server u izradi, javite mi se na PM

Citat: lowzje poslato Maj 29, 2013, 18:23:26 POSLE PODNE
hvala brate ovo mi je trebalo.Koristim u svojem modu sto sam sad poceo radit :DD
eto,drago mi je :D


[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!


Zbilja dobar tutorial, samo me zanima kako da se rijesim ovoga warninga:
C:\Users\Korisnik\Downloads\Nova mapa\My server\gamemodes\my.pwn(597) : warning 235: public function lacks forward declaration (symbol "minute")
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.


Dear Diary,
A chipmunk asked me my name today
I told him it was Joe
That lie will haunt me forever...