|
|
Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство. |
![]() |
|
Опции темы |
![]() |
#211 |
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21936
![]() ![]() ![]() |
![]() А. Ну, то есть замечание номер 3 всё же сыграло, похоже. Боюсь, придётся усложнять скрипт -- задание gaz сделать во вкладке objectives, общим, но поначалу невидимым. Выдавать по OBJECT_TOUCH_TRIGGER с домиком, а домику стандартные функции отключить (сначала выдавать сообщение, потом -- задание).
Но сначала надо проверить -- если прописать gaz общим и доступным с самого начала, будет ли работать. |
![]() |
![]() |
![]() |
#212 |
Регистрация: 30.06.2019
Сообщения: 5
![]() |
![]() Всем доброго времени суток. Тупой вопрос по MessageBox. Куда положить надо текстовый файл?
|
![]() |
![]() |
![]() |
#213 |
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21936
![]() ![]() ![]() |
![]() Куда-нибудь в архив с картой. Путь к текстовому файлу в архиве с картой = тот путь, что Вы пишете в скриптах.
Обычно кладут туда, где лежат map.xdb, terrain.bin и прочее, что связано с данной конкретной картой. |
![]() |
![]() |
![]() |
#214 |
Регистрация: 30.06.2019
Сообщения: 5
![]() |
![]() Я вот просто туплю, где этот архив. У меня в каталоге Maps лежит просто сама карта
|
![]() |
![]() |
![]() |
#215 |
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21936
![]() ![]() ![]() |
![]() Это оно и есть. При старте редактора карт этот архив (который на самом деле zip, пусть и написано у него иначе) распаковывается, после закрытия редактора все изменения туда запаковываются.
|
![]() |
![]() |
![]() |
#216 |
Регистрация: 30.06.2019
Сообщения: 5
![]() |
![]() То есть когда я открываю карту в редакторе, в каталог Maps нужно засунуть текстовый файл?
|
![]() |
![]() |
![]() |
#217 |
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21936
![]() ![]() ![]() |
![]() Не, там какой-то другой каталог... Не помню точно, вроде Editor -> H5mMods -> папка с названием карты
Но, чтобы не опростоволоситься, лучше закрыть редактор и открыть архив с картой с помощью WinRAR. И туда уже засунуть. |
![]() |
![]() |
![]() |
#218 |
Регистрация: 30.06.2019
Сообщения: 5
![]() |
![]() Доброго времени суток, я вернулся к героям. И все еще не разобрался с MessageBox. Как zip файл открываться не хочет. Можете приложить пару скринов или снова разложить все по полочкам?
|
![]() |
![]() |
![]() |
#219 |
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 21936
![]() ![]() ![]() |
![]() Файл с расширением .h5m открываете же, верно?
|
![]() |
![]() |
![]() |
#220 |
Регистрация: 30.06.2019
Сообщения: 5
![]() |
![]() Да, я пытаюсь разархивировать название_карты.h5m . Но это чисто не выходит. Не могли бы вы описать другой способ подробнее?
|
![]() |
![]() |
![]() |
#221 |
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 8
![]() |
![]() Здравствуйте,можно,пожалуйста,получить совет:у меня на карте есть строение, в котором хочу нанимать войска с помощью скриптовых функций,так вот, как сделать так,чтобы эти функции выполнялись последовательно,не перебивая друг-друга,вроде, согласно руководству, должно быть условие if во второй функции,но какое...
Вот функции: --Начало-- --Naim1-- function Naim1(hero) Naim1_hero = hero MessageBox("/Maps/SingleMissions/Time of Troubles1/Naim1MB.txt") QuestionBox("/Maps/SingleMissions/Time of Troubles1/Naim1QB.txt", "Naim1_ok"); end function Naim1_ok() local gold = GetPlayerResource(PLAYER_1, GOLD) if gold >= 3000 then Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", nil) SetPlayerResource(PLAYER_1, GOLD, gold - 3000) AddHeroCreatures(Naim1_hero, 4, 30) else MessageBox("/Maps/SingleMissions/Time of Troubles1/Naim2MB.txt") end end Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", "Naim1") --Naim2-- function Naim2(hero) Naim2_hero = hero MessageBox("/Maps/SingleMissions/Time of Troubles1/Naim3MB.txt") QuestionBox("/Maps/SingleMissions/Time of Troubles1/Naim2QB.txt", "Naim2_ok"); end function Naim2_ok() local gold = GetPlayerResource(PLAYER_1, GOLD) if gold >= 7000 then Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", nil) SetPlayerResource(PLAYER_1, GOLD, gold - 7000) AddHeroCreatures(Naim1_hero, 11, 3) else MessageBox("/Maps/SingleMissions/Time of Troubles1/Naim4MB.txt") end end Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", "Naim2") --Конец-- |
![]() |
![]() |
![]() |
#222 |
Регистрация: 06.08.2011
Сообщения: 178
![]() |
![]() Если нужно, чтобы вторая функция выполнялась только после того, как первые существа были наняты, то соответственно можно под условием "if gold >= 3000 then" заменить в триггере nil на "Naim2". Тогда так получится:
Код:
В таком случае в начале активируется триггер на "Naim1", после найма он заменится на "Naim2", а после найма вторых существ обнулится. |
![]() |
![]() |
![]() |
#223 |
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 8
![]() |
![]() Спасибо,большое,помогло.Можно ли,пожалуйста,ещё совет? Как реализовать такую задумку:изначально нельзя отстроить в городе определённое здание,но его можно разблокировать и улучшить,выполнив второстепенный квест. Первоначальное диалоговое окно с NPC, я сделал,задание тоже настроил(уничтожение отряда нейтралов),Но возникли вопросы - как при выполнении задания,вернувшись к NPC заблокировать первоначальную функцию с диалогом №1,и запустить функцию с диалогом №2 в том же регионе,и разблокировать здание в качестве награды?
---- Функция вступление, с диалогом №1 ---- function Barracks_build(hero) Barracks_hero = hero MessageBox("/Maps/SingleMissions/Time of Troubles1/Barracks_building.txt",nil) QuestionBox("/Maps/SingleMissions/Time of Troubles1/Barracks_buildingQB.txt", "Barracks_build_ok",nil); end Trigger(REGION_ENTER_AND_STOP_TRIGGER, "QuestSword", "Barracks_build",nil) ---- Функция согласия, с диалогом №2 ---- function Barracks_build_ok() MessageBox("/Maps/SingleMissions/Time of Troubles1/Barracks_building1.txt"); SetObjectiveState("zadanie1", OBJECTIVE_ACTIVE,1); Trigger(REGION_ENTER_AND_STOP_TRIGGER, "QuestSword", "Barracks_build",nil) end ---- |
![]() |
![]() |
![]() |
#224 |
Регистрация: 06.08.2011
Сообщения: 178
![]() |
![]() Как вариант, в функции Barracks_build_ok можно написать:
Код:
Код:
Она в отдельном потоке проверяет, существует ли отряд 'Neutal' (Exists("Neutral")). Если в какой-то момент его победили, то триггер на регион меняется на "Barracks_build_2" - функция с диалогом №2. Выполнение квеста зависит от того, какой у него тип (kind) стоит. Если OBJECTIVE_KIND_MANUAL, то его можно завершить строчкой: Код:
Если не OBJECTIVE_KIND_MANUAL, а настроенный на уничтожение отряда, то должен сам засчитаться. С разблокировкой зданий не сталкивался, но тут скорее всего поможет SetTownBuildingLimitLevel. |
![]() |
![]() |
![]() |
#225 |
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 8
![]() |
![]() Спасибо вам большое,основное условие прекрасно работает,эх, теперь искать дальше теперь этот скрипт с разблокировкой здания,такое встречал во второй миссии за некромантов в кампании ToE, что то связанное с вампирами.
|
![]() |
![]() |