Current time: 16.11.2024, 20:13 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA II
» WoG Era 2: Русская и Английская версии
Author Message
daemon_n Offline
Administrators

Posts: 4343
Post: #4201

(04.03.2020 16:34)Berserker Wrote:  daemon_n, при тестировании ни разу не замечал какой-либо загрузки сторонних скриптов. Ты точно ничего не напутал в сборке? )

Проверил на чистой Эре, Вог скриптах и героях.

1. Выбираем одиночную игру, настраиваем скрипты и сохраняем.
2. Выбираем кампанию
3. Скрипты грузятся из сохранённых.


Image: widget.png?style=banner2

Новейший Heroes Launcher
04.03.2020 20:56
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #4202

daemon_n, тоже проверил, не подтверждаю. Какая кампания?
Единственное, что у меня при загрузке сейва из «во имя богов» сообщение об отсутствующем ресурсе.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.03.2020 21:05
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #4203

Berserker, странно, проверил ещё раз - повторить не удалось102
Кампания "Во Имя Богов"


Image: widget.png?style=banner2

Новейший Heroes Launcher
04.03.2020 21:34
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #4204

daemon_n, потыкай в другие кампании. Проверял все четыре, но и на старуху бывает проруха.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.03.2020 21:39
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #4205

Berserker, повторить так и не удалось, но 1-ая кампания явно сломана. Эти объекты не должны активироваться (Click to View)


Image: widget.png?style=banner2

Новейший Heroes Launcher
04.03.2020 22:24
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #4206

Berserker, прошу создать новый тип ERM переменной (даже не новый тип, а просто синтаксис, но об этом ниже) и внести в ЭРУ её массив с прямым доступом (get) к массиву вог опций. Я понимаю, что геттеры и сеттеры (UN:P) идеологически правильнее. Но в данном конкретном случае это позволит нам уйти от массы навороченых конструкций такого рода в воговских скриптах.
Например:


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

Так как все переменные с одним символом заняты - возможно ли ввести переменную типа optномер переменной (из двух или трех символов)?
Например: opt190 - прямой аналог UN:P190/?y1
или заглавной буквой, если два или три символа сложно P190 - прямой аналог UN:P190/?y1
К тому же set{} нам не нужен. Нужен только аналог get{}. Т.е. нам нужно только получение значения, без возможности установки



game bug fixes extended.dll || My Plugins || My GitHub
05.03.2020 11:28
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #4207

Раз уж я кардинально добрался до ERM скриптов, дополнительно поддержу ХЕРОМАНТа с предложением ввести 3 ERM команды
1. Получение структуры героя:
Воговская функция: !!SN:E7411341/1/[номер героя];
Команда ERM: HE:Z?y1 (y1 - структура героя, если y1=0 значит стуктура по каким-то причинам не получена)

2. Получение структуры боевого стека
Воговская функция: нет таковой
Команда ERM: BM:Z?y1 (y1 - структура боевого стека, если y1=0 значит стуктура по каким-то причинам не получена)

3. Расширение команды UN:C (добавить возможность сразу указать смещение)
UN:C<адрес>/<размер>/<данные>; старая команда if(Num==3)
UN:C<адрес>/<смещение>/<размер>/<данные>; новая команда if(Num==4)

Невероятно давно они все пользуются большим спросом, а прямой реализации в ERM нет.


game bug fixes extended.dll || My Plugins || My GitHub
05.03.2020 11:51
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #4208

igrik, спасибо за предложения!
Но хочу объяснить свою текущую позицию. Я против дальнейшего развития и разрастания ЕРМ. Всё, что можно реализовать функциями, далее должно быть реализовано функциями, как в любом ЯП. Меня далее будет интересовать библиотека на Lua.

Условия для триггеров в следующей 3.0.0 можно писать так:

Code:
!#UN:P123/?i^opt123^;

!?BF&i^opt123^=1:;

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

!!FU(GetHeroStruct), !!FU(GetBattleStack), !!FU(MemAtOffset).
Для последней можно получить синтаксис параметра (?, SET или d) через !!FU:Sномер_параметра/?y1;

С Эрой я буду поставлю от силы пару скриптов, ни на что не влияющих, но задающих константы и некоторые полезные функции. Возможно, тебе покажется верным тоже иметь один мод вроде ERM Library, в котором твои хуки и множество функций с фишками UN:C. От такого мода могут зависеть ES Scripts, ACM и иже с ними.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.03.2020 15:19
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #4209

(05.03.2020 11:28)igrik Wrote:  Так как все переменные с одним символом заняты
a, b, u?

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


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
05.03.2020 15:24
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #4210

Нет !#UN:P123/?i^opt123^; не устраивает.
Какая в данном случае принципиальная разница от использования v переменных? Правильно - никакой. Рефакторинг и сокращение кода - нет ни смысла, ни возможности.

То же и по функциям. Вот щас Херомант напишет вставку героев, перенесет таблицу, а тут масса скриптов со своими функциями !!FU(GetHeroStruct), которые все никогда не отловишь.

Ладно, я понял твою позицию. Тогда я со своей стороны просто не вижу смысла перерабатывать воговские скрипты.
Максимум правка существующих багов. Жаль.


game bug fixes extended.dll || My Plugins || My GitHub
05.03.2020 15:29
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #4211

(05.03.2020 15:19)Berserker Wrote:  Возможно, тебе покажется верным тоже иметь один мод вроде ERM Library, в котором твои хуки и множество функций с фишками UN:C. От такого мода могут зависеть ES Scripts, ACM и иже с ними.
Такие зависимости не очень хороши тем, что моды и даже скрипты в рамках одного мода привязаны к определенной библиотеке и не могут использоваться отдельно. Когда "точка привязки" - это сама ERA, ясен хрен удобнее Sm

Но, если нет других вариантов, подобное решение позволит сократить код и, при необходимости внести изменения, править только в одном месте. И этот плюс перевешивает минус от привязки к доп. библиотеке.


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
05.03.2020 15:37
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #4212

(05.03.2020 15:29)igrik Wrote:  Рефакторинг и сокращение кода - нет ни смысла, ни возможности.
Тут не соглашусь, возможностей со времен написания WoG-скриптов прибавилось очень много.

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

Опять же, функция библиотеки расширяющая UN:C, принимающая и базовый адрес, и смещение - почему нет?


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
05.03.2020 15:50
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2819
Post: #4213

Ну, так тем более, что такое нужно реализовывать на движке ЭРЫ, а не на библиотеке. К тому же библиотека может быть отключена в любой момент, потому что она не является базой игры.
Мне понадобилось всего 3 функции, которые внести в существующий движок ERM займет не более 10-15 минут. Очень маленькое обновление, но достаточно важное с точки зрения ERMa. Почему не дать эту возможность на базовом уровне. Зачем для такого нехитрого и частовызываемого функционала нужно изобретать ERM библиотеку, которая будет работать на порядок медленее?


game bug fixes extended.dll || My Plugins || My GitHub
05.03.2020 16:00
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #4214

(05.03.2020 15:29)igrik Wrote:  Вот щас Херомант напишет вставку героев, перенесет таблицу, а тут масса скриптов со своими функциями !!FU(GetHeroStruct), которые все никогда не отловишь.

Как раз поэтому для ERA под новых героев я постараюсь обойтись без переноса этой таблицы. Только ради совместимости с erm-скриптами, плагинами, era.dll и HD-модом (если бы не эта проклятая совместимость, то можно было бы просто скопировать патч из MoP и новые герои появились бы ещё в первом релизе ERA PLUS, а так - запланировано только к лету 2020 года).

(05.03.2020 15:19)Berserker Wrote:  Меня далее будет интересовать библиотека на Lua.

Понадобиться большой повод, чтобы перейти с ERM на LUA. От лица непрограммиста скажу, что ERM более проста и понятна (с подробным хелпом) для освоения простому смертному. Возможно, что расширять ERM придётся уже в рамках ERA PLUS 148 .

(05.03.2020 16:00)igrik Wrote:  Зачем для такого нехитрого и частовызываемого функционала нужно изобретать ERM библиотеку, которая будет работать на порядок медленее?

Именно поэтому выступаю за встраивание ERM-скриптов (или их часто используемых частей в виде функций) в dll. Правда до этого на ERA пока дело ещё не дошло (может года через 2-3 такое начнёт появляться, когда будет полностью готова базисная часть ERA PLUS).
(This post was last modified: 05.03.2020 16:12 by XEPOMAHT.)
05.03.2020 16:02
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #4215

Algor, если сделаем с игриком новую систему опций в добавление к старой (по другой кнопке), то новые опции для ЕРМ/Lua/плагинов будут именованными. Никакие костыли не нужны.

Quote:Нет !#UN:P123/?i^opt123^; не устраивает.
Это в любом ЯП глобальные переменные. Будут именованные функции, будут и на Lua вызывать GetOption. И на Pascal/C.
Отличие от v-переменных в том, что их пытаются другие скрипты переиспользовать. Из-за этих старых скриптов и сыр-бор. С именованными проблем нет.

Quote:Вот щас Херомант напишет вставку героев, перенесет таблицу, а тут масса скриптов со своими функциями !!FU(GetHeroStruct), которые все никогда не отловишь.
Если перенесёт, то вызовет RedirectMemoryBlock. Тогда в функции сделай !!SN:F^GetRealAddr^/старый адрес/?новый адрес. И такая команда переживёт всех.

Более того, получение опции правильно завернуть в функцию обёртку. Ибо сегодня это опция 53, завтра «opt.InfiniteMoney», а послезавтра параметр из json, который ты парсишь функцией. Правильный код — не создавать новые грабли и костыли, а предотвращать создание оных.

1) Номер опции в константу.
2) Проверку опции в функцию.



Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.03.2020 16:13
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