[Ajuda] Temporizadores
#1

Olб pessoal, estou com um problema que estб tirando a paciкncia D:
Й um seguinte, simplesmente todos SetTimer iniciados pelo OnGameModeInit estгo parando de funcionar.
Depois de um certo tempo que o servidor estб online os temporizadores estгo morrendo, um por vez as й um que morre primeiro as vezes й outro, porйm chega um hora que todos param de funcionar, jб tentei de diversas formas tentar resolver e nгo consegui, se alguйm jб passou pelo mesmo problema e tenha ideia do que seja, por favor me ajude aqui, fico muito grato.
Reply
#2

Tente nгo usar SetTimer em OnGameModeInit.
Exemplo: Para atualizar textdraw de players, crie um SetTimerEx para cada um quando ele conecta ao invйs de usar um loop no SetTimer comum.
Desse modo creio que nгo vб lhe causar problemas.
Reply
#3

Ou entгo chamar uma outra public com os timers..
Reply
#4

Nгo estou querendo fugir do problema e sim encontra-lo, e dessa forma vou "fugir" do mesmo, entгo isso nгo me ajudou, mais agradeзo pela ajuda ;]

* Eu quero descobrir o que faz parar os temporizadores, jб estou com esse problema a tempos e nгo consigo encontrar soluзгo, jб dividi as public jб mudei as funзхes na qual poderia causar algum bug, fiz de tudo e nгo sei o que estб matando eles =\
Reply
#5

Quais timers sгo parados? Todos, ou tem alguns que nгo param? Existe KillTimer no cуdigo? Sгo quantos settimers?
Reply
#6

Isso pode atй ser fugir, mas й fugir de algo que estб lhe causando problema
Loops em SetTimer do OnGameModeInit sempre dгo problemas...
explique mais sobre quais timers se trata... quais sгo suas funзхes etc..
Reply
#7

Sгo todos porйm nгo sгo mortos juntos e sim um por vez e "sortido", e nгo existe nenhuma funзгo KillTimer para eles, os KillTimer que possuo no GameMode sгo para outras funзхes, entгo sгo +- uns 8 temporizadores, porйm jб dividi os mesmos cada 1 em uma public diferente e tals e o problema continua =\
Reply
#8

Caso utilize os temporizadores dessa forma:
pawn Код:
public OnGameModeInit()
{
    SetTimer("message", 1000, true);
    return 1;
}

forward message();
public message()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        SendClientMessage(i, -1, "Bla Bla Bla!");
    }
}
Passe utilizar assim:
pawn Код:
new Timer1[MAX_PLAYERS];
forward message(playerid);

public OnPlayerConnect(playerid)
{
    Timer1[playerid] = SetTimerEx("message", 1000, true, "d", playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    KillTimer(Timer1);
    return 1;
}

public message(playerid)
{
    SendClientMessage(playerid, -1, "Bla Bla Bla!");
}
Reply
#9

Й, provavelmente deve ser problema da SA:MP, deve ser cruzamento de timers, um deve estar se acavalando em cima do outro, fazendo anular um. Tente colocar tempos diferentes.

Pseudo exemplo -q. Em vez de

SetTimer("oi1", 1000)
SetTimer("oi2", 1000)

para

SetTimer("oi1", 1000)
SetTimer("oi2", 1450)

Reply
#10

THE_FALLEN, obrigado pela forзa mais isso eu jб sabia e й como eu disse assim estou fugindo do problema.

ipsBruno, vou fazer isso que vocк disse, obrigado.

Se nгo resolver eu volto a postar, se alguйm jб passou ou passa por isso vamos tentar resolver aqui, ou ajude-me :P
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)