Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3814
Старый 04.01.2023, 19:54
  #3814
^
IchGViji
 
Аватар для IchGViji
📖
Регистрация: 23.08.2022
Сообщения: 98
Регистрация: 23.08.2022
Сообщения: 98
Сообщение
Re: Скрипты

Всем доброго дня!

С помощью руководства решил я попробовать сделать боевой скрипт.
Возникло пару проблем по нему
1) функция GetDefenderCreatures() выдает ошибку: "Wrong type of argument 1 when calling function GetUnits" в независимости, где я в файле скрипта ее вызову. Пробовал аналогичную функцию, но для атакующего - GetAttackerCreatures(). Первый раз сработала, второй раз та же проблема, что и с Defender.
2) хуки DefenderHeroMove(heroName) и AttackerHeroMove(heroName) при ходе героев не запускаются - в консоли даже нет сообщения, что скрипт вошел в тело функции, и даже ошибки никакой не выдает. Один раз даже было, что хук AttackerHeroMove(heroName) просто зациклился. Стабильно работают только хуки Prepare() и Start().
Можете, пожалуйста, подсказать, как эти проблемы разрешить? 

Содержимое скрипта (пока просто логи, чтобы понять, что работает, что нет):

print("inside combat file");

DEFENDER = GetDefenderHero();
print(DEFENDER);
ATTACKER = GetAttackerHero();
print(ATTACKER);
defenderCreatures = {0};
attackerCreatures = {0};



function Prepare()
  print("inside Prepare function");
  print("Prepare function has ended");
end;

function Start()
  print("inside Start function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  defenderCreatures = GetDefenderCreatures();
  attackerCreatures = GetAttackerCreatures();
  print(1);
  for key, creature in defenderCreatures do
    print("key=", key, ", creature=", creature);
  end;
  print(attackerCreatures);
  print("Start function has ended");
end;

function DefenderHeroMove(heroName)
  print("inside DefenderHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("DefenderHeroMove function has ended");
end;

function AttackerHeroMove(heroName)
  print("inside AttackerHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("AttackerHeroMove function has ended");
end;

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