| Berserker   
   
   Posts: 16786
 
 |  | 
	| 04.11.2009 17:04 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 04.11.2009 22:44 |  | 
	
		| MOP   
   
   Posts: 1468
 
 | 
			| 
 
				Я, как дилетант, думал, что сейв сам по себе - как в нём сохранено, так и будет грузиться, вне зависимости от железа. Как простейший дамп.   
Но тогда вопрос: функции 77001 и 77002 предназначались для сохранения того, что игра сама не хочет сохранять?
 Quote:Если нужен механизм дополнительной памяти, то я могу расширить функционал Эры новыми командами. 
Нужно, как воздух. Месяца два, почитай, страдаю. )
 
Ещё: можно привести пример с процедурой HookCode? Не вникаю, а вдруг понадобится...
			
 Circle of destruction, hammer comes crushing
 Powerhouse of energy
 Whipping up a fury, dominating flurry
 We create the battery
 
				
(This post was last modified: 04.11.2009 23:02 by MOP.)
 |  | 
	| 04.11.2009 22:52 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Quote:Я, как дилетант, думал, что сейв сам по себе - как в нём сохранено, так и будет грузиться, вне зависимости от железа. Как простейший дамп. 
Сейв распаковывается частями, процедурой GZipRead. Под неё выделяется динамический буфер памяти, за который отвечает менеджер памяти.
 Quote:Но тогда вопрос: функции 77001 и 77002 предназначались для сохранения того, что игра сама не хочет сохранять? 
Для сохранения дополнительных данных с возможностью их загрузки после. Всё, что тебе нужно, это команды для выделения произвольных буферов  в оперативной памяти + команды очистки оных (новая карта, загрузка игры и т.д.).
 
Тогда алгоритм будет следующий:
 
Выделить буфер 
Юзать его 
При сохранении записать его в архив 
При загрузке очистить буферы 
Выделить буфер 
Загрузить в него данные из сейва
			 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 05.11.2009 00:23 |  | 
	
		| AKuHAK   
 Posts: 116
 
 | 
			| 
 
				 (04.11.2009 17:04)Berserker Wrote:  gamecreator, там много нужно было поменять, в частности адреса WaitForSingleObject и hWnd другие. Готовый ехе залил.http://www.multiupload.com/ONQWINCK0A
 
большое спасибо - теперь всё работает
			 |  | 
	| 05.11.2009 01:00 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.11.2009 01:03 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.11.2009 18:11 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.11.2009 18:44 |  | 
	
		| MOP   
   
   Posts: 1468
 
 | 
			| 
 
				Да. В основном, доп. память нужна для расширения некоторых таблиц.  (05.11.2009 00:23)Berserker Wrote:  Выделить буферЮзать его
 При сохранении записать его в архив
 При загрузке очистить буферы
 Выделить буфер
 Загрузить в него данные из сейва
 
Понятно. А если я захочу заполнить динамическую память своими статическими данными, то я могу просто через ту же CopyMemory скопировать из текстовика весь объём информации, там записанный, в буфер. И дальше работать только с ним. Верно?
			
 Circle of destruction, hammer comes crushing
 Powerhouse of energy
 Whipping up a fury, dominating flurry
 We create the battery
 |  | 
	| 05.11.2009 21:04 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.11.2009 21:59 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.11.2009 22:29 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Решил сделать в виде плагина. Универсальнее.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 |  |