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: kriszrap - 2014. Március 26. - 20:38:14

Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 26. - 20:38:14
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 14:24:03
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 14:39:49
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).
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 15:46:34
A rotációs Z tengelyt nem lehet lementeni és tárolni egy változóba?
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 15:56:21
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 16:04:44
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..
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 16:44:44
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 16:49:16
Én csak segíteni próbálok :) Egyébként mind2-nknek van egy ötlete rá, nincs ezzel semmi baj :D 
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 16:53:35
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: Kovacs_Richard - 2014. Március 28. - 17:51:16
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...
Cím: kocsi elõl vagy hátul (szerk)
Írta: rhassi - 2014. Március 28. - 17:55:58
Ez alapján meg tudod csinálni.
Térgeometria: Körbe menni a játékos körül
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 18:07:09
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 28. - 19:45:12
vannak itt variációk irok ha jutottam valamire :)
szerk.:
Objectesre tudtok valami példával szolgálni?
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Március 31. - 20:17:45
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!
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 31. - 21:08:57
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.:(((
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Április 01. - 17:20:39
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!
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Április 02. - 14:25:47
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Április 05. - 11:43:48
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
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Április 05. - 12:15:29
na már kapisgálom:)
nagyon köszönöm:))
Zárok :)
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 26. - 20:38:14
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 14:24:03
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 14:39:49
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).
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 15:46:34
A rotációs Z tengelyt nem lehet lementeni és tárolni egy változóba?
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 15:56:21
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 16:04:44
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..
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 16:44:44
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.
Cím: kocsi elõl vagy hátul (szerk)
Írta: ppatrik2012 - 2014. Március 28. - 16:49:16
Én csak segíteni próbálok :) Egyébként mind2-nknek van egy ötlete rá, nincs ezzel semmi baj :D 
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 16:53:35
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: Kovacs_Richard - 2014. Március 28. - 17:51:16
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...
Cím: kocsi elõl vagy hátul (szerk)
Írta: rhassi - 2014. Március 28. - 17:55:58
Ez alapján meg tudod csinálni.
Térgeometria: Körbe menni a játékos körül
Cím: kocsi elõl vagy hátul (szerk)
Írta: Dfoglalo - 2014. Március 28. - 18:07:09
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 28. - 19:45:12
vannak itt variációk irok ha jutottam valamire :)
szerk.:
Objectesre tudtok valami példával szolgálni?
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Március 31. - 20:17:45
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!
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Március 31. - 21:08:57
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.:(((
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Április 01. - 17:20:39
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!
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Április 02. - 14:25:47
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]
Cím: kocsi elõl vagy hátul (szerk)
Írta: kadaradam - 2014. Április 05. - 11:43:48
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
Cím: kocsi elõl vagy hátul (szerk)
Írta: kriszrap - 2014. Április 05. - 12:15:29
na már kapisgálom:)
nagyon köszönöm:))
Zárok :)