Подскажите адрес указателя на распакованную текущую карту, если таковой имеется?
может что то типо этого или где-то тут, а может и нет....
Quote:Подскажите адрес указателя на распакованную текущую карту, если таковой имеется?
что конкретно интересует?
Code:
#define o_GameMgr (*(_GameMgr_**)0x699538)
в нем поля
// Заголовочная информация карты игры.
_MapHeader_ map_header; // +1F86Ch
// Карта игры.
_GameMap_ Map; // +1FB70h
Вот, что я искал - функции генератора карт:
54AE02 - вызов функции, которая устанавливает доступные артефакты. arg1 - колво байт, arg2 - буфер
54AF1B - вызов функции, которая устанавливает доступные заклинания. arg1 - колво байт, arg2 - буфер
54AF6E - вызов функции, которая устанавливает доступные вторичные навыки. arg1 - колво байт, arg2 - буфер
arg1 - указывает сколько байт будет считано из буфера (указатель arg2). В буфере хранится побитовая маска доступных артефактов/заклинаний/навыков.
Т.е. подменяя буфер, можно заставить рандомный генератор карт создавать карты с необходимой спецификацией. (например выкинуть имбалансные арты, или ненужные/редко используемые навыки)
Дьякон Wrote:например выкинуть имбалансные арты, или ненужные/редко используемые навыки
Водные артефакты/Навигацию на безводных картах. В ХотА вроде есть такое, у меня в ES скриптом сделано. Но отдельный бинарный фикс будет лучше, имхо.
Что касается остальных артов/навыков, то их надо править и балансировать вместо того, чтобы вырезать.
(25.03.2015 19:48)Algor Wrote: [ -> ]Водные артефакты/Навигацию на безводных картах. В ХотА вроде есть такое, у меня в ES скриптом сделано. Но отдельный бинарный фикс будет лучше, имхо.
Что касается остальных артов/навыков, то их надо править и балансировать вместо того, чтобы вырезать.
В СоДе скриптов нет, а балансить можно и со временем. Сначала выкинуть все, что мешает, а там видно будет. Вообще конечно можно вставить код и менять спецификацию перед началом карты как в скриптах, например. Но все же мне кажется настроить генератор как-то более правильным что ли. Хотя разницы практически никакой.
Подскажите, плиз, какой формат имеет файл с настройками (.dat)? Каким образом его лучше всего сжать?
Эм, 1000 настроек по 4 байта каждая со значением 0 или 1? ))) Сжать можно чем угодно: Проще всего преобразовать в массив битов, тогда это будет 125 байт. Если много, тогда кодирование бегущих длин или как там RLE )
Ага. Только там ещё 2 и 3 переодически встречаются. Короче, что-то типа RLE вполне пойдёт (мне нужно в текст жать):
Code:
1;0:4;3;1:16;0;1:24;0:2;1:5;0:2;1:3;0;1:3;0:2;1:2;0;1:9;0:23;1;2;1:9;0:2;1:2;0;1:4;0;1;0;1:4;0:3;1;0;1:3;0;1:8;2;1;0:3;1;0:15;1;0:3;1:3;0;1:2;0:4;1:5;0;1:3;0:2;1:7;0;1:23;0:4;1;0:2;1;0;1:4;0;1;0:3;1:2;0;1;0;1;0:3;1;0:651;1;0;1;
или ещё так
Code:
1;0:4;3;:16;0;:24;0:2;:5;0:2;:3;0;:3;0:2;:2;0;:9;0:23;1;2;:9;0:2;:2;0;:4;0;1;0;:4;0:3;1;0;:3;0;:8;2;1;0:3;1;0:15;1;0:3;:3;0;:2;0:4;:5;0;:3;0:2;:7;0;:23;0:4;1;0:2;1;0;:4;0;1;0:3;:2;0;1;0;1;0:3;1;0:651;1;0;1
Уже не помню, 2 и 3 м.б опции множественного выбора (radio-кнопки)?
Да, сойдёт.
Обновляет весь диалог и при любом разрешении экрана (с HD и без него). В том числе и арты
PS: не без помощи
Berserker'a
Здорово. Нужно будет обязательно включить в Эру, обновив SN:D.
А есть ли шанс, что ExecErmCmd начнёт корректно обрабатывать IF:M?
Thanks, will test. Do I need to add Mop function?