[Tool/Web/Other] Comando [/Procurar] com Loop
#1

Criei um comando /procurar pro meu servidor, e decidi postar aqui.
Lembrando: O comandos esta adaptado para minha Gm, se quiser, vocк tera que adaptar para a sua
Esta bem basico, mas vocк pode aperfeiзoar

pawn Код:
//Topo da GM

enum Info
{
    Logado,
    Emprego,
    Policial,
    Procurando,
};
new PlayerInfo[MAX_PLAYERS][Info];

//Na public OnPlayerConnect(playerid)
public OnPlayerConnect(playerid)
{
    PlayerInfo[playerid][Logado] = 0; //No meu Gm, o player so fica logado, apos logar sua conta
    PlayerInfo[playerid][Emprego] = 0;
    PlayerInfo[playerid][Policial] = 0;
    PlayerInfo[playerid][Procurando] = -1;
}

//Na public OnPlayerCommandText(playerid, cmdtext[])
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[128], idx;
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/procurar", true) == 0)
    {
        if(PlayerInfo[playerid][Emprego] == 1 || PlayerInfo[playerid][Policial] == 1)
        {
            new tmp[128]; new pid;
            tmp = strtok(cmdtext, idx);

            if(strlen(tmp) == 0)
            {
                SendClientMessage(playerid, COR_GRAD, "[Erro] Use: /procurar [ID]");
                return 1;
            }
            pid = strval(tmp);

            if(PlayerInfo[pid][Logado] == 1)
            {
                if(pid != playerid)
                {
                    PlayerInfo[playerid][Procurando] = pid;
                    SetTimerEx("TempoProcurando" ,500, 0, "i", playerid);
                }
                else
                {
                    SendClientMessage(playerid, COR_GRAD, "[Erro] Vocк nгo pode se procurar");
                }
            }
            else
            {
                SendClientMessage(playerid, COR_GRAD, "[Erro] Este jogador nгo esta logado");
            }
        }
        else
        {
            SendClientMessage(playerid, COR_GRAD, "Vocк nгo й um Detetive ou um Policial");
        }
        return 1;
    }

    if(strcmp(cmdtext,"/pararprocurar", true)==0 || strcmp(cmdtext,"/retirarprocurar", true)==0)
    {
        if(PlayerInfo[playerid][Emprego] == 1 || PlayerInfo[playerid][Policial] == 1)
        {
            PlayerInfo[playerid][Procurando] = -1;
            DisablePlayerCheckpoint(playerid);
            SendClientMessage(playerid, COR_GRAD, "[Info] Vocк parou de procurar o player");
        }
        return 1;
    }
    return 1;
}

//Crie essa public no final da Gm, se preferir crie onde quiser =D
forward TempoProcurando(playerid);
public TempoProcurando(playerid)
{
    if(PlayerInfo[playerid][Procurando] >= 0)
    {
        new Float:X, Float:Y, Float:Z;
        GetPlayerPos(PlayerInfo[playerid][Procurando], X, Y, Z);
        SetPlayerCheckpoint(playerid, X, Y, Z, 4);
        SetTimerEx("TempoProcurando" ,500, 0, "i", playerid);
    }
    else
    {
        DisablePlayerCheckpoint(playerid);
    }
    return 1;
}

//Coloque isto no final da sua GM
strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Acho que postei certo, qualquer erro me avise
Reply
#2

Obrigado pela contribuiзгo..

mas a seзгo foi a errada

Poste seus cуdigos aqui: https://sampforum.blast.hk/showthread.php?tid=144744&page=293
Reply
#3

Achei muito simples, isso serviria mais para um cуdigo ъtil, e nгo й necessбrio todas essas informaзхes na enum, atй porque isso й parte do seu gm, e seria essencial adapta-lo para o uso do mesmo.

Mas, parabйns.
Reply
#4

nao consigo perceber porque ainda usam strtok e strcmp nos comandos.

da uma olhada cara: https://sampforum.blast.hk/showthread.php?tid=493276
Reply
#5

Quote:
Originally Posted by PT
Посмотреть сообщение
nao consigo perceber porque ainda usam strtok e strcmp nos comandos.

da uma olhada cara: https://sampforum.blast.hk/showthread.php?tid=493276
Isso me cheira a costumes GF...
Reply
#6

Se fizer isso em um gamemode nгo vai dar certo, tem que substituir os cуdigos...
Por exemplo, PlayerInfo a maioria dos gamemodes tem isso.

strtock + strcmp = processamento lento de comandos.

cуdigo ъtil https://sampforum.blast.hk/showthread.php?tid=144744&page=293
Reply
#7

Quote:
Originally Posted by zSuYaNw
Посмотреть сообщение
Obrigado pela contribuiзгo..

mas a seзгo foi a errada

Poste seus cуdigos aqui: https://sampforum.blast.hk/showthread.php?tid=144744&page=293
Vlw,
Tava procurando isto ai, de como por o level procurado do cara em cima dele, vlw dnv =D
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)