-
Nos, Hello. Azt szeretném kérdezzni, hogy-hogyan lehet azt megoldani, hogy észlelje a szerver, h a kocsi közelében vagy-e?
Válaszotokat elõre köszönöm.
-
Mármint 1 kocsi?
new vehicleid = 1; //a jármû id-jét
new Float:p[3];
GetVehiclePos(vehicleid, p[0], p[1], p[2]);
if(IsPlayerInRangeOfPoint(playerid, 10.0, p[0], p[1], p[2])) {
//10 méteres körzetében van
}else{
//nincs a 10 méteres körzetében
}
-
ez egy bizonyos jármûre.. ha arra vagy kiváncsi, hogy van-e akármilyen jármû a közeledben, akkor ugyan ez, csak ciklussal felvezetve, jármûazonosító helyett.
-
Amit Pedro írt, az a helyes megoldás a kérdésre, hisz nem kért mást, csak, hogy a közelében van-e, viszont szerintem szeretne valamit operálni is az ID-vel, mert nem tudom, mire lenne jó egy olyan függvény, ami nem tér vissza az idjével. Bocs, ha hülyeséget mondok, vagy valamit félreértelmeztem.
Ezzel a függvénnyel tudod ezt megoldani (ezt most kivételesen én csináltam):
stock LegkozelebbiJarmu(playerid, Float:korzet)
{
new Float:jpoz[3], Float:tav = korzet, jarmu;
for(new a = 0; a < MAX_VEHICLES; a++)
{
if(GetPlayerVirtualWorld(playerid) != GetVehicleVirtualWorld(a)) continue;
//if(GetPlayerInterior(playerid) != GetVehicleInterior(a)) continue;
GetVehiclePos(a, jpoz[0], jpoz[1], jpoz[2]);
if(GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]) > tav) continue;
if(GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]) < tav)
{
tav = GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]);
jarmu = a;
}
}
if(tav < korzet) return jarmu;
else return -1;
}
Megint lehet, hogy teljesen rossz, telefonról írtam.
Ezt úgy használd, hogy:
if(LegkozelebbiJarmu(playerid, 5.0) == -1) SendClientMessage(playerid, -1, \"Nincs az 5,0 méteres közeledben jármû!\");
else
{
new SikUzi[128];
format(SikUzi, sizeof(SikUzi), \"A hozzád legközelebbi jármû (5.0 méteres körzetben) idje: %d\", LegkozelebbiJarmu(playerid, 5.0));
SendClientMessage(playerid, -1, SikUzi);
Szóval ez multifunkcionális :D
U.i.: ha a pawno unreachable codot ír, akkor a stock alján lent az if és az elsees sorok helyére csak egy \"return jarmu;\"-t írj.
U.i.2.: Most látom mit írt \"TengeriMalac\" (ha más a beceneved, bocsi, nem ismerek innen senkit) \"sTylE\", kb. arra akartam kilyukadni.
Szerk.: Javítottam, így már helyes értékkel tér vissza, igaz, az interiort nem nézi.
-
Megvolt, mûködik, zárom.
-
[mod]Mivel neked nem sikerült, így zárom én![/mod]
-
Nos, Hello. Azt szeretném kérdezzni, hogy-hogyan lehet azt megoldani, hogy észlelje a szerver, h a kocsi közelében vagy-e?
Válaszotokat elõre köszönöm.
-
Mármint 1 kocsi?
new vehicleid = 1; //a jármû id-jét
new Float:p[3];
GetVehiclePos(vehicleid, p[0], p[1], p[2]);
if(IsPlayerInRangeOfPoint(playerid, 10.0, p[0], p[1], p[2])) {
//10 méteres körzetében van
}else{
//nincs a 10 méteres körzetében
}
-
ez egy bizonyos jármûre.. ha arra vagy kiváncsi, hogy van-e akármilyen jármû a közeledben, akkor ugyan ez, csak ciklussal felvezetve, jármûazonosító helyett.
-
Amit Pedro írt, az a helyes megoldás a kérdésre, hisz nem kért mást, csak, hogy a közelében van-e, viszont szerintem szeretne valamit operálni is az ID-vel, mert nem tudom, mire lenne jó egy olyan függvény, ami nem tér vissza az idjével. Bocs, ha hülyeséget mondok, vagy valamit félreértelmeztem.
Ezzel a függvénnyel tudod ezt megoldani (ezt most kivételesen én csináltam):
stock LegkozelebbiJarmu(playerid, Float:korzet)
{
new Float:jpoz[3], Float:tav = korzet, jarmu;
for(new a = 0; a < MAX_VEHICLES; a++)
{
if(GetPlayerVirtualWorld(playerid) != GetVehicleVirtualWorld(a)) continue;
//if(GetPlayerInterior(playerid) != GetVehicleInterior(a)) continue;
GetVehiclePos(a, jpoz[0], jpoz[1], jpoz[2]);
if(GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]) > tav) continue;
if(GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]) < tav)
{
tav = GetPlayerDistanceFromPoint(playerid, jpoz[0], jpoz[1], jpoz[2]);
jarmu = a;
}
}
if(tav < korzet) return jarmu;
else return -1;
}
Megint lehet, hogy teljesen rossz, telefonról írtam.
Ezt úgy használd, hogy:
if(LegkozelebbiJarmu(playerid, 5.0) == -1) SendClientMessage(playerid, -1, \"Nincs az 5,0 méteres közeledben jármû!\");
else
{
new SikUzi[128];
format(SikUzi, sizeof(SikUzi), \"A hozzád legközelebbi jármû (5.0 méteres körzetben) idje: %d\", LegkozelebbiJarmu(playerid, 5.0));
SendClientMessage(playerid, -1, SikUzi);
Szóval ez multifunkcionális :D
U.i.: ha a pawno unreachable codot ír, akkor a stock alján lent az if és az elsees sorok helyére csak egy \"return jarmu;\"-t írj.
U.i.2.: Most látom mit írt \"TengeriMalac\" (ha más a beceneved, bocsi, nem ismerek innen senkit) \"sTylE\", kb. arra akartam kilyukadni.
Szerk.: Javítottam, így már helyes értékkel tér vissza, igaz, az interiort nem nézi.
-
Megvolt, mûködik, zárom.
-
[mod]Mivel neked nem sikerült, így zárom én![/mod]