Portal SAMP
[Ajuda] Função não é chamada quando tem mais de 1 player - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Função não é chamada quando tem mais de 1 player (/showthread.php?tid=1822)



Função não é chamada quando tem mais de 1 player - zBL4CK - 09/11/2021

eae galera bom to tendo um problema com uma função que criei.

bom a função é chamar uma tela de load em que dps de algum tempo chama a tela de login.

o problema é que quando um player entra no servidor ele funciona normalmente porem quando entra outro player a função não é chamada:
Código PHP:
public OnPlayerRequestClass(playeridclassid) {
    TogglePlayerSpectating(playerid1);
    SetPlayerTime(playerid558);
    printf("chamou playerid %d"playerid); //== coloquei esse print pra saber o que ta acontecendo e aki é chamado pelo segundo player que logou no sv
    SetPlayerCameraPos(playerid, -1008.98401050.085133.6719);
    SetPlayerCameraLookAt(playerid, -1009.56701049.268833.5970);
    for(new a12a++) TextDrawShowForPlayer(playeridLoadOKL[a]);
    PlayerTextDrawShow(playeridPlayerLoadOKL[0][playerid]);
    Timerload[playerid] = SetTimerEx("TeladeLoadinicio"1000true"i"playerid);
    return 1;
}

forward TeladeLoadinicio(playerid); 
public 
TeladeLoadinicio(playerid) {
    
printf("chamou2 playerid %d"playerid); // aki não é chamada pelo segundo player que logou no servidor
    
++pctgtela[playerid];
    
    
PlayerTextDrawSetString(playeridPlayerLoadOKL[playerid][0], PiscarLogo[++carrepisc[playerid]]);
    
PlayerTextDrawShow(playeridPlayerLoadOKL[playerid][0]);
    if(
carrepisc[playerid] == 23carrepisc[playerid] = 0;
    if(
pctgtela[playerid] == 23) {
        
pctgtela[playerid] = 0;
        
KillTimer(Timerload[playerid]);
        
SetTimerEx("TeladeLoginInicio"100false"i"playerid);
    }
    return 
1;

alguem ai tem uma noção do pq isso ta acontecendo?


RE: Função não é chamada quando tem mais de 1 player - xbruno1000x - 09/11/2021

Já tive problemas com timers algumas vezes, infelizmente às vezes bugam em função de erros nativos do próprio SA-MP. Sugiro que você tente substituir o timer por CallLocalFunction.

Documentação:
https://open.mp/pt/docs/scripting/functions/CallLocalFunction


RE: Função não é chamada quando tem mais de 1 player - zBL4CK - 09/11/2021

(09/11/2021 18:21)xbruno1000x Escreveu: Já tive problemas com timers algumas vezes, infelizmente às vezes bugam em função de erros nativos do próprio SA-MP. Sugiro que você tente substituir o timer por CallLocalFunction.

Documentação:
https://open.mp/pt/docs/scripting/functions/CallLocalFunction

sim eu ja pensei nisso porem eu preciso que fique chamando a função em loop para que a contagem seja feita ou seja:

Código PHP:
++pctgtela[playerid]; 



RE: Função não é chamada quando tem mais de 1 player - xbruno1000x - 09/11/2021

(09/11/2021 20:53)zBL4CK Escreveu:
(09/11/2021 18:21)xbruno1000x Escreveu: Já tive problemas com timers algumas vezes, infelizmente às vezes bugam em função de erros nativos do próprio SA-MP. Sugiro que você tente substituir o timer por CallLocalFunction.

Documentação:
https://open.mp/pt/docs/scripting/functions/CallLocalFunction

sim eu ja pensei nisso porem eu preciso que fique chamando a função em loop para que a contagem seja feita ou seja:

Código PHP:
++pctgtela[playerid]; 

Quando tive problemas com Timer, o que resolveu foi colocar na OnPlayerConnect. Não sei explicar o motivo técnico, mas deu certo.