[Ajuda] Reportar bugado
#1

O BUG й, quando Reporta, se tiver 5 players no servidor aparece "Obrigado por reportar..." 5 vezes, e por ae em diante, nгo tenho idйia o que seja... Se alguйm puder ajudar

pawn Код:
if(strcmp(cmd, "/Reportar", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new sendername[256];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    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++;
    }
    if(strlen(result) < 1) return SendClientMessage(playerid, 0xFF0000AA, "Use: /Reportar [TEXTO]");
    if( GetPVarInt( playerid, "Tempo" ) > GetTickCount() ) return SendClientMessage( playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos..." );
    SetPVarInt( playerid, "Tempo", GetTickCount() + 30000 );
    result[idx - offset] = EOS;
    if(!strlen(result))
    {

    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
    {
    new stringre[256];
    format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", sendername, playerid, (result));
    SendClientMessage(i,0xECEC00AA,stringre);
    GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
    PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
    printf("(REPORT) %s (ID %d): %s",sendername, playerid, (result));
    }
    SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
    }
    }
    }
    return 1;
    }
Desculpe pelo cуdigo nгo identado, depois idento ele...
Reply
#2

Arrumei e indentei pra vocк, isto deve resolver o seu problema :


pawn Код:
if(strcmp(cmd, "/Reportar", true) == 0)
    {
        new NickName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000AA, "Use: /Reportar [TEXTO]");
            return 1;
        }
        if(GetPVarInt(playerid, "Tempo") > GetTickCount()) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos...");
        SetPVarInt(playerid, "Tempo", GetTickCount() + 30000);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(!IsPlayerConnected(i)) continue;
            if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
            {
                new stringre[256];
                format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", NickName, playerid, (tmp));
                SendClientMessage(i,0xECEC00AA,stringre);
                GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
                PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                printf("(REPORT) %s (ID %d): %s",NickName, playerid, (tmp));
            }
        }
        SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
        return 1;
    }

Caso algum erro seja gerado, basta arrumar o cуdigo vocк mesmo, movendo a seguinte linha do seu comando para logo acima do return 1; que estб no final daquele .


pawn Код:
SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");


Espero ter ajudado .
Reply
#3

Opa, funcionou, mais tem um ъnico problema... Quando digita "/reportar oi como vai" ae sу aparece para os administrador somente o "oi", se puder me ajudar

pawn Код:
if(strcmp(cmd, "/Reportar", true) == 0)
    {
        new tmp[256];
        new NickName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, 0xFF0000AA, "Use: /Reportar [TEXTO]");
            return 1;
        }
        if(GetPVarInt(playerid, "Tempo") > GetTickCount()) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos...");
        SetPVarInt(playerid, "Tempo", GetTickCount() + 30000);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(!IsPlayerConnected(i)) continue;
            if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
            {
                new stringre[256];
                format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", NickName, playerid, (tmp));
                SendClientMessage(i,0xECEC00AA,stringre);
                GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
                PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                printf("(REPORT) %s (ID %d): %s",NickName, playerid, (tmp));
            }
        }
        SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
        return 1;
    }
Reply
#4

nгo pode conter espaзos no motivo
Reply
#5

pawn Код:
if(strcmp(cmd, "/Reportar", true) == 0)
    {
        new tmp[256];
        new NickName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
        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)) return SendClientMessage(playerid, 0xFF0000AA, "Use: /relatorio [TEXTO]");
        if(GetPVarInt(playerid, "Tempo") > GetTickCount()) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos...");
        SetPVarInt(playerid, "Tempo", GetTickCount() + 30000);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(!IsPlayerConnected(i)) continue;
            if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
            {
                new stringre[256];
                format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", NickName, playerid, (tmp));
                SendClientMessage(i,0xECEC00AA,stringre);
                GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
                PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                printf("(REPORT) %s (ID %d): %s",NickName, playerid, (tmp));
            }
        }
        SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
        return 1;
    }
Testa aн, provavelmente funcionarб.

@|_MeGaTroN_|

Quote:
Originally Posted by |_MeGaTroN_|
Посмотреть сообщение
nгo pode conter espaзos no motivo
Por que nгo?
Reply
#6

O cmd й dividido em espaзos /comando id motivo caso eu for colocar /comando id motivo nгo irб funcionar pq eu pulei uma linha a mais no cmd ele й dividido em tres partes nгo poderei pular mais de uma linha no cmd ele nгo irб funcionar ou serб o mesmo caso doque o rapazinho ali encima: /Comando 0 Hack Hack aparecerб apenas o hack...
bom mais enfim pode existe algum modo de concerta isso a no qual nгo faзo a ideia.

