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

kocsi elõl vagy hátul (szerk)
« Válasz #15 Dátum: 2014. április 01. - 17:20:39 »
0 Show voters
Igazából annyi a távolság kiszámítása, hogy kiszámítod a kocsi hosszúságát, majd elosztod azt kettõvel, mert ugye a kocsi közepétõl kezdi a méretezést. Megírtam neked a kódot, mostmár csak át kell írnod, az remélem már menni fog
 
#include <a_samp>
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SPRINT)
{
    new Float:angle, Float:pos[3], Float:X, Float:Y, Float:Z, Float:size;
    for(new i = 0; i < MAX_VEHICLES; i++)
{
   GetVehiclePos(i, pos[0], pos[1], pos[2]);
   GetVehicleZAngle(i, angle);
   if(IsPlayerInRangeOfPoint(playerid, 5.0, pos[0], pos[1], pos[2]))
   {
       GetVehicleModelInfo(GetVehicleModel(i), VEHICLE_MODEL_INFO_SIZE, X, Y, Z);
        size = VectorSize(X, Y, Z) / 2;
       pos[0] -= (size * floatsin(-angle, degrees));
      pos[1] -= (size * floatcos(-angle, degrees));
      SetPlayerPos(playerid, pos[0], pos[1], pos[2]);
   }
}
}
return 1;
}

 
Tesztelve, mûködik!

kocsi elõl vagy hátul (szerk)
« Válasz #16 Dátum: 2014. április 02. - 14:25:47 »
0 Show voters
Kicsi szájba rágósan leírnád hogy itt igazából mit csinál és hogy:DDD
(nem szeretem ha olyan kód van a modóm amit én nem értek )
 
 GetVehicleModelInfo(GetVehicleModel(i), VEHICLE_MODEL_INFO_SIZE, X, Y, Z);
                        size = VectorSize(X, Y, Z) / 2;
                       
                            pos[0] -= (size * floatsin(-angle, degrees));
                                pos[1] -= (size * floatcos(-angle, degrees));
                                SetPlayerPos(playerid, pos[0], pos[1], pos[2]);

 
[mod]Örülök, hogy pawn code tagbe akartad tenni a forráskódot. :thumbsup: Nem sokan veszik a fáradtságot. Viszont rosszul sült el a dolog, mert pawno-t adtál meg a code tagban, amely egy program, nem pedig pawn-t, amelyik a programozási nyelv. Amely egyben a kulcsszó a megfelelõ tag kitételéhez is. (Ezt adtad meg: [ code=pawno ]) Remélem nem baj, hogy javítottam :D #ModiMagyaráz LvL 999[/mod]
« Utoljára szerkesztve: 2014. április 02. - 15:07:58 írta Dfoglalo »

kocsi elõl vagy hátul (szerk)
« Válasz #17 Dátum: 2014. április 05. - 11:43:48 »
0 Show voters
Bocs, hogy ilyen késõn írok, de nem volt idõm válaszolni.
 

GetVehicleModelInfo(GetVehicleModel(i), VEHICLE_MODEL_INFO_SIZE, X, Y, Z); // lekéri a jármû méretét, majd az értékeket eltároljuk az X, Y,  Z változóba
size = VectorSize(X, Y, Z) / 2; // van 3 vektorunk (X, Y, Z). 0.3x-ben lett hozzáadva a VectorSize() függvény (ez nem azt jelenti, hogy eddig nem lehetett kiszámítani).
                  //Ez abban segít, hogy kitudd számítani a megkapott vektorok nagyságát.
                  //Jelen esetben a kocsi nagysága. Ugye lekértük a kocsi pozícióját és eltároltuk azt a pos[0] (X) és pos[1] (Y) változóba.
                  //Mivel a GetVehiclePos() a jármû közepét kéri le (mert ugyan nem a kocsi elejétõl szamolunk, hanem csak a közepétõl), így a kapott eredmény értéket el kell osztani a felével,
                  //hogy megkapd a megfelõ távolságot a csomagtartótól. A \"size\" változóba eltároljuk az értéket
pos[0] -= (size * floatsin(-angle, degrees)); //Kiszámítjuk a távolságot, mostmár csak a kocsi mögé kell rakni a playert. sinussal kiszámítjuk, hogy hol lesz a poz. az X tengelyen
pos[1] -= (size * floatcos(-angle, degrees)); //cosinussal kiszámítjuk hogy hol lesz a poz. az Y tengelyen
SetPlayerPos(playerid, pos[0], pos[1], pos[2]);//végül elteleportáljuk a playert

kocsi elõl vagy hátul (szerk)
« Válasz #18 Dátum: 2014. április 05. - 12:15:29 »
0 Show voters
na már kapisgálom:)
nagyon köszönöm:))
Zárok :)

kocsi elõl vagy hátul (szerk)
« Válasz #19 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 #20 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 #21 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 #22 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 #23 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 #24 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 #25 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 #26 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 #27 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 #28 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 #29 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

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal