Current time: 24.11.2024, 22:31 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA III
Author Message
Berserker Offline
Administrators

Posts: 16657
Post: #946

daemon_n, в оригинале состояние ГСЧ тоже не сохраняется в сейве. И, поправь меня, если ошибаюсь, разве не по-разному выпадает мораль/удача при одинаковых действиях?


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

Posts: 4343
Post: #947

Berserker, по-разному. Мораль, удача, страх, урон...
Но вот есть возможность это контролировать бинарником или плагином?
Я вот для некоторых своих модов хотел бы иметь одинаковый результат.


Но зачем нам оригинальное состояние? Просто многие скрипты, генерирующие разные объекты/события можно "заобузить" на желаемый результат.

Хотя бы опционально это можно зафиксировать на одном значении?


Image: widget.png?style=banner2

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

Posts: 16657
Post: #948

Нет, даже теоретически. Либо ты пишешь скрипт, снижающий качество ГСЧ, который на основе координат боя, номеров героев и прочих фиксированных данных генерирует хэш, которым уже инициализируешь ГСЧ через VR:R в OnSetupBattlefield или OnBattleRound 0.


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

Posts: 4343
Post: #949

Berserker, тогда просто вернуть "повторяемость".

И не только в бою, если возможно - хотя остальные объекты можно защитить "грамотным скриптингом" в начале карты. Та же "книга заклинаний", которая генерирует совершенно рандомныые заклинания каждый раз, когда ты её поднимаешь.

И всё же. Смотрю на пример Хота и переигровка битвы.
Там мы получаем всегда один результат в точном повторении действий в битве.

Но вопрос мой такой:

Почему ты отменил внесённое ранее сохранение ГСЧ? Было ведь даже особо объявлено, а лично мной принято с восторгом. Каковы же причины возврата?102


Image: widget.png?style=banner2

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

Posts: 16657
Post: #950

Дима, ну где сохранять состояние ГСЧ? В воздухе? В Хоте используется корявый родной генератор на простой хэш функции от текущего времени в миллисекундах. Состояние генератора — 4 байта простив 1000+ у Вихря Мерсенна. Его инициализация происходит до боя и при переигровке в фиксированное значение, которое получается из набора параметров, вроде координат боя. Ровно так, как сейчас работает генерация препятствий в бою. В сохранённой игре состояние генератора не запоминается. Потому, если хочется детерминированности, то делается это скриптом ровно схожим макаром: принудительная инициализация ГСЧ хэшем от набора фиксированных параметров.

У меня в моде Смешанные Нейтралы схожим образом реализована случайная расстановка отрядов.

Подсказываю как сделать:
Получаешь фикс. параметры x, y, z, leftHero, rightHero, day. Можешь взять другие.
Получаешь первый хэш = x OR (y SHL 8) OR (z SHL 16)
Получаешь второй хэш = (leftHero SHL 4) OR (rightHero SHL 12) OR (day SHL 20).
Получаешь комбинированный хэш = первый_хэш XOR второй_хэш XOR случайное_число_карты
Вызываешь Tm32Encode из Era Erm Framework для получения конечного хэша от комбинированного
Вызываешь VR:R0/хэш T0/хэш для установки ГСЧ в фиксированное значение.

Хэш можешь рассчитать в OnBattlefieldVisible с приоритетом 999 у скрипта. Его же использовать в OnBeforeBattleReplay, например. Нужно тестировать и смотреть очерёдность событий.

Случайное число карты генерируешь при старте игры.


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

Posts: 4343
Post: #951

Berserker, а как ты сделал в тот раз? Работало ведь


Image: widget.png?style=banner2

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

Posts: 16657
Post: #952

Никак и ничего. В лучшем случае могу вернуть родной генератор и всё. Именно его состояние принудительно устанавливает игра в значение хэша от нескольких параметров.


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

Posts: 4343
Post: #953

Berserker, нет, пока не надо. Я сперва должен найти лог этого. Возможно, я уже придумывать начал.96-copy


Image: widget.png?style=banner2

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

Posts: 4343
Post: #954

Для бинарников не работает проверка через !!SN:L; - так понимаю, и не должна?
Однако-таки есть возможность их определить:


Image: widget.png?style=banner2

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

Posts: 16657
Post: #955



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

Posts: 4343
Post: #956

Berserker, потрясающе!
Всё ещё жду список всех этих !!SN:F^штучек^;96-copy


Image: widget.png?style=banner2

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

Posts: 1349
Post: #957

Berserker, а что будет, если установить ERA III на WoG 3.59 от GrayFace? Это будет работать?


Создал новый глобальный мод: WoG Ultra Edition
12.02.2021 13:01
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #958

(12.02.2021 13:01)Raistlin Wrote:  что будет, если установить ERA III на WoG 3.59 от GrayFace? Это будет работать?

Теоретически должно, т.к. конфликтной папки s (которую переименовывали при установке ERA на WoG 3.58) там уже нет.

Но папку WoG в ЭРЕ придётся переименовать, иначе её содержимое будет смешано с одноимённой папкой из WoG 3.59. Можно и не переименовывать, тогда будет полный бардак. 148
12.02.2021 14:04
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #959

Несколько я знаю, не заведётся.
Angel.dll не позволит.
Ну и exe другой приведёт к неожиданным последствиям


Image: widget.png?style=banner2

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

Posts: 1349
Post: #960

XEPOMAHT, хорошо, я понял. Единственное, в новый ехе придется ведь подгрузить era.dll и еще пару библиотек? Если да, то как это сделать? Вот так получится?
Code:
call loadlib
db "mydll.dll", 0
Code:
loadlib:
call LoadLibraryA
jmp OriginalEntryPoint


daemon_n, возможно. Меня просто на эксперименты тянет, да и делать прямо сейчас это необязательно - не получится, так не получится. Зато мы все потом будем это знать ))


Создал новый глобальный мод: WoG Ultra Edition
(This post was last modified: 12.02.2021 14:31 by Raistlin.)
12.02.2021 14:28
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