Rent system

Započeo TONY x
pre 6 godina
1,286
pregleda
11
postova
tonimacak518
Enforcer
pre 6 godina
Problem(error/warning): Problem je oko rent systema. 1. Kada udjem ne freeza me i ne pokazuje mi poruku za rent.    2. Ako rentujem jedno i udjem u neko drugo umesto da kaze da vec imam jedno iznajmljeno, ono kaze da je to vozilo vec neko iznajmio (a nije). 3. Kada izadjem i opet udjem u svoje ispisuje da je to neko drugi rentovao.

Deo skripte: Ukoliko je potrebno poslacu i druge delove

public OnPlayerStateChange(playerid, newstate, oldstate)
{

    if(newstate == PLAYER_STATE_DRIVER)
    {
if(VecRentano(GetPlayerVehicleID(playerid)))
{
SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
  TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
}
}
return 1;
}


CMD:rent(playerid, params[])
{
if(Rent != -1)
{
SCM(playerid, ROZE, "Vec si iznajmio vozilo, prvo vrati iznjamljeno(/unrent) pa mozes opet rentat");
        TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
}
if(Rent == GetPlayerVehicleID(playerid))
{
SCM(playerid, CRVENA, "Neko je vec rentovao ovo vozilo !");
        TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
}
if(GetPlayerVehicleID(playerid) >= RentVozilo && GetPlayerVehicleID(playerid) <= RentVozilo)
{
SPD(playerid, DIALOG_RENT, DIALOG_STYLE_LIST, "Odaberite vreme","10 sec test      (100$)\n10 minuta      (150$)\n20 minuta      (200$)\n30 minuta      (300$)\n60 minuta      (350$)", ""zelena"U redu", ""crvena"Odustani");
}
else return SCM(playerid, CRVENA, "Nisi u RENT VOZILU !");

return 1;
}


case DIALOG_RENT:
{
if(response)
{
    new vehicleid;
    vehicleid = GetPlayerVehicleID(playerid);
            if(listitem == 0)
{
  if(Rent != -1)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
  if(GetPlayerMoney(playerid) <  100) return SCM(playerid,-1,"Nema te dovoljno novca");
  GivePlayerMoney(playerid, -200);
                Rent = GetPlayerVehicleID(playerid);
                SCM(playerid,-1, "Rentao si vozilo na 10 sec test, ako ga zelis vratit kucaj /unrent");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",10000, 0, "i", playerid);
                }
}
if(listitem == 1)
{
  if(Rent != -1)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
                if(GetPlayerMoney(playerid) <  150) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid,-100);
                Rent = GetPlayerVehicleID(playerid);
SCM(playerid,-1, "Rentao si vozilo na 10 minuta, ako ga zelis vratit kucaj /unrent");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",600000, 0, "i", playerid);
                }
}
if(listitem == 2)
{
  if(Rent != -1)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
          if(GetPlayerMoney(playerid) <  200) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid, -200);
                Rent = GetPlayerVehicleID(playerid);
              SCM(playerid,-1, "Rentao si vozilo na 20 minuta, ako ga zelis vratit kucaj /unrent");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",1200000, 0, "i", playerid);
                }
}
if(listitem == 3)
{
  if(Rent != -1)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
            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 30 minuta, ako ga zelis vratit kucaj /unrent");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",1800000, 0, "i", playerid);
                }

}
if(listitem == 4)
{
  if(Rent != -1)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
            if(GetPlayerMoney(playerid) <  350) return SCM(playerid,-1,"Nema te dovoljno novca");
                GivePlayerMoney(playerid, -350);
                Rent = GetPlayerVehicleID(playerid);
SCM(playerid,-1, "Rentao si vozilo na 60 minuta, ako ga zelis vratit kucaj /unrent");
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("IstekRenta",3600000, 0, "i", playerid);
                }
}
}
}



Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): nema potrebe
tonimacak518
Enforcer
pre 6 godina
Takodje sam zaboravio da stavim
stock VecRentano(vehid)
{
//foreach(new i : Player)
for(new i; i < MAX_PLAYERS; i++)
{
if(Rent == vehid) return true;
}
return false;
}


Ako treba jos nesto recite
Exnas.pwn
Godfather
pre 6 godina
Sto se tice freeza
TogglePlayerControllabe(playerid,0); // - Freeza igraca
TogglePlayerControllabe(playerid,1); // - unfreeza igraca


Za dalje mi se neda pisati msm da si zbagao to u stock VecRentano
tonimacak518
Enforcer
pre 6 godina
Pa gde može biti problem u vecrentano ?

Foreach nisam iskoristio već standardno
Exnas.pwn
Godfather
pre 6 godina
Pokusaj ovako mada nisam siguran da li ce da ti radi
 

public OnPlayerStateChange(playerid, newstate, oldstate)
{

    if(newstate == PLAYER_STATE_DRIVER)
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(Rent == vehid)
    {
    SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
  TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
    }
    }
}
return 1;
}
eSADâ„¢
Kingpin
pre 6 godina
Sto se tice freeze napravi  se tajmer


stock h_freeze(playerid) {

    TogglePlayerControllable( playerid,  0 );
    SetTimerEx( "u_freeze", 2000,  false,  "i", playerid );

}

forward u_freeze(playerid);
public u_freeze(playerid) {

TogglePlayerControllable(playerid, 1);

}


