Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[TuT] PayDay sistem[UPDATED]

Započeo xyzcod2
pre 12 godina
7,503
pregleda
24
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
xyzcod2
Underboss
pre 12 godina
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 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;

ako vec imate enum samo unutar njega dodate(NAPOMENA😛RIPAZITE,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);//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 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.
Blaeks_Biofor
Forum Don
pre 12 godina
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut  🙂
B-Line
Made Man
pre 12 godina
Nije lose 🙂
xyzcod2
Underboss
pre 12 godina
Markonו wrote on April 26, 2013, 7:08 pm:
Nije lose 🙂
Blaeks wrote on April 26, 2013, 6:27 pm:
mogao si koristiti foreach umesto MAX_PLAYERS, ali nema veze, lep tut  🙂

hvala 😄
Ivan_Ino
Kingpin
pre 12 godina
Dobro ti je ovo 🙂
xyzcod2
Underboss
pre 12 godina
hvala 😄
Niggaman
Rookie
pre 12 godina
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"
xyzcod2
Underboss
pre 12 godina
Niggaman wrote on May 12, 2013, 8:22 pm:
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;//ovo je za pare, to valjda znate neau objašnjavati

iznosplace,to samo preimenujes u placa
a stats sto si radio?😛
daj mi komandu da vidim i to za prvi eror
Niggaman
Rookie
pre 12 godina
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;
}


(407) : warning 203: symbol is never used: "stats"
xyzcod2
Underboss
pre 12 godina
jesi zatvorio zagradu u prijasnjem kodu(prije stats komande)?
Niggaman
Rookie
pre 12 godina
jesam stvarno nezz u cemu sam pogrijesio
lowzje
Rookie
pre 12 godina
hvala brate ovo mi je trebalo.Koristim u svojem modu sto sam sad poceo radit 😄D
xyzcod2
Underboss
pre 12 godina
lowzje wrote on May 29, 2013, 4:23 pm:
hvala brate ovo mi je trebalo.Koristim u svojem modu sto sam sad poceo radit 😄D

eto,drago mi je 😄
Mister.Scripter
Wheel Man
pre 12 godina
Hvala pomoci ce za edit
lxexo
Hustler
pre 12 godina
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.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava