Скрипты - Страница 178 - Форум HeroesWorld-а

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

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

Ответ
Страница 178 из 260
 
Опции темы
#2656
Старый 29.04.2018, 17:43
  #2656
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

KavalarТо есть что-то вроде, если мана героя уменьшилась проверяем стеки врага?

Появилась идея по идентификации заклинания, например извлекать до начала боя его наличие у героя в книжке, и считать аналитически с поправкой на SP и бонусы от школ сколько урона оно должно наносить. Потом просто провести сравнение, и если сошлось количество затрачиваемой маны и урон то записать. Как думаете может сработать?
Единственная проблема правда это учет резиста, и если существ еще можно проанализировать то как быть с геройскими бонусами, или бонусами от артефактов пока непонятно.
1. Да, так.
2. Так тоже можно, но: на урон от заклинаний, как и на стоимость влияет очень много факторов, каждый из которых надо учитывать, чтобы адекватно оценить тип заклинания; урон от заклинания также сложно высчитать из-за округления до количества убитых существ. Еще есть факторы, которые никак не получится выявить: вроде знака огня, руны стихийной невосприимчивости, антимагии.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2657
Старый 29.04.2018, 22:40
  #2657
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

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

"на бумаге" у меня конструкция примерно такая:

	if(combatReadyPerson() == "имя нужного героя")
получить данные о существах врага через GetCreatures() и GetCreatureNumber()

потом нужно узнать, что ход героя кончился:
	repeat
current_mana = GetUnitManaPoints("имя нужного героя")
until(isCreature(combatReadyPerson())

дальше смотрим, изменилось ли число маны и существ врага, на основе этого делаем вывод, было ли сотворено заклинание и какой от него был эффект

не уверен, насколько верны мои предположения, т.к. пока реально подзабил на эту задачу в пользу более понятных для себя вещей)
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2658
Старый 30.04.2018, 18:25
  #2658
^
landw1rt
📖
Регистрация: 18.03.2018
Сообщения: 3
Регистрация: 18.03.2018
Сообщения: 3
По умолчанию
Re: Скрипты

local heroes = GetAllNames(0);
for i, hero in heroes do
print( i, hero );
end

При добавлении строк игра вылетает с ошибкой в чем может быть дело?
landw1rt вне форума
Ответить с цитированием
#2659
Старый 30.04.2018, 22:25
  #2659
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Скрипты

landw1rt, не совсем понятно какие строки куда добавляете и в какой момент вылетает. Возможно функция GetAllNames() возвращает строку, а не таблицу. И ещё героев определённого игрока можно получить функцией GetPlayerHeroes(НОМЕР_ИГРОКА).
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#2660
Старый 30.04.2018, 22:52
  #2660
^
landw1rt
📖
Регистрация: 18.03.2018
Сообщения: 3
Регистрация: 18.03.2018
Сообщения: 3
По умолчанию
Re: Скрипты

Jack_of_shadowslandw1rt, не совсем понятно какие строки куда добавляете и в какой момент вылетает. Возможно функция GetAllNames() возвращает строку, а не таблицу. И ещё героев определённого игрока можно получить функцией GetPlayerHeroes(НОМЕР_ИГРОКА).

Добавляю указанный фрагмент в тело скрипта с целью проверить незанятость региона. Методом итераций определил, что вылет из игры происходит после внесения данного фрагмента.

С функцией length то же самое.
GetAllNames() при печать в консоли выдает перечень живых героев, а вот после for начинаются проблемы.
Мне и нужно-то посчитать количество значений, выдаваемых GetAllNames()
landw1rt вне форума
Ответить с цитированием
#2661
Старый 30.04.2018, 23:13
  #2661
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Скрипты

landw1rt, данная версия оператора for предназначена для обхода таблиц, а у вас функция возвращает строку. Воспользуйтесь просто GetPlayerHeroes():

local hero_cnt = 0;
for i = PLAYER_1, PLAYER_8 do
hero_cnt = hero_cnt + length(GetPlayerHeroes(i));
end

Код не проверял, мог ошибиться.
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#2662
Старый 30.04.2018, 23:57
  #2662
^
landw1rt
📖
Регистрация: 18.03.2018
Сообщения: 3
Регистрация: 18.03.2018
Сообщения: 3
По умолчанию
Re: Скрипты

Jack_of_shadowslandw1rt, данная версия оператора for предназначена для обхода таблиц, а у вас функция возвращает строку. Воспользуйтесь просто GetPlayerHeroes():

local hero_cnt = 0;
for i = PLAYER_1, PLAYER_8 do
hero_cnt = hero_cnt + length(GetPlayerHeroes(i));
end

Код не проверял, мог ошибиться.

Спасибо!
landw1rt вне форума
Ответить с цитированием
#2663
Старый 01.05.2018, 10:13
  #2663
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

