BAN -
Tr0jan - 13.10.2012
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], Hora, Minuto, Segundo, Dia, Mes, Ano, Arquivo[128], Administrador[24], MotivoBan[128];
GetPlayerName(playerid, nome, sizeof(nome));
GetPlayerIp(playerid, Ip, sizeof(Ip));
format(Arquivo, sizeof(Arquivo), Pasta_Banidos, nome);
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(xd, sizeof(xd), "[SERVER] Seu nick estб banido.\n\[SERVER]: Admin: %s | Data: %d/%d/%d | Hora: %d:%d:%d | Motivo: %s ]", Administrador, Dia, Mes, Ano, Hora, Minuto, Segundo, MotivoBan);
ShowPlayerDialog( playerid, Dialog_Ban, DIALOG_STYLE_MSGBOX, "Vocк estб banido !",xd, "Fechar", "");
DOF2_Exit();
}
Kick(playerid);
}
return 1;
}
CMD:ban(playerid,params[])
{
new string[128], Dia, Mes, Ano, Hora, Minuto, Segundo, vitima, NomeDoBanido[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]", vitima, Motivo)) return SendClientMessage(playerid,Amarelo,"[USE]: /ban [id] [motivo]");
getdate(Ano,Mes,Dia);
gettime(Hora,Minuto,Segundo);
GetPlayerName(playerid, nome, sizeof(nome));
GetPlayerName(vitima, NomeDoBanido, sizeof(NomeDoBanido));
GetPlayerIp(vitima,IP, sizeof(IP));
if(!IsPlayerConnected(vitima)) return SendClientMessage(playerid,Cor_Erro,"[ERRO]: Jogador nгo estб conectado");
format(string, sizeof(string), "[INFO]: %s foi banido pelo administrador %s |Motivo: %s",NomeDoBanido,nome, Motivo);
SendClientMessageToAll(Vermelho,string);
format(string, sizeof(string), "%d/%d/%d", Dia, Mes, Ano);
format(arquivo, sizeof(arquivo), Pasta_Banidos, NomeDoBanido);
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?
Re: BAN -
Tr0jan - 13.10.2012
Alguem?
Re: BAN -
ForT - 13.10.2012
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(playerid, nome, sizeof(nome));
GetPlayerIp(playerid, Ip, sizeof(Ip));
format(Arquivo, sizeof(Arquivo), Pasta_Banidos, nome);
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(xd, sizeof(xd), "[SERVER] Seu nick estб banido.\n[SERVER]: Admin: %s | Data: %s | Hora: %s | Motivo: %s ]", Administrador, Data, Hora, MotivoBan);
ShowPlayerDialog( playerid, Dialog_Ban, DIALOG_STYLE_MSGBOX, "Vocк estб banido !",xd, "Fechar", "");
Kick(playerid);
}
return 1;
}
CMD:ban(playerid,params[])
{
new string[128], Dia, Mes, Ano, Hora, Minuto, Segundo, vitima, NomeDoBanido[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", vitima, Motivo)) return SendClientMessage(playerid,Amarelo,"[USE]: /ban [id] [motivo]");
getdate(Ano,Mes,Dia);
gettime(Hora,Minuto,Segundo);
GetPlayerName(playerid, nome, sizeof(nome));
GetPlayerName(vitima, NomeDoBanido, sizeof(NomeDoBanido));
GetPlayerIp(vitima,IP, sizeof(IP));
if(!IsPlayerConnected(vitima)) return SendClientMessage(playerid,Cor_Erro,"[ERRO]: Jogador nгo estб conectado");
format(string, sizeof(string), "[INFO]: %s foi banido pelo administrador %s |Motivo: %s",NomeDoBanido,nome, Motivo);
SendClientMessageToAll(Vermelho,string);
format(string, sizeof(string), "%d/%d/%d", Dia, Mes, Ano);
format(arquivo, sizeof(arquivo), Pasta_Banidos, NomeDoBanido);
if(!DOF2_FileExists(arquivo)) DOF2_CreateFile(arquivo);
if(DOF2_FileExists(arquivo))
{
DOF2_SetString(arquivo,"Admin", nome);
DOF2_SetString(arquivo,"Data", string);
format(string, sizeof(string), "%d:%d:%d", Hora, Minuto, Segundo);
DOF2_SetString(arquivo,"Hora", string);
DOF2_SetString(arquivo,"Motivo", Motivo);
DOF2_SetString(arquivo,"IP", IP);
DOF2_SaveFile();
}
Kick(vitima);
return 1;
}
Re: BAN -
Tr0jan - 13.10.2012
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?
Re: BAN -
.FuneraL. - 13.10.2012
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.
Re: BAN -
Tr0jan - 13.10.2012
Consegui colocar aqui, muito obrigado a vocкs dois.