[Ajuda] BAN
#1

Olб, eu tentei fazer um comando de ban com salvamento e o que eu consegui foi isso;

PHP код:
#include a_samp
#include DOF2
#define Pasta_Banidos "Banidos/%s"
#define Dialog_Ban 1
public OnPlayerConnect(playerid)
{
    new 
nome[MAX_PLAYER_NAME], Ip[30], xd[128], HoraMinutoSegundoDiaMesAnoArquivo[128], Administrador[24], MotivoBan[128];
    
GetPlayerName(playeridnomesizeof(nome));
    
GetPlayerIp(playeridIpsizeof(Ip));
    
format(Arquivosizeof(Arquivo), Pasta_Banidosnome);
    if(!
fexist(Arquivo))
    {
        if(
DOF2_GetInt(Arquivo))
        {
            
DOF2_GetInt(Administrador"Admin");
            
DOF2_GetInt(MotivoBan,"Motivo");
            
Dia DOF2_GetInt(Arquivo,"Dia");
            
Mes DOF2_GetInt(Arquivo,"Mes");
            
Ano DOF2_GetInt(Arquivo,"Ano");
            
Hora DOF2_GetInt(Arquivo,"Hora");
            
Minuto DOF2_GetInt(Arquivo,"Minuto");
            
Segundo DOF2_GetInt(Arquivo,"Segundo");
            
format(xdsizeof(xd), "[SERVER] Seu nick estб banido.\n\[SERVER]: Admin: %s | Data: %d/%d/%d | Hora: %d:%d:%d | Motivo: %s ]"AdministradorDiaMesAnoHoraMinutoSegundoMotivoBan);
              
ShowPlayerDialogplayeridDialog_BanDIALOG_STYLE_MSGBOX"Vocк estб banido !",xd"Fechar""");
            
DOF2_Exit();
        }
        
Kick(playerid);
        }
    return 
1;
}
            
