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]
new Float:X,Float:Y,Float:Z,vehid;GetVehiclePos(vehid,X,Y,Z);
Ez alapján meg tudod csinálni.Térgeometria: Körbe menni a játékos körül [/quote]
#define TAVOLSAG 3.0 //távolság a kocsi közepétõl. Írd át, mert csak egy random számot írtam benew 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
#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;}
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]);
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óbasize = 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éketpos[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 tengelyenpos[1] -= (size * floatcos(-angle, degrees)); //cosinussal kiszámítjuk hogy hol lesz a poz. az Y tengelyenSetPlayerPos(playerid, pos[0], pos[1], pos[2]);//végül elteleportáljuk a playert