Szerző Téma: Kocsi lefoglalás  (Megtekintve 608 alkalommal)

Kocsi lefoglalás
« Dátum: 2015. július 03. - 01:42:29 »
0 Show voters
Sziasztok!
Írtam egy autó lefoglalás parancsot adminoknak és van vele egy kis gond. Részben működik viszont a legnagyobb ID-jű (azaz a legújabb kocsit) nem engedi, mindig azt írja hogy nincs a közelemben jármű. A többinél viszont semmi gond.
Itt a kód:
 

NearestCar(playerid)
{
new Float:Pos[3],eredmeny,mennyinel;
for(new carid = 1; carid < MAX_VEHICLES; carid++)
{
GetVehiclePos(carid,Pos[0],Pos[1],Pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5,Pos[0],Pos[1],Pos[2]))
{
   eredmeny = carid;
   mennyinel ++;
}
}
if(eredmeny != 0) { if(mennyinel == 1) { return eredmeny; } else { return -2; } } else { return -1; }
}
CMD:alefoglal(playerid)
{
if(gPlayerLogged[playerid] == 1)
{
if(PlayerInfo[playerid][Admin] > 2)
{
   new nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective, Float:pos[3];
   nearestvehicle = NearestCar(playerid);
   GetVehiclePos(nearestvehicle, pos[0], pos[1], pos[2]);
   if(IsPlayerInRangeOfPoint(playerid, 5, pos[0], pos[1], pos[2]))
   {
      GetVehicleParamsEx(nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective);
      PutPlayerInVehicle(playerid, nearestvehicle, 0);
      SetVehicleParamsEx(nearestvehicle, 1, lights, alarm, doors, bonnet, boot, objective);
      cmd_me(playerid, \"lefoglal egy járművet\");
   }
   else Uzenet(playerid, -1, \"(( Nincs jármű a közeledben! ))\");
} else return 0;
} else return 0;
return 1;
}
« Utoljára szerkesztve: 2015. július 05. - 14:30:31 írta Flash »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Kocsi lefoglalás
« Válasz #1 Dátum: 2015. július 03. - 07:58:13 »
0 Show voters
hát én elég sok hibát véltem felfedezni itt...de lehet csak szerintem hiba, én biztosan nem így csinálnám...
 
NearestCar(playerid)
{
        new Float:Pos[3],eredmeny,mennyinel;
        for(new carid = 1; carid < MAX_VEHICLES; carid++)
        {
                GetVehiclePos(carid,Pos[0],Pos[1],Pos[2]);
                if(IsPlayerInRangeOfPoint(playerid, 5,Pos[0],Pos[1],Pos[2]))
                {
                        eredmeny = carid;
                        mennyinel ++;
                }
        }
        if(eredmeny != 0) { if(mennyinel == 1) { return eredmeny; } else { return -2; } } else { return -1; }
}

 
NearestCar = legközelebbi kocsi (most a kocsi és a jármű közötti különbségtől tekintsünk el)
Tehát névből gondolva ez a függvény a legközelebbi kocsi ID-ját adja vissza...
Közben az 5 méteres körzetben levő járművet, de azt is csak akkor ha 1 db van ebben a körben...ha több akkor -2 értékkel tér vissza...
És az sincs ellenőrizve, hogy létezik e egyáltalán a jármű, szóval a 0.0, 0.0, 0.0 pozícióhoz 5 méteres körzetben állva visszaad -2-t...
 
nearestvehicle = NearestCar(playerid);
GetVehiclePos(nearestvehicle, pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 5, pos[0], pos[1], pos[2]))
{
    GetVehicleParamsEx(nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective);
    PutPlayerInVehicle(playerid, nearestvehicle, 0);
    SetVehicleParamsEx(nearestvehicle, 1, lights, alarm, doors, bonnet, boot, objective);
    cmd_me(playerid, \"lefoglal egy járművet\");
}

 
Itt nincs lekezelve, hogy a visszatért érték mi...tehát ha -2-t vagy -1-et adott vissza a kód, akkor 0.0,0.0,0.0 pozíción állva (vagy annak 5 méteres körzetében) belefut az if-be:
 
if(IsPlayerInRangeOfPoint(playerid, 5, pos[0], pos[1], pos[2]))

 
Én 2 függvényt írnék ide...
GetNearestVehicle = legközelebbi jármű lekérdezése
GetRangePlayerToVehicle vagy IsPlayerRangeOfVehicle = Távolság lekérdezése vagy Megadott távon belül van e
magát a jelzett hibát, hogy az utolsó ID-val nem működik a kód ránézésre nem találtam meg...
MAX_VEHICLES-t újra definiáltad? mert akkor lehet ez a gond...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal