[AJUDA] Comando /prender
#1

Boa tarde pessoal, estava tentando fazer um comando para os Admin poderem prender os players, mas nгo obtive muito sucesso. Tentei fazer usando como base o comando /deter da minha GM, mas dessa vez tentei adicionar o "MOTIVO" para ser apresentado a todos os players, mas toda a vez que eu digito corretamente o comando, ele nгo funciona, ele me retorna a mensagem "USE: /prender [id] [tempo] [motivo]". Alguem ai poderia me ajudar a colocar este comando para funcionar?

Aqui esta ele:
pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pAdmin] >= 1)
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
                    return 1;
                }
                giveplayerid = ReturnUser(tmp);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
                    return 1;
                }
                new time = strval(tmp);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
                    return 1;
                }
                new length = strlen(cmdtext);
                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))
                {
                    MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
                    return 1;
                }
                new suspect = giveplayerid;
                if(IsPlayerConnected(suspect))
                {
                    if(GetDistanceBetweenPlayers(playerid,suspect) < 15)
                    {
                        GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        format(string, sizeof(string), "* Vocк Prendeu %s !", giveplayer);
                        MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
                        //GivePlayerMoney(suspect, -moneys);
                        format(string, sizeof(string), "Preso por %s", sendername);
                        GameTextForPlayer(suspect, string, 5000, 5);
                        ResetPlayerWeaponsEx(suspect);
                        if(PlayerInfo[playerid][pMembro]==1||PlayerInfo[playerid][pLider]==1)
                        {
                            format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", sendername, giveplayer, (result));
                            OOCNews(0xFF8000AA, string);
                        }
                        SetPlayerInterior(suspect, 6);
                        SetPlayerPos(suspect,264.6288,77.5742,1001.0391);
                        PlayerInfo[suspect][pJailTime] = time * 60;
                        PlayerInfo[suspect][pJailed] = 1;
                        SetPlayerFree(suspect,playerid, "Foi Preso");
                        PlayerInfo[suspect][pMuted] = 0;
                        Controle(suspect, 1);
                        PlayerCuffed[suspect] = 0;
                        PlayerInfo[suspect][pDrogas] = 0;
                        PlayerInfo[suspect][pDrogas2] = 0;
                        PlayerInfo[suspect][pDrogas3] = 0;
                        PlayerInfo[suspect][pMats] = 0;
                        return 1;
                    }//distance
                }//not connected
                else
                {
                    MSGPLAYER(playerid, COLOR_GREY, "   Esse nгo й um jogador ativo.");
                    return 1;
                }
            }
            else
            {
                MSGPLAYER(playerid, COLOR_GREY, "   Vocк nгo й um Administrador!");
                return 1;
            }
        }//not connected
        return 1;
    }
Reply
#2

pawn Код:
#include <sscanf2>
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[50 char], params[100 char];
    new id;
    unformat(cmdtext, "s[50]S( )[100]",cmd,params);
    if(strcmp(cmd, "/prender", true) == 0)
    {
        if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
        new tempo, motivo[100];
        if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
        if(GetDistanceBetweenPlayers(playerid, id) < 15)
            {
                new string[128];
                format(string, sizeof(string), "* Vocк Prendeu %s !", Name(id));
                MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
                //GivePlayerMoney(id, -moneys);
                format(string, sizeof(string), "Preso por %s", Name(playerid));
                GameTextForPlayer(id, string, 5000, 5);
                ResetPlayerWeaponsEx(id);
                if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
                {
                    format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", Name(playerid), Name(id), motivo);
                            OOCNews(0xFF8000AA, string);
                }
                        SetPlayerInterior(id, 6);
                        SetPlayerPos(id,264.6288,77.5742,1001.0391);
                        PlayerInfo[id][pJailTime] = time * 60;
                        PlayerInfo[id][pJailed] = 1;
                        SetPlayerFree(id,playerid, "Foi Preso");
                        PlayerInfo[id][pMuted] = 0;
                        Controle(id, 1);
                        PlayerCuffed[id] = 0;
                        PlayerInfo[id][pDrogas] = 0;
                        PlayerInfo[id][pDrogas2] = 0;
                        PlayerInfo[id][pDrogas3] = 0;
                        PlayerInfo[id][pMats] = 0;
                        return 1;
            }
    }
    return 0;
}
pawn Код:
Name(playerid)
{
    new nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nome, sizeof(nome));
    return nome;
}
Reply
#3