Scripter Iniciante
se eu estiver errado corrija-me.
Reply
#7

Quote:
Originally Posted by |_MeGaTroN_|
Посмотреть сообщение
O cmd й dividido em espaзos /comando id motivo caso eu for colocar /comando id motivo nгo irб funcionar pq eu pulei uma linha a mais no cmd ele й dividido em tres partes nгo poderei pular mais de uma linha no cmd ele nгo irб funcionar ou serб o mesmo caso doque o rapazinho ali encima: /Comando 0 Hack Hack aparecerб apenas o hack...
bom mais enfim pode existe algum modo de concerta isso a no qual nгo faзo a ideia.

Scripter Iniciante
se eu estiver errado corrija-me.
Corrigindo:
O /reportar dele, nгo й pra reportar um jogador. Eu entendi o que vocк quis dizer, de acordo com o seu pensamento vocк estб certo.

Mas o /reportar dele, na verdade, й tipo um /sos do AD:RP, ou um /relatorio do GF.
Reply
#8

Tepes, nгo apaenas adaptei ao meu sistema de admin.

Testando...
Reply
#9

Quote:
Originally Posted by Adrian Fahrenheit Tepes
Посмотреть сообщение
pawn Код:
if(strcmp(cmd, "/Reportar", true) == 0)
    {
        new tmp[256];
        new NickName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
        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)) return SendClientMessage(playerid, 0xFF0000AA, "Use: /relatorio [TEXTO]");
        if(GetPVarInt(playerid, "Tempo") > GetTickCount()) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos...");
        SetPVarInt(playerid, "Tempo", GetTickCount() + 30000);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(!IsPlayerConnected(i)) continue;
            if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
            {
                new stringre[256];
                format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", NickName, playerid, (tmp));
                SendClientMessage(i,0xECEC00AA,stringre);
                GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
                PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                printf("(REPORT) %s (ID %d): %s",NickName, playerid, (tmp));
            }
        }
        SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
        return 1;
    }
Testa aн, provavelmente funcionarб.

@|_MeGaTroN_|



Por que nгo?
Agora nгo aparece o motivo do Report para os admins, sу fica assim: "~>Report de Capeta (ID 24): "

Alguйm pode ajudar?

@Edit

Malz pelo Double Post.
Reply
#10

Quote:
Originally Posted by Allanrokeiro
Посмотреть сообщение
Opa, funcionou, mais tem um ъnico problema... Quando digita "/reportar oi como vai" ae sу aparece para os administrador somente o "oi", se puder me ajudar
Desculpe, pensei que aquela parte do seu cуdigo em que й usado um loop while equivalesse б funзгo strtok em termos de uso no comando, devido ao fato de serem praticamente idкnticas .



Bem, reformei seu cуdigo, isto deve resolver o seu problema :

pawn Код:
if(strfind(cmdtext, "/reportar", true) == 0)
    {
        if(cmdtext[9] == 0 || cmdtext[9] == 32)
        {
            if(cmdtext[9] != 32)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Use: /Reportar [TEXTO]");
                return 1;
            }
            new NickName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, NickName, MAX_PLAYER_NAME);
            format(cmdtext, 128, "%s", cmdtext[10]);
            if(GetPVarInt(playerid, "Tempo") > GetTickCount()) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Vocк sу pode reportar novamente em 30 segundos...");
            SetPVarInt(playerid, "Tempo", GetTickCount() + 30000);
            for(new i = 0; i < MAX_PLAYERS; i++)
            {
                if(!IsPlayerConnected(i)) continue;
                if(pAdmin[i] == 1 || pAdmin[i] == 2 || pAdmin[i] == 3 || pAdmin[i] == 4 || pAdmin[i] == 5  || IsPlayerAdmin(i) || vip[i])
                {
                    new stringre[256];
                    format(stringre, sizeof(stringre), "{FF0000}~> {FFFFFF}Report de %s (ID %d): %s", NickName, playerid, (cmdtext));
                    SendClientMessage(i,0xECEC00AA,stringre);
                    GameTextForPlayer(i,"~r~Novo Report!",2500, 3);
                    PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                    printf("(REPORT) %s (ID %d): %s",NickName, playerid, (cmdtext));
                }
            }
            SendClientMessage(playerid, 0xFFFFFFAA, "~> Obrigado por reportar, seu report foi enviado para os administradores / moderadores conectados.");
            return 1;
        }
    }


Espero ter ajudado .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)