Current time: 23.03.2024, 22:50 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
gamecreator Offline

Posts: 7107
Post: #346

а почему cdecl и stdcall совмещены? Эра запоминает указатель стека перед вызовом?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
03.08.2011 00:38
Find all posts by this user
Berserker Offline
Administrators

Posts: 16449
Post: #347

Да.


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

Posts: 1467
Post: #348

(17.08.2011 19:54)Sav Wrote:  18. Невозможно объединить последний отряд одного героя с отрядом дргугого в окне города.
5C7821 B800000000


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
22.08.2011 18:32
Find all posts by this user
Berserker Offline
Administrators

Posts: 16449
Post: #349

MOP, ты не смотрел проблему потери опыта, если передаётся последний отряд?


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

Posts: 622
Post: #350

Имеется:
   - программа 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
(This post was last modified: 25.08.2011 01:45 by feanor.)
25.08.2011 01:43
Find all posts by this user
Berserker Offline
Administrators

Posts: 16449
Post: #351

Буква "С" русская. BinMagic сразу ругнётся и кажет название символа и его позицию.


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

Posts: 622
Post: #352

:facepalm: Я идиот.
Ненавижу эту клавишу.

Но BinMagic не ругнулся, кстати.
(This post was last modified: 25.08.2011 02:36 by feanor.)
25.08.2011 02:36
Find all posts by this user
Berserker Offline
Administrators

Posts: 16449
Post: #353

Image: original.png
BinGen может быть не ругнулся?


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

Posts: 1467
Post: #354

(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:  Пока что удали его лучше, а потом нужно выловить Мора и поругать.
Пусть лучше мир прогнётся под нас...


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
29.08.2011 19:22
Find all posts by this user
gamecreator Offline

Posts: 7107
Post: #355

(29.08.2011 19:22)MOP Wrote:  Пусть лучше мир прогнётся под нас...
для этого не надо динамические патчи делать. а то мир потом обратно выгнется.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
29.08.2011 19:32
Find all posts by this user
hippocamus Offline

Posts: 517
Post: #356

Уже забыл, а вот теперь надо вспоминать.
В состав входит обновлённый h3wog.exe (видимо, добавлена подгрузка angel.dll и больше никаких изменений?), библиотека angel.dll (видимо, ранняя версия era.dll?) и папка с плагинами.
Моды не поддерживаются? Начиная с какой версии поддерживаются?


-= подпись Гиппокамуса =-
20.02.2019 17:22
Visit this user's website Find all posts by this user
Berserker Offline
Administrators

Posts: 16449
Post: #357

Моды с версии 2.0.


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


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group