Szerző Téma: kocsi elõl vagy hátul (szerk)  (Megtekintve 2482 alkalommal)

kocsi elõl vagy hátul (szerk)
« Dátum: 2014. március 26. - 20:38:14 »
0 Show voters
Sziasztok!
Hogy tom lecsekolni hogy a játékos a kocsi csomagtartójánál van vagy elõl ??
elõre is köszönöm a segítséget.
« Utoljára szerkesztve: 2014. március 27. - 21:37:51 írta kriszrap »

kocsi elõl vagy hátul (szerk)
« Válasz #1 Dátum: 2014. március 28. - 14:24:03 »
0 Show voters
A kordinátákkal kell játszadozni. Vagyis kicsit konkrétabban.
lekérdezed a legközelebb lévõ jármû kordinátáját.
pl.
 
new Float:X,Float:Y,Float:Z,vehid;
GetVehiclePos(vehid,X,Y,Z);
if(IsPlayerInrangeOfPoint(playerid,3.0,X,Y,Z);
{
// funkciók ha a közelében van
}

 
Azt, hogy csak a csomagtartójánál van, azt úgy kell beállítani szerintem, hogy a játékos pozíciójánál(IsPlayerIn..) kivonsz/hozzá adsz az X vagy Y kordinátából párat.
Nem 100%, de nekem csak ez jutott az eszembe errõl.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #2 Dátum: 2014. március 28. - 14:39:49 »
0 Show voters
Az úgy nem jó. Mert ha a kocsi Z tengelyû rotációja nem 0, akkor máris más lesz a eredmény. Ha pedig pont 180 fokkal van elfordulva a kocsi, akkor úgy fogja érzékelni a rendszer, hogy a játékos a csomagtartónál áll, miközben a motorháztetõnél van, a kocsi másik felén. Csatolj rá objectet, és az a körüli sugarat csekkold, vagy nézd, hogy a kocsi Z tengelyû fordulása hány fokos éppen (ez a macerásabb).

kocsi elõl vagy hátul (szerk)
« Válasz #3 Dátum: 2014. március 28. - 15:46:34 »
0 Show voters
A rotációs Z tengelyt nem lehet lementeni és tárolni egy változóba?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #4 Dátum: 2014. március 28. - 15:56:21 »
0 Show voters
Ezzel pontosan azt csinálod...
 

new Float:X,Float:Y,Float:Z,vehid;
GetVehiclePos(vehid,X,Y,Z);

 
[/quote]
De az bonyolult megoldás, és szükséges hozzá minimum 360 lehetõség megadása. Lehet kevesebb is, de az a pontosság rovására menne. Tehát szerintem maradj az elsõ tanácsomnál, az objectes ellenõrzésnél.

kocsi elõl vagy hátul (szerk)
« Válasz #5 Dátum: 2014. március 28. - 16:04:44 »
0 Show voters
Ezzel szimplán az X,Y,Z tengely kordinátáit kérem le, a Forgás tengelyt nem. Te a Z forgás tengelyrõl beszéltél nem?

Dupla hozzászólás automatikusan összefûzve. ( 2014. március 28. - 16:33:28 )

Egyébként így lelehet kérdezni a Z forgás tengely értékét is. ( Z_rot)
 
CMD:lekerdez(playerid, params[])
{
    new currentveh;
          new Float:z_rot;
          new message[40];
          currentveh = GetPlayerVehicleID(playerid);
          GetVehicleZAngle(currentveh, z_rot);
          format(message, sizeof(message), \"A Jármû Z forgás tengely értéke: %.0f\", z_rot);
          SendClientMessage(playerid, 0xFFFFFFFF, message);
          return 1;
}

 
Forrás: http://wiki.sa-mp.com/wiki/GetVehicleZAngle
Majd írok egy teszt scriptet erre, csak most van egy kis dolgom. De így tuti, hogy nem olyan bonyolult. Elméletben az elve az amit én is írtam..
« Utoljára szerkesztve: 2014. március 28. - 16:33:28 írta ppatrik2012 »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #6 Dátum: 2014. március 28. - 16:44:44 »
0 Show voters
Na ezért ne írj segítségadást, miközben valakivel beszélgetsz. Bocsi, elnéztem :D
Igen, ezzel tudod lekérdezni, ahogy az már le lett írva egyszer:
 
new Float:ZR;
GetVehicleZAngle(currentveh, ZR);

 
De az továbbra is áll, hogy nagyon hosszadalmas, unalmas és macerás feladat azzal megcsinálni. Nem is értem, hogy miért rágod magad rajta, hiszen párszor már leírtam, hogy objecttõl számított IsPlayerInRangeOfPointtal 2 perc alatt végeznél az egésszel.

kocsi elõl vagy hátul (szerk)
« Válasz #7 Dátum: 2014. március 28. - 16:49:16 »
0 Show voters
Én csak segíteni próbálok :) Egyébként mind2-nknek van egy ötlete rá, nincs ezzel semmi baj :D 

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #8 Dátum: 2014. március 28. - 16:53:35 »
0 Show voters
Idézetet írta: ppatrik2012 date=1396021756\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47376\" data-ipsquote-contentclass=\"forums_Topic
Egyébként mind2-nknek van egy ötlete rá, nincs ezzel semmi baj :D 
 
Már leírtam, hogy az úgy nem lesz jó:
 

Az úgy nem jó. Mert ha a kocsi Z tengelyû rotációja nem 0, akkor máris más lesz a eredmény. Ha pedig pont 180 fokkal van elfordulva a kocsi, akkor úgy fogja érzékelni a rendszer, hogy a játékos a csomagtartónál áll, miközben a motorháztetõnél van, a kocsi másik felén.[/quote]

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
kocsi elõl vagy hátul (szerk)
« Válasz #9 Dátum: 2014. március 28. - 17:51:16 »
0 Show voters
Idézetet írta: Dfoglalo date=1396018581\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47376\" data-ipsquote-contentclass=\"forums_Topic
Ezzel pontosan azt csinálod...
 

new Float:X,Float:Y,Float:Z,vehid;
GetVehiclePos(vehid,X,Y,Z);

 
De az bonyolult megoldás, és szükséges hozzá minimum 360 lehetõség megadása. Lehet kevesebb is, de az a pontosság rovására menne. Tehát szerintem maradj az elsõ tanácsomnál, az objectes ellenõrzésnél.
 
[/quote]
az meg nem mûködik...mivel nem az aktuális pozícióját adja vissza hanem azt ahol létrehoztad...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető rhassi

  • 624
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #10 Dátum: 2014. március 28. - 17:55:58 »
0 Show voters
Ez alapján meg tudod csinálni.
Térgeometria: Körbe menni a játékos körül

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
kocsi elõl vagy hátul (szerk)
« Válasz #11 Dátum: 2014. március 28. - 18:07:09 »
0 Show voters
Idézetet írta: Kovacs_Richard date=1396025476\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47376\" data-ipsquote-contentclass=\"forums_Topic


Ezzel pontosan azt csinálod...
 

new Float:X,Float:Y,Float:Z,vehid;
GetVehiclePos(vehid,X,Y,Z);

 
De az bonyolult megoldás, és szükséges hozzá minimum 360 lehetõség megadása. Lehet kevesebb is, de az a pontosság rovására menne. Tehát szerintem maradj az elsõ tanácsomnál, az objectes ellenõrzésnél.
 
[/quote]
az meg nem mûködik...mivel nem az aktuális pozícióját adja vissza hanem azt ahol létrehoztad...
 
[/quote]
Az objectesre értetted? Gondolom igen. Ha belegondolok, lehet, hogy ez tényleg így van. Pedig valami ilyesmi megoldást alkalmazott az egyik ismerõsöm. Akkor viszont nem tudom, hogyan. Marad a másik lehetõség. Ezt pedig tényleg nézd át:
 

Ez alapján meg tudod csinálni.
Térgeometria: Körbe menni a játékos körül
 
[/quote]

kocsi elõl vagy hátul (szerk)
« Válasz #12 Dátum: 2014. március 28. - 19:45:12 »
0 Show voters
vannak itt variációk irok ha jutottam valamire :)
szerk.:
Objectesre tudtok valami példával szolgálni?
« Utoljára szerkesztve: 2014. március 28. - 20:23:13 írta kriszrap »

