GerterМожно иметь сотни потоков одновременно и игра будет нормально это воспринимать. Не стоит только некоторые отдельные вещи в бесконечном потоке чекать, например, проверять стоимость пути в мувах соотв. функцией - вот это убивает игру даже одним потоком.
Что-ж, то, что низкого ограничения на количество открываемых потоков нет, это радует!
А вот касательно вещей, которые не стоит проверять в бесконечное потоке: у меня в скрипта следующие проверки используются, полагаю такие допускаются?
1) проверка, что через n-ое кол-во дней наступает событие (например - разблокировка региона, апдейт квеста), eventDay - глобальная переменная
function waitForEvent()
while (1) do
sleep(10)
local currentDay = GetDate(DAY)
if ((currentDay - eventDay) == 5) then
--some code
break
end
sleep(10)
end
end
2) проверка, что у игрока нет городов и активных героев
function checkGoalCompletion()
while (1) do
sleep(10)
local heroes = GetPlayerHeroes(id)
local townsNumber = 0;
for i, town in TOWNS do
if (GetObjectOwner(town) == id) then
townsNumber = townsNumber + 1
end
end
if (heroes == 0 and townsNumber == 0) then
--some code
break
end
sleep(10)
end
end
3) в гарнизона города есть требуемое количество существ
function checkTownCreatures()
while (1) do
sleep(10)
local creatures = GetObjectCreatures(obj, id)
if (creatures >= NEEDED) then
--some code
break
end
sleep(10)
end
end