Ayuda IsPlayerInRangeOfPoint
#1

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
Reply
#2

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н.
Reply
#3

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;
}

Reply
#4

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");
}
Reply
#5

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.
Reply
#6

Muchas gracias a todos edito si no me funciona
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)