Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: TONY x poslato Jul 24, 2019, 11:57:58 PRE PODNE

Naslov: Rent system
Poruka od: TONY x poslato Jul 24, 2019, 11:57:58 PRE PODNE
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

[pawn]
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;
}
[/pawn]

[pawn]
CMD:rent(playerid, params[])
{
   if(Rent[playerid] != -1)
   {
      SCM(playerid, ROZE, "Vec si iznajmio vozilo, prvo vrati iznjamljeno(/unrent) pa mozes opet rentat");
        TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
   }
   if(Rent[playerid] == GetPlayerVehicleID(playerid))
   {
      SCM(playerid, CRVENA, "Neko je vec rentovao ovo vozilo !");
        TogglePlayerControllable(playerid, 1);
        RemovePlayerFromVehicle(playerid);
   }
   if(GetPlayerVehicleID(playerid) >= RentVozilo[0] && GetPlayerVehicleID(playerid) <= RentVozilo[12])
   {
      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;
}

[/pawn]
[pawn]
case DIALOG_RENT:
      {
          if(response)
         {
             new vehicleid;
             vehicleid = GetPlayerVehicleID(playerid);
               if(listitem == 0)
            {
                  if(Rent[playerid] != -1)
               {
                  RemovePlayerFromVehicle(playerid);
                  TogglePlayerControllable(playerid, 1);
               }
               else
               {
                     if(GetPlayerMoney(playerid) <  100) return SCM(playerid,-1,"Nema te dovoljno novca");
                     GivePlayerMoney(playerid, -200);
                      Rent[playerid] = 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[playerid] != -1)
               {
                  RemovePlayerFromVehicle(playerid);
                  TogglePlayerControllable(playerid, 1);
               }
               else
               {
                      if(GetPlayerMoney(playerid) <  150) return SCM(playerid,-1,"Nema te dovoljno novca");
                      GivePlayerMoney(playerid,-100);
                      Rent[playerid] = 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[playerid] != -1)
               {
                  RemovePlayerFromVehicle(playerid);
                  TogglePlayerControllable(playerid, 1);
               }
               else
               {
                      if(GetPlayerMoney(playerid) <  200) return SCM(playerid,-1,"Nema te dovoljno novca");
                      GivePlayerMoney(playerid, -200);
                      Rent[playerid] = 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[playerid] != -1)
               {
                  RemovePlayerFromVehicle(playerid);
                  TogglePlayerControllable(playerid, 1);
               }
               else
               {
                  if(GetPlayerMoney(playerid) <  300) return SCM(playerid,-1,"Nema te dovoljno novca");
                   GivePlayerMoney(playerid, -300);
                   Rent[playerid] = 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[playerid] != -1)
               {
                  RemovePlayerFromVehicle(playerid);
                  TogglePlayerControllable(playerid, 1);
               }
               else
               {
                     if(GetPlayerMoney(playerid) <  350) return SCM(playerid,-1,"Nema te dovoljno novca");
                      GivePlayerMoney(playerid, -350);
                      Rent[playerid] = 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);
                   }
            }
         }
      }

[/pawn]

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): nema potrebe
Naslov: Odg: Rent system
Poruka od: TONY x poslato Jul 24, 2019, 12:27:01 POSLE PODNE
Takodje sam zaboravio da stavim

[pawn]stock VecRentano(vehid)
{
    //foreach(new i : Player)
    for(new i; i < MAX_PLAYERS; i++)
    {
      if(Rent == vehid) return true;
    }
    return false;
}[/pawn]

Ako treba jos nesto recite
Naslov: Odg: Rent system
Poruka od: __vedran.xyz77 poslato Jul 24, 2019, 22:55:21 POSLE PODNE
Sto se tice freeza [pawn]TogglePlayerControllabe(playerid,0); // - Freeza igraca
TogglePlayerControllabe(playerid,1); // - unfreeza igraca
[/pawn]


