PayDay TuT by xyzcod2
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 jeSada 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;ako vec imate enum samo unutar njega dodate(NAPOMENA😛RIPAZITE,ZADNJI ENUM UVIJEK MORA BITI BEZ ZAREZA!)
pLevel,
pRespekti
pPaytimepa 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);//Zapisuje koliko igrac ima Paytime-a ,zapisuje ga u igracevu fajl datoteku
INI_WriteInt(File,"Respekti",PlayerInfo);//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);//Zapisuje koliko igrac ima Paytime-a ,zapisuje ga u igracevu fajl datoteku
INI_WriteInt(File,"Respekti",PlayerInfo);//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); //Zapisuje paytime
INI_Int("Respekti",PlayerInfo); //Zapisuje Respekte
INI_Int("Level",PlayerInfo); //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); //Zapisuje paytime-paydaypoene
INI_Int("Respekti",PlayerInfo); //Zapisuje respekte
INI_Int("Level",PlayerInfo);//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;
if(!IsPlayerConnected(i)) continue; //Ako je igrac konektiran na server igracu se broje payday poeni,ako nije,ne broje se
PlayerInfo ++; //dodaje mu se 1 payday poen
if(PlayerInfo == 40) //Broj payday poena koji igrac mora zadovoljavati da bi dobio placu, mozete promjeniti
{
PlayerInfo = 0;//PayTime mu se vraca na 0
PlayerInfo ++; //kada igrac primi placu dobit ce 1 respekt
new iskustvo = 0, osnova = 0, placa = 0; osnova = 100 + random(99); placa = osnova*PlayerInfo;//Osnovica place je 100+ random od 99,mozete promjeniti osnovicu po zelji
iskustvo = (PlayerInfo * 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 >= iskustvo)
{
PlayerInfo ++;
SetPlayerScore(i, PlayerInfo);
PlayerInfo = 0;
format(string, sizeof(string), "LEVEL UP | Presli ste na novi level, sada ste level %d", PlayerInfo);
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;
format(string,sizeof(string),"[PayDay: %i] [Respekti: %i] [Level: %i]",PlayerInfo,PlayerInfo,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 0x33CCFFAATUTORIAL 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.