Reconectar jogador -
Rodney Francalim - 12.08.2014
Entгo, estou hб alguns minutos tentando fazer uma espйcie de 'reconexгo' do jogador com o servidor, tentei fazer aqui de algumas maneiras e resolvi recorrer а pesquisa. Achei algumas soluзхes, muitas delas semelhantes e resolvi usб-las.
pawn Код:
stock Reconectar( playerid )
{
new
str[ 7 + 16 ],
ip[ 16 ]
;
GetPlayerIp( playerid, ip, sizeof( ip ));
SetPVarString( playerid, "ip", ip );
format( str, sizeof( str ), "banip %s", ip );
SendRconCommand( str );
printf( "DEBUG: Comando '%s' executado.", str );
return 1;
}
public OnPlayerConnect( playerid )
{
SetPVarString( playerid, "ip", "sem ip" );
return 1;
}
public OnPlayerDisconnect( playerid, reason )
{
new
str[ 9 + 16 ],
ip[ 16 ]
;
GetPVarString( playerid, "ip", ip, 16 );
if( strcmp( ip, "sem ip", false ) != 0 )
{
GetPVarString( playerid, "ip", ip, 16 );
format( str, sizeof( str ), "unbanip %s", ip );
SendRconCommand( str );
printf( "DEBUG: Comando '%s' executado.", str );
}
return 1;
}
Pois bem, como eu fiz os DEBUG, eu pude acompanhar e estб tudo normal, o servidor lк tudo isso.
No servidor, o jogador sobre 'timeout' normal, mas quando ele tenta reconectar, aparece 'You are banned from this server.' Sendo que no DEBUG aparece: "Comando 'unbanip 127.0.0.1' executado" - Tal como o comando 'banip'.
E o mais 'legal' й que o jogador loga normalmente se fechar o GTA.
Entгo queria saber se alguйm sabe o porquк do player receber o aviso de 'You're banned from this server.'?
Re: Reconectar jogador -
connork - 12.08.2014
Armazene o IP em uma string global, faзa a funзгo rodar, e em onplayerdisconnect faзa a funзгo de desbanir o IP pela variavel global.
Re: Reconectar jogador -
Rodney Francalim - 12.08.2014
Dб no mesmo, cara. Jб tinha testado assim.
O problema й que o jogador, ao tentar logar depois do 'timeout' й dado como banido, mas quando eu fecho e o GTA e logo novamente, ele nгo estб.
Re: Reconectar jogador -
RoacH` - 12.08.2014
Pode tentar algo como isso aqui,
PHP код:
stock Reconectar(playerid) return OnPlayerConnect(playerid), SetPlayerHealth(playerid, 0.0), ForceClassSelection(playerid);
Re: Reconectar jogador -
Rodney Francalim - 12.08.2014
Como isso funcionaria?
@EDIT:
Tб aн a imagem:
Re: Reconectar jogador -
SeV_ - 12.08.2014
Primeiramente vocк nгo consegue pegar o IP do player na callback OnPlayerDisconnect.
Veja a explicaзгo por JernejL.
Isto й simples.
1. Primeiramente vocк precisa banir o Ip do jogador, mas nгo kicka ele.
2. O player se desconectarб em (timeout - saiu ), No OnPlayerDisconnect vocк desbane o jogador - lembre que GetPlayerIp nгo pega na OnPlayerDisconnect, necessita armazenamento..
3. O cliente do player perderб a conexгo e automaticamente se reconectarб..
Sei que fizeste praticamente isto, mas era funcional antes do 0.3e.
Re: Reconectar jogador -
Rodney Francalim - 12.08.2014
Justamente por isso que eu jб 'getava' o IP do jogador antes do 'banip', jб que eu preciso do IP do mesmo para poder bani-lo.
E de novo, os comando 'banip' e 'unbanip' sгo executados normalmente, o problema й que mesmo assim, quando ocorre o timeout e o client do jogador tenta reconectar, aparece o aviso de que ele estб banido.
E SeV_ eu me baseei justamente no post desse cara aн.
@EDIT:
E antes do banip me refiro а funзгo Reconectar.
Re: Reconectar jogador -
SeV_ - 12.08.2014
Jб tentou com outro IP "outros jogadores" ?
Re: Reconectar jogador -
SW1FTmeister - 12.08.2014
Quando desbane o jogador, nгo se esqueзa de dar reload nos bans para atualizar o servidor. Basta adicionar o seguinte:
pawn Код:
SendRconCommand("reloadbans");
Re: Reconectar jogador -
SeV_ - 12.08.2014
Esse sistema nгo й mais funcional apуs ao SA-MP 0.3e.