Drugo u komandi nemas provjeru za ulazak u rent vozilo
Tr ece
if(Rent != -1)

zamjeni s
if(Rent == -1)

da ti prikaze poruku da li si rent ili ne
Exnas.pwn
Godfather
pre 6 godina
anderson87 wrote on July 25, 2019, 7:35 pm:
Sto se tice freeze napravi  se tajmer


stock h_freeze(playerid) {

    TogglePlayerControllable( playerid,  0 );
    SetTimerEx( "u_freeze", 2000,  false,  "i", playerid );

}

forward u_freeze(playerid);
public u_freeze(playerid) {

TogglePlayerControllable(playerid, 1);

}


Drugo u komandi nemas provjeru za ulazak u rent vozilo
Tr ece
if(Rent != -1)

zamjeni s
if(Rent == -1)

da ti prikaze poruku da li si rent ili ne


Da li sam ja glup ili ti retardiran  😄 .Msm ja nikada nisam koristio tajmer za freeze i unfreeze, ne vidim ni potrebu koriscenja toga.
eSADâ„¢
Kingpin
pre 6 godina
002 wrote on July 25, 2019, 8:34 pm:
Da li sam ja glup ili ti retardiran  😄 .Msm ja nikada nisam koristio tajmer za freeze i unfreeze, ne vidim ni potrebu koriscenja toga.


Koga boli qrac sta ti koristis, ja sto sam mu napisao nista nije pogresno,  da sam mu dao nesto sto nema nikakve veze sa temom pa hajd mozda bi i bio retardiran al da me nazivas retardom zbog koristenja tajmera za freeze... tu je ocigledno ispalo da si ti glup ne ja
James_SmithXDl
OG Legend
pre 6 godina
zar ti nije lakse ovako? (dao sam ti primjer)
new Haze_VoziloRent,Haze_VoziloRentano;
// ongamemodeinit
Haze_VoziloRent = 1;
Haze_VoziloRentano = -1;

i onda tako primijenis da ne pozivas nonstop for petlju za igrače bezveze msm mozes ti i tako ali ovako je lakse bolje barem po meni, nadam se da si skontao na koji nacin mislim.
Exnas.pwn
Godfather
pre 6 godina
anderson87 wrote on July 25, 2019, 9:33 pm:
Koga boli qrac sta ti koristis, ja sto sam mu napisao nista nije pogresno,  da sam mu dao nesto sto nema nikakve veze sa temom pa hajd mozda bi i bio retardiran al da me nazivas retardom zbog koristenja tajmera za freeze... tu je ocigledno ispalo da si ti glup ne ja


Vidi se da nisam pogresio, retard si cisti...
Gospodin Leo
Enforcer
pre 6 godina
Evo ja sam ti složio nešto nabrzaka, ove poruke i to tvoje sam ostavio. Uzmi dole kod i samo nadogradi šta ti je još potrebno, usput nisam testiro niti compile-o već sam na site-u pisao - tako da ako ima neka greška tagaj me pa ćemo riješiti. Izvoli i pastebin -> https://pastebin.com/nHWm5zEV.
// rent system - b samp help

new
bool: _RentVeh = false
_RentVehID = INVALID_VEHICLE_ID;

//
CMD:rent(playerid, params[]) {
new vehicleid = GetPlayerVehicleID(playerid);
if(_RentVeh == true)
return SCM(playerid, -1, "Vec si iznajmio vozilo, prvo vrati iznjamljeno(/unrent) pa mozes opet rentat"), RemovePlayerFromVehicle(playerid);

foreach(new i: Player) {
if(_RentVehID == vehicleid) {
SCM(playerid, CRVENA, "Neko je vec rentovao ovo vozilo !");
RemovePlayerFromVehicle(playerid);
}
}

if(vehicleid >= RentVozilo && vehicleid <= RentVozilo) {
ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_LIST, "Odaberite vreme","Test (100$)\n....", ""zelena"U redu", ""crvena"Odustani");
}
else return SCM(playerid, CRVENA, "Nisi u RENT VOZILU !");
return (true);
}

//
public OnPlayerDisconnect(playerid, reason) {
if(_RentVeh == true)
DestroyRentVehicle(playerid, _RentVehID);
return (true);
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
case DIALOG_RENT: {
if(response) {
       
if(listitem == 0) {
  if(GetPlayerMoney(playerid) <  100) return SCM(playerid,-1,"Nema te dovoljno novca");
  GivePlayerMoney(playerid, -200);
       
_RentVehID = CreateVehicle(.....);
_RentVeh = (true);

        SCM(playerid,-1, "Rentao si vozilo na 10 sec test, ako ga zelis vratit kucaj /unrent");
        SetTimerEx("IstekRenta", 10*1000, (false), "dd", playerid, _RentVehID);
}
// dalje ti dodaj jos koliko oces item-a listanih.
}
}
return (true);
}

//
DestroyRentVehicle(playerid, vehicleid) {
// Resetira varijable i brise vozilo.

_RentVeh = (false);
_RentVehID = INVALID_VEHICLE_ID;
DestroyVehicle(vehicleid);
return (true);
}

//
forward IstekRenta(playerid, vehicleid);
public IstekRenta(playerid, vehicleid); {
// Reset - Isteklo vrijeme renta.
DestroyRentVehicle(playerid, vehicleid);

SendClientMessage(playerid, -1, "Isteklo je vase vrijeme renta.");
return (true);
}

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava