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: vityaa - 2014. július 29. - 18:31:28

Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: vityaa - 2014. július 29. - 18:31:28
Sziasztok! Azt szeretném lekérni valahogy, hogy melyik (jármû)kerék (pontosabban a jármû melyik kereke) van a legközelebb egy bizonyos ponthoz. Elõre is köszönöm!
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Dfoglalo - 2014. július 29. - 18:45:30
A GetVehicleModelInfo függvény segítségével lekérdezed az adott jármû hosszát és szélességét, illetve a GetVehiclePos függvény segítségével az adott jármû pozícióját, majd egy kis matematikával meghatározod a kerekek helyzetét. Ezek után már egyszerû dolgod van; csak meg kell nézned, hogy melyik kapott pozíció van a legközelebb a kérdéses ponttól.
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: vityaa - 2014. július 29. - 19:04:30
Na ezaz, hogy a matek részére nem jövök rá :(
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Dfoglalo - 2014. július 29. - 19:43:16
Matek és logika nélkül mégis hogyan szeretnél te programozni? :confused:


Az még kimaradt, hogy az adott jármû rotációját is figyelembe kell venni. Na, így már nem is olyan egyszerû a képlet. Egy biztos: ezen fárasztó nap után nem fogok most nagy matekozásba kezdeni, bocsi. :confused:


Hehe, ZyZukám már adja is a -t, mert ki mertem mondani, matek és logika nélkül nem igazán fog neki menni ez az egész dolog. Meg kell küzdeni a megvalósításáért, fejben.
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: KovaNovik - 2014. július 29. - 19:48:12
A GetVehicleModelInfo-val lekérheted az elsõ és a hátsó két kerék közötti pontokat is.
A kocsi szélességének a felét kivonod a két kerék közti pozícióból, és megkapod a kerék pozícióját nagyjából.
A legközelebbihez pedig kell egy legközelebbi változó (kerék tárolására, annak a kocsinak a kereke, amelyik a legközelebb van, 1, 2, 3, vagy 4), egy távolság és egy ideiglenes változó. A legközelebbi alapból a legelsõ. Végigfutsz minden koordinátán, minden iterációnál lekéred az ideiglenes változóba az éppen adott ponttól vett távolságot, és ha ez nagyobb, mint az eddig talált legnagyobb, az eddig talált legnagyobb legyen (legnagyobb) egyenlõ a most vizsgálttól vett távolságoddal (ideiglenes változó), a legközelebbi kerék (vagy tömbben található pozíció) ID-jét pedig tárold egy másik változóban. Így megy a legközelebbi játékos, kocsi, 3dtextlabel, object, pickup, BÁRMI lekérés.
Tudtommal a kocsinak a koordinátái saját magához jépest vannak, így nem számí a rotáció, de ha igen, akkor is tele van a hiv. fórum ilyenekkel.
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Dfoglalo - 2014. július 29. - 19:55:03
KovaNovik, nem számolsz a kocsi rotációjával - melyet én is kifelejtettem elõször. Ha a kocsi rotációja 0, akkor (lehet, hogy pont fordítva van, de most így lesz) szépen kivonod X-bõl a szélesség felét - megtalálva a jobb kerék -, hozzáadod - megtalálva a bal kerék. Ha viszont 180 fokot fordult el, ez az egész felcserélõdik, ha 90/270-et, akkor már más tengelybõl kell kivonni, ha pedig teljesen más iránbya fordul, akkor mindkét tengelybõl különbözõ módon kell kivonni. Remélem érthetõ a dolog, ha nem, bocsi :D
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: KovaNovik - 2014. július 29. - 20:14:51
Érthetõ, csak már 1001 scriptben megírták, ahol kellett másra. Minek írjak feleslegesen scripteket? :D
Lehet amúgy, hogy egyszerûbb elõszõr megnézni, hogy az elejéhez vagy a hátuljához vagy közelebb. Azok csak koordináták. GetPlayerDistanceFromPoint. if(tav1 < tav2). Ezután, ha nem akarok nagyon számolni (mert ehhez nem értek), akkor csak, 0 90 180 270 360 közül kell meghatározni, hogy a melyikhez van a legközelebb. Ez megmondja, bal, vagy jobb oldalán vagy. De tényleg jobb lenne kiszámolni, és tényleg lusta vagyok most ehhez.


Amúgy is, mostanábam egyre többször inkább leírom a megoldást. Egyszerûen nem éri meg magyarázni.
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: vityaa - 2014. július 29. - 21:53:34
Arra rájöttem, hogy ha a kocsi rotációja 0 akkor
ha a szélesség felét is és a magasság felét is kivonom akkor eljutok a bal hátsó kerékhez
ha a szélesség felét kivonom és a magasság felét hozzáadom akkor a bal elsõ kerékhez
ha pedig a szélességgel végzett mûveleteket felcserélem akkor pont a jobb oldali kerekeket kapom meg.
De ott akadtam el az egésszel, hogy általában az autó nem a 0 rotációra áll. És innentõl nem világos.
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Ryan_Adam - 2014. július 29. - 22:03:54
2.0 verzió
Hozz létre a kerekekre láthatatlan objecteteket, majd kérd le annak a távolságát. :D
xd
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Dfoglalo - 2014. július 29. - 22:09:48
Kedves vityaa, egyszerû dolgod van még 90, 180, illetve 270 foknál is, csak utána bonyolódnak a dolgok. Talán még a 45, 135, illetve 225 is könnyen kiszámítható és szükséges ahhoz, hogy nagyjából pontos értéket kapjunk. De mindez valószínûleg elfelejthetõ Ryan_Adam hozzászólása miatt. Abból, hogy egy xd-vel megtoldottad a végét, arra következtetek, hogy nem vagy biztos a dologban. Kár, mert az ötleted nem hülyeség, sõt, talán a lehetõ legjobb megoldás! Repült egy zöld pacsi. :)
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: Ryan_Adam - 2014. július 29. - 22:13:47
Az \"xd\"-t azért írtam, mert azt hittem maga amit írtam nem lesz teljesen jó, de így teljesen más  :) Köszi.
Módosítva(rájöttem mire is akartál célozni): Ja igen, nem voltam benne teljesen biztos :D
Cím: Melyik kerék van a legközelebb xyz ponthoz
Írta: vityaa - 2014. július 29. - 22:47:43
Ez tényleg nagyon jó ötlet! Köszönöm!