Posts: 439
Threads: 13
Joined: Aug 2011
Reputation:
0
Когда у тебя будет онлайн 300-500, то стоит попробывать некий foreach (я не использую пока что, но люди пишут, что помогает).
Код должен быть максимально продуман и в меру оптимизирован, чтобы не выполнялось лишних операций.
Если онлайн ниже 200, то не парься особо. И кстати ещё не стоит забывать о константе MAX_PLAYERS, нужно поставить ей столько, сколько реально нужно.
Posts: 96
Threads: 16
Joined: Aug 2013
Reputation:
0
Так форич и выполняется.
Так вот , а что если сделать , чтобы к каждому игроку присваивался собственный таймер (EX), при коннекте. А при дисконнекте - килялся.
Где-то видел, один человек писал.
Говорит,что если юзать так, как у меня, то увы , лаги бешеные будут.
Ну, #define MAX_PLAYERS (1000) , я раздефайнил и обратно задефайнил. Ничего лишнего не будет.
Posts: 1,659
Threads: 17
Joined: Sep 2008
Если очень трудно убить таймер, то можно воспользоваться SetPlayerTimer из плагина
samp-plugin-timerfix.
Posts: 280
Threads: 18
Joined: Feb 2014
Reputation:
0
Вариант Eims очень плох!
Не продуман.
При моментальном входе игрока на ID только вышедшего, работать будут два таймера на один ID.
А такое будет случаться 100% особенно на маленьких ID.
Posts: 24
Threads: 2
Joined: Jul 2017
Ну, как вариант можно сделать так:
public OnPlayerConnect(playerid)
{
SetTimerEx("FuncName", 1000, false, "dd", playerid, SetPVarInt(playerid, "Random", random(9999));
}
forward FuncName(playerid, rand);
public FuncName(playerid, rand)
{
if(!IsPlayerConnected(playerid) || GetPVarInt(playerid, "Random") != rand)
return 1;
// какие-то действия
SetTimerEx("FuncName", 1000, false, "dd", playerid, rand);
return 1;
}
Posts: 24
Threads: 2
Joined: Jul 2017
Quote:
Originally Posted by OstGot
Это костыль какой-то. Проще уже запускать его заново при каждом финише, но вместе с этим и убивать его при дисконнекте. Для полной уверенности, так сказать.
|
Переподключиться могут успеть и тогда будет двойной таймер. А еще лучше использовать не рандом числа а GetTickCount().
Posts: 1,311
Threads: 39
Joined: Mar 2012
Reputation:
0
Я один не понял, чем плохо просто удалить повторяющийся таймер в OnPlayerDisconnect?
Posts: 24
Threads: 2
Joined: Jul 2017
Quote:
Originally Posted by stabker
Я один не понял, чем плохо просто удалить повторяющийся таймер в OnPlayerDisconnect?
|
Этот паблик не всегда срабатывает, очень редко но бывает
Posts: 1,042
Threads: 46
Joined: Jun 2013
Quote:
Originally Posted by OstGot
Можно уточнить, при каких обстоятельствах именно у вас это бывало?
|
Скорей всего при выключении сервера, ахах.
PS: У меня никогда такого бага НЕ было, всегда OnPlayerDisconnect вызывался при выходе игрока.