Форум HeroesWorld-а - Показать сообщение отдельно - Текущие вопросы и ответы по редактору карт
Показать сообщение отдельно
#4413
Старый 19.07.2017, 10:21
  #4413
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Пошлость, с ходу могу только сказать, что CreateMonster вызывается неправильно, lua такое не понимает:
mood= MONSTER_MOOD_AGGRESSIVE,courage= MONSTER_COURAGE_CAN_FLEE_JOIN,rotation= 0
Вероятно парсер на этой строке и слетел.

Второе, если скрипт крашится, хорошим тоном всё таки является заглянуть в консоль и привести здесь текст ошибки (да он и вам часто может помочь понять проблему самостоятельно).

Третье, если вы нацелились на более-менее скриптовую карту (>200 строчек кода), рекомендую другой подход к структуре кода. Сейчас все ваши инициализирующие функции расположены на верхнем уровне в разнобой, в результате чего достаточно одной мелкой ошибки в коде, чтобы интерпретатор вылетел, скрипты полностью перестали работать, и главное непонятно где искать проблему.
Рекомендую всё, что выполняется непосредственно при старте карты, поместить в отдельную функцию, дополнив её периодически printa'ми:
	function InitMap()
  print('init start');

  EnableHeroAI('Brem', nil);
  EnableHeroAI('Straker', nil);
  print('init heroes OK');

  Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
  Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
  print('init triggers OK');

  print('init finish');
end

InitMap();
Этот код помещается в самый конец скрипта и при запуске карты первым делом заглядываем в консоль.
Если в коде была ошибка синтаксиса, которую lua-интерпретатор не переварил, консоль будет пустая, до функции InitMap() дело просто не дойдёт.
Если всё хорошо, консоль будет заканчиваться строчкой 'init finish'.
Если мы попытаемся что-то инициализировать неправильно, к примеру ошибемся с названием региона "rew", то в консоли будет:
init start
init heroes OK
какая-нибудь ошибка красным шрифтом
и по этому логу сразу ясно в каких строчках искать ошибку.
Jack_of_shadows вне форума
Ответить с цитированием