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 😄
