[Ajuda] [/agendar - /aviso ] Preciso da ajuda de vocк implementar Comando
#1

Olб Pessoal da fуrum SAMP !

Queria pedir ajuda de vocкs eu quero implementar no meu "/agendarcadeia" pra agendar tanto Cadeia como aviso ... mais eu nгo sei fazer isso por isso quero ajuda de vocкs !

Tipo ficar assim :
/agendarcadeia [Fulano_Ciclano] [0 Minutos] [+999 Avisos] [Motivo]: Teste !
O Administrador Forum_Samp agendou Fulano_Ciclano para 0 minutos de cadeia e +999 avisos , Motivo : Teste !

Ai ele loga :
O Administrador Forum_Samp , agendou vocк para 0 minutos de cadeia e +999 avisos , Motivo : Teste !
Vocк foi banido automaticamente passou do limite de avisos !
--

Espero que intenderam o que eu quero xD


pawn Код:
// Aki estб o /agendarcadeia ! //
//======================================================================//

    if(strcmp(cmd, "/agendarcadeia",true) == 0 || strcmp(cmd, "/agendar",true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            new tmpo[20];
            if(PlayerInfo[playerid][pAdmin] < 1)
            {
                SendClientMessage(playerid, COLOR_GREY, "   Vocк nгo esta autorizado para usar este comando!");
                return true;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
                return true;
            }
            tmpo = strtok(cmdtext, idx);
            if(!strlen(tmpo))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
                return true;
            }
            new tempo2 = strval(tmpo);
           
            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, COLOR_GRAD2, "USE: /agendarcadeia [NOME_CORRETO] [Tempo] [Motivo]");
                return true;
            }
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new arquivo[128];
            format(arquivo, sizeof(arquivo), "Contas/%s.ini",tmp);
            if(!dini_Exists(arquivo))
            {
                SendClientMessage(playerid, COLOR_WHITE, "[ERRO] Este nick nгo estб registrado no Brasil PlayFaster!");
                return true;
            }
            format(string, sizeof(string), "O Admin %s agendou o nick %s para %d minutos de cadeia, Motivo: %s",PlayerName(playerid), tmp, tempo2, (result));
            SendClientMessageToAll(COLOR_LIGHTRED, string);
            AgendarLog(string);
            dini_IntSet(arquivo,"Jailed",9);
            dini_IntSet(arquivo,"JailTime",tempo2 * 60);
            strmid(AgendouInfo[playerid][cAdminAgendou], sendername, 0, strlen(sendername), MAX_PLAYER_NAME);
            dini_Set(arquivo,"AdminAgendou",sendername);
            strmid(AgendouInfo[playerid][cMotivoAgendou], result, 0, strlen(result), MAX_PLAYER_NAME);
            dini_Set(arquivo,"MotivoAgendou",result);
            dini_IntSet(arquivo,"Agendado",1);
            dini_IntSet(arquivo,"TempoAgendado",tempo2);
        }
        return true;
    }
pawn Код:
// Aki estб o /aviso ! //
// ===================================================================== //

