[Ajuda]/Prender
#1

Seguinte Pessoal, Fiz um comando de prender o Player Por 2 Minutos, Funciona, mais as Vezes ele nгo й solto, acho que o problema ta no settimer, mais ao meu ver estб tudo certo, Se alguйm conseguir solucionar o problema agradeзo e +rep.
pawn Код:
if(strcmp("/prender", cmd, true) == 0)
        {
        if(pInfo[playerid][AdminLogado] == 0)
        {
            SendClientMessage(playerid, 0xFC4430AA,"Vocк nгo й Administrador!");
            return 1;
        }
        if(pInfo[playerid][AdminLevel] < 2)
        {
            SendClientMessage(playerid, 0xFFFF00AA,"Vocк nгo tem level o suficiente de admin para usar esse comando!");
            return 1;
        }
        tmp = strtok(cmdtext,idx);
        if(!strlen(tmp) || strlen(tmp) > 2)
        {
            return SendClientMessage(playerid, 0xFF6F28AA,"Uso correto: /prender [id] [Motivo]");
        }
        new id = strval(tmp);
        if(!IsPlayerConnected(id))
        {
            SendClientMessage(playerid, 0xFC4430AA,"Jogador nгo conectado!");
            return 1;
        }
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result))
        {
            SendClientMessage(playerid, 0xFF6F28AA, "Uso correto: /prender [id] [Motivo]");
            return 1;
        }
        if(preso[playerid]==1) return SendClientMessage(playerid,0x880000FF,"Este Jogador ja Estб Preso!");
        if(pInfo[playerid][AdminLevel] > 2)
        {
            if (preso[playerid]==0)
            {
                new pname2[MAX_PLAYER_NAME];
                GetPlayerName(id, pname2, sizeof(pname2));
                SetPlayerInterior(id, 6);
                SetPlayerPos(id, 264.2353,77.8103,1001.0391);
                SetPlayerFacingAngle(id,267.2910);
                SetPlayerHealth(id,90);
                ResetPlayerWeapons(id);
                format(Sjim, sizeof(Sjim),"O administrador '%s' Prendeu o Jogador '%s' [Motivo: %s][Tempo:2 Minutos]", pname, pname2, result);
                SendClientMessageToAll(0x00FF00AA, Sjim);
                preso[playerid]=1;
                SetTimer("solto",120000,0);//2 Minutos 120000
            }
        }
        return 1;
    }
pawn Код:
forward solto(playerid);
public solto(playerid)
{
    if (preso[playerid]==1)
    {
        GameTextForPlayer(playerid,"~>~ Voce Foi Solto!",5000,6);
        SendClientMessage(playerid,0xFC4430AA,"Vocк Foi Solto, nгo Infrija mais as /Regras!");
        preso[playerid]=0;
        SpawnPlayer(playerid);
        SetPlayerHealth(playerid,100);
        SetPlayerArmour(playerid,0);
    }
    return 1;
}
Reply
#2

Tenta

no comesso do gm
pawn Код:
new Soltar[MAX_PLAYERS] = 0;
OnPlayerCommandText
pawn Код:
if(strcmp("/prender", cmd, true) == 0)
{
    if(pInfo[playerid][AdminLogado] == 0) {
        SendClientMessage(playerid, 0xFC4430AA,"Vocк nгo й Administrador!");
        return 1;
    }
    if(pInfo[playerid][AdminLevel] < 2) {
        SendClientMessage(playerid, 0xFFFF00AA,"Vocк nгo tem level o suficiente de admin para usar esse comando!");
        return 1;
    }
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 2) {
        return SendClientMessage(playerid, 0xFF6F28AA,"Uso correto: /prender [id] [Motivo]");
    }
    new id = strval(tmp);
    if(!IsPlayerConnected(id)) {
        SendClientMessage(playerid, 0xFC4430AA,"Jogador nгo conectado!");
        return 1;
    }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')) {
        idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
        result[idx - offset] = cmdtext[idx];
        idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) {
        SendClientMessage(playerid, 0xFF6F28AA, "Uso correto: /prender [id] [Motivo]");
        return 1;
    }
    if(preso[playerid]==1) return SendClientMessage(playerid,0x880000FF,"Este Jogador ja Estб Preso!");
    if(pInfo[playerid][AdminLevel] > 2) {
        if (preso[playerid]==0) {
            new pname2[MAX_PLAYER_NAME];
            GetPlayerName(id, pname2, sizeof(pname2));
            SetPlayerInterior(id, 6);
            SetPlayerPos(id, 264.2353,77.8103,1001.0391);
            SetPlayerFacingAngle(id,267.2910);
            SetPlayerHealth(id,90);
            ResetPlayerWeapons(id);
            format(Sjim, sizeof(Sjim),"O administrador '%s' Prendeu o Jogador '%s' [Motivo: %s][Tempo:2 Minutos]", pname, pname2, result);
            SendClientMessageToAll(0x00FF00AA, Sjim);
            preso[id]=1;
            Soltar[id] = SetTimerEx("solto", 120000, false, "i", playerid);
        }
    }
    return 1;
}
fim do gm
pawn Код:
forward solto(playerid);
public solto(playerid)
{
    if (preso[playerid]==1) {
        GameTextForPlayer(playerid,"~>~ Voce Foi Solto!",5000,6);
        SendClientMessage(playerid,0xFC4430AA,"Vocк Foi Solto, nгo Infrija mais as /Regras!");
        preso[playerid]=0;
        KillTimer(Soltar[playerid]);
        SetPlayerHealth(playerid,100);
        SetPlayerArmour(playerid,0);
        SpawnPlayer(playerid);
    }
    return 1;
}
Reply
#3

