Перейти к содержанию

Сообщения от NHF - новые герои для Heroes V 3.1

В ответ пользователю RedHeavenHero
Аватар пользователя
#1337
RedHeavenHero
Можно изменить функцию, чтобы она добавляла в возвращаемую таблицу дополнительные элементы.
У шахты нет свойств CollectableArmy, TownType и AllowQuickCombat, что может привести к казусу. Чтобы их исправить придётся опять городить кучу скриптов, и это плата за автоматизацию?
По-умолчанию, некоторые свойства в types добавляются. Но на старые то это не повлияет :(

Как изменить функцию, чтобы нагрузки сильной не было?
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1338
local wrap = GetObjectNamesByType

function GetObjectNamesByType(s)
if s == 'GARRISON' then
return NHF_OBJECTS_GARRISON -- таблица с заранее известными именами гарнизонов
else
local t = %wrap(s)
return t
end
end


Добавлено через 1 минуту
По-умолчанию, некоторые свойства в types добавляются. Но на старые то это не повлияет
Types? Где это?
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1339
RedHeavenHero
local wrap = GetObjectNamesByType

function GetObjectNamesByType(s)
if s == 'GARRISON' then
return NHF_OBJECTS_GARRISON -- таблица с заранее известными именами гарнизонов
else
local t = %wrap(s)
return t
end
end


Добавлено через 1 минуту

Types? Где это?
В data.

Так заранее известные ещё надо задавать.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1340
Так не проще ли заранее задавать имена, чем переделывать целый тип объектов? Потом багов не оберёшься; не зря же гарнизон выведен в отдельный тип, наверное у разработчиков были на то причины.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1341
RedHeavenHero
Так не проще ли заранее задавать имена, чем переделывать целый тип объектов? Потом багов не оберёшься; не зря же гарнизон выведен в отдельный тип, наверное у разработчиков были на то причины.
Так тогда надо будет обрабатывать файлы карты твоей программой. А стандартные переделывать самому.
Ок. Тогда заповедник гномов и гарнизоны пойдут под именизацию))
Надо ещё написать скрипты на захват шахт, всяких там элементальниц и прочего....

Добавлено через 2 минуты
Таким образом, можно будет создавать перки на увеличение награды с охраняемых объектов, например, добавить к перку "трофеи", что будет увеличиваться шанс выпадения артефакта. Либо эту способность дать как специализацию герою.

Добавлено через 5 минут
Нужен будет унифицированный список икриптовых имён, типа: nhf_garrison_ .. i
Тогда есть ещё проблема: а вдруг в карте гарнизоны уже все названы создателем? Тогда одновременно исправлять файл lua или же вносить все имена в массив, если они существуют, добавлять в массив, имена не существующих, и считать тогда по индексу. Последний вариант оптимален, но требует проверки на существующее имя.

Тогда переделаешь прогу? А я изменю существующие карты.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1342
Предлагаю так: обрабатывать map.xdb, неназванным гарнизонам и заповедникам давать имя, вносить его в отдельный файл lua, который будет для каждой карты, но называться будет одинаково. В этом файле будет массив с именами, в т.ч. и теми, что дал автор. Если надо, то могу и дефолтные карты обработать, не вручную, конечно.

Добавлено через 5 минут
Таким образом, в файле Maps/Multiplayer/***/NHF-Names.lua будет примерно следующее:
NHF_UNNAMED_OBJECTS = {
DWARVEN_WARREN = {
'NHF-DwarvenWarren-0001',
'NHF-DwarvenWarren-0002',
},
GARRISON = {
'gar1',
'gar2',
'NHF-Garrison-0001',
'NHF-Garrison-0002',
'NHF-Garrison-0003',
'NHF-Garrison-0004',
},
}
Порядковые номера можно заменить на случайные.

Добавлено через 7 минут
Для экономии памяти можно безымянные объекты в массив не вносить, а только писать количество этих объектов.
NHF_UNNAMED_OBJECTS = {
DWARVEN_WARREN = {
NAMED = {
},
UNNAMED_N = 2,
},
GARRISON = {
NAMED = {
'gar1',
'gar2',
},
UNNAMED_N = 4,
},
}
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1343
RedHeavenHero
Предлагаю так: обрабатывать map.xdb, неназванным гарнизонам и заповедникам давать имя, вносить его в отдельный файл lua, который будет для каждой карты, но называться будет одинаково. В этом файле будет массив с именами, в т.ч. и теми, что дал автор. Если надо, то могу и дефолтные карты обработать, не вручную, конечно.

Добавлено через 5 минут
Таким образом, в файле Maps/Multiplayer/***/NHF-Names.lua будет примерно следующее:
NHF_UNNAMED_OBJECTS = {
DWARVEN_WARREN = {
'NHF-DwarvenWarren-0001',
'NHF-DwarvenWarren-0002',
},
GARRISON = {
'gar1',
'gar2',
'NHF-Garrison-0001',
'NHF-Garrison-0002',
'NHF-Garrison-0003',
'NHF-Garrison-0004',
},
}
Порядковые номера можно заменить на случайные.

Добавлено через 7 минут
Для экономии памяти можно безымянные объекты в массив не вносить, а только писать количество этих объектов.
NHF_UNNAMED_OBJECTS = {
DWARVEN_WARREN = {
NAMED = {
},
UNNAMED_N = 2,
},
GARRISON = {
NAMED = {
'gar1',
'gar2',
},
UNNAMED_N = 4,
},
}
Так объектов типа "гарнизон" вряд ли много будет. Следует ли экономить память?
Если есть желание, то стандартные тоже можешь обработать.

