Szerző Téma: Legközelebbi jármű probléma.  (Megtekintve 1247 alkalommal)

Legközelebbi jármű probléma.
« Dátum: 2015. Július 31. - 10:22:03 »
0
Sziasztok!
Az lenen a gondom, hogy valamiért a kis járműlekérdező függvényem bugol. Majdnem tökéletes, azonban a legnagyobb ID-jű járműnél azt írja, hogy túl sok kocsi van a közelemben.
 
CMD:alefoglal(playerid)
{
new nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective;
nearestvehicle = NearestCar(playerid);
Uzenet(playerid,-1,\"%d %d\",nearestvehicle,MAX_VEHICLES);
if(nearestvehicle == -2) return Uzenet(playerid,-1,\"(( Több jármű is van a közeledben! ))\");
else if(nearestvehicle == -1) return Uzenet(playerid,-1,\"(( Nincs a közeledben jármű! ))\");
else
{
GetVehicleParamsEx(nearestvehicle, engine, lights, alarm, doors, bonnet, boot, objective);
PutPlayerInVehicle(playerid, nearestvehicle, 0);
SetVehicleParamsEx(nearestvehicle, 1, lights, alarm, doors, bonnet, boot, objective);
       }
       return 1;
}

 

NearestCar(playerid)
{
new Float:Pos[3],eredmeny,mennyinel,vegeredmeny;
for(new carid = 1; carid < MAX_VEHICLES+1; 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)
{
   vegeredmeny = eredmeny;
}
else
{
   vegeredmeny = -2;
}
}
else
{
vegeredmeny = -1;
}
return vegeredmeny;
}

 
Ez annyit csinálna, hogy a legközelebbi járműbe bedobna ls beindítaná a motorját, ha nincsen jármű a közelben és ha több is van akkor ezekkel jól visszajelez, de mint említettem a legnagyobb jármű ID-nél azt írja, hogy túl sok van a közelben.

Legközelebbi jármű probléma.
« Válasz #1 Dátum: 2015. Július 31. - 10:28:46 »
+1
A MAX_VEHICLES-nél az a +1 nem kell oda szerintem.

Legközelebbi jármű probléma.
« Válasz #2 Dátum: 2015. Július 31. - 11:04:17 »
0
Ott már minden számot kipróbáltam, sehogy nem jó. Nem kavar vízet ott de azért köszi. :D

Elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Legközelebbi jármű probléma.
« Válasz #3 Dátum: 2015. Július 31. - 11:53:16 »
+1
http://sampforum.hu/index.php?topic=58513
http://sampforum.hu/index.php?topic=51942
http://sampforum.hu/index.php?topic=51268
hogy neked mindig a legközelebbi jármű/játékos a probléma :D
http://sampforum.hu/index.php?topic=58513.msg538032#msg538032
ezzel mi a problémád?
Ez visszaadja a legközelebbi jármű ID-ját ez után csak azt kell ellenőrizned, hogy invalid e és, hogy milyen távolra van, de akár azt beírhatod a függvénybe is...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Legközelebbi jármű probléma.
« Válasz #4 Dátum: 2015. Július 31. - 12:25:13 »
0
Jó, akkor azthittem, hogy jó, de a legnagyobb ID-re mégsem jó a dolog. És amiket küldtél az nem jelzi ki, hogy, ha több van a közelben.

Elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Legközelebbi jármű probléma.
« Válasz #5 Dátum: 2015. Július 31. - 13:06:14 »
0
NearestCar = legközelebbi KOCSI!
tehát igazából azt gondoltam, hogy a legközelebbi járműre van szükséged...gondoltam a Car csak elírás volt, de úgy tűnik a Nearest is :)
az neked miért jó, ha több jármű esetén -2-t kapsz vissza? tehát nem tudsz az adattal érdemben mit kezdeni...csak annyit, hogy több jármű van a közelében...
valahol már írtam én is ehhez a függvényhez kommentet de azt nem találtam meg, de megint feltűnt nekem, hogy ha 0,0,0 pozícióra viszem a kocsit akkor többet nem tudom kinyitni, mert ott mindig azt fogja írni, hogy sok kocsi van a közelemben...mert nincs ellenőrizve, hogy a jármű létre van e hozva, csak lekérdezed a pozíciót egy tömbbe és felhasználod az adatokat...
írtam neked egy scriptet:
 
#include <a_samp>
new veh[3];
public OnFilterScriptInit()
{
// 1: Létrehozok 3 járművet
veh[0] = CreateVehicle(560,10,20,30,40,50,60,0,0);
veh[1] = CreateVehicle(561,10,20,30,40,50,60,0,0);
veh[2] = CreateVehicle(562,10,20,30,40,50,60,0,0);
// 2: Törlöm a középső járművet
DestroyVehicle(veh[1]);
// 3: kiírom a pozíciót
new Float:Pos[3];
for(new i = 1; i <= 4; i++)
{
    GetVehiclePos(i,Pos[0],Pos[1],Pos[2]);
    printf(\"[%d. jármű, model: %d] %.4f,%.4f,%.4f\",i,GetVehicleModel(i),Pos[0],Pos[1],Pos[2]);
}
return 1;
}
public OnFilterScriptExit()
{
    for(new i = 1; i < 4; i++)
    {
if(GetVehicleModel(i)) { DestroyVehicle(i); }
    }
return 1;
}

 
kimenetele:
 
[1. jármű, model: 560] 10.0000,20.0000,30.0000
[2. jármű, model: 0] 10.0000,20.0000,30.0000
[3. jármű, model: 562] 10.0000,20.0000,30.0000
[4. jármű, model: 0] 10.0000,20.0000,30.0000
[/quote]
figyeld meg: 2. és 4. jármű nem létezik, mert NINCS MODEL ID-ja! (2. jármű amit töröltem a 2. lépésnél)
de mégis van pozíció...igen mert a Pos tömböt a cikluson kívül hoztam létre és ha nem tudja felül írni a GetVehiclePos függvény akkor az előző adat marad benne...
ezért kellene ellenőrizni, hogy létezik e a jármű :)
 
if(GetVehicleModel(i))
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Legközelebbi jármű probléma.
« Válasz #6 Dátum: 2015. Július 31. - 13:14:06 »
0
Szóval nem értettük meg egymást. Nekem a legközelebbi járműre van szükségem 5-s körzetben. De mivel az is előfordulhat, hogy pl egy benzinkúton több jármű van abban a közelségben, ekkor ugye a nagyobb ID-vel rendelkező járművet kapnám meg értéknek. Ezért találtam ki, hogy, ha több jármű van ebben a körben akkor írja ki, hogy több van ott, és figyeljen, nehogy a másikét tankolja meg vagy hasonlók. Légyszíves ne más scripteket linkeljetek és hasonlók, annyi a gondom, hogy a legnagyobb ID-nél bugol a dolog. Köszi előre is.

Elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Legközelebbi jármű probléma.
« Válasz #7 Dátum: 2015. Július 31. - 13:21:07 »
0
most írtam a scriptet és még a kimenetelét is bemásoltam ne kelljen lefuttatnod...
de ahogy látom még a hozzászólásomat sem olvastad végig...akkor most olvasd el ismét :) köszi. ha meg nem akarod akkor nem segítek :D
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
Legközelebbi jármű probléma.
« Válasz #8 Dátum: 2015. Július 31. - 13:48:45 »
0
Hozzátenném, hogy a jármű létezésének ellenőrzésére létezik az IsValidVehicle függvény is!
(script elejére: native IsValidVehicle(vehicleid);)
 
if(IsValidVehicle(i)) 

Legközelebbi jármű probléma.
« Válasz #9 Dátum: 2015. Július 31. - 14:20:44 »
0
Szerintem nem értjük még mindig egymást, semilyen összefüggést nemlátok a te scripted és az én scriptem között. Még mindig nem értem. sry

Legközelebbi jármű probléma.
« Válasz #10 Dátum: 2015. Július 31. - 14:22:26 »
0
Lefordítom magyarra, írjuk már meg neki a komplett scriptet mert nem tudja összerakni.
 

native IsValidVehicle(playerid);
NearestCar(playerid)
{
new Float:Pos[3],eredmeny,mennyinel,vegeredmeny;
for(new carid = 1; carid < MAX_VEHICLES; carid++)
{
                if(!IsValidVehicle(carid)) continue;
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)
{
   vegeredmeny = eredmeny;
}
else
{
   vegeredmeny = -2;
}
}
else
{
vegeredmeny = -1;
}
return vegeredmeny;
}

Legközelebbi jármű probléma.
« Válasz #11 Dátum: 2015. Július 31. - 14:40:01 »
0
Megoldódott, köszi mindenkinek. Ment a + mindenkinek.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal