Current time: 24.03.2024, 05:30 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Добавление новых городов - эмуляция
» новый способ
Author Message
AnT Offline

Posts: 33
Post: #1

Основная идея для добавления новых городов в игру заключается в замене всех построек дефолтного города и его существ на лету в самой игре с помощью ресивера !!SN=:R. Т.е. подтип города (0-8) становится подподтипом.
Было: объект 98/ тип города
Стало: объект 98/ тип города/ стандартный город, новый город, новый город2 и т.д.
т.е. идет замена всех элементов замка.
Новые существа можно добавить через Тифон (общая база существ на все города и моды) или с помощью erm скриптов - если такое возможно.

На данный момент, модель города на карте меняется с помощью параметра "вид города" из Wog (разрушен/частично разрушен и т.д.). Лучше это конечно сделать на базе новой переменной - тогда количество городов будет неограниченным.


Для сгенерированных карт можно создать скрипт, который будет обходить все города:
например, нужно добавить Рощу на базе Замка, и Двор на базе Оплота.
если подтип города =0 (Замок) генерация от 1до2. если 1 - оставить Замок, 2 - сделать Рощей
если подтип города =1 (ОПлот) генерация от 1до2. если 1 - оставить Оплот, 2 - сделать Рощей
если подтип города =3 оставить без изменений и т.д.

При загрузки карты новый город можно выбрать с помощью диалога (1 параметр - какой город заменить, 2 параметр - на какой новый город-мод заменить)

В теории, такую замену можно делать и для героев (чтобы добавить не только город но и фракцию в игру) - меняя портрет, характеристики, навыки героя на лету


В данном примере показан принцип добавления нового города в игру:
Добавлен замок Роща (фон, музыка, жилище 1 уровня и существа 1,2 уровня) на базе Замка. Роща присваивается городу номер 1 на карте (можно заменить на любое другое значение)
Image: FJBIO.png

По ссылке доступен мод и карта:
скачать
03.01.2022 15:24
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #2

AnT, очень интересная задумка мода, но реализация мало продумана.

Помимо графики, в городах есть:
ограничения по заклинаниям
особые здания
машина в кузнице
грааль
герои (в том числе и в тавернах)
ресурс в хранилище ресурсов
цены на постройки
деревья отстройки
позиция зданий
здания на доп. прирост
музыкальная тема города (вижу, что учтено)
   - уверен, я не всё отписал - накидал на скорую руку

Добавим объекты на карте типа внешних жилищ, почву (ну а вдруг),

Хоть часть из этого можно через un:c исправить/реализовать, но даже не хочу описывать, как много придётся делать правок под каждый новый город. Ну а что нельзя реализовать, то и будет причиной невозможности реализации 166

Ну и самое сладкое - как сказать ИИ, что не в Замке


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
03.01.2022 15:45
Visit this user's website Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #3

Идея на самом деле классная, но daemon_n прав - это колоссальная работа. Возможно, будет даже проще поддержку новых городов добавить, чем все это учитывать. Говорю как человек, создавший несколько таких эмуляторов Ab Один эмулятор - не проблема, но вот несколько, и, чтобы они были взаимосовместимыми и в должной степени проработанными, - это очень сложная задача.

Кстати, если делать что-то такое, нужен идеальный порядок в коде и ресурсах.


Создал новый глобальный мод: WoG Ultra Edition
03.01.2022 19:23
Find all posts by this user Quote this message in a reply
AnT Offline

Posts: 33
Post: #4

ограничения по заклинаниям
машина в кузнице


Города-моды, как правило, основаны на каком-то городе. Например Бастион - на базе Цитадели, где только 3 уровня магии, в кузнице можно брать тележку и машину. Соотв. также на базе Цитадели этот город и стоит добавлять.


ресурс в хранилище ресурсов
цены на постройки


Настроить с помощью erm команд. Один раз, но индивидуально под каждый город. Учитывая, что новые города появляются очень редко (раз в несколько лет) - это не такая сложная задача


позиция зданий
это делается с помощью замены двух pcx файлов на объект (обводка и область для клика мышкой). Например заменой TZELDw_0.pcx TOELDw_0.pcx на новые для жилища ур.1 сопряжения


здания на доп. прирост
это работает уже сейчас, проверял


