03.08.2011, 00:38
03.08.2011, 02:29
Да.
22.08.2011, 18:32
(17.08.2011 19:54)Sav Wrote: [ -> ]18. Невозможно объединить последний отряд одного героя с отрядом дргугого в окне города.5C7821 B800000000
22.08.2011, 19:05
MOP, ты не смотрел проблему потери опыта, если передаётся последний отряд?
25.08.2011, 01:43
Имеется:
- программа BinGen
- патч вида 678948 06000000100000009090909090909090909090001C000000C5000000 (замена специальности Тана)
- необходимость сгенерить бинарник.
Бинарник генерится, но в память пишет не
, а какую-то фигню вида
А, да, и 678948 - это не ошибка, с 278948 игра вылетает на кнопке "Новая игра"
Не, сам патч-то я в редакторе подправил, но что за ерунда такая?
Подопытные:
http://zalil.ru/31603412
- программа BinGen
- патч вида 678948 06000000100000009090909090909090909090001C000000C5000000 (замена специальности Тана)
- необходимость сгенерить бинарник.
Бинарник генерится, но в память пишет не
Code:
06000000 10000000 90909090 90909090
90909000 1С000000 С5000000
Code:
06000000 10000000 90909090 90909090
90909000 B1000000 15000000
А, да, и 678948 - это не ошибка, с 278948 игра вылетает на кнопке "Новая игра"
Не, сам патч-то я в редакторе подправил, но что за ерунда такая?
Подопытные:
http://zalil.ru/31603412
25.08.2011, 02:22
Буква "С" русская. BinMagic сразу ругнётся и кажет название символа и его позицию.
25.08.2011, 02:36
:facepalm: Я идиот.
Ненавижу эту клавишу.
Но BinMagic не ругнулся, кстати.
Ненавижу эту клавишу.
Но BinMagic не ругнулся, кстати.
25.08.2011, 03:51

