[AJUDA]Code -
blackinhu214 - 19.09.2010
dae galera
to aki hj pois estou com um probleminha em um code q estou fazendo, eh o seguinte ao player digitar /procurar
vai pegar a posiзao do player q ele deseja e ativar um timer q pegarб a posiзao desse player a cada 2 segundos
o problema eh q ele so pega durante 4 segundos dps para.
code
pawn Код:
if(strcmp(cmd, "/procurar", true) == 0)
  {
    if(IsPlayerConnected(playerid))
    {
      if(PlayerInfo[playerid][pEmprego] != 1)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce nao e detetive !");
        return 1;
      }
      if(PlayerOnMission[playerid] > 0)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce esta em uma missao, nao pode usar este comando !");
        return 1;
      }
      if(UsedFind[playerid] != 0 && PlayerInfo[playerid][pDetSkill] < 401)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce so pode procurar novamente, daqui 2 Minutos !");
        return 1;
      }
      tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
        SendClientMessage(playerid, COLOR_GRAD2, "USE: /procurar [ id ]");
        return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
        if(giveplayerid != INVALID_PLAYER_ID)
        {
          /*if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Voce nao pode se procurar!"); return 1; }*/
          new points;
          new level = PlayerInfo[playerid][pDetSkill];
          if(level >= 0 && level <= 50)
          { points = 5; Tempoprocura[playerid] = 10; }
          else if(level >= 51 && level <= 100)
          { points = 8; Tempoprocura[playerid] = 10; }
          else if(level >= 101 && level <= 200)
          { points = 11; Tempoprocura[playerid] = 10; }
          else if(level >= 201 && level <= 400)
          { points = 14; Tempoprocura[playerid] = 10; }
          else if(level >= 401)
          { points = 20; Tempoprocura[playerid] = 10;}
          GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
        // new Float:X,Float:Y,Float:Z;
          GetPlayerPos(giveplayerid, xprocu,yprocu,zprocu);
          SetPlayerCheckpoint(playerid, xprocu,yprocu,zprocu, 6);
          FindTime[playerid] = 1;
          FindTimePoints[playerid] = points;
          PlayerInfo[playerid][pDetSkill] ++;
          UsedFind[playerid] = 1;
          Tempoprocura[playerid] = 10;
          Procurando[playerid] = giveplayerid;
          Procurando[giveplayerid] = Procurando[playerid];
          SetTimerEx("procurado",2000, false, "i", playerid);
          if(PlayerInfo[playerid][pDetSkill] == 50)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 2, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 100)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 3, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 200)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 4, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 400)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 5, Voce pode procurar mais rapido e encontrar mais rapido."); }
        }
      }
      else
      {
        SendClientMessage(playerid, COLOR_GREY, "  Invalido NICK/ID !");
      }
    }
    return 1;
  }
