Szerző Téma: Trinogomteria  (Megtekintve 456 alkalommal)

Trinogomteria
« Dátum: 2012. augusztus 03. - 11:01:34 »
0 Show voters
Halihó
Rég írtam ide, szoval itt az ideje.
Van egy függvényem
 
stock Float:GetPosFromPlayer(playerid, &Float:x, &Float:y, Float:distance, mode = 0) {
new Float:A;
GetPlayerPos(playerid, x, y, A);
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), A);
else GetPlayerFacingAngle(playerid, A);
switch(mode) {
    case 0: x += (distance * floatsin(-A, degrees)), y += (distance * floatcos(-A, degrees));
case 1: x -= (distance * floatsin(-A, degrees)), y -= (distance * floatcos(-A, degrees));
case 2: x -= (distance * floatsin(-A, degrees)), y += (distance * floatcos(-A, degrees));
case 3: x += (distance * floatsin(-A, degrees)), y -= (distance * floatcos(-A, degrees));
}
return A;
}

 
Ezzel a játékos körüli pozíciókat szeretném számolni, kocka alakban. Mûködik is, de csak akkor pontos, ha egy meghatározott szögben állok. Ezt szeretném orvosolni, de mivel nem sokat értek a Trigonometriához, elakadtam. A függvény mûködik, de azt a hibát szeretném benne kijavítani, hogy minden szögben másmilyen kockát ad ki.
Ilyesmit szeretnék
[hs width=300 height=200]http://i46.tinypic.com/352oy01.jpg[/hs]

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Trinogomteria
« Válasz #1 Dátum: 2012. augusztus 03. - 11:24:30 »
0 Show voters
Egyszerûbb ha streamert használsz, és:
 
AttachDynamicAreaToPlayer(areaid, playerid);

Trinogomteria
« Válasz #2 Dátum: 2012. augusztus 03. - 12:18:21 »
0 Show voters
Idézetet írta: DrAkE date=1343985870\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25418\" data-ipsquote-contentclass=\"forums_Topic
Egyszerûbb ha streamert használsz, és:
 
AttachDynamicAreaToPlayer(areaid, playerid);

 

Akkor pontosabban fejezem ki magam.
A pozíciókra lenne szükségem, egy verseny scripthez, ami a kezdõ pont köré helyezi kocka alakban a jármûveket, majd bele a játékosokat.
JUDIT: Példába azért játékos pozíciót írtam, mert akkor kéne létrehoznia a 4 pozíciót, amikor az elsõ checkpointot (azaz kezdõ pozíciót) elmentem.
« Utoljára szerkesztve: 2012. augusztus 03. - 12:29:49 írta TengeriMalac »

Trinogomteria
« Válasz #3 Dátum: 2012. augusztus 03. - 20:29:23 »
+1 Show voters
Bogozd ki, nincs kedvem kiszedni belõle a felesleget.
 
COMMAND:four(playerid)
{
new
Float:a_,
Float:x_,
Float:y_,
Float:z_;
GetPlayerPos(playerid, z_, z_, z_);
GetPlayerFacingAngle(playerid, a_);
for(new i; i < 4; i++)
{
GetPosFromPlayer(playerid, x_, y_, 8.000, i);
CreateVehicle(411, x_, y_, z_ + 1, a_, -1, -1, 60000000);
printf(\"x: %f y: %f\", x_ , y_);
}
return 1;
}
 

stock
GetPosFromPlayer(playerid, &Float:x, &Float:y, Float:distance, mode = 0)
{
new
    Vehicle_ID = GetPlayerVehicleID(playerid),
Float:a;
if(Vehicle_ID)
{
    GetVehiclePos(Vehicle_ID,x,y,a);
    GetVehicleZAngle(Vehicle_ID, a);
} else {
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
}
switch(mode)
{
    case 0: a = floatadd(a, 45.0000), printf(\"mode. %d - %f\", mode, a);
case 1: a = floatadd(a, 135.0000), printf(\"mode. %d - %f\", mode, a);
case 2: a = floatadd(a, 225.0000), printf(\"mode. %d - %f\", mode, a);
case 3: a = floatadd(a, 315.0000), printf(\"mode. %d - %f\", mode, a);
}
if(a > 360) a = floatsub(a, 360);
printf(\"%f\", a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}

Trinogomteria
« Válasz #4 Dátum: 2012. augusztus 03. - 20:40:57 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1344018563\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25418\" data-ipsquote-contentclass=\"forums_Topic
Bogozd ki, nincs kedvem kiszedni belõle a felesleget.
 
COMMAND:four(playerid)
{
new
Float:a_,
Float:x_,
Float:y_,
Float:z_;
GetPlayerPos(playerid, z_, z_, z_);
GetPlayerFacingAngle(playerid, a_);
for(new i; i < 4; i++)
{
GetPosFromPlayer(playerid, x_, y_, 8.000, i);
CreateVehicle(411, x_, y_, z_ + 1, a_, -1, -1, 60000000);
printf(\"x: %f y: %f\", x_ , y_);
}
return 1;
}
 

stock
GetPosFromPlayer(playerid, &Float:x, &Float:y, Float:distance, mode = 0)
{
new
    Vehicle_ID = GetPlayerVehicleID(playerid),
Float:a;
if(Vehicle_ID)
{
    GetVehiclePos(Vehicle_ID,x,y,a);
    GetVehicleZAngle(Vehicle_ID, a);
} else {
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
}
switch(mode)
{
    case 0: a = floatadd(a, 45.0000), printf(\"mode. %d - %f\", mode, a);
case 1: a = floatadd(a, 135.0000), printf(\"mode. %d - %f\", mode, a);
case 2: a = floatadd(a, 225.0000), printf(\"mode. %d - %f\", mode, a);
case 3: a = floatadd(a, 315.0000), printf(\"mode. %d - %f\", mode, a);
}
if(a > 360) a = floatsub(a, 360);
printf(\"%f\", a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}

 

most jöttem rá, mennyi mindent nem tudok még.
köszi, mûködik.
ment a +

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal