Форум HeroesWorld-а - Показать сообщение отдельно - [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?
Показать сообщение отдельно
#6
Старый 01.08.2019, 22:22
  #6
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 481
Выставка наград
Регистрация: 08.09.2013
Сообщения: 481
Выставка наград
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Из мануала в моей подписи:

Как выполнить действие при касании определённого монстра?

Как правило, монстра с нестандартным поведением лучше делать внешне отличным от
обычного, поэтому бонусом к триггеру касания я добавляю изменение курсора со
стандартного меча на мирную лошадку, убирание «юбки» монстра и изменение его
имени:

	-- настройка существ-NPC на карте
-- npc – имя монстра, присвоенное в редакторе (строка)
-- func – функция-обработчик касания (строка)
-- name – название файла с именем существа (строка)
-- func и name – необязательные параметры, их можно не передавать
function SetNpcFunc(npc, func, name)
  -- выключение стандартного триггера касания монстра (бой)
  SetObjectEnabled(npc, nil);
  -- установка мирного курсора при наведении на монстра
  SetDisabledObjectMode(npc, DISABLED_INTERACT);
  sleep(1)
  -- отключение «юбки» (символа фракции под монстром)
  SetMonsterSelectionType(npc, 0);
  -- установка своего триггера касания (необязательный параметр)
  if (func ~= nil) then
    Trigger(OBJECT_TOUCH_TRIGGER, npc, func);
  end
  -- установка имени монстра (необязательный параметр)
  if (name ~= nil) then
    local full_name = GetMapDataPath()..name;
    SetMonsterNames(npc, MONSTER_NAME_SINGLE, full_name);
  end
end

-- примеры использования функции:
-- монстр просто перестаёт реагировать на касания
SetNpcFunc(‘СКРИПТОВОЕ_ИМЯ_МОНСТРА’);
-- монстру присваивается триггер касания, имя остаётся обычным
SetNpcFunc(‘СКРИПТОВОЕ_ИМЯ_МОНСТРА’, ‘NpcTouch’);
-- монстру присваивается триггер касания и даётся новое имя
SetNpcFunc(‘СКРИПТОВОЕ_ИМЯ_МОНСТРА’, ‘NpcTouch’, 
‘НАЗВАНИЕ_ФАЙЛА_С ИМЕНЕМ’);

-- обработчик касания монстра
-- hero – скриптовое имя героя, который коснулся монстра-NPC
-- npc – скриптовое имя монстра, которого коснулись
function NpcTouch(hero, npc)
  ВАШ КОД
end
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием