Форум HeroesWorld-а - Показать сообщение отдельно - [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?
Показать сообщение отдельно
#7
Старый 02.08.2019, 06:14
  #7
^
Rasvetribka
 
Аватар для Rasvetribka
📖
Регистрация: 20.06.2016
Сообщения: 71
Регистрация: 20.06.2016
Сообщения: 71
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

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

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

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

	-- настройка существ-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

Спасибо огромное, очень много полезной информации.
Rasvetribka вне форума
Ответить с цитированием