Вопрос по GetTickCount
#1

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

Reply
#2

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

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

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

Если смотреть в корень проблемы использования 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;

Reply
#5

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 %)
Reply
#6

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


Forum Jump:


Users browsing this thread: 2 Guest(s)