PARTNERI:
-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [TuT] Kiosk System  (Pročitano 1696 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže purgerrr

  • Transformer
  • *
  • Poruke: 119
[TuT] Kiosk System
« poslato: Januar 15, 2015, 15:23:06 posle podne »
System Kiosk                         System Kiosk                         System Kiosk                          System Kiosk

Ovaj system nisam ukrao nego sam sam radio kako sam umeo i snalazio se mozda neko ima isti ali nisam ukrao

Uvod

Prvo krenimo sa onim sta vam trebo a to je y_commands i naravno a_samp ako vec nemate to dodate pod #include <YSI\y_commands>
To vam treba za izdradu komande

Sada morate napraviti kioske u mta ili map editoru ako vec niste
dodajte u mod pokrenite server udite u njega odite ko kioska
stanite ispred njega di zelite da igrac kuca komandu
kada jeste napisite /save kiosk1
/save kiosk2 itd itd ovisno o vama koliko kioska zelite
kada jeste te kordinate ce vam se spremit u savedchepoionts to napisite u search i otvorite folder kasnije ce nam trebati

Kretanje sa radom

Moramo definirati dialog tako da bi igracu mogao izaci prozor sta bi htjeo da kupi
Dialog ce izgledati ovako http://prntscr.com/5sr387
#define DIALOG_KIOSK 1
napravili ste dialog dodali include sada krenimo sa komandom
YCMD:kiosk(playerid, params[], help) //kiosk je komanda mozete promjenit u /kupikiosk ili kak got
{
     if(IsPlayerConnected[playerid] == 0) return SCM(playerid,-1,"Nisi ulogiran Uloguj se"); // Ovdje skripta provjerava dali je igrac ulogiran na server
     if(!IgracNaKiosku(playerid)) return SCM(playerid,-1, "SIVA"Morate biti ispred kioska da biste kupili nesto!"); //ovaj stock ce nam trebati kasnije objasnit cu u stock sekciji
    {
    ShowPlayerDialog(playerid, DIALOG_KIOSK, DIALOG_STYLE_LIST, "Kiosk", "Slot1\nSlot2\nSlot3\nSlot4\nSlot5\nSlot6", "Kupi", "Odustani"); //kada igrac kuca /kiosk otvara mu dialog kao sto sam pokazao gore ovo slot1 itd promjenite po zelji tu ce biti lista stvari koje ce igrac kupovat
    }
return 1;
}

Bacamo se na stock

Stock radimo ovako
stock IgracNaKiosku(playerid)
{
    if(IsPlayerInRangeOfPoint(playerid, 3.0, -38.1826,1016.8539,19.7422)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, -181.1933,1170.7875,19.7500)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, 123.0862,1111.4149,13.6094)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y , z)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y , z)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y , z)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y , z)) return 1;
else if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y , z)) return 1;
return 0;
}

Znaci ovo sve pretvara u jednu funkciju a to je IgracNaKiosku da bezveze ne pisemo tamo 20 puta dali je igrac blizu kioska
Tako da nam ovo olaksa posao
To je ovo sta sam bio reko
     if(!IgracNaKiosku(playerid)) return SCM(playerid,-1, "SIVA"Morate biti ispred kioska da biste kupili nesto!"); //ovaj stock ce nam trebati kasnije objasnit cu u stock sekciji

Kada smo napravili stock sada radimo dialog

Njega dodajemo pod
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

if(dialogid == DIALOG_KIOSK)
{
    if(response)
    {
if(listitem == 0)
{
if(PlayerInfo[playerid][pCigare] != 0) return SCMF(playerid,-1,""CRVENA"[BF:HRP] "SIVA"Vec imas %d cigara prvo ih popusi!",PlayerInfo[playerid][pCigare]);
if(PlayerInfo[playerid][pNovacDzep] < 20) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 20$!");
PlayerInfo[playerid][pCigare] = 20;
g_NovacMinus(playerid,20);
SCM(playerid,-1,""ZELENA"Kupili ste cigare | Sada mozete zapliti cigaru (/zapalicigaru | /ugasicigaru)!");
SavePlayer(playerid);
}
if(listitem == 1)
{
if(PlayerInfo[playerid][pUpaljac] == 1) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Vec posedujes upaljac!");
if(PlayerInfo[playerid][pNovacDzep] < 10) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 10$!");
PlayerInfo[playerid][pUpaljac] = 10;
g_NovacMinus(playerid,10);
SCM(playerid,-1,""ZELENA"Kupili ste upaljac za 10$!");
SavePlayer(playerid);
}
if(listitem == 2)
{
if(PlayerInfo[playerid][pMobilni] == 0) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate mobilni telefon!");
if(PlayerInfo[playerid][pNovacDzep] < 20) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 20$!");
PlayerInfo[playerid][pMobKredit] += 20;
g_NovacMinus(playerid,20);
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Kupili ste 20 kredita za 20$!");
SavePlayer(playerid);
    }
    if(listitem == 3)
{
if(PlayerInfo[playerid][pMobilni] == 0) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate mobilni telefon!");
if(PlayerInfo[playerid][pNovacDzep] < 50) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 50$!");
PlayerInfo[playerid][pMobKredit] += 50;
g_NovacMinus(playerid,50);
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Kupili ste 50 kredita za 50$!");
SavePlayer(playerid);
    }
    if(listitem == 4)
{
if(PlayerInfo[playerid][pMobilni] == 0) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate mobilni telefon!");
if(PlayerInfo[playerid][pNovacDzep] < 100) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 100$!");
PlayerInfo[playerid][pMobKredit] += 100;
g_NovacMinus(playerid,100);
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Kupili ste 100 kredita za 100$!");
SavePlayer(playerid);
}
if(listitem == 5)
{
if(PlayerInfo[playerid][pSat] == 1) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Vec posedujes sat!");
if(PlayerInfo[playerid][pNovacDzep] < 130) return SCM(playerid,-1, ""CRVENA"[BF:HRP] "SIVA"Nemate dovoljno novca 130$!");
g_NovacMinus(playerid,130);
PlayerInfo[playerid][pSat] = 1;
SCM(playerid,-1,""ZELENA"Kupili ste sat za 130$ (/vreme)!!");
}
    }
    return 1;
}

e sada ja sam ovaj dialog uzeo iz svoje skripte koju koristim ali objasnit cu kako da vama bude lakse znaci ovako
Vi naravno ako imate neki system kao sto je pSat u enmu
Koristite ovako kako sam ja stavio vreme ako ne umete tako radite ovako
Npr
GivePlayerWeapon(playerid, 15, 1); //ovo ce igracu dati 1 Å¡taku za hodanje
GivePlayerMoney(playerid, -100); //ovdje smo stavili da igracu oduzme 100$ za staku
SendClientMessage(playerid, -1, "Kupili ste staku za 100$");
i tako radite dalje

Slot1 vam je listitem 0


Radimo Tekst u blizini kioska to radimo ovako
To dodajemo pod public ongamemodeinit
   CreateDynamic3DTextLabel(""SPLAVA"[ Kiosk ]\n"BELA"Da kupite kucajte /kiosk",0x9EC73DAA, Kordinate , 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);Kordinate promjenite kako zelite
To radite za sve kioske koje zelite samo dodaje nove linije
Vise od Dynamic 3d labelima LINK : http://wiki.sa-mp.com/wiki/Create3DTextLabel



Nadam se da ce nekome pomoci ;)