Скрипты для начинающих - Страница 15 - Форум HeroesWorld-а

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

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

Ответ
Страница 15 из 28
 
Опции темы
#211
Старый 15.06.2019, 11:27
  #211
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

А. Ну, то есть замечание номер 3 всё же сыграло, похоже. Боюсь, придётся усложнять скрипт -- задание gaz сделать во вкладке objectives, общим, но поначалу невидимым. Выдавать по OBJECT_TOUCH_TRIGGER с домиком, а домику стандартные функции отключить (сначала выдавать сообщение, потом -- задание).
Но сначала надо проверить -- если прописать gaz общим и доступным с самого начала, будет ли работать.
Ment вне форума
Ответить с цитированием
#212
Старый 30.06.2019, 20:15
  #212
^
Dimaks
📖
Регистрация: 30.06.2019
Сообщения: 5
Регистрация: 30.06.2019
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

Всем доброго времени суток. Тупой вопрос по MessageBox. Куда положить надо текстовый файл?
Dimaks вне форума
Ответить с цитированием
#213
Старый 30.06.2019, 20:27
  #213
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Куда-нибудь в архив с картой. Путь к текстовому файлу в архиве с картой = тот путь, что Вы пишете в скриптах.
Обычно кладут туда, где лежат map.xdb, terrain.bin и прочее, что связано с данной конкретной картой.
Ment вне форума
Ответить с цитированием
#214
Старый 30.06.2019, 20:34
  #214
^
Dimaks
📖
Регистрация: 30.06.2019
Сообщения: 5
Регистрация: 30.06.2019
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

Я вот просто туплю, где этот архив. У меня в каталоге Maps лежит просто сама карта
Dimaks вне форума
Ответить с цитированием
#215
Старый 30.06.2019, 20:57
  #215
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Это оно и есть. При старте редактора карт этот архив (который на самом деле zip, пусть и написано у него иначе) распаковывается, после закрытия редактора все изменения туда запаковываются.
Ment вне форума
Ответить с цитированием
#216
Старый 30.06.2019, 21:41
  #216
^
Dimaks
📖
Регистрация: 30.06.2019
Сообщения: 5
Регистрация: 30.06.2019
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

То есть когда я открываю карту в редакторе, в каталог Maps нужно засунуть текстовый файл?
Dimaks вне форума
Ответить с цитированием
#217
Старый 30.06.2019, 21:44
  #217
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Не, там какой-то другой каталог... Не помню точно, вроде Editor -> H5mMods -> папка с названием карты
Но, чтобы не опростоволоситься, лучше закрыть редактор и открыть архив с картой с помощью WinRAR. И туда уже засунуть.
Ment вне форума
Ответить с цитированием
#218
Старый 03.07.2019, 17:46
  #218
^
Dimaks
📖
Регистрация: 30.06.2019
Сообщения: 5
Регистрация: 30.06.2019
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

Доброго времени суток, я вернулся к героям. И все еще не разобрался с MessageBox. Как zip файл открываться не хочет. Можете приложить пару скринов или снова разложить все по полочкам?
Dimaks вне форума
Ответить с цитированием
#219
Старый 04.07.2019, 02:25
  #219
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30674
По умолчанию
Re: Скрипты для начинающих

Файл с расширением .h5m открываете же, верно?
Ment вне форума
Ответить с цитированием
#220
Старый 05.07.2019, 19:24
  #220
^
Dimaks
📖
Регистрация: 30.06.2019
Сообщения: 5
Регистрация: 30.06.2019
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

Да, я пытаюсь разархивировать название_карты.h5m . Но это чисто не выходит. Не могли бы вы описать другой способ подробнее?
Dimaks вне форума
Ответить с цитированием
#221
Старый 14.07.2019, 22:26
  #221
^
Vladislav A-V
 
Аватар для Vladislav A-V
📖
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Здравствуйте,можно,пожалуйста,получить совет:у меня на карте есть строение, в котором хочу нанимать войска с помощью скриптовых функций,так вот, как сделать так,чтобы эти функции выполнялись последовательно,не перебивая друг-друга,вроде, согласно руководству, должно быть условие 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")
--Конец--
Vladislav A-V вне форума
Ответить с цитированием
#222
Старый 15.07.2019, 06:09
  #222
^
32MeTpa
 
Аватар для 32MeTpa
📖
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Если нужно, чтобы вторая функция выполнялась только после того, как первые существа были наняты, то соответственно можно под условием "if gold >= 3000 then" заменить в триггере nil на "Naim2". Тогда так получится:
	
...
if gold >= 3000 then
Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", "Naim2")
SetPlayerResource(PLAYER_1, GOLD, gold - 3000)
AddHeroCreatures(Naim1_hero, 4, 30)
else ...

А Trigger(OBJECT_TOUCH_TRIGGER, "Tavern", "Naim2") в самом конце убрать.
В таком случае в начале активируется триггер на "Naim1", после найма он заменится на "Naim2", а после найма вторых существ обнулится.
32MeTpa вне форума
Ответить с цитированием
#223
Старый 18.07.2019, 23:41
  #223
^
Vladislav A-V
 
Аватар для Vladislav A-V
📖
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Спасибо,большое,помогло.Можно ли,пожалуйста,ещё совет? Как реализовать такую задумку:изначально нельзя отстроить в городе определённое здание,но его можно разблокировать и улучшить,выполнив второстепенный квест. Первоначальное диалоговое окно с 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
----
Vladislav A-V вне форума
Ответить с цитированием
#224
Старый 19.07.2019, 05:41
  #224
^
32MeTpa
 
Аватар для 32MeTpa
📖
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
Регистрация: 06.08.2011
Сообщения: 178
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Как вариант, в функции Barracks_build_ok можно написать:
	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", nil)
startThread( _Barracks_build_mob_monitor);
end
И сама функция _Barracks_build_mob_monitor:
	function  _Barracks_build_mob_monitor ()
         while 1 do
             sleep(2);
             if not Exists("Neutral") then
                Trigger(REGION_ENTER_AND_STOP_TRIGGER, "QuestSword", "Barracks_build_2");
                break
             end;
         end;
end;

Она в отдельном потоке проверяет, существует ли отряд 'Neutal' (Exists("Neutral")). Если в какой-то момент его победили, то триггер на регион меняется на "Barracks_build_2" - функция с диалогом №2.
Выполнение квеста зависит от того, какой у него тип (kind) стоит. Если OBJECTIVE_KIND_MANUAL, то его можно завершить строчкой:
	SetObjectiveState('zadanie1', OBJECTIVE_COMPLETED);
Поставить его надо под условие if not Exists("Neutral") then до триггера.
Если не OBJECTIVE_KIND_MANUAL, а настроенный на уничтожение отряда, то должен сам засчитаться.
С разблокировкой зданий не сталкивался, но тут скорее всего поможет SetTownBuildingLimitLevel.
32MeTpa вне форума
Ответить с цитированием
#225
Старый 19.07.2019, 19:56
  #225
^
Vladislav A-V
 
Аватар для Vladislav A-V
📖
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
Регистрация: 23.10.2016
Адрес: Российская Федерация, Татарстан.
Сообщения: 12
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Спасибо вам большое,основное условие прекрасно работает,эх, теперь искать дальше теперь этот скрипт с разблокировкой здания,такое встречал во второй миссии за некромантов в кампании ToE, что то связанное с вампирами.
Vladislav A-V вне форума
Ответить с цитированием
Ответ
Страница 15 из 28


Опции темы



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


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

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