Vocк chama o playerid na public mas o settimer nгo estava enviando. isso vai resolver o seu problema
pawn Код:
SetTimerEx("solto",120000,0,"i",id);//2 Minutos 120000
@edit Seu comando tem erros tbm segue abaixo.

pawn Код:
if(strcmp("/prender", cmd, true) == 0)
        {
        if(pInfo[playerid][AdminLogado] == 0)
        {
            SendClientMessage(playerid, 0xFC4430AA,"Vocк nгo й Administrador!");
            return 1;
        }
        if(pInfo[playerid][AdminLevel] < 2)
        {
            SendClientMessage(playerid, 0xFFFF00AA,"Vocк nгo tem level o suficiente de admin para usar esse comando!");
            return 1;
        }
        tmp = strtok(cmdtext,idx);
        if(!strlen(tmp) || strlen(tmp) > 2)
        {
            return SendClientMessage(playerid, 0xFF6F28AA,"Uso correto: /prender [id] [Motivo]");
        }
        new id = strval(tmp);
        if(!IsPlayerConnected(id))
        {
            SendClientMessage(playerid, 0xFC4430AA,"Jogador nгo conectado!");
            return 1;
        }
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result))
        {
            SendClientMessage(playerid, 0xFF6F28AA, "Uso correto: /prender [id] [Motivo]");
            return 1;
        }
        if(preso[id]==1) return SendClientMessage(playerid,0x880000FF,"Este Jogador ja Estб Preso!");
        if(pInfo[playerid][AdminLevel] > 2)
        {
            if (preso[id]==0)
            {
                new pname2[MAX_PLAYER_NAME];
                GetPlayerName(id, pname2, sizeof(pname2));
                SetPlayerInterior(id, 6);
                SetPlayerPos(id, 264.2353,77.8103,1001.0391);
                SetPlayerFacingAngle(id,267.2910);
                SetPlayerHealth(id,90);
                ResetPlayerWeapons(id);
                format(Sjim, sizeof(Sjim),"O administrador '%s' Prendeu o Jogador '%s' [Motivo: %s][Tempo:2 Minutos]", pname, pname2, result);
                SendClientMessageToAll(0x00FF00AA, Sjim);
                preso[id]=1;
                SetTimerEx("solto",120000,0,"i",id);//2 Minutos 120000
            }
        }
        return 1;
    }
Reply
#4

pawn Код:
if(preso[playerid]==1) return SendClientMessage(playerid,0x880000FF,"Este Jogador ja Estб Preso!");

preso[playerid]=1;
troca o playerid nos dois por [id] , se nгo vai checar se vocк estб preso, ao invйs do id
Reply
#5

Vou Testar Daqui a pouco...
Mais sу uma Dъvida..
qual a diferenзa de SetTimer pra SetTimerEx?
Reply
#6

Quote:
Originally Posted by gabrieldefreitas11
Посмотреть сообщение
Vou Testar Daqui a pouco...
Mais sу uma Dъvida..
qual a diferenзa de SetTimer pra SetTimerEx?
SetTimer seta um timer para uma funcao q nao precise de argumento.
SetTimerEx seta um timer para uma funcao q tem argumentos igual a sua q tem o (playerid).
Reply
#7

ata
Entendi +/- vou procurar a respeito..
Reply
#8

SetTimer
SetTimerEx

Aki ensina tudo certinho. entre e veja
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)