}{0TT@6bI42. Можете написать образец скрипта, работающего автоматически для любых шахт? То есть, добавил шахту золота — автоматически на неё распространилось действие.
Не претендую на истинность, возможны ошибки(не тестировал), но прототип получился примерно вот такой.
Есть ещё вариант с отключением шахты по триггеру, и временное включение по взаимодействию, но я не знаю, что происходит раньше:
выдача ресурсов или кастомные триггеры.
По коду.
Массив можно набрать руками, он константный - то есть от карты к карте будет одинаковым, если на карте не будет шахт нужного типа, то цикл
выполнится целых 0 раз, ошибок от этого не будет.
Ах да, ну и имена нужно задать всем шахтам, но они не обязательно должны быть осмысленные, можно любые. Лишь бы скрипт знал, что у шахты есть уникальное имя
minesArray =
{
{type = "BUILDING_SAWMILL",res = <айди ресурса>,dailyValue = <Сколько производит шахта>}
...
{type = <Тип шахты(см types.xml /Base/Tables)>,res = <айди ресурса>,dailyValue = <Сколько производит шахта>}
}
function checkMines()
local weekMultiplier = 1;
if(GetCurrentMoonWeek() == <Айди недели союза>) then
weekMultiplier = 3;
end;
if(GetCurrentMoonWeek() == <Айди недели праздности(или как её)>) then
weekMultiplier = 0.5;
end
for i,minesType in minesArray do
local allMines = GetObjectNamesByType(minesType.type);
for ind, mine in allMines do
local owner = GetObjectOwner(mine);
if(owner ~= 0) then
if(GetObjectCreatures(mine,<айди существ>) < value) then
local currentRes = GetPlayerResource(owner,minesType.res)
SetPlayerResource(owner,minesType.res, currentRes - minesType.dailyValue * weekMultiplier);
end;
end;
end;
end;
end;
Trigger(NEW_DAY_TRIGGER,"checkMines");