Desculpa pela demora, mas vi so agora o Post aqui no forum. Fui testar o codigo que vocк me enviou mas deu os seguintes erros e warnings:

pawn Код:
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(796) : warning 219: local variable "Name" shadows a variable at a preceding level

C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44554) : error 021: symbol already defined: "cmd"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : warning 219: local variable "string" shadows a variable at a preceding level
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44579) : error 017: undefined symbol "time"
Nas seguinter linhas:

pawn Код:
new cmd[50 char], params[100 char];//LINHA 44554 com erro
    new id;
    unformat(cmdtext, "s[50]S( )[100]",cmd,params);
    if(strcmp(cmd, "/prender", true) == 0)
    {
        if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
        new tempo, motivo[100];
        if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
        if(GetDistanceBetweenPlayers(playerid, id) < 15)
            {
                new string[128];//LINHA 44565 com Warning
                format(string, sizeof(string), "* Vocк Prendeu %s !", Name(id));
                MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
                //GivePlayerMoney(id, -moneys);
                format(string, sizeof(string), "Preso por %s", Name(playerid));
                GameTextForPlayer(id, string, 5000, 5);
                ResetPlayerWeaponsEx(id);
                if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
                {
                    format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", Name(playerid), Name(id), motivo);
                            OOCNews(0xFF8000AA, string);
                }
                        SetPlayerInterior(id, 6);
                        SetPlayerPos(id,264.6288,77.5742,1001.0391);
                        PlayerInfo[id][pJailTime] = time * 60;//LINHA 44579 com erro
                        PlayerInfo[id][pJailed] = 1;
                        SetPlayerFree(id,playerid, "Foi Preso");
                        PlayerInfo[id][pMuted] = 0;
                        Controle(id, 1);
                        PlayerCuffed[id] = 0;
                        PlayerInfo[id][pDrogas] = 0;
                        PlayerInfo[id][pDrogas2] = 0;
                        PlayerInfo[id][pDrogas3] = 0;
                        PlayerInfo[id][pMats] = 0;
                        return 1;
            }
    }
E esta dando o Warning tbm nessa Stock que ja tinha na minha GM, mas antes nao dava Warning nenhum:

pawn Код:
stock PlayerName(playerid)
{
    new Name[MAX_PLAYER_NAME];//Warning nesta linha que й a linha 796
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    return Name;
}
Caso posso me ajudar a resolver esses problemas eu ficaria muito agradecido!
Reply
#4

pawn Код:
new params[100 char];
    new id;
    unformat(cmdtext, "s[50]S( )[100]",cmd,params);
    if(strcmp(cmd, "/prender", true) == 0)
    {
        if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
        new tempo, motivo[100];
        if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
        if(GetDistanceBetweenPlayers(playerid, id) < 15)
            {
                format(msg, sizeof(msg), "* Vocк Prendeu %s !", PlayerName(id));
                MSGPLAYER(playerid, COLOR_LIGHTBLUE, msg);
                //GivePlayerMoney(id, -moneys);
                format(msg, sizeof(msg), "Preso por %s", PlayerName(playerid));
                GameTextForPlayer(id, msg, 5000, 5);
                ResetPlayerWeaponsEx(id);
                if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
                {
                    format(msg, sizeof(msg), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", PlayerName(playerid), PlayerName(id), motivo);
                            OOCNews(0xFF8000AA, msg);
                }
                        SetPlayerInterior(id, 6);
                        SetPlayerPos(id,264.6288,77.5742,1001.0391);
                        PlayerInfo[id][pJailTime] = tempo * 60;
                        PlayerInfo[id][pJailed] = 1;
                        SetPlayerFree(id,playerid, "Foi Preso");
                        PlayerInfo[id][pMuted] = 0;
                        Controle(id, 1);
                        PlayerCuffed[id] = 0;
                        PlayerInfo[id][pDrogas] = 0;
                        PlayerInfo[id][pDrogas2] = 0;
                        PlayerInfo[id][pDrogas3] = 0;
                        PlayerInfo[id][pMats] = 0;
                        return 1;
            }
    }
tente assim, e delete minha stock Name(playerid)
Reply
#5

Agora esta dando os seguintes erros e warning em uma linha so:

pawn Код:
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 017: undefined symbol "msg"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 017: undefined symbol "msg"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 029: invalid expression, assumed zero
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : fatal error 107: too many error messages on one line
Na seguinte linha:

pawn Код:
format(msg, sizeof(msg), "* Vocк Prendeu %s !", PlayerName(id));
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)