Вопрос по GetTickCount -
serpip - 30.10.2012
Здравствуйте! Подскажите кто в курсе, если в OnPlayerUpdate юзать GetTickCount(), то может из за этого лагать сервер? Таймеры с задержкой идут и т.п Я почему спрашиваю, потому что в анти чите JunlBuster используется эта функция примерно так
PHP код:
CALLBACK: OnPlayerUpdate (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 код:
CALLBACK: OnPlayerUpdate (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=0; i<1000000; i++)
{
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, честно - предполагаю что возможно.
Рекурсия потому что ничего более умного в голову, перед уходом на работу, не пришло. Разумеется это никакая не рекурсия...