SA-MP Forums Archive
Ayuda IsPlayerInRangeOfPoint - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Ayuda IsPlayerInRangeOfPoint (/showthread.php?tid=153239)



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