public do timer
pawn Код:
public procurado(playerid)
{
if(Tempoprocura[playerid] > 0)
{
new procura = Procurando[playerid];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Procurando[i] == procura)
{
GetPlayerPos(i,xprocu,yprocu,zprocu);
SetPlayerCheckpoint(i, xprocu,yprocu,zprocu,8);
}
Tempoprocura[playerid] --;
SetTimerEx("procurado",2000, true, "i", playerid);
}
}
return 1;
}
bom ta ae nao sei se fiz tudo certo =p
bom se alguem souber como ajudar agradecerei xD
flw galera
Re: [AJUDA]Code - [BEP]AcerPilot - 19.09.2010
pawn Код:
if(strcmp(cmd, "/procurar", true) == 0)
  {
    if(IsPlayerConnected(playerid))
    {
      if(PlayerInfo[playerid][pEmprego] != 1)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce nao e detetive !");
        return 1;
      }
      if(PlayerOnMission[playerid] > 0)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce esta em uma missao, nao pode usar este comando !");
        return 1;
      }
      if(UsedFind[playerid] != 0 && PlayerInfo[playerid][pDetSkill] < 401)
      {
        SendClientMessage(playerid, COLOR_GREY, "  Voce so pode procurar novamente, daqui 2 Minutos !");
        return 1;
      }
      tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
        SendClientMessage(playerid, COLOR_GRAD2, "USE: /procurar [ id ]");
        return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
        if(giveplayerid != INVALID_PLAYER_ID)
        {
          /*if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Voce nao pode se procurar!"); return 1; }*/
          new points;
          new level = PlayerInfo[playerid][pDetSkill];
          if(level >= 0 && level <= 50)
          { points = 5; Tempoprocura[playerid] = 10; }
          else if(level >= 51 && level <= 100)
          { points = 8; Tempoprocura[playerid] = 10; }
          else if(level >= 101 && level <= 200)
          { points = 11; Tempoprocura[playerid] = 10; }
          else if(level >= 201 && level <= 400)
          { points = 14; Tempoprocura[playerid] = 10; }
          else if(level >= 401)
          { points = 20; Tempoprocura[playerid] = 10;}
          GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
        //  new Float:X,Float:Y,Float:Z;
          GetPlayerPos(giveplayerid, xprocu,yprocu,zprocu);
          SetPlayerCheckpoint(playerid, xprocu,yprocu,zprocu, 6);
          FindTime[playerid] = 1;
          FindTimePoints[playerid] = points;
          PlayerInfo[playerid][pDetSkill] ++;
          UsedFind[playerid] = 1;
          Tempoprocura[playerid] = 10;
          Procurando[playerid] = giveplayerid;
          Procurando[giveplayerid] = Procurando[playerid];
          procurado(playerid);
          if(PlayerInfo[playerid][pDetSkill] == 50)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 2, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 100)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 3, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 200)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 4, Voce pode procurar mais rapido e encontrar mais rapido."); }
          else if(PlayerInfo[playerid][pDetSkill] == 400)
          { SendClientMessage(playerid, COLOR_YELLOW, "* Seu nivel de detetive agora й 5, Voce pode procurar mais rapido e encontrar mais rapido."); }
        }
      }
      else
      {
        SendClientMessage(playerid, COLOR_GREY, "  Invalido NICK/ID !");
      }
    }
    return 1;
  }
Respuesta: [AJUDA]Code -
blackinhu214 - 20.09.2010
mais e o timer onde coloco? xD
vlw por estar ajudando
Re: [AJUDA]Code - [BEP]AcerPilot - 20.09.2010
O timer vocк deixa quieto, sу muda o comando pelo que eu te passei.
Re: [AJUDA]Code -
ipsBruno - 20.09.2010
Santa mгe de deus esses comandos cheios de Else me dгo doir de cabeзa, Breve Exemplo
pawn Код:
if(UsedFind[playerid] != 0 && PlayerInfo[playerid][pDetSkill] < 401) return SendClientMessage(playerid, COLOR_GREY, " Â Voce so pode procurar novamente, daqui 2 Minutos !");
Viram? Poupamos 4 Linhas ¬¬
Re: [AJUDA]Code - [BEP]AcerPilot - 20.09.2010
Drakon eu prefiro os else's, fica mais organizado pra mim.
Respuesta: [AJUDA]Code -
blackinhu214 - 20.09.2010
estranho...
o checkpoint nao estб a seguir o procurado...
Acer poderia me dizer como funciona esse cmd q vc passou porque ainda nao intendi o q faz o checkpoint seguir o procurado =p
vlw xD
Re: [AJUDA]Code -
TiagoPS - 20.09.2010
claro no timer vc colocou
false quando deveria ser
true pq em false ele ira puzar uma vex e parara jб true continuara sempre ate haver um killtimer
@edit
dando uma melhor visualizada no seu codigo vc fez com que a public seja puxada por dois timers diferente isso pode dar conflito tambem coloque um killtimer dentro da public que esta sendo chamda e deixe somente aquela que esta dentro da public sendo chamda poderб resolver o problema
Re: [AJUDA]Code - [BEP]AcerPilot - 20.09.2010
No comando, tinha o SetTimer sem repetiзгo para chamar a public procurado, mas para ficar mais simples e funcional eu tirei esse timer e coloquei sу pra chamar a public procurado, que jб tem um timer dentro dela e ia ficar se chamando de 2 em 2 segundos.
Substitui a public por essa:
pawn Код:
public procurado(playerid)
{
if(Tempoprocura[playerid] > 0)
{
new procura = Procurando[playerid];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Procurando[i] == procura)
{
GetPlayerPos(i,xprocu,yprocu,zprocu);
SetPlayerCheckpoint(i, xprocu,yprocu,zprocu,8);
}
Tempoprocura[playerid] --;
SetTimerEx("procurado",2000, true, "i", playerid);
}
}
}