Текущие вопросы и ответы по редактору карт - Страница 310 - Форум HeroesWorld-а

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

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

Ответ
Страница 310 из 384
 
Опции темы
#4636
Старый 19.04.2018, 20:45
  #4636
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Годрикова впадина, ваш скрипт будет неправильно работать в случае недостатка ресурсов. Но это мелочь. Разрушение замка происходит функцией RazeTown(), с этим всё правильно. Я с ней не эксперементировал, поэтому практических советов дать не могу, но в официальной документации она достаточно подробно описана, и вроде бы ничего сложного не имеет (кроме создания модельки разрушенного замка):
RazeTown

RazeTown – raze a town on the map

Syntax

RazeTown(townName);

Description

Removes the specified town from the map and replaces it with a static object – razed town. The
‘razed town’ object is determined by the razedfield in AdvMapTownShared. If this field is
empty, the town can’t be razed. The set of blocking tiles of the razed town must be the same as
those of the original one’s. The razed town, as any other static object, must have no interactive
tiles.

townName– town name

Warning!

The modifications made in the "Shared" properties ofan object will affect all the objects of that
kind in the game.
If you want your modification to be effective only on a specific map follow these steps:
1)Place on the map the desired object.
2)Go to the Shared field of that object.
3)In the Objects list create a new folder (Right click-New Folder) with the name of your
map.
4)Place in this folder a copy of the object you want to modify.
5)Make the desired modifications to the copy.
For the modifications to be in effect makesure that the path of the shared property leads to
the copy.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#4637
Старый 19.04.2018, 21:18
  #4637
^
Годрикова впадина
📖
Регистрация: 09.01.2018
Сообщения: 139
Регистрация: 09.01.2018
Сообщения: 139
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Про то что неправильно я знаю, это основной кусок, а так там ещё строчек 10-15. Но вот ключевая проблема какраз с заменой модельки замка. Ибо потом я хочу ещё подобной функцией из руин нормальный замок сделать. Ладно, буду тыкаться и пробовать, может что то да выйдет.

Добавлено через 1 минуту
Руководство тоже читал, ладно завтра прочитаю ещё может додумаюсь.
Годрикова впадина вне форума
Ответить с цитированием
#4638
Старый 21.04.2018, 18:36
  #4638
^
Годрикова впадина
📖
Регистрация: 09.01.2018
Сообщения: 139
Регистрация: 09.01.2018
Сообщения: 139
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Как мне сделать проверку того что бой проведён? В моём случае если бой был проведён, то при прикосновении к другому объекту задание выполняется.
Годрикова впадина вне форума
Ответить с цитированием
#4639
Старый 22.04.2018, 15:58
  #4639
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Годрикова впадина, если это бой с монстром, то проще всего проверять наличие монстра на карте с помощью IsObjectExists(). Если с героем, то есть триггер на смерть героя.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#4640
Старый 22.04.2018, 16:34
  #4640
^
Годрикова впадина
📖
Регистрация: 09.01.2018
Сообщения: 139
Регистрация: 09.01.2018
Сообщения: 139
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Нет, бой не с монстром, а скриптовый при прикосновению к объекту. С монстром я знаю как, а вот с этим пока гадаю.
Годрикова впадина вне форума
Ответить с цитированием
#4641
Старый 22.04.2018, 19:16
  #4641
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Годрикова впадина, у StartCombat есть параметр, принимающий название функции, вызываемой по окончанию битвы.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#4642
Старый 22.04.2018, 19:35
  #4642
^
Годрикова впадина
📖
Регистрация: 09.01.2018
Сообщения: 139
Регистрация: 09.01.2018
Сообщения: 139
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Это будет что то типо: if function X end? Или как мне проверку сделать? А так я понял спасибо.
Годрикова впадина вне форума
Ответить с цитированием
#4643
Старый 25.04.2018, 08:35
  #4643
^
am-wrag
📖
Регистрация: 22.03.2018
Сообщения: 11
Регистрация: 22.03.2018
Сообщения: 11
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Написал скрипт, тред который проверяет посещены ли определенные хранители ключей и в зависимости от условий выдаёт сообщение. Он работает так как мне надо, но почему-то полностью засирает консоль варнингами. Помогите разобраться, что не так.
Скрипты:
	
function StartKeyMasterObserv()
  Trigger(NEW_DAY_TRIGGER, "StartKeyMasterObserv", nil );
  print("Start keymaster observe thread");
  startThread(CheckKeyMasterFoundThread);
end;
function CheckKeyMasterFoundThread()
  GreenKeymasterMessageNotShow = true;
  RedKeymasterMessageNotShow = true;
  TanKeymasterMessageNotShow = true;
  repeat
        if HasBorderguardKey(PLAYER_1, GREEN_KEY) and GreenKeymasterMessageNotShow then
        GreenKeymasterMessageNotShow = false;
        MessageBox(GetMapDataPath().."KeymasterMessage/Green.txt");
    	end;
    	if HasBorderguardKey(PLAYER_1, RED_KEY) and RedKeymasterMessageNotShow then
         RedKeymasterMessageNotShow = false;
    	 MessageBox(GetMapDataPath().."KeymasterMessage/Red.txt");
    	end;
      if HasBorderguardKey(PLAYER_1, TAN_KEY) and TanKeymasterMessageNotShow then
         TanKeymasterMessageNotShow = false;
         MessageBox(GetMapDataPath().."KeymasterMessage/Tan.txt");
      end;
      sleep(5);
  until(HasAllKeymasterFound())
