GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Davidus - 2014. március 29. - 07:29:01

Cím: Jármû közelbe van-e?
Írta: Davidus - 2014. március 29. - 07:29:01
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.
Cím: Jármû közelbe van-e?
Írta: Pedró - 2014. március 29. - 07:48:47
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
}
Cím: Jármû közelbe van-e?
Írta: TengeriMalac - 2014. március 29. - 08:14:04
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.
Cím: Jármû közelbe van-e?
Írta: KovaNovik - 2014. március 29. - 08:55:19
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.
Cím: Jármû közelbe van-e?
Írta: Davidus - 2014. április 05. - 10:42:30
Megvolt, mûködik, zárom.
Cím: Jármû közelbe van-e?
Írta: Flash - 2014. április 05. - 10:46:49
[mod]Mivel neked nem sikerült, így zárom én![/mod]
Cím: Jármû közelbe van-e?
Írta: Davidus - 2014. március 29. - 07:29:01
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.
Cím: Jármû közelbe van-e?
Írta: Pedró - 2014. március 29. - 07:48:47
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
}
Cím: Jármû közelbe van-e?
Írta: TengeriMalac - 2014. március 29. - 08:14:04
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.
Cím: Jármû közelbe van-e?
Írta: KovaNovik - 2014. március 29. - 08:55:19
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.
Cím: Jármû közelbe van-e?
Írta: Davidus - 2014. április 05. - 10:42:30
Megvolt, mûködik, zárom.
Cím: Jármû közelbe van-e?
Írta: Flash - 2014. április 05. - 10:46:49
[mod]Mivel neked nem sikerült, így zárom én![/mod]