SA-MP Forums Archive
Вопрос по GetTickCount - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Вопрос по GetTickCount (/showthread.php?tid=388841)



Вопрос по GetTickCount - serpip - 30.10.2012

Здравствуйте! Подскажите кто в курсе, если в OnPlayerUpdate юзать GetTickCount(), то может из за этого лагать сервер? Таймеры с задержкой идут и т.п Я почему спрашиваю, потому что в анти чите JunlBuster используется эта функция примерно так
PHP код:
CALLBACKOnPlayerUpdate (playerid)
{    
JB::PlayerInfo [playerid][JB::pLastUpdate] = GetTickCount ();




Re: Вопрос по GetTickCount - DrSlett - 31.10.2012

Quote:
Originally Posted by serpip
Посмотреть сообщение
Здравствуйте! Подскажите кто в курсе, если в OnPlayerUpdate юзать GetTickCount(), то может из за этого лагать сервер?
Если не знаете -лучше не работать с этим пабликом, используйте обычный таймер.


Re: Вопрос по GetTickCount - TRPG - 31.10.2012

Quote:
Originally Posted by serpip
Посмотреть сообщение
Здравствуйте! Подскажите кто в курсе, если в OnPlayerUpdate юзать GetTickCount(), то может из за этого лагать сервер? Таймеры с задержкой идут и т.п Я почему спрашиваю, потому что в анти чите JunlBuster используется эта функция примерно так
PHP код:
CALLBACKOnPlayerUpdate (playerid)
{    
JB::PlayerInfo [playerid][JB::pLastUpdate] = GetTickCount ();

Если кроме GetTickCount в onplayerupdate ничего не используется, это врядли будет заставлять сервер тормозить.


Re: Вопрос по GetTickCount - -Stranger- - 01.11.2012

Если смотреть в корень проблемы использования OnPlayerUpdate, то изза чего возникают глюки?
Основная причина того, что время выполнения этого колбека больше, чем интервал его вызова.
Например: Код в нем выполняется 100мс, а вызывается он раз в ~40мс.

Думаю с кодом ниже вопросов не будет.
PHP код:
new TimeWork tickcount();
for(new 
i=0i<1000000i++)
{
    new 
tick tickcount();
}
printf("Проход занял: %dms",tickcount() - TimeWork);
// [13:49:12] Проход занял занял: 155ms 
Можешь сделать такую проверку, и узнать бывает-ли у тебя такие наложения или нет:
PHP код:
new bool:OnPlayerUpdate_run;
OnPlayerUpdate(playerid)
{
    if(
OnPlayerUpdate_run == true) print("OnPlayerUpdate: recursion !!!");
    
OnPlayerUpdate_run true;
    
    
// Твой код
    
    
OnPlayerUpdate_run false;
    return 
1;




Re: Вопрос по GetTickCount - TRPG - 01.11.2012

Quote:
Originally Posted by -Stranger-
Посмотреть сообщение
\
Можешь сделать такую проверку, и узнать бывает-ли у тебя такие наложения или нет:
PHP код:
new bool:OnPlayerUpdate_run;
OnPlayerUpdate(playerid)
{
    if(
OnPlayerUpdate_run == true) print("OnPlayerUpdate: recursion !!!");
    
OnPlayerUpdate_run true;
    
    
// Твой код
    
    
OnPlayerUpdate_run false;
    return 
1;

Вы действительно рассчитываете на то, что может выполняться несколько Onplayerupdate одновременно и в добавок называете это "recursion !1!!"? Это могло бы выглядеть более менее адекватно, если бы под "Твой код" предполагалось вызывать onplayerupdate из onplayerupdate %)


Re: Вопрос по GetTickCount - -Stranger- - 01.11.2012

TRPG, честно - предполагаю что возможно.
Рекурсия потому что ничего более умного в голову, перед уходом на работу, не пришло. Разумеется это никакая не рекурсия...