Как увеличить размер карты, до произвольного размера.
Имею ввиду не стандартный максимальный размер карты 256 х 256 , а более большой, к примеру 8000х8000.

C101Nine, вот код снятия ограничения на размер карты, используемый в grimoire:
раскрыть
char *MapSizeLimitAddress;
char MapSizeLimitBackup[sizeof(MapSizeLimitPatch)] = {0x8B};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		//memcpy(MapSizeLimitBackup,MapSizeLimitAddress,sizeof(MapSizeLimitPatch));
		patchbytes(MapSizeLimitAddress,MapSizeLimitPatch,sizeof(MapSizeLimitPatch));
	} else {
		patchbytes(MapSizeLimitAddress,MapSizeLimitBackup,sizeof(MapSizeLimitPatch));
	}
}*/

char *MapSizeLimitAddress;
char MapSizeLimitBackup1[sizeof(MapSizeLimitPatch1)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
char MapSizeLimitBackup2[sizeof(MapSizeLimitPatch2)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitPatch1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitPatch2,sizeof(MapSizeLimitPatch2));
	} else {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitBackup1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitBackup2,sizeof(MapSizeLimitPatch2));
	}
}

char *MapCellsLimitAddress;
char MapCellsLimitBackup[sizeof(MapCellsLimitPatch)] = {0xC0,0x00,0x00,0x00,0x7C,0x05,0xB8,0x00,0x01,0x00,0x00};
void hack_MapCellsLimit(int enable)
{
	if (enable) {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitPatch,sizeof(MapCellsLimitPatch));
	} else {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitBackup,sizeof(MapCellsLimitPatch));	
	}
}
А вот ссылка на его исходники: svn.code.sf.net/p/w3grimoire/code/source/wehack.cpp
Если не сделали фикс на большее увеличения размера карты, значит на то есть какая-то причина. Позже попробую самостоятельно увеличить размер, но, думаю, ничего получится.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
Система save/load это само собой, куда же без этого.
Но мне именно нужно узнать способ увеличить размер карты до произвольной.
Всякие мелочи, что карта будет много весить или загружаться целый час меня не волнуют.
18
C101Nine, поверь, даже 256х256 сделать проблематично, а уж 480х480 - подавно.
2
Верю, но вопрос то не в этом.
Вопрос в том, как?
28
C101Nine, 480 это предел варика
C101Nine:
То же самое говорили про карты весом больше 8 мб, сейчас переваривает.
пруф в студию
6
nvc123:
C101Nine, 480 это предел варика
C101Nine:
То же самое говорили про карты весом больше 8 мб, сейчас переваривает.
пруф в студию
Там используется модифицированный storm.dll.
28
BaHeK, я спрашивал про варик
без каких либо стороних модификаций
то что можно переписать все файлы игры и получить совсем иное это и ежу понятно
вот только заставить качать всех игроков свой варик сложновато будет
C101Nine, а о том что она весит 16 метров я должен с помощью телепатии узнать?
8000х8000
у тебя оперативки не хватит на столько
короче вопрос закрыт
C101Nine, если тебе чтото не нравится в устройстве этого мира можешь написать богу с просьбой исправить
13
C101Nine, вот код снятия ограничения на размер карты, используемый в grimoire:
раскрыть
char *MapSizeLimitAddress;
char MapSizeLimitBackup[sizeof(MapSizeLimitPatch)] = {0x8B};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		//memcpy(MapSizeLimitBackup,MapSizeLimitAddress,sizeof(MapSizeLimitPatch));
		patchbytes(MapSizeLimitAddress,MapSizeLimitPatch,sizeof(MapSizeLimitPatch));
	} else {
		patchbytes(MapSizeLimitAddress,MapSizeLimitBackup,sizeof(MapSizeLimitPatch));
	}
}*/

char *MapSizeLimitAddress;
char MapSizeLimitBackup1[sizeof(MapSizeLimitPatch1)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
char MapSizeLimitBackup2[sizeof(MapSizeLimitPatch2)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitPatch1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitPatch2,sizeof(MapSizeLimitPatch2));
	} else {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitBackup1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitBackup2,sizeof(MapSizeLimitPatch2));
	}
}

char *MapCellsLimitAddress;
char MapCellsLimitBackup[sizeof(MapCellsLimitPatch)] = {0xC0,0x00,0x00,0x00,0x7C,0x05,0xB8,0x00,0x01,0x00,0x00};
void hack_MapCellsLimit(int enable)
{
	if (enable) {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitPatch,sizeof(MapCellsLimitPatch));
	} else {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitBackup,sizeof(MapCellsLimitPatch));	
	}
}
А вот ссылка на его исходники: svn.code.sf.net/p/w3grimoire/code/source/wehack.cpp
Если не сделали фикс на большее увеличения размера карты, значит на то есть какая-то причина. Позже попробую самостоятельно увеличить размер, но, думаю, ничего получится.
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.