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

Вернуться   Форум HeroesWorld-а > Все о игре Герои 5. All about Heroes 5 > Герои Меча и Магии 5 - Картостроительство (Редактор карт)
Имя
Пароль
Карта сайта Регистрация Справка Пользователи Календарь Все разделы прочитаны
Быстрая навигация по основным разделам форума:
Кланы HW Турниры на HW КАРТЫ и Картостроительство Heroes 6 Heroes 5 Heroes 4 Heroes 3 Heroes 2 Heroes 1 Might&Magic

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

Ответ
 
Опции темы
Старый 19.04.2018, 20:45   #4636
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 380
Jack_of_shadows - уровень боевого духа
По умолчанию 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: ЧаВо
Jack_of_shadows вне форума   Ответить с цитированием
Старый 19.04.2018, 21:18   #4637
Годрикова впадина
Регистрация: 09.01.2018
Сообщения: 135
Годрикова впадина - уровень боевого духа
По умолчанию Re: Текущие вопросы и ответы по редактору карт

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

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

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

Годрикова впадина, если это бой с монстром, то проще всего проверять наличие монстра на карте с помощью IsObjectExists(). Если с героем, то есть триггер на смерть героя.
__________________
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума   Ответить с цитированием
Старый 22.04.2018, 16:34   #4640
Годрикова впадина
Регистрация: 09.01.2018
Сообщения: 135
Годрикова впадина - уровень боевого духа
По умолчанию Re: Текущие вопросы и ответы по редактору карт

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

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

Это будет что то типо: if function X end? Или как мне проверку сделать? А так я понял спасибо.
Годрикова впадина вне форума   Ответить с цитированием
Старый Вчера, 08:35   #4643
am-wrag
Регистрация: 22.03.2018
Сообщения: 9
am-wrag - уровень боевого духа
По умолчанию 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 вне форума   Ответить с цитированием
Старый Вчера, 10:22   #4644
RedHeavenHero
 
Аватар для RedHeavenHero
Регистрация: 10.02.2012
Сообщения: 2315
RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа RedHeavenHero - уровень боевого духа
Выставка наград
По умолчанию 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
RedHeavenHero вне форума   Ответить с цитированием
Старый Вчера, 11:21   #4645
am-wrag
Регистрация: 22.03.2018
Сообщения: 9
am-wrag - уровень боевого духа
По умолчанию Re: Текущие вопросы и ответы по редактору карт

Спасибо.
Странновато тут конечно с построением кода.
Проблема в HasBorderguardKey(PLAYER_1, RED_KEY). Если обращаться по названию то функция возвращает nil, если ключник не посещен, когда посещен - всё нормально. Когда я заменил имя на номер( HasBorderguardKey(PLAYER_1, 1) ), вкупе с остальными рекомендациями - оповещения пропали.
am-wrag вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход


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


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

Яндекс цитирование  Rambler\'s Top100   Рейтинг@Mail.ru

Авторские права - Copyright © 2002-2008 www.HeroesWorld.ru All rights reserved


На правах рекламы:123123