Возможно, будет даже проще поддержку новых городов добавить, чем все это учитывать.
На данный момент добавить (именно добавить, а не заменить) новый замок в игру может только программист, и это совсем не легко.
Здесь же это может сделать любой желающий, кто разбирается в erm командах. На данный момент можно добавить (именно добавить) 27 городов, на каждый дефолтный по 3 новых. Т.е. всего будет 36 городов
(This post was last modified: 05.01.2022 09:13 by AnT.)
05.01.2022 09:08
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #5

AnT, а остальное?

Что касается позиций - это не решение, так как это не вяжется с принципом "шаблон".

Ну и что касается текстов описаний?


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
05.01.2022 09:10
Visit this user's website Find all posts by this user Quote this message in a reply
AnT Offline

Posts: 33
Post: #6

Почему не решение?
у каждого города у каждого строения есть pcx файлы обводки и области клика мышкой. Они все и меняются.
Если речь про то как это сделать по шаблону то (например):
!!SN:R^TZELDw_0.pcx^/^TZxxDw_0.pcx^; где xx- аббревиатура нового города
!!SN:R^TOELDw_0.pcx^/^TOxxDw_0.pcx^;
05.01.2022 09:20
Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1348
Post: #7

Это возможно, но очень долго. Даже на С++/Delphi долго, не то, что на erm.
Кстати, поменяв ресурс в хранилище, надо изменить и его описание, а это, если не использовать текстовики, означает, что понадобится хук перед отображением этого текста. Придется найти адреса для всех таких вещей.


Создал новый глобальный мод: WoG Ultra Edition
05.01.2022 12:12
Find all posts by this user Quote this message in a reply
AnT Offline

Posts: 33
Post: #8

Я как раз сейчас думал над изменением названий и описаний строений в городе.
Первым делом приходит на ум динамическая замена Dwelling.txt (на каждый город отдельный DwellingXX.txt).
Уже в новом Dwelling2.txt отредактировать названия строений и описания.

если город = новый
!!SN:R^Dwelling.txt^/^Dwelling2.txt^; замена
если город = дефолтный
!!SN:R^Dwelling.txt^/^^; вернуть как было

Но увы, это не работает. Видимо dwelling.txt загружается до erm и после уже не обновляется.
через SN:H^xxx^… - тоже не вышло

Если кто знает, как динамически менять Dwelling.txt в игре - просьба написать.
(This post was last modified: 05.01.2022 12:54 by AnT.)
05.01.2022 12:47
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #9

как я понял, если использовать этот код, можно обновлять любой указанный текстовик в памяти игры
(05.11.2020 02:40)Bes Wrote:  при отлаживании элементов шаблона очень востребовано обновлять txt-файл шаблона без выхода из игры.
Вот код, который можно повесить на любое срабатывание кнопки, или завязать на клик по конкретному месту в игре, и ваш указанный шаблон обновится, после чего можно сразу проверять ваш DL-диалог
P.S. не забывайте и про встроенное обновление всех скриптов по F12 для ERA Yes

проверь, измени, свернув игру, двеллинг.тхт и запусти код в игре... еси норм сработает, то придётся тебе решить способ подмены текстовика вне игры и обновлять уже налету в самой игре


Image: team-supermod.gif
05.01.2022 15:31
Visit this user's website Find all posts by this user Quote this message in a reply
AnT Offline

Posts: 33
Post: #10

А вот к этой функции есть расшифровка с примером? Может ее как-то можно использовать совместно с !!UN:R

   
FUNCTION LoadTxt (Name: PCHAR): {n} PTxtFile; STDCALL;
Загружает txt-таблицу средствами игры.
05.01.2022 16:07
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #11

AnT, а что там уже с примером, это и есть готовый пример... вешаешь этот код на нажатие кнопки любой, пишешь для !!VRz1:S^dwelling.txt^; и игра перегружает эту таблицу в память...


Image: team-supermod.gif
05.01.2022 16:30
Visit this user's website Find all posts by this user Quote this message in a reply
AnT Offline

Posts: 33
Post: #12

После примера - часть названий зданий стало пустым. Если менять названия зданий - то у всех строений, т.к. в модах здания на увеличение прироста будут именоваться по-разному.
Да и, к тому же, способ подмены текстовика вне игры - совсем не выход...
Image: FK1XQ.png
(This post was last modified: 05.01.2022 16:48 by AnT.)
05.01.2022 16:40
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #13

(05.01.2022 15:31)Bes Wrote:  как я понял, если использовать этот код, можно обновлять любой указанный текстовик в памяти игры
как я и сказал, не был уверен что для любого текстовика такое подходит... для DL-шаблонов идеально подходилоSorry


Image: team-supermod.gif
05.01.2022 17:01
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group