Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Marchelo poslato Jun 10, 2016, 10:05:34 PRE PODNE

Naslov: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 10, 2016, 10:05:34 PRE PODNE
Moj Gamemode od 0:
Bio sam pravio rent sistem motora i sve radi nema erora niti nista i kad dodem ig prvo moram ukucati /unrent tek onda sjest na vozilo i rentati ga.Ali stvar
je u tome da meni skripta sva vozila stavlja pod rent ne samo ta odredena nego sve
:
Koji dio skripte da stavim:
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Jun 10, 2016, 12:34:46 POSLE PODNE
Posalji nam kod gde ti se zapisuje rentano vozilo.
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: [CH] Michael poslato Jun 10, 2016, 14:24:37 POSLE PODNE
new rentvozilo[brojrentvozila];

rentvozilo[rednibrojrentvozila]  = Addstaticvehicle......
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Majkl Script poslato Jun 10, 2016, 17:30:43 POSLE PODNE
Moras da odredis broj vozila koliko imas za rent npr RentVozila[20];
I onda da definises u OnGameModeInit tih npr 20 rent vozila , RentVozilo[0] = AddStaticVehicleEx(.....
i tako sva vozila sto imas za rent i onda u CMD:rent ili kako si vec stavio das uslov da igrac mora da bude u vozilima za rent
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 10, 2016, 22:28:32 POSLE PODNE
Evo ovako sve je dobro definirano...
Imam jedno vozilo koje je probno
new Rent[1] definirano je 1 jer dodajemo za 1 vise
i kada je tako definirano ne radi! znaci onda mi ne izbacuje poruku da mogu rentati to vozilo niti nista
a kada stavim za dva vise onda mi izbacuje poruku.....
i jos k tome mogu usvako vozilo sjest i ikucat rent sto nema logike a nisu definirana ta vozila
i kada udem na server prvo moram kucati /unrent da bi mogao rentati
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Łuk@ poslato Jun 10, 2016, 22:29:16 POSLE PODNE
pa pod onplayerdiscconect stavi da mu se unrenta -.-
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 10, 2016, 22:54:01 POSLE PODNE
Citat: ophion poslato Jun 10, 2016, 22:29:16 POSLE PODNE
pa pod onplayerdiscconect stavi da mu se unrenta -.-
Da ali nisam rentao vozilo.Tako da nemoram unrent
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Jun 10, 2016, 23:02:28 POSLE PODNE
Vidim da nikakve kodove nisi slao ali ajde da ti od prilike objasnim kako bi to trebalo da izgleda. Uzmemo primer 1 obicnu varijablu koju bi stavio negde na vrh scripte kod ostalih slicnih.
[pawn]new RentVozilo[MAX_PLAYERS];[/pawn]

Tu istu varijablu bi trebalo da u public OnPlayerConnect postavimo na 0.
[pawn]RentVozilo[playerid] = 0;[/pawn]

A isto tako bi trebali i kod publica OnPlayerDisconnect da ponistimo to da bi se ajd da kazemo vozilo rtc i da bi neko drugi mogao da ga iskoristi jer je ovaj otisao sa servera.
[pawn]
if (RentVozilo[playerid] > 0) // Proveravamo da li igrac ima na sebi rentano vozilo jer ako je na 0 kao sto smo podesili na konekciji znaci da nema vozilo ako je vise od 0 znaci da imamo rent vozilo
{
    SetVehicleToRespawn(RentVozilo[playerid]); // Rtc rent vozilo odnosno ID vozila koji smo zapisali na varijablu kada smo rentali vozilo
    RentVozilo[playerid] = 0; // Takodje mozemo opet postaviti i varijablu na 0
}
[/pawn]

I zatim kod samog renta trebas da postavis ID vozila na ovu varijablu... To je veoma jednostavno samo proveris ID vozila i zapises mu, naravno to stavljas tamo kod renta.
[pawn]RentVozilo[playerid] = GetPlayerVehicleID(playerid);[/pawn]

I to bi bila sva filozofija sada ako ces da pravis neku komandu /unrent jednostavno samo proveris da li igrac vec ima rent vozilo ili ne eno ti primer gore sto sam pisao za public OnPlayerDisconnect i onda mu sklonis isto to ili mu saljes poruku da nema rent vozilo...
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 11, 2016, 07:33:42 PRE PODNE
evo imamo ovako sve

[pawn]new Rent[MAX_PLAYERS];
#define RENT_VOZILA 999
new rvozila[3];
forward IstekRenta(playerid);
public IstekRenta(playerid)
{
    Rent[playerid] = -1;
    SetVehicleToRespawn(Rent[playerid]);
   RemovePlayerFromVehicle(playerid);
   TogglePlayerControllable(playerid, 1);
   return 1;
}[/pawn]

[pawn] rvozila[0] = AddStaticVehicleEx(522,1669.8160000,-1881.5861000,13.2070000,0.0000000,-1,-1,15000); //NRG-500
  rvozila[1] = AddStaticVehicle(522,1669.8160000,-1881.5861000,13.2070000,0.0000000,-1,-1,15000); //NRG-500
  rvozila[2] = AddStaticVehicle(522,1669.8160000,-1881.5861000,13.2070000,0.0000000,-1,-1,15000); //NRG-500 [/pawn]

ali ja mogu sva vozila i dalje rentati
evo komande
[pawn] YCMD:rent(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(Rent[playerid] != -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[playerid] == 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) >= rvozila[0])
{
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;
}
YCMD:unrent(playerid, params[], help)
{
#pragma unused help
#pragma unused params
    new v= GetPlayerVehicleID(playerid);
   if(Rent[playerid] != -1)
   {
   if(v== Rent[playerid])
   {
      TogglePlayerControllable(playerid, 1);
     }
   SetVehicleToRespawn(Rent[playerid]);//respawna rentano vozilo
        RemovePlayerFromVehicle(playerid);//izbacuje igraca iz vozila
   Rent[playerid] = -1;//postavlja varijablu na -1 sto znaci da ce igrac ponovno moc rentat vozilo
   SCM(playerid,-1,"Vratio si rentano vozilo");
       }
return 1;
}
YCMD:exit(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(GetPlayerVehicleID(playerid) >= rvozila[0] && GetPlayerVehicleID(playerid) <= rvozila[2])
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
return 1;
}
stock VecRentano(vehid)
{
foreach(Player,i)
{
   if(Rent == vehid) return true;
}
return false;
}[/pawn]
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Jun 11, 2016, 12:07:53 POSLE PODNE
Komanda za rent bi trebala ovako da ti bude.
[pawn]YCMD:rent(playerid, params[], help)
{
   #pragma unused help
   #pragma unused params
   new
       carid = GetPlayerVehicleID(playerid);
   if (!RentVozila(carid)) return SCM (playerid, -1, "Nisi u vozilu za iznjamljivanje vozila");
   if (Rent[playerid] > 0) return SCM (playerid, -1, "Vec si iznajmio vozilo, prvo vrati iznjamljeno pa mozes opet rentat");
   else
   {
      foreach (Player, i)
      {
         if (Rent == carid) return SCM(playerid, -1, "Neko je vec rentao ovo vozilo.");
      }
      SPD (playerid, RENT_VOZILA, DIALOG_STYLE_LIST, "Odaberite vrijeme","10 minuta\n20 minuta\n30 minuta\n60 minuta", "U redu", "Odustani");
   }
   return 1;
}[/pawn]

Takodje uradim sam public za ta rent vozila da bude jednostavnije jer ces mozda jos negde koristiti pa ako ga nemas evo.
[pawn]forward RentVozila(carid);
public RentVozila(carid)
{
   for (new i = 0; i < sizeof(rvozila); i++)
   {
      if (carid == rvozila) return 1;
   }
   return 0;
}[/pawn]

I to bi trebalo sada da ti bude ok ali ono sto mene sada isto brine jeste tvoj public IstekRenta znaci ti na varijablu na kojoj postavljas ID rent vozila isto tako mu i skidas to po -1 kao neko vreme i kako on sada da dobije tacno vreme renta odnosno tu se ustvari i desi problem do pomesanja ID-ova jer ti njemu kada zapises ID vozila koji je rentao isto tako odma mu i menjas taj ID zbog tog isteka. Moras napraviti 2 varijable jednu za rent gde ce biti samo ID da bi ti ove provere u komandi dobro radile i drugu za vreme renta i onda nece dolaziti do mesanja ID-ova...
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 12, 2016, 13:43:46 POSLE PODNE
da ali kada kucam komandu /RENT onda mi izbacuje dialog u kojem biram koliko minuta zelim rentati vozilo
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Jun 12, 2016, 14:39:29 POSLE PODNE
Jel me sada zaebavas ili sta ? :D Taj dialog si ti uradio... :D
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: Marchelo poslato Jun 12, 2016, 15:00:20 POSLE PODNE
normalno da ga nisam ja radio hahaha
Naslov: Odg: [POMOC]Pomjesani id
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Jun 12, 2016, 15:06:26 POSLE PODNE
Pa ne znam onda ko ga je radio ali si ti poslao kodove sa tim i ne vidim sta je tu problem :D