Форум HeroesWorld-а - Показать сообщение отдельно - Текущие вопросы и ответы по редактору карт
Показать сообщение отдельно
#5478
Старый 07.03.2022, 16:31
  #5478
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

}{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");
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием