Перейти к содержанию

Сообщения от Как сделать в скриптах, чтобы нельзя было напасть на монстра?

Пока нет оценок — будьте первым!
Аватар пользователя
7 лет назад
Я хочу сделать так, чтобы при нападении на монстра у меня появлялся с ним диалог, короче этот монстр даёт квест. Мне нужно чтобы с этим монстром можно было взаимодействовать, но нельзя было атаковать. Т.е. не просто закрыть к нему доступ, чтобы на него даже нельзя было навести курсор, а сделать так, чтобы можно было к нему подходить, но боя бы не начиналось. Мне же надо ему потом как-то сдать квест.
Аватар пользователя
7 лет назад
Можно на монстра триггер повесить, а самого монстра отключить как объект
В ответ пользователю DarkLordax
Аватар пользователя
7 лет назад
DarkLordax
Можно на монстра триггер повесить, а самого монстра отключить как объект
А в таком случае взаимодействовать с ним можно будет?
Аватар пользователя
7 лет назад
Из мануала в моей подписи:

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

Как правило, монстра с нестандартным поведением лучше делать внешне отличным от
обычного, поэтому бонусом к триггеру касания я добавляю изменение курсора со
стандартного меча на мирную лошадку, убирание «юбки» монстра и изменение его
имени:
-- настройка существ-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: ЧаВо
В ответ пользователю Jack_of_shadows
Аватар пользователя
7 лет назад
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

Спасибо огромное, очень много полезной информации.
В ответ пользователю DarkLordax
5 лет назад
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
Прошу, ответьте что это за буквы, и как это изменять...
Аватар пользователя
5 лет назад
Товарищ Jack_of_Shadows вроде все очегь понятно написал. Что можно вам еще пояснить, если там к каждой строчке комментарий? Постановка вопроса тоже странная: "Обьясните, что за буковки". Или пишите, что конкретно в разжёванном коде непонятно, или сложится впечатление, что русский язык не для вас.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
5 лет назад
}{0TT@6bI4
Товарищ Jack_of_Shadows вроде все очегь понятно написал. Что можно вам еще пояснить, если там к каждой строчке комментарий? Постановка вопроса тоже странная: "Обьясните, что за буковки". Или пишите, что конкретно в разжёванном коде непонятно, или сложится впечатление, что русский язык не для вас.

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

P.S. Не понимаю, как можно было не найти в гугле. В первых же выданных страницах – руководство Огои по скриптам + те видео Ремикса.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________

Статистика

Приветствуем новейшего участника: recijeb