[Duda/Ayuda] GetPlayerFacingAngle & Variable ...
#1

Buenas a Todos, tengo dos duda/problemita :S :

La primera es con GetPlayerFacingAngle, kiero hacer ke un comando solo se pueda usa en el angulo correspondiente,
pero no se ke estoy haciendo mal e no me deja usar lo ke tira el mensaje del if ke indicaria ke no esta en el angulo correcto:

pawn Код:
new Float:Angle;
    new GetAngle = GetPlayerFacingAngle(playerid, Angle);
    if(GetAngle != 90) return 1;
la segunda es con variables y GetMaxPlayers, cree un comando con el ke le da al player la variable con el array en 1
Ejemplo: variable[playerid] = 1; pero la cosa es ke kiero colocar arriba del comando ke chekee a todos los player y determine si hay 4 player con la variable correspondiente y asi no deje usar el comando.

hice esto, pero creo ke no funciona por ke hay esta chekeando si el player(invididual) tiene la variable con el array 4, No?

pawn Код:
for(new i; i < GetMaxPlayers(); i++)
    if(IsPlayerConnected(i))
    if(variable[i] == 4) return 1;
Desde Ya Muchas Gracias .
Reply
#2

pawn Код:
new Float:angle;
GetPlayerFacingAngle(playerid, angle);
if(angle != 90) return 1;

new count = 0;
for(new i = 0; i < GetMaxPlayers(); i++)
{
    if(IsPlayerConnected(i) && variable[i] != 0) count++;
}
if(count == 4) return 1;
Reply
#3

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
pawn Код:
new Float:angle;
GetPlayerFacingAngle(playerid, angle);
if(angle != 90) return 1;

new count = 0;
for(new i = 0; i < GetMaxPlayers(); i++)
{
    if(IsPlayerConnected(i) && variable[i] != 0) count++;
}
if(count == 4) return 1;
Gracias, l ode contrar las variables ya esta, no se me habia prendido la ramparita :P xDD

y lo de GetPlayerFacingAngle sigue sin funcionar, ya habia intentado de esa forma y varias otras, pero sigue igual :S
hasta intente colocando el angulo ke me sale con /save y nada :S.
Reply
#4

El cуdigo estб bien, quizбs no estбs poniendo bien el angulo. Deja el cуdigo completo, capaz el error lo tenes en otra parte.
Reply
#5

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
El cуdigo estб bien, quizбs no estбs poniendo bien el angulo. Deja el cуdigo completo, capaz el error lo tenes en otra parte.
pawn Код:
COMMAND:comando(playerid, params[])
{
    new Float:Angle;
    GetPlayerFacingAngle(playerid, Angle);
    if(IsPlayerInRangeOfPoint(playerid, 1.0, 1794.57, -1709.26, -3.06))
    {
         if(Angle != 87.7341) return SendClientMessage(playerid, -1, "   [!] Debes Mirar Hacia Delante!.");
         //DEMAS FUNCION
         SendClientMessage(playerid, -1, "   [!] me da la funcion!.");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.0, 1794.57, -1705.78, -3.06))
    {
         if(Angle != 87.7341) return SendClientMessage(playerid, -1, "   [!] Debes Mirar Hacia Delante!.");
         //DEMAS FUNCION
         SendClientMessage(playerid, -1, "   [!] me da la funcion!.");
    }
    return 1;
}
ahora intentare colocando GetPlayerFacingAngle dentro de los IsPlayerInRangeOfPoint, pero no creo ke sea eso, creo. :S
Reply
#6

Setea al jugador en el angulo con otro comando, sino dale un rango de angulos, por ejemplo asi:

pawn Код:
if(Angle >= 86 && Angle <= 88) return SendClientMessage(playerid, -1, "   [!] Debes Mirar Hacia Delante!.");
Reply
#7

Quote:
Originally Posted by NeuZz
Посмотреть сообщение
Setea al jugador en el angulo con otro comando, sino dale un rango de angulos, por ejemplo asi:

