Ayuda IsPlayerInRangeOfPoint -
Master[Pro] - 08.06.2010
Buenas, bueno puse un comando para comprar un francotirador (/sniper) entonces abajito pongo esto:
if(IsPlayerInRangeOfPoint(playerid,0.3,-108.7690,284.0942,-102.9492)) Para comprobar que solo compre esa arma en cierta parte bueno ese no es el punto, Me gustaria saber como poner en IsPlayerInRangeOfPoint las cordenadas Xmax, Xmin, Ymax, Ymin que hay un tutorial de eso, para asi no poner una parte especifica sino marcar todo un territorio y asi comprar la arma en todo un territorio : D
Bueno solo eso De ante mano les agredezco por su ayuda
Re: Ayuda IsPlayerInRangeOfPoint -
leaNN! - 08.06.2010
Creo que no se puede lo de el "territorio", lo que si podes usar es el Multi Streamer de Incognito, y podrias hacer algo como:
pawn Код:
//TOPE DEL GM/FS
#include <streamer>
new AreaSniper;
AreaSniper = CreateDynamicArea(COORDENADAS)
//En OnPlayerCommandText
if(strcmp("/sniper", cmdtext, true, 1) == 0)
{
if(IsPlayerInDynamicArea(playerid, AreaSniper){//Si estб en el Area...
GivePlayerWeapon(playerid, SNIPER, BALAS)
else if(!IsPlayerInDynamicArea(playerid, AreaSniper)// Si NO estб en el Area...
{
SendClientMessage(playerid, COLOR, "No estas en X area!");
}
return 1;
Pruebalo asн.
Re: Ayuda IsPlayerInRangeOfPoint -
CristianTdj - 08.06.2010
Yo uso una funciуn:
pawn Код:
CercaDe(playerid, Float:radio, Float:x, Float:y, Float:z)
{
new Float:vposx, Float:vposy, Float:vposz, Float:posx, Float:posy, Float:posz; GetPlayerPos(playerid, vposx, vposy, vposz);
posx = (vposx -x); posy = (vposy -y); posz = (vposz -z);
if (((posx < radio) && (posx > -radio)) && ((posy < radio) && (posy > -radio)) && ((posz < radio) && (posz > -radio)))
{ return 1; }
return 0;
}
Y se usarнa asн:
pawn Код:
// Arriba.
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_FIRE))
{
if(CercaDe(playerid, Radio, Coordenadas)
{
SendClientMessage(playerid, Azul, "* Has hecho clic con el ratуn en nuestra zona de prueba.");
}
}
return 1;
}
Re: Ayuda IsPlayerInRangeOfPoint -
MrDeath537 - 08.06.2010
Lo mas sencillo seria con la funcion IsPlayerInArea
pawn Код:
stock IsPlayerInArea(playerid, Float:xmin, Float:xmax, Float:ymin, Float:ymax)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= xmin && X <= xmax && Y >= ymin && Y <= ymax)
{
return 1;
}
else
{
return 0;
}
}
Disculpa si esta mal, la acabo de escribir yo aca, por que no la encontraba. Creo que esta bien
EDIT: Me olvide de agregar como se usa.
Por ejemplo, quiere saber si el jugador esta dentro de las coordenadas de un aeropuerto:
pawn Код:
if(IsPlayerInArea(playerid, xmin, xmax, ymin, ymax))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Estas adentro del aeropuerto");
}
Re: Ayuda IsPlayerInRangeOfPoint -
TheChaoz - 08.06.2010
si mrdeath esta bien, aun q podes ponerla asi y es mas corto el codigo:
pawn Код:
stock IsPlayerInArea(playerid, Float:xmin, Float:xmax, Float:ymin, Float:ymax)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= xmin && X <= xmax && Y >= ymin && Y <= ymax) return 1;
return 0;
}
y tmb estoy de acuerdo en que es lo mas simple, aun que posiblemente a algunos se les complique para sacar las coordenadas y ver cual es X y cual es Y en el momento de guardar la posicion.
Re: Ayuda IsPlayerInRangeOfPoint -
Master[Pro] - 09.06.2010
Muchas gracias a todos edito si no me funciona