[ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра? - Форум 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
Регистрация: 20.06.2016
Сообщения: 71
По умолчанию
[ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

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

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

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

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

DarkLordaxЧерез триггер
Аааа, понял. Спасибо
Rasvetribka вне форума
Ответить с цитированием
#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 вне форума
Ответить с цитированием
#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 вне форума
Ответить с цитированием
#8
Старый 07.04.2021, 14:20
  #8
^
Sir Krenshton
📖
Регистрация: 07.04.2021
Сообщения: 3
Регистрация: 07.04.2021
Сообщения: 3
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

DarkLordaxМожно на монстра триггер повесить, а самого монстра отключить как объект

Прошу, ответьте как отключить объект! Понимаю что 2 года прошло, но уж очень надо.

Добавлено через 5 минут
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

Прошу, ответьте что это за буквы, и как это изменять...
Sir Krenshton вне форума
Ответить с цитированием
#9
Старый 07.04.2021, 17:20
  #9
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 954
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 954
Выставка наград
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Товарищ Jack_of_Shadows вроде все очегь понятно написал. Что можно вам еще пояснить, если там к каждой строчке комментарий? Постановка вопроса тоже странная: "Обьясните, что за буковки". Или пишите, что конкретно в разжёванном коде непонятно, или сложится впечатление, что русский язык не для вас.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#10
Старый 10.04.2021, 09:22
  #10
^
Sir Krenshton
📖
Регистрация: 07.04.2021
Сообщения: 3
Регистрация: 07.04.2021
Сообщения: 3
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

}{0TT@6bI4Товарищ Jack_of_Shadows вроде все очегь понятно написал. Что можно вам еще пояснить, если там к каждой строчке комментарий? Постановка вопроса тоже странная: "Обьясните, что за буковки". Или пишите, что конкретно в разжёванном коде непонятно, или сложится впечатление, что русский язык не для вас.

Я извиняюсь конечно, но я не знаю что такое Lua Code Sample и где его изменять. Я гуглил, но всё же так и не понял. Если знаешь то пожалуйста ответь :3
Sir Krenshton вне форума
Ответить с цитированием
#11
Старый 10.04.2021, 10:00
  #11
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 954
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 954
Выставка наград
По умолчанию
Re: [ВОПРОС] Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Аа, кажется, понял, простите) Вы не знаете, куда вводить скрипты? Map Properties => Map Script => Edit Script. Но такой способ не слишком хорош, редактор часто вылетает со стиранием изменений. Поэтому рекомендую редактор скриптов от HSerg'а. Найти его можете под этим видео -> https://www.youtube.com/watch?v=M5_ND_yeSLk, там, в принципе, и разобраны примеры скриптов.

P.S. Не понимаю, как можно было не найти в гугле. В первых же выданных страницах – руководство Огои по скриптам + те видео Ремикса.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
Ответ


Опции темы



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


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

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