pawn Код:
if(Angle >= 86 && Angle <= 88) return SendClientMessage(playerid, -1, "   [!] Debes Mirar Hacia Delante!.");
La respuesta mбs vбlida en el caso de los бngulos.
Por que GetPlayerFacingAngle casi nunca coincidirб con el valor que tu pones.
Deberнas haces como un trнangulo al revйs partiendo desde el jugador. Y se consigue como dijo NeuZz.

El punto verde es el jugador, y la raya roja la zona hacia donde quieres que mire, si tu quieres ejecutar X funciуn cuando este mirando JUSTO en el centro es casi imposible, por que es difнcil que GetPlayerFacingAngle devuelva justo lo que tu pusiste en el script. Entonces la forma mбs probable es esto, cogiendo un "trozo" de pared y que se ejecute cuando mire ese trozo.
Se hace cogiendo dos бngulos, uno mirando un poquito hacia el extremo izquierdo de esa zona, y luego el derecho.
Y haces la condiciуn con los operadores >, = y <.
Reply
#8

Tal vez esta funcion te ayude en lo que queres hacer:

pawn Код:
stock IsPointInPlayerScreen(playerid, Float:x, Float:y, Float:z)
{
    new Float:P[3], Float:Dist;
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    if(z-P[2]>15.0 || P[2]-z>15.0)return 0;
    Dist = floatsqroot(floatpower((P[0]-x), 2)+floatpower((P[1]-y), 2)+floatpower((P[2]-z), 2));
    if(Dist>100.0)return 0;//Puedes cambiar el 100.0 por la distancia que tu quieras
    new Float:cV[3], Float:cP[3], Float:T[3], Float:Ar;
    GetPlayerCameraPos(playerid, cP[0], cP[1], cP[2]);
    GetPlayerCameraFrontVector(playerid, cV[0], cV[1], cV[2]);
    T[0] = cV[0]*Dist+cP[0];
    T[1] = cV[1]*Dist+cP[1];
    T[2] = cV[2]*Dist+cP[2];
    if(z-T[2]>10.5 || T[2]-z>10.5)return 0;
    if(Dist<7.0)return 1;
    Ar=atan2((P[1]-T[1]), (P[0]-T[0]));
    if(Ar-45.0<(atan2((P[1]-y), (P[0]-x)))<Ar+45.0)return 1;
    return 0;
}
Reply
#9

Quote:
Originally Posted by the_chaoz
Посмотреть сообщение
Tal vez esta funcion te ayude en lo que queres hacer:

pawn Код:
stock IsPointInPlayerScreen(playerid, Float:x, Float:y, Float:z)
{
    new Float:P[3], Float:Dist;
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    if(z-P[2]>15.0 || P[2]-z>15.0)return 0;
    Dist = floatsqroot(floatpower((P[0]-x), 2)+floatpower((P[1]-y), 2)+floatpower((P[2]-z), 2));
    if(Dist>100.0)return 0;//Puedes cambiar el 100.0 por la distancia que tu quieras
    new Float:cV[3], Float:cP[3], Float:T[3], Float:Ar;
    GetPlayerCameraPos(playerid, cP[0], cP[1], cP[2]);
    GetPlayerCameraFrontVector(playerid, cV[0], cV[1], cV[2]);
    T[0] = cV[0]*Dist+cP[0];
    T[1] = cV[1]*Dist+cP[1];
    T[2] = cV[2]*Dist+cP[2];
    if(z-T[2]>10.5 || T[2]-z>10.5)return 0;
    if(Dist<7.0)return 1;
    Ar=atan2((P[1]-T[1]), (P[0]-T[0]));
    if(Ar-45.0<(atan2((P[1]-y), (P[0]-x)))<Ar+45.0)return 1;
    return 0;
}
gracias, eso keria me habia olvidado de la funcion GetPlayerCameraFrontVector

Muchas Gracias ya solucione .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)