[Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
OTACON - 26.12.2012
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

.
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
[J]ulian - 26.12.2012
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;
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
OTACON - 26.12.2012
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.
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
[J]ulian - 26.12.2012
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.
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
OTACON - 26.12.2012
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
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
NeuZz - 26.12.2012
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!.");
Re: Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
[DOG]irinel1996 - 26.12.2012
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
<.
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
TheChaoz - 26.12.2012
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;
}
Respuesta: [Duda/Ayuda] GetPlayerFacingAngle & Variable ... -
OTACON - 26.12.2012
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

.