CMD:ban(playerid,params[])
{
    new 
string[128], DiaMesAnoHoraMinutoSegundovitimaNomeDoBanido[MAX_PLAYER_NAME], Motivo[128], nome[MAX_PLAYERS],IP[15],arquivo[128];
    if(!
IsPlayerAdmin(playerid) && PlayerInfo[playerid][Admin] < 2)return SendClientMessage(playerid,Cor_Erro,NaoAdmin);
    if(
sscanf(params"us[128]"vitimaMotivo)) return SendClientMessage(playerid,Amarelo,"[USE]: /ban [id] [motivo]");
    
getdate(Ano,Mes,Dia);
    
gettime(Hora,Minuto,Segundo);
    
GetPlayerName(playeridnomesizeof(nome));
    
GetPlayerName(vitimaNomeDoBanidosizeof(NomeDoBanido));
    
GetPlayerIp(vitima,IPsizeof(IP));
    if(!
IsPlayerConnected(vitima)) return SendClientMessage(playerid,Cor_Erro,"[ERRO]: Jogador nгo estб conectado");
    
format(stringsizeof(string), "[INFO]: %s foi banido pelo administrador %s |Motivo: %s",NomeDoBanido,nomeMotivo);
    
SendClientMessageToAll(Vermelho,string);
    
format(stringsizeof(string), "%d/%d/%d"DiaMesAno);
    
format(arquivosizeof(arquivo), Pasta_BanidosNomeDoBanido);
    if(
DOF2_FileExists(arquivo))
    {
        
DOF2_SetString(arquivo,"Admin" nome);
        
DOF2_SetInt("Dia"Dia);
        
DOF2_SetInt("Mes"Mes);
        
DOF2_SetInt("Ano"Ano);
        
DOF2_SetInt("Hora"Hora);
        
DOF2_SetInt("Minuto"Minuto);
        
DOF2_SetInt("Segundo"Segundo);
        
DOF2_SetString(arquivo,"Motivo"Motivo);
        
DOF2_SetString(arquivo,"IP"Ip);
        
DOF2_SaveFile();
        
DOF2_Exit();
    }
    
Kick(vitima);
    return 
1;

Eu tenho certeza que tem muita coisa errada rsrs, pois tentei entrar no servidor e ja deu "Server Closed Connection".

Alguem pode me ajudar a corrigir?
Reply
#2

Alguem?
Reply
#3

tente assim:
PHP код:
#include a_samp
#include DOF2
#include zcmd
#include sscanf
#define Pasta_Banidos "Banidos/%s.txt"
#define Vermelho -1
#define Cor_Erro -1
#define Amarelo -1
#define Dialog_Ban 1
public OnPlayerConnect(playerid)
{
    new 
nome[MAX_PLAYER_NAME], Ip[30], xd[500], Data[128], Hora[128], Arquivo[128], Administrador[24], MotivoBan[128];
    
GetPlayerName(playeridnomesizeof(nome));
    
GetPlayerIp(playeridIpsizeof(Ip));
    
format(Arquivosizeof(Arquivo), Pasta_Banidosnome);
    if(
fexist(Arquivo))
    {
        
strmid(Administrador,DOF2_GetString(Arquivo,"Admin"),0,strlen(DOF2_GetString(Arquivo,"Admin")),255);
        
strmid(MotivoBan,DOF2_GetString(Arquivo,"Motivo"),0,strlen(DOF2_GetString(Arquivo,"Motivo")),255);
        
strmid(Data,DOF2_GetString(Arquivo,"Data"),0,strlen(DOF2_GetString(Arquivo,"Data")),255);
        
strmid(Hora,DOF2_GetString(Arquivo,"Hora"),0,strlen(DOF2_GetString(Arquivo,"Hora")),255);
        
format(xdsizeof(xd), "[SERVER] Seu nick estб banido.\n[SERVER]: Admin: %s | Data: %s | Hora: %s | Motivo: %s ]"AdministradorDataHoraMotivoBan);
        
ShowPlayerDialogplayeridDialog_BanDIALOG_STYLE_MSGBOX"Vocк estб banido !",xd"Fechar""");
        
Kick(playerid);
    }
    return 
1;
}
CMD:ban(playerid,params[])
{
    new 
string[128], DiaMesAnoHoraMinutoSegundovitimaNomeDoBanido[MAX_PLAYER_NAME], Motivo[128], nome[MAX_PLAYERS],IP[15],arquivo[128];
    if(!
IsPlayerAdmin(playerid))return SendClientMessage(playerid,Cor_Erro,"nao adm");
    if(
sscanf(params"us"vitimaMotivo)) return SendClientMessage(playerid,Amarelo,"[USE]: /ban [id] [motivo]");
    
getdate(Ano,Mes,Dia);
    
gettime(Hora,Minuto,Segundo);
    
GetPlayerName(playeridnomesizeof(nome));
    
GetPlayerName(vitimaNomeDoBanidosizeof(NomeDoBanido));
    
GetPlayerIp(vitima,IPsizeof(IP));
    if(!
IsPlayerConnected(vitima)) return SendClientMessage(playerid,Cor_Erro,"[ERRO]: Jogador nгo estб conectado");
    
format(stringsizeof(string), "[INFO]: %s foi banido pelo administrador %s |Motivo: %s",NomeDoBanido,nomeMotivo);
    
SendClientMessageToAll(Vermelho,string);
    
format(stringsizeof(string), "%d/%d/%d"DiaMesAno);
    
format(arquivosizeof(arquivo), Pasta_BanidosNomeDoBanido);
    if(!
DOF2_FileExists(arquivo)) DOF2_CreateFile(arquivo);
    if(
DOF2_FileExists(arquivo))
    {
        
DOF2_SetString(arquivo,"Admin"nome);
        
DOF2_SetString(arquivo,"Data"string);
        
format(stringsizeof(string), "%d:%d:%d"HoraMinutoSegundo);
        
DOF2_SetString(arquivo,"Hora"string);
        
DOF2_SetString(arquivo,"Motivo"Motivo);
        
DOF2_SetString(arquivo,"IP"IP);
        
DOF2_SaveFile();
    }
    
Kick(vitima);
    return 
1;

Reply
#4

Muito obrigado amigo, mais fiquei com uma dъvida quando й numero nao devemos colocar "%d" ? desse jeito "%s" funcionou certinho...

- Outra duvida, ele sу da ban no nick, como adciono o IP tambйm?
Reply
#5

Ele Executa o Ban do IP Automбticamente, sistema do prуprio SAMP, e sobre %d, %s, Sгo Placeholders, Abaixo:

pawn Код:
Format Strings
Placeholder  Meaning
%b   Inserts a number at this position in binary radix
%c   Inserts a single character.
%d   Inserts an integer (whole) number
%f   Inserts a floating point number.
%i   Inserts an integer.
%s   Inserts a string.
%x   Inserts a number in hexadecimal notation.
%%   Inserts the literal '%'
Fontes: Wiki SA-MP.
Reply
#6

Consegui colocar aqui, muito obrigado a vocкs dois.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)