[AJUDA] BUG Settimer
#1

Bom
fazia muito tempo que sу vinha aqui e vez em quando de passeio e as vezes atй tinha o prazer de poder tirar umas dъvidas da galera

Mas agora, pela segunda vez na minha vida, me deparei com um bug que definitivamente nгo consigo resolver.
Jб postei diversas dъvidas, mas bug que eu nгo consegui resolver mesmo esse й o segundo.. Espero que tenham muitos scripters melhores do que eu aqui para me ajudar dessa vez =)



Bom, й simples...
Sintoma principal: um timer com loop infinito pбra de repente. E volta minutos depois... Pбra novamente... Volta minutos depois...

Sintoma detalhado: Um timer qualquer, pra evitar de fazer vбrios timers de 1seg, sendo gerenciados ao mesmo pelo processador, juntei tudo em um sу.

PHP код:
public OnGameModeInit()
{
...
    
SetTimer("OneSecUpdate"1000true);
...
return 
1;

na public...

PHP код:
public OneSecUpdate()
{
    
OtherStuff();
    
CustomPickups();
    
SetPlayerUnjail();
    
SyncClock();
    
Licenses();
    
CheckMH();
    
CheckGas();
    
GlobalTimer();
    
GangZonesCheck();
    
AtualizaBSLCash();

Bom, de repente comeзa uns RTs embora o jogo flua normalmente...
Entгo resolvi ver se tava comendo muito processador e travando por ter execussгo de muitas funзхes em sequencia...

entгo mudei a public para isto:
PHP код:
public OneSecUpdate()
{
    new 
GetTickCount();
    
OtherStuff();
    
CustomPickups();
    
SetPlayerUnjail();
    
SyncClock();
    
Licenses();
    
CheckMH();
    
CheckGas();
    
GlobalTimer();
    
GangZonesCheck();
    
AtualizaBSLCash();
    
printf("Tempo = %d"GetTickCount() - a);

Percebi que nгo demorava muito, cerca de 5ms pra executar todas as funзхes...
e percebi tambйm que o timer parava de ser executado...

Entгo pensei que alguma funзгo estaria "travando" ele...
mudei novamente o cуdigo para isto:

PHP код:
public OneSecUpdate()
{
    new 
GetTickCount();
    
OtherStuff();
    
printf("OtherStuff();");
    
CustomPickups();
    
printf("CustomPickups();");
    
SetPlayerUnjail();
    
printf("SetPlayerUnjail();");
    
SyncClock();
    
printf("SyncClock();");
    
Licenses();
    
printf("Licenses();");
    
CheckMH();
    
printf("CheckMH();");
    
CheckGas();
    
printf("CheckGas();");
    
GlobalTimer();
    
printf("GlobalTimer();");
    
GangZonesCheck();
    
printf("GangZonesCheck();");
    
AtualizaBSLCash();
    
printf("AtualizaBSLCash();");
    
printf("Tempo = %d"GetTickCount() - a);

Dessa forma, apуs uma funзгo ter sido executada com sucesso, o nome dela seria printado na tela. Entгo eu poderia ver, no momento que o timer parasse, qual seria a ъltima funзгo executada (podendo assim ver em qual delas que estaria travando o timer).

Resultado:
nenhuma!
todas eram executadas com sucesso e o timer parava...

log:
GM Iniciou:
Код:
[04:59:38] OtherStuff();
[04:59:38] CustomPickups();
[04:59:38] SetPlayerUnjail();
[04:59:38] SyncClock();
[04:59:38] Licenses();
[04:59:38] CheckMH();
[04:59:38] CheckGas();
[04:59:38] GlobalTimer();
[04:59:38] GangZonesCheck();
[04:59:38] AtualizaBSLCash();
[04:59:38] Tempo = 1
timer funcionou bem atй:
Код:
[09:31:30] OtherStuff();
[09:31:30] CustomPickups();
[09:31:30] SetPlayerUnjail();
[09:31:30] SyncClock();
[09:31:30] Licenses();
[09:31:30] CheckMH();
[09:31:30] CheckGas();
[09:31:30] GlobalTimer();
[09:31:30] GangZonesCheck();
[09:31:30] AtualizaBSLCash();
[09:31:30] Tempo = 2
[09:31:30] xxxx Anъncio: Equipamento й no mei do antigo HQ !, Contato: xxxxxx Tel: 17917
[09:31:31] OtherStuff();
[09:31:31] CustomPickups();
[09:31:31] SetPlayerUnjail();
[09:31:31] SyncClock();
[09:31:31] Licenses();
[09:31:31] CheckMH();
[09:31:31] CheckGas();
[09:31:31] GlobalTimer();
[09:31:31] GangZonesCheck();
[09:31:31] AtualizaBSLCash();
[09:31:31] Tempo = 2
[09:31:34] [xxxx] [xxxxx]: seguinte
[09:31:35]  (Radio) Hitman xxxx: quem fez esse gm?, cвmbio.
[09:31:38] [xxxx] [xxxxxx]: Donos Da Org sгo:
[09:31:39]  (Radio) Hitman xxxx: aquela vadia?, cвmbio.
Entгo... como se nunca tivesse parado... ele voltou a funcionar em:
Код:
[09:33:30] OtherStuff();
[09:33:30] CustomPickups();
[09:33:30] SetPlayerUnjail();
[09:33:30] SyncClock();
[09:33:30] Licenses();
[09:33:30] CheckMH();
[09:33:30] CheckGas();
[09:33:30] GlobalTimer();
[09:33:30] GangZonesCheck();
[09:33:30] AtualizaBSLCash();
[09:33:30] Tempo = 2
[09:33:31] OtherStuff();
[09:33:31] CustomPickups();
[09:33:31] SetPlayerUnjail();
[09:33:31] SyncClock();
[09:33:31] Licenses();
[09:33:31] CheckMH();
[09:33:31] CheckGas();
[09:33:31] GlobalTimer();
[09:33:31] GangZonesCheck();
[09:33:31] AtualizaBSLCash();
[09:33:31] Tempo = 2
parou novamente em:
Код:
[09:33:40] OtherStuff();
[09:33:40] CustomPickups();
[09:33:40] SetPlayerUnjail();
[09:33:40] SyncClock();
[09:33:40] Licenses();
[09:33:40] CheckMH();
[09:33:40] CheckGas();
[09:33:40] GlobalTimer();
[09:33:40] GangZonesCheck();
[09:33:40] AtualizaBSLCash();
[09:33:40] Tempo = 2
[09:33:44] xxxx desconectou no servidor. (id: 6 - IP: 255.255.255.255)
[09:33:44] [part] Smile_Kiragawa has left the server (6:1)
Voltou novamente em:
Код:
[09:40:26] [junkbuster] Suspected player with repairing vehicle with cheats: Doug_Turim (14, 187.115.38.227), Beagle.
[09:40:27] OtherStuff();
[09:40:27] CustomPickups();
[09:40:27] SetPlayerUnjail();
[09:40:27] SyncClock();
[09:40:27] Licenses();
[09:40:27] CheckMH();
[09:40:27] CheckGas();
[09:40:27] GlobalTimer();
[09:40:27] GangZonesCheck();
[09:40:27] AtualizaBSLCash();
[09:40:27] Tempo = 2
parou novamente em:
Код:
[09:40:36] OtherStuff();
[09:40:36] CustomPickups();
[09:40:36] SetPlayerUnjail();
[09:40:36] SyncClock();
[09:40:36] Licenses();
[09:40:36] CheckMH();
[09:40:36] CheckGas();
[09:40:36] GlobalTimer();
[09:40:36] GangZonesCheck();
[09:40:36] AtualizaBSLCash();
[09:40:36] Tempo = 2
[09:40:36] Incoming connection: 177.35.163.26:60515
[09:40:36] [join] xxxxx has joined the server (4:177.35.163.26)
Reply
#2

й logico q vai ficar bugando...
vc nгo pode pegar todos os timers do GF e colocar em um sу.
se fosse facil assim o GF ja vinha todo no mesmo timer.
й melhor vc separar os timers para nгo ficar sobrecarregando.
Reply
#3

Quote:
Originally Posted by Chefгo
Посмотреть сообщение
й logico q vai ficar bugando...
vc nгo pode pegar todos os timers do GF e colocar em um sу.
se fosse facil assim o GF ja vinha todo no mesmo timer.
й melhor vc separar os timers para nгo ficar sobrecarregando.
eu acredito que assim sobrecarrega menos do que varios timers

e a proposito, se sobrecarregasse tanto, nao teria executado tudo em 5milisegundos...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)