if(strcmp(cmd, "/aviso", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /aviso [id] [motivo]");
                return true;
            }
            giveplayerid = ReturnUser(tmp);
            if (PlayerInfo[playerid][pAdmin] >= 1)
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    new length = strlen(cmdtext);
                    if(strcmp(giveplayer,"Math_Guns",true)==0)
                    {
                        SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo pode avisar o criador do server '-' !!!");
                        format(string, sizeof(string), "[Aviso] %s [ID: %d] tentou usar o comando /aviso em vocк!",PlayerName(playerid), playerid);
                        SendClientMessage(giveplayerid, COLOR_YELLOW, string);
                        return true;
                    }
                    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, COLOR_GRAD2, "USE: /aviso [id] [motivo]");
                        return true;
                    }
                    PlayerInfo[giveplayerid][pWarns] += 1;
                    if(PlayerInfo[giveplayerid][pWarns] >= 3)
                    {
                        format(string, sizeof(string), "AdmCmd: %s foi automaticamente banido temporariamente (3 dias), Motivo: Passou de 3 avisos (%d-%d-%d)", giveplayer);
                        BanLog(string);
                        format(string, sizeof(string), "AdmCmd: %s foi avisado por %s, Motivo: %s", giveplayer, sendername, (result));
                        SendClientMessageToAll(COLOR_LIGHTRED, string);
                        format(string, sizeof(string), "AdmCmd: %s foi banido temporariamente por 3 dias (Passou de 3 avisos)", giveplayer);
                        SendClientMessageToAll(COLOR_LIGHTRED, string);
                        getdate(Ano, Mes, Dia);
                        PlayerInfo[giveplayerid][pDiaBanTemp] = Dia+3;
                        PlayerInfo[giveplayerid][pMesBanTemp] = Mes;
                        PlayerInfo[giveplayerid][pAnoBanTemp] = Ano;
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 1 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 2 && PlayerInfo[giveplayerid][pDiaBanTemp] > 28)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 28;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 3 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 4 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 5 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 6 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 7 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 8 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 9 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 10 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 11 && PlayerInfo[giveplayerid][pDiaBanTemp] > 30)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 30;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] == 12 && PlayerInfo[giveplayerid][pDiaBanTemp] > 31)
                        {
                            PlayerInfo[giveplayerid][pDiaBanTemp] -= 31;
                            PlayerInfo[giveplayerid][pMesBanTemp]++;
                        }
                        if(PlayerInfo[giveplayerid][pMesBanTemp] > 12)
                        {
                            PlayerInfo[giveplayerid][pMesBanTemp] -= 12;
                            PlayerInfo[giveplayerid][pAnoBanTemp]++;
                        }
                        OnPlayerSave(giveplayerid);
                        BanTemp(giveplayerid, "Terceiro aviso", PlayerName(playerid));
                        return true;
                    }
                    format(string, sizeof(string), "AdmCmd: %s foi avisado por %s, Motivo: %s", giveplayer, sendername, (result));
                    SendClientMessageToAll(COLOR_LIGHTRED, string);
                    return true;
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, "   Esse nгo й um jogador ativo.");
            }
        }
        return true;
    }
Reply
#2

Entгo por favor amigo ensine eu por favor ...
Reply
#3

Nгo entendi muito bem mais e isto ?

O Admin %s agendou o nick %s para %d minutos de cadeia, Motivo: %s

dai quando o player loga aparece esta mensagem estou certo ?

O Admin %s agendou cadeia %s para %d minutos de cadeia, Motivo: %s
Reply
#4

Nгo esta errado , o /agendarcadeia jб funciona como vc disse o que eu quero й que fique tipo assim olha :

Tipo ficar assim :
/agendarcadeia [Fulano_Ciclano] [0 Minutos] [+999 Avisos] [Motivo]: Teste !
O Administrador Forum_Samp agendou Fulano_Ciclano para 0 minutos de cadeia e +999 avisos , Motivo : Teste !

Ai ele loga :
O Administrador Forum_Samp , agendou vocк para 0 minutos de cadeia e +999 avisos , Motivo : Teste !

Quando ele logar : Vocк foi banido automaticamente passou do limite de avisos !

quando o player tiver Off poderia agendar avisos asim quando ele logar tomaria BAN automatico xD'

aguardando =/

OBS :

O Comando deveria ficar : /agendar [Nome_Sobrenome] [Minutos] [Avisos] [Motivo : ] !
Quando player logar : O Administrador Forum_Samp lhe agendou 0 Minutos de cadeia +999 Avisos , Motivo : Teste !
Reply
#5

@Edit ....
Alguйm ?
Reply
#6

https://sampforum.blast.hk/showthread.php?tid=286550
Reply
#7

MultiKill , tem nada ver vida com AgendarCadeia " Ban" ou melhor se passou isso pra eu usar como base pra tentar sу digo q с tem nada ver com oq preciso --'
Reply
#8

Se vocк quer melhorar o comando, tem que saber strtok ou que um cafй com leite e um gamemode feito do zero?

Entгo se quiser o comando aprenda a usar strtok ou aprenda a usar sscanf e refaзa o comando!
Reply
#9

Recomendo que vocк estude ao invйs de querer tudo pronto...
Recomendo que vocк passe a usar um processador de comandos junto com sscanf, isto vai facilitar muito a sua vida, alйm de ser bem otimizado.

Veja este processador, sintaxe fбcil e bem rбpido.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)