[TUT] Rent vozila | Na odredeno vrijeme

Započeo Crazyn3ss
21. Jun 2013. Zaključano
5,671
pregleda
33
postova
[WW]ivan
5
Kingpin
21. Jun 2013.
TUT - Rent Vozila by Crazyn3ss



UVOD
Ovo je moj prvi tutorial, pa ako ima gresaka slobodno mi javite na PM/PP, ili ovdje u temi komentirajte. Ovaj tutorial radim, jer sam vidio da jednom clanu treba pomoc oko toga, pa da se ne mucim a i da skuzi lakse.



PA KRENIMO
Tutorial cemo radit uz pomoc YSI-a, komande ce biti u YCMD procesoru. Ukoliko nemate YSI, skinite jer ce vam biti potreban. Prvo sto cemo uradit je postavi include u mod a to ce te uradit ovako:
#include 
#include
Sljedece, moramo definirat neke stavri pa to uradimo ovako:
new Rent;//ova ce nam varijabla pomoc oko rentanja vozila
#define RENT_VOZILA 999//s ovim definiramo dialog
new rentvozila;// ovo ce nam pomoc pri oznacavanju rent vozila
Mozemo krenit na komandu. Komanda bi trebala izgledati ovako:
YCMD:iznajmivozilo(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(Rent != -1)//ovaj dio provjerava dali smo vec rentali neko od rentanih vozila
{
SCM(playerid, -1, "Vec si iznajmio vozilo, prvo vrati iznjamljeno pa mozes opet rentat");
return 1;
}
if(Rent == GetPlayerVehicleID(playerid))//ovaj dio provjerava dali je neko vec rentao to vozilo
{
SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
return 1;
}
if(GetPlayerVehicleID(playerid) >= rentvozila && GetPlayerVehicleID(playerid) <= rentvozila)//ovaj dio provjerava dal je igrac u vozilu za rentanje a ako nije, izbacit ce poruku da nije, a ako je izbacit ce dialog
{
SPD(playerid,RENT_VOZILA,DIALOG_STYLE_LIST, "Odaberite vrijeme","10 minuta\n20 minuta\n30 minuta\n60 minuta", "U redu", "Odustani");
}
else return SCM(playerid, -1, "Nisi u vozilu za iznjamljivanje vozila");
return 1;
}

Sljedi komanda s kojom vracamo rentano vozilo, prije vremena.
YCMD:vrativozilo(playerid, params[], help)
{
#pragma unused help
#pragma unused params
    new v= GetPlayerVehicleID(playerid);
if(Rent != -1)
{
if(v== Rent)
{
TogglePlayerControllable(playerid, 1);
  }
SetVehicleToRespawn(Rent);//respawna rentano vozilo
        RemovePlayerFromVehicle(playerid);//izbacuje igraca iz vozila
Rent = -1;//postavlja varijablu na -1 sto znaci da ce igrac ponovno moc rentat vozilo
SCM(playerid,-1,"Vratio si rentano vozilo");
      }
return 1;
}
Komanda s kojom napustamo vozilo, ukoliko necemo rentat:
YCMD:exit(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(GetPlayerVehicleID(playerid) >= rentvozila && GetPlayerVehicleID(playerid) <= rentvozila)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
return 1;
}
Komande su gotove, sad mozemo preci na dialog. To cete ubacit pod OnDialogResponse. Dialog cete ovako uradit:
if(dialogid == RENT_VOZILA)
{
if(response)
{
            if(listitem == 0)
{
  if(GetPlayerMoney(playerid) <  50) return SCM(playerid,-1,"Nema te dovoljno novca");//postavite kaku god ocete cijenu
  GivePlayerMoney(playerid,-50);//oduzima vam novac
                Rent = GetPlayerVehicleID(playerid);//pamti vam vozilo u kojem sjedit, tocnije id
                SCM(playerid,-1, "Rentao si vozilo na 10 minuta, ako ga zelis vratit kucaj /vrativozilo");
                TogglePlayerControllable(playerid, 1);//odmrzaje igraca je zamrznit bio u autu
                SetTimerEx("IstekRenta",600000, 0, "i", playerid);//timer koji se postavlja na 10 minuta
}
if(listitem == 1)
{
                if(GetPlayerMoney(playerid) <  100) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid,-100);
                Rent = GetPlayerVehicleID(playerid);
SCM(playerid,-1, "Rentao si vozilo na 20 minuta, ako ga zelis vratit kucaj /vrativozilo");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",1200000, 0, "i", playerid);
}
if(listitem == 2)
{
          if(GetPlayerMoney(playerid) <  150) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid,-150);
                Rent = GetPlayerVehicleID(playerid);
              SCM(playerid,-1, "Rentao si vozilo na 30 minuta, ako ga zelis vratit kucaj /vrativozilo");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",1800000, 0, "i", playerid);
}
if(listitem == 3)
{
            if(GetPlayerMoney(playerid) <  300) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid,-300);
                Rent = GetPlayerVehicleID(playerid);