end;
function HasAllKeymasterFound()
  if HasBorderguardKey(PLAYER_1, GREEN_KEY) and HasBorderguardKey(PLAYER_1, RED_KEY) and HasBorderguardKey(PLAYER_1, TAN_KEY) then
     MessageBox(GetMapDataPath().."KeymasterMessage/All.txt");
     print("Keymaster thread finish");
     return true;
  end;
  return false;
end;
Варнинги:
am-wrag вне форума
Ответить с цитированием
#4644
Старый 25.04.2018, 10:22
  #4644
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

am-wragНаписал скрипт, тред который проверяет посещены ли определенные хранители ключей и в зависимости от условий выдаёт сообщение. Он работает так как мне надо, но почему-то полностью засирает консоль варнингами. Помогите разобраться, что не так.
Скрипты:
	
function StartKeyMasterObserv()
  Trigger(NEW_DAY_TRIGGER, "StartKeyMasterObserv", nil );
  print("Start keymaster observe thread");
  startThread(CheckKeyMasterFoundThread);
end;
function CheckKeyMasterFoundThread()
  GreenKeymasterMessageNotShow = true;
  RedKeymasterMessageNotShow = true;
  TanKeymasterMessageNotShow = true;
  repeat
        if HasBorderguardKey(PLAYER_1, GREEN_KEY) and GreenKeymasterMessageNotShow then
        GreenKeymasterMessageNotShow = false;
        MessageBox(GetMapDataPath().."KeymasterMessage/Green.txt");
    	end;
    	if HasBorderguardKey(PLAYER_1, RED_KEY) and RedKeymasterMessageNotShow then
         RedKeymasterMessageNotShow = false;
    	 MessageBox(GetMapDataPath().."KeymasterMessage/Red.txt");
    	end;
      if HasBorderguardKey(PLAYER_1, TAN_KEY) and TanKeymasterMessageNotShow then
         TanKeymasterMessageNotShow = false;
         MessageBox(GetMapDataPath().."KeymasterMessage/Tan.txt");
      end;
      sleep(5);
  until(HasAllKeymasterFound())
end;
function HasAllKeymasterFound()
  if HasBorderguardKey(PLAYER_1, GREEN_KEY) and HasBorderguardKey(PLAYER_1, RED_KEY) and HasBorderguardKey(PLAYER_1, TAN_KEY) then
     MessageBox(GetMapDataPath().."KeymasterMessage/All.txt");
     print("Keymaster thread finish");
     return true;
  end;
  return false;
end;
Варнинги:
Замените глобальные переменные так, чтобы они не принимали значение nil, например, на 1 и 0. И false везде замените на nil.

В итоге, если уберутся все обращения к пустым глобальным переменным (со значением nil), то уйдут и предупреждения.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#4645
Старый 25.04.2018, 11:21
  #4645
^
am-wrag
📖
Регистрация: 22.03.2018
Сообщения: 11
Регистрация: 22.03.2018
Сообщения: 11
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Спасибо.
Странновато тут конечно с построением кода.
Проблема в HasBorderguardKey(PLAYER_1, RED_KEY). Если обращаться по названию то функция возвращает nil, если ключник не посещен, когда посещен - всё нормально. Когда я заменил имя на номер( HasBorderguardKey(PLAYER_1, 1) ), вкупе с остальными рекомендациями - оповещения пропали.
am-wrag вне форума
Ответить с цитированием
#4646
Старый 26.04.2018, 12:01
  #4646
^
Годрикова впадина
📖
Регистрация: 09.01.2018
Сообщения: 139
Регистрация: 09.01.2018
Сообщения: 139
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Может кто то написать как примерно будет выглядеть проверка определённого скриптового боя?
Годрикова впадина вне форума
Ответить с цитированием
#4647
Старый 03.05.2018, 07:40
  #4647
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

Такой вопрос возник. Поиск по теме не дал результатов. Собственно, вопрос. Сделал задание, но хочу, чтобы изначально его не было видно, а показывалось только при "активации" так сказать. Сделал скрипт, всё работает, но сама активация задания происходит без оповещения звукового и нет иконки вверху экрана, мол задачи обновлены. Как это решить? (само задание в дневнике показывается корректно).
Так же заметил, что при выполнении условий задания (убийстве враж. героя) задание само не выполняется, а остаётся висеть. Вот настройки этого задания.
OrnsteinDragonslayer вне форума
Ответить с цитированием
#4648
Старый 03.05.2018, 08:09
  #4648
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

isInitialyActive поставить false и ShowCompleted тоже, чтобы убиралось после выполнения
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#4649
Старый 03.05.2018, 08:49
  #4649
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

GerterisInitialyActive поставить false и ShowCompleted тоже, чтобы убиралось после выполнения

Теперь вместо названия и описания задания пустые поля, и всё равно не засчитывает выполнение.
Я вот думаю, мб дело в скрипте? Я там юзал команду SetObjectiveVisible. Мб стоит изменить на GetObjectiveState, что это изменит?
OrnsteinDragonslayer вне форума
Ответить с цитированием
#4650
Старый 03.05.2018, 09:06
  #4650
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Текущие вопросы и ответы по редактору карт

SetObjectiveVisible() по идее влияет на видимость задания в интерфейсе, мб если там второй параметр nil у тебя, то что то может неправильно показываться. Еще, есть вариант, что задания типа KIND_DEFEAT_HERO не могут обрабатываться скриптом, если верить гайду от Jack_of_Shadows, то для этого нужен KIND_MANUAL. Но насчет этого не уверен
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
Ответ
Страница 310 из 384


Опции темы



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


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

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