[AJUDA]Code
#1

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

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;
    }
Reply
#3

mais e o timer onde coloco? xD
vlw por estar ajudando
Reply
#4

O timer vocк deixa quieto, sу muda o comando pelo que eu te passei.
Reply
#5

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

Drakon eu prefiro os else's, fica mais organizado pra mim.
Reply
#7

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)