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

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

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

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

Так же он работает и на тестовой мультиплеерной карте сделанной мной, правда для этого его нужно прописать в саму карту.
Ну да, в оригинальные мультиплеерные карты тоже надо прописать просто.
В моде NHF сделано со скриптами в мультиплеере так. А чтобы прописать эти скрипты в фанатские мультиплеерные карты есть специальная программа у них.
Кроме того, есть другой маленький баг, когда герой захватывает двеллинг, сразу выскакивает окно найма, а вопрос о перестройке появляется только после того, как герой из этого окна выйдет. Таким образом, в случае с перестройкой, герой получает возможность нанять прирост и из оригинального строения и из альтернативного, ии собственно так и делает. Может у кого есть идеи как решить эту проблему? "Выключать" строения до касания игрока тоже не вариант, т.к. в таком случае ии игнорирует эти строения.
А функция на изменение Value объекта для ИИ не работает в таких случаях?
И ещё такой вопрос, (наверное ещё более нубский чем остальные, прошу понять простить) вообще все эти скрипты, сильно ли грузят
игру? И зависит ли это как то от длинны названий задаваемых значений, т.е. стоит ли задаваемые мной названия делать максимально короткими или это вообще не имеет смысла?
Названия едва ли могут что-то загрузить. А так скрипты игру грузят, да. Зависит от конкретного случая, конечно, нотв целом можно провести эксперимент, задав какой-нибудь большой цикл и посмотрев время выполнения.
Без объёмных циклов, однако, вряд ли вы заметите, что скрипт выполняется продолжительное время.
Ment вне форума
Ответить с цитированием
#182
Старый 11.05.2018, 13:10
  #182
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

MentА функция на изменение Value объекта для ИИ не работает в таких случаях?

Не совсем понял вот это. В каком смысле Value объекта?
И есть ли такая функция приминительно к двеллингам на глобальной карте?
zahar0z вне форума
Ответить с цитированием
#183
Старый 11.05.2018, 13:37
  #183
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30673
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30673
По умолчанию
Re: Скрипты для начинающих

Такое есть:
void SetAIPlayerAttractor( sObjectName, nPlayerID, nPriority )

Устанавливает для игрока nPlayerID «точку притяжения» на объекте с именем sObjectName. Герои игрока будут бегать вокруг объекта, периодически к нему возвращаясь. Возвращаться будут тем чаще, чем больше nPriority. Последний может принимать значения от -1 до 2.

void SetAIHeroAttractor( sObjectName, sHeroName, nPriority )

Функция аналогичная SetAIPlayerAttractor, но работает только для одного героя с именем sHeroName.
Ment вне форума
Ответить с цитированием
#184
Старый 12.05.2018, 00:43
  #184
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты для начинающих

Вся проблема была в том, что команда QuestionBox ссылается на новую функцию, в которой значение "dwell" из функции "capt_alt_dw" теряется, поэтому игре невозможно было задать, какой именно двеллинг перестраивать в этот момент. У меня это пока решено через сравнивание местоположения объектов, но, может это можно сделать как-то адекватнее и проще?
Что-то вы на пустом месте трудности создаёте. Сохраняете координаты в глобальные переменные, потом обращаетесь к ним в функции add_alt_dw (). Ведь точно также можно сразу сохранить название объекта в глобальную переменную, и потом сразу его использовать:
	function capt_alt_dw (prevowner, newowner, hero, dwell )
  alt_dw_dwell = dwell;
  QuestionBox("текст c вопросом бла бла бла", "add_alt_dw", nil); 
end;

function add_alt_dw ()
  ReplaceDwelling(alt_dw_dwell, TOWN_ACADEMY, 991 );
end;
А ещё я бы советовал использовать более сложные имена для функций и глобальных переменных, если хотите встраивать их в любую карту. Чем сложнее, тем больше шансов что ни с чем не совпадёт.

вообще все эти скрипты, сильно ли грузят игру?
Не заморачивайтесь по этому поводу. У меня на карте в триггере нового дня каждый ход отрабатывало наверное под тысячу строк кода, и это было совсем не заметно. Долго выполняется только работа с объектами на карте - удалить объект, поставить новый, изменить количество существ - по субъективным оценкам на каждую такую операцию идёт подтупливание игры на пол секунды может быть.
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#185
Старый 12.05.2018, 09:11
  #185
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Благодарю, Jack_of_shadows, вариант со сменой имени работает, и как только я сам до этого не догадался, сразу подозревал что чересчур сложно с вычислением координат сделал.

Ment спасибо за совет, попробовал поиграть с SetAIPlayerAttractor, судя по всему команда не даёт никакого эффекта если целевой объект "выключен".

Добавлено через 5 часов 39 минут
Кто нибудь может подсказать, есть ли команда позволяющая узнать угол поворота (rotation) объекта на карте, или может быть какой то хитрый способ это узнать? GetObjectPosition насколько я понял узнаёт только (икс, игрик,"этаж"), или я это неправильно понял?
zahar0z вне форума
Ответить с цитированием
#186
Старый 13.05.2018, 00:06
  #186
^
Андраил
 
Аватар для Андраил
📖
Регистрация: 04.08.2016
Сообщения: 578
Регистрация: 04.08.2016
Сообщения: 578
По умолчанию
Re: Скрипты для начинающих