SCM(playerid,-1, "Rentao si vozilo na 60 minuta, ako ga zelis vratit kucaj /vrativozilo");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",3600000, 0, "i", playerid);
}
}
}
Sada cemo uradit timer, koji sluzi kad istekne vrijeme, da igraca izbaci iz vozila i vozilo se respawna, takodjer se igracu mice rent varijabla:
forward IstekRenta(playerid);
public IstekRenta(playerid)
{
    Rent = -1;
    SetVehicleToRespawn(Rent);
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
return 1;
}
Sada cemo napravit da kad igrac ude u vozilu, da mu ispise, dal oce rentat ili ce napustit vozilo, taj dio cemo stavit pod callback OnPlayerStateChange:

    if(newstate == PLAYER_STATE_DRIVER)
    {
if(VecRentano(GetPlayerVehicleID(playerid)))//ovaj dio provjerava dali je neko vec rentao to vozilo
{
SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
return 1;
}
}
Ovo dodajte na kraj moda, to je za provjeravanje vozilda dali su rent vozila:
stock VecRentano(vehid)
{
foreach(Player,i)
{
if(Rent == vehid) return true;
}
return false;
}
Takodjer ovo stavite pod OnPlayerConnet
Rent = -1;
Jos je preostalo da vam pokazem kako cete stavljat vozila:
rentvozila = AddStaticVehicle(....);
rentvozila = AddStaticVehicle(....);
rentvozila = AddStaticVehicle(....);



ZAKLJUCAK
Mislim da je to to, ukoliko ima gresaka, molio bih da prijavite, nadam se da sam nekom i pomogo, barem se nadam tom jednom clanu koji trazio pomoc u vezi toga. Kad mi server krene u rad, vjerovatno da cu vise objavljivat neke tutove i fs-ove, sad trenunto nemam toliko vremena. Ovaj sam tut piso u dva navrata. Pozdrav svima 😄
[WW]ivan
5
Kingpin
21. Jun 2013.
David (Sabljak) A.k.A SABO(T) wrote on June 21, 2013, 8:28 pm:
Vidim lijepo sve objasnjeno koliko sam uhvatio

Samo dodaj #pragma unused za YCMD komande da ne baca igracima warninge..

ma to znaju i sami, al et stavit kad dodem..
Deleted User
Obrisan korisnik
22. Jun 2013.
Svaka čast , lijepo objašnjeno ..
Wucha
5
Underboss
22. Jun 2013.
Svaka cast ! Lepo objasnjeno i mnogo korisno  😁 !
[WW]ivan
5
Kingpin
22. Jun 2013.
Hvala vam 😄
xyzcod2
5
Underboss
23. Jun 2013.
lijepo 😄
BocaBajrovic1995
5
Kingpin
23. Jun 2013.
Korisno trebace pocetnicima 😄
Antonio_Leko
5
Kingpin
23. Jun 2013.
Odlican TuT
😉
[WW]ivan
5
Kingpin
23. Jun 2013.
hvala, bice jos od mene  😁
Cile
4
Made Man
23. Jun 2013.
odlicno objasnjeno 🙂
SEJFO
5
Godfather
23. Jun 2013.
Koristan tutorial i dobro objasnjen 🙂
Deleted User
Obrisan korisnik
24. Jun 2013.
Ok je tutorial ali nasao sam gresku (morao sam da trazim).
Ovaj deo ti ne valja:
if(Rent == GetPlayerVehicleID(playerid))//ovaj dio provjerava dali je neko vec rentao to vozilo
{
SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
return 1;
}

Tako neces proveriti sve igrace da li je neko vec rentao to isto vozilo, ja sam napravio funkciju:
stock VecRentano(vehid)
{
foreach(Player,i)
{
if(Rent == vehid) return true;
}
return false;
}

I onda bi umesto onog tvog koda islo:
if(VecRentano(GetPlayerVehicleID(playerid)))//ovaj dio provjerava dali je neko vec rentao to vozilo
{
SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
return 1;
}

Sa tom funkcijuom on ce proveriti da li je neko od igraca vec rentao to vozilo onako po tvome je proveravao samo od igraca koji je kucao komandu...
[WW]ivan
5
Kingpin
25. Jun 2013.
provjerit cu ujutro sad ne mogu 😄
Boyant
5
Underboss
25. Jun 2013.
10/10
[WW]ivan
5
Kingpin
25. Jun 2013.
ok gagi, popravit cu, cim dodem na komp, hvala

EDIT: popravio sam, hvala GAGI

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha