[ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра? - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

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

Я хочу сделать так, чтобы при нападении на монстра у меня появлялся с ним диалог, короче этот монстр даёт квест. Мне нужно чтобы с этим монстром можно было взаимодействовать, но нельзя было атаковать. Т.е. не просто закрыть к нему доступ, чтобы на него даже нельзя было навести курсор, а сделать так, чтобы можно было к нему подходить, но боя бы не начиналось. Мне же надо ему потом как-то сдать квест.
Rasvetribka вне форума
Ответить с цитированием
#2
Старый 01.08.2019, 13:25
  #2
^
DarkLordax
 
Аватар для DarkLordax
📖
Регистрация: 01.06.2017
Сообщения: 68
DarkLordax - уровень боевого духа
Регистрация: 01.06.2017
Сообщения: 68
DarkLordax - уровень боевого духа
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Можно на монстра триггер повесить, а самого монстра отключить как объект
DarkLordax вне форума
Ответить с цитированием
#3
Старый 01.08.2019, 17:00
  #3
^
Rasvetribka
 
Аватар для Rasvetribka
📖
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Сообщение от DarkLordax Можно на монстра триггер повесить, а самого монстра отключить как объект
А в таком случае взаимодействовать с ним можно будет?
Rasvetribka вне форума
Ответить с цитированием
#4
Старый 01.08.2019, 17:07
  #4
^
DarkLordax
 
Аватар для DarkLordax
📖
Регистрация: 01.06.2017
Сообщения: 68
DarkLordax - уровень боевого духа
Регистрация: 01.06.2017
Сообщения: 68
DarkLordax - уровень боевого духа
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Сообщение от Rasvetribka А в таком случае взаимодействовать с ним можно будет?
Через триггер
DarkLordax вне форума
Ответить с цитированием
#5
Старый 01.08.2019, 19:02
  #5
^
Rasvetribka
 
Аватар для Rasvetribka
📖
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Сообщение от DarkLordax Через триггер
Аааа, понял. Спасибо
Rasvetribka вне форума
Ответить с цитированием
#6
Старый 01.08.2019, 22:22
  #6
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 480
Jack_of_shadows - уровень боевого духа
Выставка наград
Регистрация: 08.09.2013
Сообщения: 480
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию
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 вне форума
Ответить с цитированием
#7
Старый 02.08.2019, 06:14
  #7
^
Rasvetribka
 
Аватар для Rasvetribka
📖
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
Регистрация: 20.06.2016
Сообщения: 71
Rasvetribka - уровень боевого духа
По умолчанию
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 вне форума
Ответить с цитированием
Ответ


Опции темы



Часовой пояс GMT +4, время: 18:13.


vBulletin v3.5.0, Copyright ©2000-2020, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru