Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Neckiy poslato Novembar 06, 2021, 05:18:20 PRE PODNE

Naslov: Respawn vozila na /startjob
Poruka od: Neckiy poslato Novembar 06, 2021, 05:18:20 PRE PODNE
Problem(error/warning): Imam 3 posla trenutno na serveru i kada u kosacu trave i dostavljacu zlata (dole napisano) ukucam start job ono lepo spawnuje vozilo i ubaci me u njega ali, ako drugi igrac posle mene isto starta job, moje vozilo nestane i stvori se kod njega. Kod vozaca autobusa (takodje ispod) je isti kod kao i za ostala dva ali iz nekog razloga kod vozaca busa radi perfektno bez respawnovanja.
Deo skripte: [pawn]YCMD:startjob(playerid,params[],help)
{
   if(UlogovaniIgrac[playerid] == 0) return Greska(playerid, "Niste ulogovani.");
   else if(zamrznut[playerid] == 1) return Greska(playerid, "Ne mozes to sad!");
   else if(PlayerInfo[playerid][pZaposlen] == 0) return Greska(playerid, "Nisi zaposlen!");
   new Float:Pos[3];
   if(IsPlayerInRangeOfPoint(playerid, 2.0, 1219.1584,-1812.0776,16.5938)) // VOZAC AUTOBUSA
   {
      if(PlayerInfo[playerid][pPosao] != 1) return Greska(playerid, "Ne radis kao Vozac Autobusa.");
      else if(aduty[playerid] == 1 || hduty[playerid] == 1) return Greska(playerid, "Na duznosti si, ne mozes raditi posao!");
      else if(PlayerInfo[playerid][pDozvolaAutobus] == 0) return Greska(playerid, "Nemas dozvolu za voznju autobusa!");
      else if(radiposao[playerid] == 1) return Greska(playerid, "Vec radis posao!");
      //dodaj za wanted level
      GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
      if(radnovozilo[playerid] != -1) {
         DestroyVehicle(radnovozilo[playerid]);
      }
      radnovozilo[playerid] = AddStaticVehicle(431,1269.7939,-1814.9988,13.4845,180.1526, 0, 0);
      radnovozilolabel[playerid] = CreateDynamic3DTextLabel("{37E1E9}[VOZAC AUTOBUSA]", -1, Pos[0], Pos[1], Pos[2], 30.0, INVALID_PLAYER_ID, radnovozilo[playerid], 0,-1,-1, -1, STREAMER_3D_TEXT_LABEL_SD, -1, 0);
      PutPlayerInVehicle(playerid, radnovozilo[playerid], 0);
      SetCameraBehindPlayer(playerid);
      radiposao[playerid] = 1;
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Zapoceli ste posao Vozaca Autobusa. Idite do prve stanice!");
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Da prekinete posao, ukucajte /endjob.");
      SetPlayerCheckpoint(playerid, 1595.8616,-1875.3226,13.4854, 5);
      autobuscheckpoint[playerid] = 1;
   }
   else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2542.6077,-1528.4862,23.8166)) // KOSAC TRAVE
   {
      if(PlayerInfo[playerid][pPosao] != 2) return Greska(playerid, "Ne radis kao Kosac Trave.");
      else if(aduty[playerid] == 1 || hduty[playerid] == 1) return Greska(playerid, "Na duznosti si, ne mozes raditi posao!");
      else if(PlayerInfo[playerid][pDozvolaMotor] == 0) return Greska(playerid, "Nemas dozvolu za voznju motora!");
      else if(radiposao[playerid] == 1) return Greska(playerid, "Vec radis posao!");
      //dodaj za wanted level
      GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
      if(radnovozilo[playerid] != -1) {
         DestroyVehicle(radnovozilo[playerid]);
      }
      radnovozilo[playerid] = AddStaticVehicle(572,2544.2549,-1547.4746,23.3722,169.1259, 0, 0);
      radnovozilolabel[playerid] = CreateDynamic3DTextLabel("{1E5F0E}[KOSAC TRAVE]", -1, Pos[0], Pos[1], Pos[2], 30.0, INVALID_PLAYER_ID, radnovozilo[playerid], 0,-1,-1, -1, STREAMER_3D_TEXT_LABEL_SD, -1, 0);
      PutPlayerInVehicle(playerid, radnovozilo[playerid], 0);
      SetCameraBehindPlayer(playerid);
      radiposao[playerid] = 1;
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Zapoceli ste posao Kosaca Trave. Idite do prvog checkpointa!");
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Da prekinete posao, ukucajte /endjob.");
      SetPlayerCheckpoint(playerid, 2532.9038,-1575.3029,21.9447, 3);
      kosactravecheckpoint[playerid] = 1;
   }
   else if(IsPlayerInRangeOfPoint(playerid, 2.0, 637.5584,831.1437,-42.9609)) // DOSTAVLJAC ZLATA
   {
      if(PlayerInfo[playerid][pPosao] != 3) return Greska(playerid, "Ne radis kao Dostavljac Zlata.");
      else if(aduty[playerid] == 1 || hduty[playerid] == 1) return Greska(playerid, "Na duznosti si, ne mozes raditi posao!");
      else if(PlayerInfo[playerid][pDozvolaKamion] == 0) return Greska(playerid, "Nemas dozvolu za voznju kamiona!");
      else if(radiposao[playerid] == 1) return Greska(playerid, "Vec radis posao!");
      //dodaj za wanted level
      GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
      if(radnovozilo[playerid] != -1) {
         DestroyVehicle(radnovozilo[playerid]);
      }
      radnovozilo[playerid] = AddStaticVehicle(609,617.3093,821.1633,-42.9534,357.5893, 0, 0);
      radnovozilolabel[playerid] = CreateDynamic3DTextLabel("{E5E50B}[DOSTAVLJAC ZLATA]", -1, Pos[0], Pos[1], Pos[2], 30.0, INVALID_PLAYER_ID, radnovozilo[playerid], 0,-1,-1, -1, STREAMER_3D_TEXT_LABEL_SD, -1, 0);
      PutPlayerInVehicle(playerid, radnovozilo[playerid], 0);
      SetCameraBehindPlayer(playerid);
      radiposao[playerid] = 1;
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Zapoceli ste posao Dostavljaca Zlata. Idite do prvog odredista!");
      SCM(playerid,-1,"{24D6A1}[POSAO] "BELA"Da prekinete posao, ukucajte /endjob.");
      SetPlayerCheckpoint(playerid, -1994.1693,1319.5383,7.2142, 3);
      dostavljaczlatacheckpoint[playerid] = 1;
   }
   else return Greska(playerid, "Nisi na mestu za pocetak posla!");
   return 1;
}[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Naslov: Odg: Respawn vozila na /startjob
Poruka od: Neckiy poslato Novembar 06, 2021, 22:33:24 POSLE PODNE
neko?
Naslov: Odg: Respawn vozila na /startjob
Poruka od: _tayloR poslato Novembar 06, 2021, 23:09:05 POSLE PODNE
Ne mogu uocit sta bi moglo bit a ovo

      if(radnovozilo[playerid] != -1) {
         DestroyVehicle(radnovozilo[playerid]);
      }

ne znam gdje dajes vrijednost -1 kad destroyas vozilo a trazis tu vrijednost
Naslov: Odg: Respawn vozila na /startjob
Poruka od: __vedran.xyz77 poslato Novembar 06, 2021, 23:14:34 POSLE PODNE
Kada se jednom Destorya vozilo, ono ce idalje ostati zapamceno kao da nije destroyano za jednog igraca.
Sto bi znacilo da u toj provjeri 'radnovozilo' tamo gdje ga brises tu varijablu trebalo da stavis na -1, taj dio sa drugim igracem nema logike.
Naslov: Odg: Respawn vozila na /startjob
Poruka od: Neckiy poslato Novembar 06, 2021, 23:24:24 POSLE PODNE
Mislim da znam u cemu je problem, na /startjob proverava ako vozilo nije na -1 da ga destroja a ja sam stavio u OnPlayerConnect da je radnovozilo -1 i zato prvi posao radi a ostali ne jer na /endjob nisam stavio radnovozilo= -1 nego sam ga samo unistio. Provericu posle pa cu lockati ako je reseno.
Naslov: Odg: Respawn vozila na /startjob
Poruka od: Neckiy poslato Novembar 07, 2021, 00:08:04 PRE PODNE
radi lock