kocsi elõl vagy hátul (szerk)
« Válasz #13 Dátum: 2014. március 31. - 20:17:45 »
0 Show voters
Objecttel szerintem felesleges megoldani.
Sinus, cosinussal egyszerûbben is megtudod csinálni, csupán csak a kocsi  pozíciója és irányát kell lekérdezned.
 
#define TAVOLSAG 3.0 //távolság a kocsi közepétõl. Írd át, mert csak egy random számot írtam be
new Float:angle, Float:pos[3];
GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
GetVehicleZAngle(vehicleid, angle);
pos[0] += (TAVOLSAG * floatsin(-angle, degrees));//hozzáadjuk a lekért pozícióhoz a távolságot. (X tengely)
pos[1] += (TAVOLSAG * floatcos(-angle, degrees));//hozzáadjuk a lekért pozícióhoz a távolságot. (Y tengely)
//ha a csomagtartót akarod lekérdezni, akkor meg értelemszerûen kivonod a pozícióból

 
Természetesen a definiált távolság változhat, a kocsi típusától, mert minden kocsinak más a mérete. A méreteket meg szerintem letudod kérni a GetVehicleModelInfo()-val, majd kiszámítani vele a jármûvek távolságát a középpontól.
Nem teszteltem semmit, de mûködni kell!

kocsi elõl vagy hátul (szerk)
« Válasz #14 Dátum: 2014. március 31. - 21:08:57 »
0 Show voters
meglyikbõl vonnom melyiket hogy meg tudjam hátul van e ??
nem voltam soha se jó sin és cosinuszból:D (asse tudtam matekon mit számolunk ki vele igazán:(( )
távolsági középpontot hogy tom kiszámolni GetVehicleModelInfo val??
\"leközelebbi lekérdezés\" nél jó jönne mert beállitottam 2.0 (IsPlayerInRangeOfPoint) és ugye a kör sugara nem ér az orráig meg hátura ugy hogy ha a csomag tartót akarom kinyitni akkor már nem érzékeli azt hogy melyik kocsi vagyok.:(((
« Utoljára szerkesztve: 2014. március 31. - 21:24:08 írta kriszrap »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal