2. Можете написать образец скрипта, работающего автоматически для любых шахт? То есть, добавил шахту золота — автоматически на неё распространилось действие.
Есть ещё вариант с отключением шахты по триггеру, и временное включение по взаимодействию, но я не знаю, что происходит раньше:
выдача ресурсов или кастомные триггеры.
По коду.
Массив можно набрать руками, он константный - то есть от карты к карте будет одинаковым, если на карте не будет шахт нужного типа, то цикл
выполнится целых 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");
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!
Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.