Za dalje mi se neda pisati msm da si zbagao to u stock VecRentano
Naslov: Odg: Rent system
Poruka od: TONY x poslato Jul 25, 2019, 12:46:55 POSLE PODNE
Pa gde može biti problem u vecrentano ?

Foreach nisam iskoristio već standardno
Naslov: Odg: Rent system
Poruka od: __vedran.xyz77 poslato Jul 25, 2019, 21:18:22 POSLE PODNE
Pokusaj ovako mada nisam siguran da li ce da ti radi
[pawn]

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;
}
[/pawn]
Naslov: Odg: Rent system
Poruka od: anderson87 poslato Jul 25, 2019, 21:35:04 POSLE PODNE
Sto se tice freeze napravi  se tajmer

[pawn]

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);

}[/pawn]

Drugo u komandi nemas provjeru za ulazak u rent vozilo
Tr ece [pawn]if(Rent[playerid] != -1)[/pawn]
zamjeni s [pawn]if(Rent[playerid] == -1)[/pawn]
da ti prikaze poruku da li si rent ili ne

Naslov: Odg: Rent system
Poruka od: __vedran.xyz77 poslato Jul 25, 2019, 22:34:11 POSLE PODNE
Citat: anderson87 poslato Jul 25, 2019, 21:35:04 POSLE PODNE
Sto se tice freeze napravi  se tajmer

[pawn]

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);

}[/pawn]

Drugo u komandi nemas provjeru za ulazak u rent vozilo
Tr ece [pawn]if(Rent[playerid] != -1)[/pawn]
zamjeni s [pawn]if(Rent[playerid] == -1)[/pawn]
da ti prikaze poruku da li si rent ili ne


Da li sam ja glup ili ti retardiran  :D .Msm ja nikada nisam koristio tajmer za freeze i unfreeze, ne vidim ni potrebu koriscenja toga.
Naslov: Odg: Rent system
Poruka od: anderson87 poslato Jul 25, 2019, 23:33:35 POSLE PODNE
Citat: 002 poslato Jul 25, 2019, 22:34:11 POSLE PODNE

Da li sam ja glup ili ti retardiran  :D .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
Naslov: Odg: Rent system
Poruka od: youngdeal poslato Jul 26, 2019, 00:41:21 PRE PODNE
zar ti nije lakse ovako? (dao sam ti primjer)
[pawn]new Haze_VoziloRent[MAX_VEHICLES],Haze_VoziloRentano[MAX_VEHICLES];
// ongamemodeinit
Haze_VoziloRent[69] = 1;
Haze_VoziloRentano[69] = -1;
[/pawn]
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.


Naslov: Odg: Rent system
Poruka od: __vedran.xyz77 poslato Jul 26, 2019, 01:44:26 PRE PODNE
Citat: anderson87 poslato Jul 25, 2019, 23:33:35 POSLE PODNE
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...
Naslov: Odg: Rent system
Poruka od: L3o poslato Jul 26, 2019, 04:36:55 PRE PODNE
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.

[pawn]// rent system - b samp help

new
   bool: _RentVeh[MAX_PLAYERS] = false
   _RentVehID[MAX_PLAYERS] = INVALID_VEHICLE_ID;


//
CMD:rent(playerid, params[]) {
   new vehicleid = GetPlayerVehicleID(playerid);
   if(_RentVeh[playerid] == 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[0] && vehicleid <= RentVozilo[12]) {   
      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[playerid] == true)
      DestroyRentVehicle(playerid, _RentVehID[playerid]);
   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[playerid] = CreateVehicle(.....);
            _RentVeh[playerid] = (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[playerid]);
         }
         // dalje ti dodaj jos koliko oces item-a listanih.
      }
   }
   return (true);
}

//
DestroyRentVehicle(playerid, vehicleid) {
   // Resetira varijable i brise vozilo.
   
   _RentVeh[playerid] = (false);
   _RentVehID[playerid] = 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);
}

[/pawn]