BinGen может быть не ругнулся?
29.08.2011, 19:22
(22.08.2011 19:05)Berserker Wrote: [ -> ]MOP, ты не смотрел проблему потери опыта, если передаётся последний отряд?Посмотрел, но ни черта не понял. Бряк на вог-хук срабатывает в любом случае, последний это отряд или нет. Какая такая проверка может стоять в ВОГе и зачем она нужна - ума не приложу.
(27.08.2011 17:17)Berserker Wrote: [ -> ]Патчит Arsenal.dll - плагин Мора, позволяющий в кузнице нанимать все три машины войны.Кое-как откопал. Моя самая первая длл:
Посмотрел - у меня нет его исходников.
Code:
LIBRARY Arsenal;
{!INFO
MODULENAME = 'Arsenal'
VERSION = '1.0'
AUTHOR = 'Master Of Puppets'
}
USES Win, Utils, SysUtils, VPUtils;
//PROCEDURE HookCode(P: POINTER; NewAddr: POINTER; UseCall: BOOLEAN); external 'angel' name 'HookCode';
CONST
(* HookCode constants *)
C_HOOKTYPE_JUMP = FALSE;
C_HOOKTYPE_CALL = TRUE;
C_OPCODE_JUMP = $E9;
C_OPCODE_CALL = $E8;
C_UNIHOOK_SIZE = 5;
TYPE
(* Caienu, iaiaoiaeiay aey ?aaiou n ooieoeyie iao?eiaa *)
THookRec = RECORD
Opcode: BYTE;
Ofs: INTEGER;
END; // .record THookRec
VAR
Temp: INTEGER; // Oieaa?naeuiay a?aiaiiay ia?aiaiiay
PROCEDURE WriteAtCode(P: POINTER; Buf: POINTER; Count: INTEGER);
BEGIN
Win.VirtualProtect(P, Count, PAGE_READWRITE, @Temp);
Win.CopyMemory(P, Buf, Count);
Win.VirtualProtect(P, Count, Temp, NIL);
END; // .procedure WriteAtCode
PROCEDURE HookCode(P: POINTER; NewAddr: POINTER; UseCall: BOOLEAN);
VAR
HookRec: THookRec;
BEGIN
IF UseCall THEN BEGIN
HookRec.Opcode:=C_OPCODE_CALL;
END // .if
ELSE BEGIN
HookRec.Opcode:=C_OPCODE_JUMP;
END; // .else
HookRec.Ofs:=INTEGER(NewAddr)-INTEGER(P)-C_UNIHOOK_SIZE;
WriteAtCode(P, @HookRec, 5);
END; // .procedure HookCode
// Функция показа диалога Арсенала (работает лишь в городе):
PROCEDURE ARSENAL_FUNCTION; ASSEMBLER; {$FRAME-}
ASM
PUSH EBP
MOV EBP,ESP
MOV ECX,DWORD PTR DS:[$69954C]
PUSH -1
PUSH $63656B
MOV EAX, LARGE FS:0
PUSH EAX
MOV LARGE FS:0, ESP
PUSH ECX
PUSH ESI
MOV ESI,ECX
MOV ECX,DWORD PTR DS:[ESI+$38]
CMP DWORD PTR DS:[ECX+$3C],-1
JNZ @@No_call
MOV EAX, $5BDB50
CALL EAX
@@No_call:
MOV EAX,DWORD PTR DS:[ESI+$38]
PUSH EDI
MOV EAX,DWORD PTR DS:[$69CCFC]
MOV EDX,DWORD PTR DS:[$69CCF4]
IMUL EDX,EDX,$168
SUB EAX,EDX
MOV EDX,DWORD PTR SS:[EBP+8]
IMUL EDX,EDX,$492
ADD EDX,EAX
ADD EDX,$0B50
MOV DWORD PTR SS:[EBP+8],EDX
PUSH $4AA2F5
END;
//Вклиниваемся в адрес, откуда начинается вызов диалога Кузницы
PROCEDURE HOOK_Blacksmith; ASSEMBLER; {$FRAME-}
ASM
PUSH 0
PUSH ESI
CALL ARSENAL_FUNCTION
PUSH $5D22E1
END;
//Вырубаем все функции обновления экрана мира при входе в город
PROCEDURE Disable_Redraw_Map; ASSEMBLER; {$FRAME-}
ASM
PUSH EBP
MOV EBP, ESP
PUSH -1
MOV DWORD PTR DS:[$415D44],$114E9
MOV BYTE PTR DS:[$415D48],0
MOV DWORD PTR DS:[$4032E5],$124E9
MOV BYTE PTR DS:[$4032E9],0
MOV DWORD PTR DS:[$403423],$123E9
MOV BYTE PTR DS:[$403427],0
PUSH $5C6C75
END;
//Врубаем все функции обновления экрана мира при выходе из города
PROCEDURE Enable_Redraw_Map; ASSEMBLER; {$FRAME-}
ASM
MOV DWORD PTR DS:[$415D44],$BE83F18B
MOV BYTE PTR DS:[$415D48],$98
MOV DWORD PTR DS:[$4032E5],$0D8BF18B
MOV BYTE PTR DS:[$4032E9],$38
MOV DWORD PTR DS:[$403423],$8B565351
MOV BYTE PTR DS:[$403427],$0F1
MOV EAX,2
PUSH $5D4C74
END;
BEGIN
HookCode(POINTER($5D21A4), @HOOK_Blacksmith, C_HOOKTYPE_JUMP);
HookCode(POINTER($5C6C70), @Disable_Redraw_Map, C_HOOKTYPE_JUMP);
HookCode(POINTER($5D4C6F), @Enable_Redraw_Map, C_HOOKTYPE_JUMP);
END.
(22.08.2011 19:05)Berserker Wrote: [ -> ]Пока что удали его лучше, а потом нужно выловить Мора и поругать.Пусть лучше мир прогнётся под нас...
29.08.2011, 19:32
(29.08.2011 19:22)MOP Wrote: [ -> ]Пусть лучше мир прогнётся под нас...для этого не надо динамические патчи делать. а то мир потом обратно выгнется.
20.02.2019, 17:22
Уже забыл, а вот теперь надо вспоминать.
В состав входит обновлённый h3wog.exe (видимо, добавлена подгрузка angel.dll и больше никаких изменений?), библиотека angel.dll (видимо, ранняя версия era.dll?) и папка с плагинами.
Моды не поддерживаются? Начиная с какой версии поддерживаются?
В состав входит обновлённый h3wog.exe (видимо, добавлена подгрузка angel.dll и больше никаких изменений?), библиотека angel.dll (видимо, ранняя версия era.dll?) и папка с плагинами.
Моды не поддерживаются? Начиная с какой версии поддерживаются?
22.02.2019, 05:37
Моды с версии 2.0.