Добавлено через 9 минут
Вообще, для унификации потребуется одна большая функция взаимодействия с нужными объектами. Но тут дело в том, что скрипты по разному работают с объектами. Триггер прикосновения к городу, например, надо завершать при посещении и потом обновлять вновь. Триггер прикосновения для шахты этого не требует. В последней версии я уже объединил скрипт боя с городом, героем и монстрами. Он теперь универсален. Можно попробовать вынести функции на подобие классов, чтобы уменьшить нагрузку и количество скриптовых строк.
Раньше то проект собирался по кирпичикам, и разные скрипты на одну и ту же ситуацию были нормой. Сейчас же очень много похожего. Нужна унификация.

RedHeavenHero, что думаешь о том, чтобы объединить проект с частью NCF и даже созданием новых карт с мультиплеерными сценариями для этих героев?

Добавлено через 17 минут
По-хорошему, конечно, лучше, чтобы все имена хранились только с картой.
И подгружать только этот файл. Тогда и имен будет немного.

Создается массив в общем файле NHF, а в lua каждой карты будет лишь добавление в этот массив.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1344
Ещё есть проблема с сокровищницами. Есть ли способ вытащить их армию скриптами, для влияния на неё? Если нет, то все такие здания хочу перевести на скриптовые бои. Наподобие в карте "Иду на Вы".
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1345
Но вот что тогда делать с мобами около порталов? Если их привязывать к героям, то порталы будут недоступны. Если нет, то на них воздействие спец героев не повлияет.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1346
Dyrman
Ещё есть проблема с сокровищницами. Есть ли способ вытащить их армию скриптами, для влияния на неё? Если нет, то все такие здания хочу перевести на скриптовые бои. Наподобие в карте "Иду на Вы".
Разве что занести в таблицу возможные армии и запускать бой с выбранной.

Добавлено через 1 минуту
Dyrman
Но вот что тогда делать с мобами около порталов? Если их привязывать к героям, то порталы будут недоступны. Если нет, то на них воздействие спец героев не повлияет.
В принципе, можно обработать карту так, чтобы можно было потом вешать триггеры не на моба возле портала, а на сам портал.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1347
RedHeavenHero
Разве что занести в таблицу возможные армии и запускать бой с выбранной.

Добавлено через 1 минуту

В принципе, можно обработать карту так, чтобы можно было потом вешать триггеры не на моба возле портала, а на сам портал.
Считаю, что обработать и порталы тоже необходимо. Но без триггера (иначе ИИ не пройдет)
Таким образом можно сделать одностороннюю охрану.
Обрабатываем карту с помощью программы, находим группы. Собираем имена монстров рядом с порталом. Заменяем на одинаковые армии со всех сторон. При уничтожении одной армии, удаляется с другой стороны. Возможны сложности, если порталов в группе больше 3-х, но и они решаемы. И если армия изначально односторонняя, необходимо создавать армию на другой стороне, что тоже не просто.

На счет сокровищниц, так и хотел. Но необходимо будет понизить приоритет до "не трогать" (в скриптах вроде была такая стандартная функция) таких объектов для ИИ.

Добавлено через 1 час 35 минут
RedHeavenHero, можешь сделать массив порталов(разбитый по группам), так же как гарнизоны и заповедники гномов, в отдельном файле?
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1348
Односторонние в ту же кучу или по отдельности? Лестницы нужны?
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1349
RedHeavenHero
Односторонние в ту же кучу или по отдельности? Лестницы нужны?
Да, все. Группы скриптами не читаются(((

Добавлено через 8 часов 57 минут
На счет односторонок есть момент: армию надо брать по приоритету у входа, если есть. Поэтому, вход, конечно, знать важно.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1350
Такое строение таблицы данных сойдёт?
NHF_OBJECT_GROUPS = {
MONOLITH_TWO_WAY = {
["NHF-Building-0001"] = 0,
["NHF-Building-0002"] = 0,
["NHF-Building-0003"] = 1,
["NHF-Building-0004"] = 1,
["NHF-Building-0005"] = 1,
},
MONOLITH_ONE_WAY = {
["NHF-Building-0006"] = 0,
["NHF-Building-0007"] = 0,
["NHF-Building-0008"] = 0,
},
SUBTERRA_GATE = {
["NHF-Building-0009"] = 0,
["NHF-Building-0010"] = 0,
["NHF-Building-0011"] = 1,
["NHF-Building-0012"] = 1,
["NHF-Building-0013"] = 2,
["NHF-Building-0014"] = 2,
},
}
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1351
RedHeavenHero
Такое строение таблицы данных сойдёт?
NHF_OBJECT_GROUPS = {
MONOLITH_TWO_WAY = {
["NHF-Building-0001"] = 0,
["NHF-Building-0002"] = 0,
["NHF-Building-0003"] = 1,
["NHF-Building-0004"] = 1,
["NHF-Building-0005"] = 1,
},
MONOLITH_ONE_WAY = {
["NHF-Building-0006"] = 0,
["NHF-Building-0007"] = 0,
["NHF-Building-0008"] = 0,
},
SUBTERRA_GATE = {
["NHF-Building-0009"] = 0,
["NHF-Building-0010"] = 0,
["NHF-Building-0011"] = 1,
["NHF-Building-0012"] = 1,
["NHF-Building-0013"] = 2,
["NHF-Building-0014"] = 2,
},
}
Односторонние надо бы разделить на вход и выход.
Да и подземный лаз может быть тоже.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...