PayDay TuT by xyzcod2 [UPDATED]
Ovaj Tutorial je
UPDATE od http://balkan-samp.com/forum/index.php?topic=72352.0 (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 napravit
i 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-TIMERu 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-STATSCMD: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.
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut :)
Nije lose :)
Dobro ti je ovo :)
hvala :D
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
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)?
jesam stvarno nezz u cemu sam pogrijesio
hvala brate ovo mi je trebalo.Koristim u svojem modu sto sam sad poceo radit :DD
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
Hvala pomoci ce za edit
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.
dodaj na vrh forward minute();
hvala
Dobro je :)
Citat: Blaeks poslato April 26, 2013, 20:27:31 POSLE PODNE
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut :)
U stilu Pacina , on je to svima govorio xD :P
Dobar tut pohvale :)
Citat: [EG] Fa®kiaSâ,,¢ poslato Jul 23, 2013, 14:26:46 POSLE PODNE
Citat: Blaeks poslato April 26, 2013, 20:27:31 POSLE PODNE
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut :)
U stilu Pacina , on je to svima govorio xD :P
Dobar tut pohvale :)
ahahah,hvala :D
kako da se rijesim ovih errora :S
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(88) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(90) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(102) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(330) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(332) : error 017: undefined symbol "udb_hash"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(350) : error 017: undefined symbol "udb_hash"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(352) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(496) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(609) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(722) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(835) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(948) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1061) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1174) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1287) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1383) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1383) : error 079: inconsistent return types (array & non-array)
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1388) : warning 217: loose indentation
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1388) : error 029: invalid expression, assumed zero
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1388) : error 017: undefined symbol "UserPath"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1390) : warning 219: local variable "string" shadows a variable at a preceding level
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1391) : error 017: undefined symbol "playerid"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1393) : error 090: public functions may not return arrays (symbol "minute")
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1396) : warning 225: unreachable code
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1396) : error 029: invalid expression, assumed zero
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1396) : error 017: undefined symbol "udb_hash"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1398) : error 017: undefined symbol "buf"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1404) : error 017: undefined symbol "buf"
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1404) : error 029: invalid expression, assumed zero
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1404) : error 029: invalid expression, assumed zero
C:\Users\Kristijan\Desktop\CroStreets MOD\gamemodes\MOD.pwn(1404) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
19 Errors.
Evo skripta u pastebinu, koristio sam ovaj tutorial za reg/log sistem; http://balkan-samp.com/forum/index.php?topic=51652.0
http://pastebin.com/BKpg4S93
_________________________________________
Odlicno, nego samo me zanima. Vidim da je odradjeno do lvl 6.. Ako igrac ima veci lvl od 6, nece vise dobijati payday, lvl up ? Ili sta
Citat: |LaZaRe^ic| poslato Jul 21, 2014, 15:24:17 POSLE PODNE
Odlicno, nego samo me zanima. Vidim da je odradjeno do lvl 6.. Ako igrac ima veci lvl od 6, nece vise dobijati payday, lvl up ? Ili sta
mislim stvarno Äemu refresh stare teme godinu i neÅ¡to dana? molim te proÄitaj pravila foruma i svih podforuma. lock