SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 18/04/2018, 04:09 PM   #1
RazorGuigo
High-roller
 
RazorGuigo's Avatar
 
Join Date: May 2016
Location: South is my Country
Posts: 1,168
Reputation: 104
Thumbs up IsFirstJoin [reconnection detect]

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 Code:
//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(playeridrepeats)
repeats=reincidências 
Funções:
PHP Code:
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 Code:
public OnPlayerConnect(playerid)
{
    if(
IsFirstJoin(playerid))
    {
        
RemoveBuildingForPlayer(playeridmodelidfXfYfZfRadius);
        
RemoveBuildingForPlayer(playeridmodelidfXfYfZfRadius);
        
RemoveBuildingForPlayer(playeridmodelidfXfYfZfRadius);
        ...
    }
    return 
1;


Dependência:Creditos:
Quote:
RazorGuigo -> Inital Realese

Link para download:

GitHub: https://github.com/RodrigoDornelles/IsFirstJoin [V 2.2]
RazorGuigo is offline   Reply With Quote
Old 18/04/2018, 08:34 PM   #2
SpikeCompiler
Huge Clucker
 
SpikeCompiler's Avatar
 
Join Date: Dec 2017
Location: Rio de Janeiro - RJ
Posts: 262
Reputation: 14
Default Re: IsFirstJoin [reconnection detect]

Good Job! +REP
SpikeCompiler is offline   Reply With Quote
Old 20/06/2018, 09:15 PM   #3
JR_Junior
Huge Clucker
 
Join Date: Nov 2011
Location: Brazil
Posts: 228
Reputation: 54
Default Re: IsFirstJoin [reconnection detect]

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.
JR_Junior is offline   Reply With Quote
Old 20/06/2018, 11:55 PM   #4
RazorGuigo
High-roller
 
RazorGuigo's Avatar
 
Join Date: May 2016
Location: South is my Country
Posts: 1,168
Reputation: 104
Default Re: IsFirstJoin [reconnection detect]

Quote:
Originally Posted by JR_Junior View Post
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 Code:
public OnPlayerConnect(playerid)
{
    
DC_LOGIN[playerid]++;
    if(
DC_LOGIN[playerid] > 1)
    {
        
//ST_LOGIN[playerid]= false; <--- deixe comentado
        #if defined OnPlayerReconnect
            
OnPlayerReconnect(playeridDC_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
RazorGuigo is offline   Reply With Quote
Old 21/06/2018, 05:07 PM   #5
JR_Junior
Huge Clucker
 
Join Date: Nov 2011
Location: Brazil
Posts: 228
Reputation: 54
Default Re: IsFirstJoin [reconnection detect]

Quote:
Originally Posted by RazorGuigo View Post
ele funciona com exatidão somente em OnPlayerConnect, se você quiser utilizar em outra callback ou timer fassa o seguinte:

PHP Code:
public OnPlayerConnect(playerid)
{
    
DC_LOGIN[playerid]++;
    if(
DC_LOGIN[playerid] > 1)
    {
        
//ST_LOGIN[playerid]= false; <--- deixe comentado
        #if defined OnPlayerReconnect
            
OnPlayerReconnect(playeridDC_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.
JR_Junior is offline   Reply With Quote
Old 21/06/2018, 05:26 PM   #6
RazorGuigo
High-roller
 
RazorGuigo's Avatar
 
Join Date: May 2016
Location: South is my Country
Posts: 1,168
Reputation: 104
Default Re: IsFirstJoin [reconnection detect]

Quote:
Originally Posted by JR_Junior View Post
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!
RazorGuigo is offline   Reply With Quote
Old 21/06/2018, 05:51 PM   #7
JR_Junior
Huge Clucker
 
Join Date: Nov 2011
Location: Brazil
Posts: 228
Reputation: 54
Default Re: IsFirstJoin [reconnection detect]

Tá ok então! Vou aguardar! Valeu.
JR_Junior is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Reconnection Bug (Before 0.3x) Lorenc_ Scripting Help 63 14/01/2013 08:52 PM
How to detect Torran Help Archive 1 23/02/2010 08:00 PM


All times are GMT. The time now is 09:15 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.