[TuT] PayDay Sistem

Započeo Hitman, Mart 18, 2013, 22:25:49 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

UVOD
  • U ovom tutorialu ću vam pokazati kako napraviti PayDay sistem
  • Morate znati kako dodati nove varijable za učitavanje/spremanje jer ja to neću objaÅ¡njavati

VARIJABLE
  • Vi morate dodati varijable kako bi skripta pamtila level, respekte i paypoene.
  • Ovako to kod mene izgleda (ako vi imate drukčije morate si prilagoditi):

enum pInfo
{
        pLevel,
pRespekti,
        pPayPoeni
}:
new PI[MAX_PLAYERS][pInfo];


TIMER
  • Sada ćemo napraviti minutni timer, znači da svaku minutu igraču dodaje jedan pay poen.
  • Dodajte na vrh skripte:
new KillMinutniTimer;//minutni timer kill
  • Za početak dodajte pod OnGameModeInit:
KillMinutniTimer = SetTimer("MinutniTimer", 60000, 1);//jedna minuta
  • Zatim dodajte negdje u skriptu:

forward MinutniTimer();
public MinutniTimer()
{
        for(new playerid = (0), slotovi = GetMaxPlayers(); playerid != slotovi; ++ playerid)
{
               PI[playerid][pPayPoeni] ++; //dodaje igraču jedan pay poen nakon 1 minute
           if(PI[playerid][pPayPoeni] >= 30) //ako igrač ima viÅ¡e od 30 pay poena dobija plaću
          {
PayDayPlaca(playerid);// plaća
              }
    }
        return 1;
}


PLAĆA - STOCK
  • Sada ćemo napraviti stock za plaću.
  • Nakon Å¡to igrač skupi 30 pay poena dobiva plaću te jedan respekt.

stock PayDayPlaca(playerid)
{
        new SljedeciLvl, string[128];
    PI[playerid][pRespekti] ++;//dodaje igraču jedan respekt

        if(PI[playerid][pPayPoeni] >= 30)//ako igrač ima viÅ¡e od 30 pay poena vraća mu ih na 0
{
PI[playerid][pPayPoeni] = 0;//stavlja igraču pay poene na 0
}

        SljedeciLvl = 3 * PI[playerid][pLevel] + 1;
if(PI[playerid][pRespekti] >= SljedeciLvl)//ako igrač ima više respekta od zadanog iznad
{
    PI[playerid][pLevel] ++;//dodaje igraču level+
    PI[playerid][pRespekti] = 0;//vraća igraču respekte na 0
    SetPlayerScore(playerid, PI[playerid][pLevel]);//postavlja igraču level
            format(string,sizeof(string),"Cestitamo, presli ste na level %i!", PI[playerid][pLevel]);
            SendClientMessage(playerid, -1, string);//Å¡alje igraču poruku
}

        new osnova = 0, iznosplace = 0; osnova = 55 + random(99); iznosplace = osnova*PI[playerid][pLevel];//ovo je za pare, to valjda znate neću objaÅ¡njavati
        format(string,sizeof(string),"Iznos vase place je: %i", iznosplace);
        SendClientMessage(playerid, -1, string);//Å¡alje igraču poruku
        return 1;
}


KRAJ
  • Pod OnGameModeExit dodajte:
KillTimer(KillMinutniTimer);//uništava timer

  • Pod OnPlayerDisconnect dodajte:
PI[playerid][pLevel] = (-1); PI[playerid][pRespekti] = (-1); PI[playerid][pPayPoeni] = (-1);
  • Ja sam stavio da vam u plaći samo dolaze pare, vi možete dodati joÅ¡ Å¡to želite, itd.
  • Ako ugledate neku greÅ¡ku u tutorialu, javite da ispravim.
  • Ukoliko vam neÅ¡to nije jasno, slobodno pitajte.
Poslednja Izmena: Februar 26, 2014, 12:32:49 POSLE PODNE od Hitman

Odlicno! :) Bravo matori :D
RESPECT :
Vegas & C++



trebao si objasniti dali placa dolazi pojedinacno kada igrac skupi 30 payday pojena ili svakih sat svima dolazi
al uglavnom lijep tut
Pravim RP,DM,TDM,STUNT, Freeroam modove od 0 za pare, nacini placanja : Paypal ili banka

Citat: N1XTON poslato Mart 18, 2013, 23:16:45 POSLE PODNE
trebao si objasniti dali placa dolazi pojedinacno kada igrac skupi 30 payday pojena ili svakih sat svima dolazi
al uglavnom lijep tut

Može se zaključit da dolazi kada skupi 30 pay poena + naveo sam
Hvala :)
Poslednja Izmena: Mart 18, 2013, 23:30:30 POSLE PODNE od hitman

Dobar tutorijal ;) No imas gresku public MinutniTimer() bi trebao ici public MinutniTimer(playerid)

Citat: pllopen poslato Mart 19, 2013, 00:07:08 PRE PODNE
Dobar tutorijal ;) No imas gresku public MinutniTimer() bi trebao ici public MinutniTimer(playerid)

Nema on nikakvu gresku neg ti neznas citat kod....

forward MinutniTimer();
public MinutniTimer()
{
        for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

kao sta vidis kad je otvorio zagradu stavio je tj. definirao je playerid
for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

stoga u MinutniTimer() netreba u zagradu playerid ....

btw...solidan tutorial hitman samo tako nastavi

Citat: |W|SoaD123 poslato Mart 19, 2013, 07:39:24 PRE PODNE
Citat: pllopen poslato Mart 19, 2013, 00:07:08 PRE PODNE
Dobar tutorijal ;) No imas gresku public MinutniTimer() bi trebao ici public MinutniTimer(playerid)

Nema on nikakvu gresku neg ti neznas citat kod....

forward MinutniTimer();
public MinutniTimer()
{
        for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

kao sta vidis kad je otvorio zagradu stavio je tj. definirao je playerid
for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

stoga u MinutniTimer() netreba u zagradu playerid ....

btw...solidan tutorial hitman samo tako nastavi
E jucer mu tako nije bilo danas je to izmjenio...

Citat: |W|SoaD123 poslato Mart 19, 2013, 07:39:24 PRE PODNE
Citat: pllopen poslato Mart 19, 2013, 00:07:08 PRE PODNE
Dobar tutorijal ;) No imas gresku public MinutniTimer() bi trebao ici public MinutniTimer(playerid)

Nema on nikakvu gresku neg ti neznas citat kod....

forward MinutniTimer();
public MinutniTimer()
{
        for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

kao sta vidis kad je otvorio zagradu stavio je tj. definirao je playerid
for(new playerid = 0;playerid < GetMaxPlayers();playerid++)

stoga u MinutniTimer() netreba u zagradu playerid ....

btw...solidan tutorial hitman samo tako nastavi

Da, ispravio sam.

@pllopen hvala Å¡to si me podsjetio :)

ado97