Как изменить двеллинг, так чтобы с помощью него нанимались другие существа?
__________________
Справедливость - авторский глобальный мод

ColouredText - список заклинаний и их уровень в описании существ-колдунов
Справедливость - авторский глобальный мод

ColouredText - список заклинаний и их уровень в описании существ-колдунов
Андраил вне форума
Ответить с цитированием
#187
Старый 13.05.2018, 00:24
  #187
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Вот так.

Jack_of_shadowsзаменить двеллинг на другой с помощью:
ReplaceDwelling(СКРИПТОВОЕ_ИМЯ, ИДЕНТИФИКАТОР_ГОРОДА, СУЩЕСТВО_1, СУЩЕСТВО_2, СУЩЕСТВО_3, СУЩЕСТВО_4)
Сколько существ было доступно в изначальном двеллинге, столько максимум может быть в новом. Существ можно выставлять каких угодно, без привязки к типу двеллинга.
zahar0z вне форума
Ответить с цитированием
#188
Старый 13.05.2018, 00:52
  #188
^
Андраил
 
Аватар для Андраил
📖
Регистрация: 04.08.2016
Сообщения: 578
Регистрация: 04.08.2016
Сообщения: 578
По умолчанию
Re: Скрипты для начинающих

А как идентификатор города выглядит? И существо по ID выставлять, да?
__________________
Справедливость - авторский глобальный мод

ColouredText - список заклинаний и их уровень в описании существ-колдунов
Справедливость - авторский глобальный мод

ColouredText - список заклинаний и их уровень в описании существ-колдунов
Андраил вне форума
Ответить с цитированием
#189
Старый 13.05.2018, 03:10
  #189
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Город выглядит как TOWN_HEAVEN и тому подобное, существа да по id, примерно CREATURE_PAESANT или вроде того. Есть целая экселевская таблица с перечислением этих значений.
zahar0z вне форума
Ответить с цитированием
#190
Старый 05.06.2018, 03:53
  #190
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

И снова доброго времени суток всем.

Кто нибудь может подсказать есть вариант при помощи скрипта сделать доступным для постройки только четыре двеллинга в городе? Т.е. до постройки четырёх строений, доступны для постройки все двеллинги, как только построено четвёртое, те что не были выбраны становятся недоступны. При этом, не должно быть привязки к конкретному уровню нанимаемых существ, т.е. нужно сделать так чтобы можно было построить любые четыре двеллинга (например, комбинацию ур1,2,4,7 или ур3,4,6,7 и т.п.). Есть у кого нибудь идеи как такое можно провернуть?

Заранее благодарю если кто поделится полезной информацией.
zahar0z вне форума
Ответить с цитированием
#191
Старый 05.06.2018, 22:19
  #191
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты для начинающих

zahar0z делаете проверку скажем в триггере нового дня. Проверять надо все возможные двеллинги, подсчитывать сколько построено, и когда условие выполнено запрещать те которые не построены. Вот описание подходящих функций из руководства Новика (я их лично не проверял):
nLevel GetTownBuildingLevel( sTownName, nBuildingID )
nLevel GetTownBuildingLimitLevel( sTownName, nBuildingID )
nLevel GetTownBuildingMaxLevel( sTownName, nBuildingID )

Функции позволяют узнать уровень/лимит на развитие/максимальный уровень здания nBuildingID в городе с именем sTownName. Соотв. константы TOWN_BUILDING_* для nBuildingID см. в /scripts/advmap-startup.lua. Сюда писать не буду ввиду большого объема.
Уровень 0 означает, что соответствующее здание отсутствует.

void SetTownBuildingLimitLevel( sTownName, nBuildingID, nLevel )

Функция позволяет выставить лимит на уровень развития здания nBuildingID в городе с именем sTownName. При попытке выставить уровень больше максимально возможного вызов функции приводит к ошибке. Уровень 0 означает запрет на строительство здания.
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#192
Старый 06.06.2018, 19:46
  #192
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Благодарю за ответ.
zahar0z вне форума
Ответить с цитированием
#193
Старый 24.08.2018, 14:40
  #193
^
bonacera
📖
Регистрация: 24.08.2018
Сообщения: 5
Регистрация: 24.08.2018
Сообщения: 5
По умолчанию
Re: Скрипты для начинающих

RedHeavenHeroСпрашивай, что нужно конкретно — отвечу. А так - мануальчики типа "от чайника к чайнику" уже имеются, есть даже огромная эксцелевская таблица с описанием всех функций, что имеются в игре.

Не можешь дать ссылки на эти мануальчики и таблицы эксель?
bonacera вне форума
Ответить с цитированием
#194
Старый 21.02.2019, 04:12
  #194
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

Доброго времени суток.

Не подскажет кто-нибудь, есть ли скриптовая команда по которой можно проиграть видеофайл? Чего-то листал список задокументированных команд и не нашёл такую. Но по идее она должна быть т.к. как-то же реализована видео-вставка со "злой" изабель, в конце оригинальной игры.
zahar0z вне форума
Ответить с цитированием
#195
Старый 21.02.2019, 12:47
  #195
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30673
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30673
По умолчанию
Re: Скрипты для начинающих

Не, нет такой. Видеовставка скорее всего реализована не на карте, а после её окончания (или я чего не помню).
Ment вне форума
Ответить с цитированием
Ответ
Страница 13 из 28


Опции темы



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


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

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