SA-MP Forums Archive
Duda - 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: Duda (/showthread.php?tid=461134)



Duda - adrianxd - 31.08.2013

Hola chicos mi duda es la siguiente,

Como hago para detectar una posiciуn exacta del St al entrar a un checkpoint

en mi caso lo tengo asi

pawn Код:
public OnPlayerEnterRaceCheckpoint(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    PlayerPlaySound(playerid, 1139, x, y, z);
    switch(Stats[playerid])
    {

         case 1:
         {
              new tmp[256];
              static place;
              place++;
              DisablePlayerRaceCheckpoint(playerid);
              PlayerPlaySound(playerid, 1056, 0.0, 0.0, 10.0);
              SetPlayerRaceCheckpoint(playerid, 0,3016.3357,-1632.8782,67.4452,3067.0481,-1652.2799,80.6263,10);
              Stats[playerid] = 2;
              format (tmp, sizeof (tmp) , "   %d" , place) ;
              TextDrawSetString(Textdraw1,tmp);
              return 1;
         }
pero tal cosa se bugea ya que cuando un jugador entra al checkpoint le da la posiciуn 1 pero si otro jugador que no a pasado ese checkpoint y entra en uno anterior al del jugador 1 le da la posiciуn 1 y se bugea no detecta bien la posiciуn 1 por lo cual genera que todo este mal.


Respuesta: Duda - Swedky - 31.08.2013

Dices una posiciуn bien exacta? Asн como cuando usas 'SetPlayerPos'?.


Respuesta: Duda - adrianxd - 31.08.2013

Si de la posiciуn 1, ya que cuando entran jugadores a anteriores checkpoints de la posiciуn 1 les da la a ellos la posiciуn 1 ._.


Respuesta: Duda - Swedky - 31.08.2013

Utiliza una variable .-.


Respuesta: Duda - adrianxd - 31.08.2013

lol?.

Intente usar esto

pawn Код:
new ClosestID = INVALID_PLAYER_ID;
new Float:ClosestDis = 0;
for(new i; i < GetMaxPlayers(); i++)
{
if(ClosestID == INVALID_PLAYER_ID || GetPlayerDistanceToPoint(i, X, Y, Z) < ClosestDis)
{
ClosestID = i;
ClosestDis = GetPlayerDistanceToPoint(i, X, Y, Z);
}
}
pawn Код:
stock GetPlayerDistanceToPoint(playerid, Float:X, Float:Y, Float:Z)
{
  new Float:XP,Float:YP,Float:ZP;
  GetPlayerPos(playerid,XP,YP,ZP);
  return (XP - X) + (YP - Y) + (ZP - Z);
}
pero no sigue igual D: xDDD


Respuesta: Duda - Swedky - 31.08.2013

Quote:
Originally Posted by adrianxd
Посмотреть сообщение
lol?.
We xD.

Te doy un ejemplo:


pawn Код:
new EntroARace[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
EntroARace[playerid] = 0;
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
for(new i; i < GetMaxPlayers(); i++)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    PlayerPlaySound(playerid, 1139, x, y, z);
    switch(Stats[playerid])
    {

         case 1:
         {
              EntroARace[playerid] = 1;
              new tmp[256];
              static place;
              place++;
              DisablePlayerRaceCheckpoint(playerid);
              PlayerPlaySound(playerid, 1056, 0.0, 0.0, 10.0);
              SetPlayerRaceCheckpoint(playerid, 0,3016.3357,-1632.8782,67.4452,3067.0481,-1652.2799,80.6263,10);
              Stats[playerid] = 2;
              format (tmp, sizeof (tmp) , "   %d" , place) ;
              TextDrawSetString(Textdraw1,tmp);
              return 1;
         }
         case 2:
         {
              EntroARace[playerid] = 2;
              //Cуdigos...
          }
Y asн sucesivamente.

Eso es lo que querias? .-.



Respuesta: Duda - adrianxd - 31.08.2013

Si te das cuenta

pawn Код:
Stats[playerid] = 2;
hace lo que tu estas mandando xD


Respuesta: Duda - Swedky - 31.08.2013

Quote:
Originally Posted by adrianxd
Посмотреть сообщение
Si te das cuenta

pawn Код:
Stats[playerid] = 2;
hace lo que tu estas mandando xD
No creo que sea un problema.

Te preguntй que era exactamente lo que necesitabas.



Respuesta: Duda - Parka - 31.08.2013

No se muy bien de lo que hablan pero si es para carrera debes trabajar con velocidad no con exactitud ya que quien llegue de primero lo determina el lag


Re: Duda - Daniel-92 - 31.08.2013

"place" debe ser un array para todos los jugadores.