[AJUDA] Sistema de BAN ta com um BUG! -
Bruno Pereira - 11.01.2011
Galera, o [FeK]Knife fez um sistema de ban para mim.
Salva as contas banidas em uma pasta...
Mas o problema й esse, as contas nгo estгo sendo salvas na pasta, e para desbanir uma pessoa eu tenho que entra no jogo digita /desbanip e reinicia o server
Vou postar os codigos que eu acho que precisa:
//Topo do GM, em baixo das define:
pawn Код:
forward CarregarBans( playerid) ;
forward SBan( playerid) ;
enum bBInfo
{
bBan,
bMotivo[126],
bQuemBaniu[MAX_PLAYER_NAME],
} ;
new BanInfo[MAX_PLAYERS][bBInfo] ;
//Comeзo do GM No OnPlayerConnect:
pawn Код:
CarregarBans
( playerid
) ;
if ( BanInfo
[playerid
][bBan
] >= 1) {new cooordstring
[256],lstring
[256] ;
format( lstring,
sizeof( lstring
) ,
"Vocк foi banido pelo Administrador \n%s\n\nResumo :\n %s\n\nCaso ache que foi algum erro visite nosso forum\n www.lifegamesrpg.forumeiros.com\n",BanInfo
[playerid
][bQuemBaniu
],BanInfo
[playerid
][bMotivo
]) ;
strcat( cooordstring,lstring
) ;
ShowPlayerDialog
( playerid,
10120, DIALOG_STYLE_MSGBOX,
"Banido", cooordstring,
"Ok",
"Fechar") ;
Kick
( playerid
) ;
//Comando do /ban:
pawn Код:
if(strcmp(cmd, "/ban", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /ban [ id ] [reason]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(admtrampando[playerid] < 1)
{
SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
return 1;
}
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
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++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /ban [ id ] [reason]");
return 1;
}
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "ADMIN CMD: %s foi banido pelo Admin %s, Motivo: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
BanLog(string);
format(string, sizeof(string), "ADMIN CMD: %s foi banido pelo Admin %s, Motivo: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(playerid);
//PlayerInfo[giveplayerid][pBan] = 1;
//Ban(giveplayerid);
strmid( BanInfo[giveplayerid][bMotivo], string, 0, strlen( string) , 256) ;
strmid( BanInfo[giveplayerid][bQuemBaniu], giveplayer, 0, strlen( giveplayer) , 256) ;
BanInfo[playerid][bBan] = 1 ;
SBan( playerid) ;
return 1;
}
}//not connected
}
else
{
format(string, sizeof(string), " %d e um player inativo.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
//O Banimento quando o player tiver 3 avisos, COMANDO /aviso:
pawn Код:
if ( strcmp( cmd, "/aviso", true) == 0)
{
if ( IsPlayerConnected( playerid) )
{
tmp = strtok( cmdtext, idx) ;
if ( !strlen( tmp) )
{
SendClientMessage( playerid, COLOR_GRAD2, "Use : /aviso [Id / Nome] [reason]") ;
return 1 ;
}
giveplayerid = ReturnUser( tmp) ;
if ( PlayerInfo[playerid][pAdmin] >= 1)
{
if ( IsPlayerConnected( giveplayerid) )
{
if ( giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName( giveplayerid, giveplayer, sizeof( giveplayer) ) ;
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++ ;
}
result[idx - offset] = EOS ;
if ( !strlen( result) )
{
SendClientMessage( playerid, COLOR_GRAD2, "Use : /aviso [Id / Nome] [reason]") ;
return 1 ;
}
PlayerInfo[giveplayerid][pWarns] += 1 ;
if ( PlayerInfo[giveplayerid][pWarns] >= 3)
{
new year, month,day ;
getdate( year, month, day) ;
format( string, sizeof( string) , "%s foi banido por %s, razгo: %s ( %d-%d-%d) ", giveplayer, sendername, ( result) ,month,day,year) ;
//BanLog( string) ;
format( string, sizeof( string) , "%s foi banido por %s ( 3 avisos) , razгo: %s", giveplayer, sendername, ( result) ) ;
SendClientMessageToAll( COLOR_LIGHTRED, string) ;
new cooordstring[256],lstring[256] ;
format( lstring, sizeof( lstring) , "Vocк foi banido pelo Administrador %s\n\nMotivo : %s\n\nCaso ache que foi algum erro visite nosso forum\n Forum aki\n",sendername,( result) ) ;
strcat( cooordstring,lstring) ;
ShowPlayerDialog( playerid, 1000, DIALOG_STYLE_MSGBOX, "Banido", cooordstring, "Ok", "Fechar") ;
strmid( BanInfo[giveplayerid][bMotivo], string, 0, strlen( string) , 256) ;
strmid( BanInfo[giveplayerid][bQuemBaniu], giveplayer, 0, strlen( giveplayer) , 256) ;
BanInfo[playerid][bBan] = 1 ;
SBan( playerid) ;
//Ban( giveplayerid) ;
return 1 ;
}
format( string, sizeof( string) , "Vocк execultou uma advertкncia sobre %s, razгo: %s", giveplayer, ( result) ) ;
SendClientMessage( playerid, COLOR_LIGHTRED, string) ;
format( string, sizeof( string) , "Vocк foi advertido por %s, razгo: %s", sendername, ( result) ) ;
SendClientMessage( giveplayerid, COLOR_LIGHTRED, string) ;
return 1 ;
}
}//not connected
}
else
{
format( string, sizeof( string) , " %d nгo й um jogador ativo.", giveplayerid) ;
SendClientMessage( playerid, COLOR_GRAD1, string) ;
}
}
return 1 ;
}
//Final do GM, na public sBan:
pawn Код:
public SBan( playerid)
{
new file[128] ;
new name[MAX_PLAYER_NAME] ;
GetPlayerName( playerid, name, sizeof( name) ) ;
format( file,sizeof( file) ,"/Banidos/Contas/%s.ini",name) ;
if ( fexist( file) )
{
dini_IntSet( file,"Banido",BanInfo[playerid][bBan]) ;
dini_IntSet( file,"Motivo",BanInfo[playerid][bMotivo]) ;
dini_IntSet( file,"Administrador",BanInfo[playerid][bQuemBaniu]) ;
}
return 1 ;
}
public CarregarBans( playerid)
{
new arquivo[256] ;
new pNome[MAX_PLAYER_NAME] ;
GetPlayerName( playerid,pNome,sizeof( pNome) ) ;
format( arquivo, sizeof( arquivo) , "/Banidos/Contas/%s.ini",pNome[playerid]) ;
if ( dini_Exists( arquivo) )
{
BanInfo[playerid][bBan] = dini_Int( arquivo,"Banido") ;
strmid( BanInfo[playerid][bMotivo], dini_Get( arquivo,"Motivo") , 0, strlen( dini_Get( arquivo,"Motivo") ) , 255) ;
strmid( BanInfo[playerid][bQuemBaniu], dini_Get( arquivo,"Administrador") , 0, strlen( dini_Get( arquivo,"Administrador") ) , 255) ;
}
return 1 ;
}
Eu queria que alguem arrumasse para que quando alguem fosse banido criasse uma pasta, й a seguinte pasta /Banidos/Contas/%s.ini ou sу /Banidos/%s.ini
E para desbanir a conta era sу eu digitar in-game:
/desbanconta e /desbanip
Aqui vai os comando do /desbanconta e /desbanip:
//Desbanconta:
pawn Код:
if(strcmp(cmd,"/desbanconta",true)==0 || strcmp(cmd,"/unbannome",true)==0 || strcmp(cmd,"/desbannome",true)==0)
{
if(PlayerInfo[playerid][pAdmin] >= 1337)
{
if(admtrampando[playerid] < 1 && PlayerInfo[playerid][pAdmin] != 1342)
{
SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
return 1;
}
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_WHITE,"USE: /nomedesban [NOME DO JOGADOR]");
return 1;
}
new arquivo[64];
format(arquivo, sizeof(arquivo), "/Banidos/Contas/%s.ini",tmp);
if(!dini_Exists(arquivo))
{
SendClientMessage(playerid,COLOR_GRAD1,"Nick nгo encontrado na base de dados");
return 1;
}
else
{
dini_Remove(arquivo);
}
GetPlayerName(playerid, sendername, sizeof(sendername));
{
format(string, 128, "ADM: %s desbaniu o Nick %s", sendername,tmp);
ABroadCast(COLOR_YELLOW,string,1);
}
}
return 1;
}
//Desban IP:
pawn Код:
if(strcmp(cmd,"/desbanip",true)==0)
{
if(PlayerInfo[playerid][pAdmin] >= 1337)
{
if(admtrampando[playerid] < 1)
{
SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
return 1;
}
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_GRAD1,"USE: /desbanip [IP DO JOGADOR]");
return 1;
}
format(string,sizeof(string),"unbanip %s",tmp);
SendRconCommand(string);
SendRconCommand("reloadbans");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 256, "ADM: %s desbaniu o IP %s", sendername,tmp);
ABroadCast(COLOR_YELLOW,string,1);
}
return 1;
}
Eu queria que alguem arrumasse para que quando alguem fosse banido criasse uma pasta, й a seguinte pasta /Banidos/Contas/%s.ini ou sу /Banidos/%s.ini
E para desbanir a conta era sу eu digitar in-game:
/desbanconta e /desbanip
Aqui vai os comando do /desbanconta e /desbanip:
Porfavor, me ajudem!
Re: [AJUDA] Sistema de BAN ta com um BUG! -
Black Sσldiєя - 11.01.2011
Outro tуpico? Esse GM que vocк usa tб ruim hein.
Respuesta: [AJUDA] Sistema de BAN ta com um BUG! -
[FeK]Gunner - 11.01.2011
atй que consiga concertar..
vai nos arquivo do sv e depois usa /rcon login senha..
e /rcon reloadbans
^^
Re: [AJUDA] Sistema de BAN ta com um BUG! -
Bruno Pereira - 11.01.2011
Quote:
Originally Posted by Black Sσldiєя
Outro tуpico? Esse GM que vocк usa tб ruim hein.
|
Tou desbugando ele, ja desbuguei UM MONNTE de coisas nele! Agora sу falta isso e o /amarrar para desbugar!
Re: [AJUDA] Sistema de BAN ta com um BUG! -
Sa-mp scripter - 11.01.2011
pawn Код:
stock ban(playerid)
{
new arquivo[256];
BanInfo[playerid][bBan] = 1;
format(arquivo, sizeof(arquivo), "banidos.ini");
return arquivo;
}
Agora й sу vocк colocar no:
pawn Код:
ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
Re: [AJUDA] Sistema de BAN ta com um BUG! -
duany123 - 11.01.2011
Sa-mp scripter Le O Pm Que Irei Te Mandar
Re: [AJUDA] Sistema de BAN ta com um BUG! -
Bruno Pereira - 11.01.2011
Eu coloquei o ban(playerid); desse jeito:
pawn Код:
public BanLog(string[])
{
ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
new entry[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen("ban.log", io_append);
fwrite(hFile, entry);
fclose(hFile);
}
Tem um monte de BanLog O_o
Ai deu esse erro:
pawn Код:
(6015) : error 017: undefined symbol "playerid"
Linha:
pawn Код:
ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
Re: [AJUDA] Sistema de BAN ta com um BUG! -
Sa-mp scripter - 11.01.2011
Nгo. Й no lugar do:
Do seu comando.