решил потестить эти боевые скрипты, сразу столкнулся с непонятной проблемой - создаю скрипт, привязываю его к герою, но в игре в бою он не работает, в консоли при этом ошибка: "attempt to perform ariphmetic on a string value", причем абсолютно неважно, что в скрипте написано, даже на пустой файл так ругается. может кто подсказать, как это пофиксить?
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2664
Старый 01.05.2018, 10:48
  #2664
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Скрипты

Gerter, вы на всякий случай покажите, как скрипт прикрепляете к герою, должно быть примерно так:
	SetHeroCombatScript(ИМЯ_ГЕРОЯ, '/combat_script.xdb#xpointer(/Script)');
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#2665
Старый 01.05.2018, 18:12
  #2665
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

да, так и прикрепляю, но дело было в расположении файла - перенес его из имя_карты/Maps/SingleMissions в просто имя_карты/ и все заработало

Добавлено через 7 часов 0 минут
как работает функция combatReadyPerson()?

код:

	function Start()
...
currentUnit = combatReadyPerson()
if(IsHero(currentUnit)) then
...


не работает, т.к. currentUnit всегда принимает нулевое значение, хотя по идее combatReadyPerson() должна возвращать строку с именем юнита в начале атб
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2666
Старый 01.05.2018, 18:55
  #2666
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
Регистрация: 08.09.2013
Сообщения: 510
Выставка наград
По умолчанию
Re: Скрипты

по идее combatReadyPerson() должна возвращать строку с именем юнита в начале атб
есть подозрение, что в функции start() она работать не будет, поскольку
The combat will only begin after this function finishes its work.
Стоит попробовать вызывать её из всяких UnitMove().
__________________
РПГ-сценарий для HoMM5: Путь героя

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

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#2667
Старый 01.05.2018, 20:17
  #2667
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

благодарю, да в AttackerHeroMove(), например, функция работает. тут меня руководство от Новика немного сбило с толку, в нем подобной информации нет, а функции типа UnitMove() имеют другую сигнатуру и работают только для AI(на деле это не так)
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2668
Старый 02.05.2018, 11:34
  #2668
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Скрипты

Здравствуйте. Такой вопрос. Хочу, чтобы при тыкании на хижину ведьмы всплывало сообщение, открывался туман войны в конкретной точке, и добавлялась второстепенная задача. Вот функция...

function ActQgoldenArmada ()
MessageBox("/Maps/SingleMissions/rework (4)/golden.txt");
OpenCircleFog(206,6,0,15,PLAYER_1);
sleep(2);
MoveCamera(206,6,0,30,1,2,1,1);

Trigger(OBJECT_TOUCH_TRIGGER, "Qgolden", nil );
end;

Trigger(OBJECT_TOUCH_TRIGGER, "Qgolden", "ActQgoldenArmada" );


Она работает, но, как активировать второстепенную задачу? Она должна быть уже создана на карте, но скрыта или как? Так же мне нужна именно второстепенная задача, а не основная. Для неё другая команда, не нужна? Вроде всё. Заранее спасибо за пояснения.
OrnsteinDragonslayer вне форума
Ответить с цитированием
#2669
Старый 02.05.2018, 14:47
  #2669
^
DarkLordax
 
Аватар для DarkLordax
📖
Регистрация: 01.06.2017
Сообщения: 70
Регистрация: 01.06.2017
Сообщения: 70
По умолчанию
Re: Скрипты

OrnsteinDragonslayerЗдравствуйте. Такой вопрос. Хочу, чтобы при тыкании на хижину ведьмы всплывало сообщение, открывался туман войны в конкретной точке, и добавлялась второстепенная задача. Вот функция...

function ActQgoldenArmada ()
MessageBox("/Maps/SingleMissions/rework (4)/golden.txt");
OpenCircleFog(206,6,0,15,PLAYER_1);
sleep(2);
MoveCamera(206,6,0,30,1,2,1,1);

Trigger(OBJECT_TOUCH_TRIGGER, "Qgolden", nil );
end;

Trigger(OBJECT_TOUCH_TRIGGER, "Qgolden", "ActQgoldenArmada" );


Она работает, но, как активировать второстепенную задачу? Она должна быть уже создана на карте, но скрыта или как? Так же мне нужна именно второстепенная задача, а не основная. Для неё другая команда, не нужна? Вроде всё. Заранее спасибо за пояснения.

SetObjectiveState();
В руководстве попробуйте найти сейчас точно не вспомню
__________________
Кампания в разработке:

Название не придумал

Выполнено 5%
Кампания в разработке:

Название не придумал

Выполнено 5%
DarkLordax вне форума
Ответить с цитированием
#2670
Старый 02.05.2018, 15:31
  #2670
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Скрипты

DarkLordaxSetObjectiveState();
В руководстве попробуйте найти сейчас точно не вспомню
Я к тому, что этот СетОбжектив реализовывать как отдельную функцию, или можно и в эту пихнуть?
OrnsteinDragonslayer вне форума
Ответить с цитированием
Ответ
Страница 178 из 260


Опции темы



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


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

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