IsFirstJoin [reconnection detect] -
RazorGuigo - 18.04.2018
Introduзгo:
este realese traz й util para saber se o player levou disconect e re-entrou no servidor, ou servidor tenha reiniciado quais os jogadores estavam presentes antes
Callback:
PHP код:
//chamado a primeira vez que conecta no servidor (antes de OnPlayerConnect)
public OnClientJoin(playerid)
//Chamado quando o player reconecta ao server por motivo de falhas na conexгo
public OnPlayerReconnect(playerid, repeats)
repeats=reincidкncias
Funзхes:
PHP код:
IsFirstJoin(playerid);//se й a primeira conexгo
GetPlayerDisconnects(playerid);//quantas vezes o player levou disconect
Exemplo de utilizaзгo:
se repetir a remoзгo de uma construзгo padrгo, o player ira crashar, й um problema quando vocк tem que reiniciar o servidor, e tem players, que podem crashar, no caso, vocк sу deletara a primeira vez que conectar!
PHP код:
public OnPlayerConnect(playerid)
{
if(IsFirstJoin(playerid))
{
RemoveBuildingForPlayer(playerid, modelid, fX, fY, fZ, fRadius);
RemoveBuildingForPlayer(playerid, modelid, fX, fY, fZ, fRadius);
RemoveBuildingForPlayer(playerid, modelid, fX, fY, fZ, fRadius);
...
}
return 1;
}
Dependкncia:Creditos:
Link para download:
GitHub:
https://github.com/RodrigoDornelles/IsFirstJoin [V 2.2]
Re: IsFirstJoin [reconnection detect] -
SpikeCompiler - 18.04.2018
Good Job! +REP
Re: IsFirstJoin [reconnection detect] -
JR_Junior - 20.06.2018
Testei aqui e a IsFirstJoin(playerid); estб retornando positivo o tempo todo.
Puxei o cabo da internet pra forзar um reconnect e mesmo assim diz que й uma First Join.
Estou usando a ъltima versгo do Pawn.RakNet e a versгo 0.3.DL do samp.
Re: IsFirstJoin [reconnection detect] -
RazorGuigo - 20.06.2018
Quote:
Originally Posted by JR_Junior
Testei aqui e a IsFirstJoin(playerid); estб retornando positivo o tempo todo.
Puxei o cabo da internet pra forзar um reconnect e mesmo assim diz que й uma First Join.
Estou usando a ъltima versгo do Pawn.RakNet e a versгo 0.3.DL do samp.
|
ele funciona com exatidгo somente em OnPlayerConnect, se vocк quiser utilizar em outra callback ou timer fassa o seguinte:
PHP код:
public OnPlayerConnect(playerid)
{
DC_LOGIN[playerid]++;
if(DC_LOGIN[playerid] > 1)
{
//ST_LOGIN[playerid]= false; <--- deixe comentado
#if defined OnPlayerReconnect
OnPlayerReconnect(playerid, DC_LOGIN[playerid]);
#endif
}
#if defined STL_OnPlayerConnect
return OnPlayerConnect(playerid);
#else
return 1;
#endif
}
suspeito que este problema seja causado por hooks, mas ainda nгo fiz testes sobre isso
Re: IsFirstJoin [reconnection detect] -
JR_Junior - 21.06.2018
Quote:
Originally Posted by RazorGuigo
ele funciona com exatidгo somente em OnPlayerConnect, se vocк quiser utilizar em outra callback ou timer fassa o seguinte:
PHP код:
public OnPlayerConnect(playerid)
{
DC_LOGIN[playerid]++;
if(DC_LOGIN[playerid] > 1)
{
//ST_LOGIN[playerid]= false; <--- deixe comentado
#if defined OnPlayerReconnect
OnPlayerReconnect(playerid, DC_LOGIN[playerid]);
#endif
}
#if defined STL_OnPlayerConnect
return OnPlayerConnect(playerid);
#else
return 1;
#endif
}
suspeito que este problema seja causado por hooks, mas ainda nгo fiz testes sobre isso
|
Deixa eu ver se entendi:
if(rpcid == 0x19) - Indica que й uma nova conexгo, ou reconexгo tambйm?
Eu fiz um debug e esse
rpcid retorna em ambas as situaзхes, ou seja, nгo importa se й uma
first join ou um
reconnect. Por isso sempre serб uma First Join, pois a variбvel sempre serб resetada apуs essa condiзгo(rpcid == 0x19):
DC_LOGIN[playerid] = 0;.
Dessa forma, a soluзгo nгo estб em comentar a negativaзгo da variбvel, a qual nem chega a ser usada, pois a condiзгo
if(DC_LOGIN[playerid] > 1) nunca existirб.
Nгo entendo de Pawn.RakNet, mas acredito que deve ter outro
rpcid que indique uma
reconnect.
NOTA: Nгo estou usando em forma de include, estou usando diretamente no GM.
Re: IsFirstJoin [reconnection detect] -
RazorGuigo - 21.06.2018
Quote:
Originally Posted by JR_Junior
Deixa eu ver se entendi: if(rpcid == 0x19) - Indica que й uma nova conexгo, ou reconexгo tambйm?
Eu fiz um debug e esse rpcid retorna em ambas as situaзхes, ou seja, nгo importa se й uma first join ou um reconnect. Por isso sempre serб uma First Join, pois a variбvel sempre serб resetada apуs essa condiзгo(rpcid == 0x19): DC_LOGIN[playerid] = 0;.
Dessa forma, a soluзгo nгo estб em comentar a negativaзгo da variбvel, a qual nem chega a ser usada, pois a condiзгo if(DC_LOGIN[playerid] > 1) nunca existirб.
Nгo entendo de Pawn.RakNet, mas acredito que deve ter outro rpcid que indique uma reconnect.
NOTA: Nгo estou usando em forma de include, estou usando diretamente no GM.
|
0x19 -> sу й chamado uma vez por vez que abre o seu GTA, se o servidor reinicia as variбveis voltam para o valor default 0, e nгo sгo alteradas, pois o jogador hб enviou o rpc
0x19
if(DC_LOGIN[playerid] > 1) eu coloquei isso para perceber se o player teve uma leve desconexгo em seu GTA, mas o servidor continuou online
(assim nгo voltando as variбveis para o valor default), em teoria era para funcionar mas nгo sei qual foi o erro na pratica! lamento.
sempre que faзo correзгo em algum release, eu atualizo o topico sobre isso, entгo qualquer coisa postarei aqui um novo patching!
Re: IsFirstJoin [reconnection detect] -
JR_Junior - 21.06.2018
Tб ok entгo! Vou aguardar! Valeu.