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

Thread Closed 
Threaded Mode | Linear Mode
New Era Of Heroes
» WoG 3.58f + Era 1.81
Author Message
Berserker Offline
Administrators

Posts: 16057
Post: #91

gamecreator, там много нужно было поменять, в частности адреса WaitForSingleObject и hWnd другие. Готовый ехе залил.
http://www.multiupload.com/ONQWINCK0A


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.11.2009 17:04
Find all posts by this user
MOP Offline
Moderators

Posts: 1388
Post: #92

Функции 77001 и 77002 иногда приводят к невозможности загрузки сейва с другого компа.
Сейвы, созданные на моём грохнутом компе, отказываются грузиться на новом (вылет).
Конкретно: я сохранял и загружал таким образом изменённый мной ZSETUP00.TXT объёмом в 2.000.000 байт, адрес начала которого точно нашёл и использовал в качестве дополнительной памяти.


Я на Лит-Нете
04.11.2009 20:16
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #93

Quote:адрес начала которого точно нашёл
Адрес начала на твоём компе, не на другом (адрес-то динамический). Если нужен механизм дополнительной памяти, то я могу расширить функционал Эры новыми командами. И функции 77001 и 77002 не при чём.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.11.2009 22:44
Find all posts by this user
MOP Offline
Moderators

Posts: 1388
Post: #94

Я, как дилетант, думал, что сейв сам по себе - как в нём сохранено, так и будет грузиться, вне зависимости от железа. Как простейший дамп. Sm
Но тогда вопрос: функции 77001 и 77002 предназначались для сохранения того, что игра сама не хочет сохранять?
Quote:Если нужен механизм дополнительной памяти, то я могу расширить функционал Эры новыми командами.
Нужно, как воздух. Месяца два, почитай, страдаю. )

Ещё: можно привести пример с процедурой HookCode? Не вникаю, а вдруг понадобится...


Я на Лит-Нете
(This post was last modified: 04.11.2009 23:02 by MOP.)
04.11.2009 22:52
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #95

Quote:Я, как дилетант, думал, что сейв сам по себе - как в нём сохранено, так и будет грузиться, вне зависимости от железа. Как простейший дамп.
Сейв распаковывается частями, процедурой GZipRead. Под неё выделяется динамический буфер памяти, за который отвечает менеджер памяти.

Quote:Но тогда вопрос: функции 77001 и 77002 предназначались для сохранения того, что игра сама не хочет сохранять?
Для сохранения дополнительных данных с возможностью их загрузки после. Всё, что тебе нужно, это команды для выделения произвольных буферов в оперативной памяти + команды очистки оных (новая карта, загрузка игры и т.д.).

Тогда алгоритм будет следующий:

Выделить буфер
Юзать его
При сохранении записать его в архив
При загрузке очистить буферы
Выделить буфер
Загрузить в него данные из сейва


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 00:23
Find all posts by this user
AKuHAK Offline

Posts: 116
Post: #96

(04.11.2009 17:04)Berserker Wrote:  gamecreator, там много нужно было поменять, в частности адреса WaitForSingleObject и hWnd другие. Готовый ехе залил.
http://www.multiupload.com/ONQWINCK0A

большое спасибо - теперь всё работает
05.11.2009 01:00
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #97

AKuHAK, приходите ещё (С). Sm


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 01:03
Find all posts by this user
MOP Offline
Moderators

Posts: 1388
Post: #98

CopyMemory - божественная вещь. 132 Никакого сравнения с громоздкими круговыми функциями UN:C. Быстро, как одна команда ERM - что так и есть, в общем-то.


Я на Лит-Нете
(This post was last modified: 05.11.2009 12:01 by MOP.)
05.11.2009 11:59
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #99

Естественно, работа с памятью через UN:C вообще извращение по сути, хотя по-другому никак.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 18:11
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #100

MOP, ты с какими данными работаешь? Числа (4 байта) и строки?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 18:44
Find all posts by this user
MOP Offline
Moderators

Posts: 1388
Post: #101

Да. В основном, доп. память нужна для расширения некоторых таблиц.
(05.11.2009 00:23)Berserker Wrote:  Выделить буфер
Юзать его
При сохранении записать его в архив
При загрузке очистить буферы
Выделить буфер
Загрузить в него данные из сейва
Понятно. А если я захочу заполнить динамическую память своими статическими данными, то я могу просто через ту же CopyMemory скопировать из текстовика весь объём информации, там записанный, в буфер. И дальше работать только с ним. Верно?


Я на Лит-Нете
05.11.2009 21:04
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #102

Ты текстовик держишь в дате? Если да, то проще добавить функции для нормального чтения из файлов.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 21:59
Find all posts by this user
MOP Offline
Moderators

Posts: 1388
Post: #103

Где ж ещё, в Data... Просто однажды заметил, что текстовые ресурсы ВОГ (кроме тех, что заменяют содовские) загружаются в память полностью, даже если их заполнишь чёрт-те чем. Ну и решил использовать ставший мне ненужным ZSETUP00.TXT под свои нужды.
P.S. Приятно, что ты так живо откликнулся на просьбу. Sm


Я на Лит-Нете
05.11.2009 22:03
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #104

ОК, это будут команды A (Alloc) и F (Free). Сроки реализации - думаю, завтра. Сегодня брат приехал...


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.11.2009 22:29
Find all posts by this user
Berserker Offline
Administrators

Posts: 16057
Post: #105

Решил сделать в виде плагина. Универсальнее.
http://www.multiupload.com/MGLXP27WOE

EraUtils.dll
FUNCTION MemAlloc (Size: INTEGER): POINTER; PASCAL;
PROCEDURE MemFree (Ptr: POINTER); PASCAL;
PROCEDURE MemClear; PASCAL;

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.11.2009 19:52
Find all posts by this user
« Next Oldest | Next Newest »
Thread Closed 


Forum Jump:

Powered by MyBB Copyright © 2002-2022 MyBB Group