Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // dllmain.cpp: определяет точку входа для приложения DLL.
- // dllmain.cpp: определяет точку входа для приложения DLL.
- #include "targetver.h"
- #include <windows.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include "..\..\include\patcher_x86_commented.hpp"
- #include "..\..\include\HotA\HoMM3.h"
- #include "..\..\include\era.h"
- Patcher * globalPatcher;
- PatcherInstance *emerald;
- #define BLD_ID_MAGE1 0
- #define BLD_ID_MAGE2 1
- #define BLD_ID_MAGE3 2
- #define BLD_ID_MAGE4 3
- #define BLD_ID_MAGE5 4
- #define BLD_ID_TAVERN 5
- #define BLD_ID_WHARF 6
- #define BLD_ID_FORT1 7
- #define BLD_ID_FORT2 8
- #define BLD_ID_FORT3 9
- #define BLD_ID_HALL1 10
- #define BLD_ID_HALL2 11
- #define BLD_ID_HALL3 12
- #define BLD_ID_HALL4 13
- #define BLD_ID_MARKET 14
- #define BLD_ID_SILO 15
- #define BLD_ID_SMITH 16
- #define BLD_ID_SPEC17 17
- #define BLD_ID_HORDE1 18
- #define BLD_ID_HORDE1U 19
- #define BLD_ID_WHARF2 20
- #define BLD_ID_SPEC21 21
- #define BLD_ID_SPEC22 22
- #define BLD_ID_SPEC23 23
- #define BLD_ID_HORDE2 24
- #define BLD_ID_HORDE2U 25
- #define BLD_ID_GRAIL 26
- #define BLD_ID_DECOR27 27
- #define BLD_ID_DECOR28 28
- #define BLD_ID_DECOR29 29
- #define BLD_ID_DWELL1 30
- #define BLD_ID_DWELL2 31
- #define BLD_ID_DWELL3 32
- #define BLD_ID_DWELL4 33
- #define BLD_ID_DWELL5 34
- #define BLD_ID_DWELL6 35
- #define BLD_ID_DWELL7 36
- #define BLD_ID_DWELL1U 37
- #define BLD_ID_DWELL2U 38
- #define BLD_ID_DWELL3U 39
- #define BLD_ID_DWELL4U 40
- #define BLD_ID_DWELL5U 41
- #define BLD_ID_DWELL6U 42
- #define BLD_ID_DWELL7U 43
- int Dependencies0[] = {
- BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_WHARF, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SPEC22, BLD_ID_TAVERN, -1, //brotherhood of the sword
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_SMITH, -1,
- //BLD_ID_SPEC17, BLD_ID_FORT2, -1,
- BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_SMITH, BLD_ID_MAGE1, BLD_ID_MARKET, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, BLD_ID_DWELL3, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, BLD_ID_TAVERN, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, BLD_ID_DWELL5, BLD_ID_SMITH, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL3, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL3U, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL1, BLD_ID_DWELL2, BLD_ID_SMITH, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL2U, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL1, BLD_ID_TAVERN, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, BLD_ID_DWELL3, BLD_ID_SMITH, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL5, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_SPEC21, BLD_ID_DWELL6, -1, //конюшня
- BLD_ID_DWELL7, BLD_ID_DWELL3, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int Dependencies1[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_SPEC17, -1,
- BLD_ID_SPEC21, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MAGE1, BLD_ID_SMITH, BLD_ID_MARKET, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE2, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE2U, BLD_ID_DWELL1U, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, BLD_ID_TAVERN, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- //BLD_ID_HORDE1, BLD_ID_DWELL2, -1,
- //BLD_ID_HORDE1U, BLD_ID_DWELL2U, -1,
- BLD_ID_SPEC22, BLD_ID_FORT2, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL3, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL5, BLD_ID_DWELL4, -1,
- //BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL6, -1,
- //BLD_ID_DWELL7U, BLD_ID_DWELL7, BLD_ID_MAGE3, -1,
- BLD_ID_WHARF, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int Dependencies2[] = {
- BLD_ID_FORT1, -1,
- //BLD_ID_SPEC21, BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_SPEC22, BLD_ID_MAGE1, -1,
- BLD_ID_SPEC23, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_SPEC17, BLD_ID_MARKET, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MARKET, BLD_ID_SMITH, BLD_ID_MAGE1, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL4, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL5, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- BLD_ID_WHARF, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int Dependencies3[] = {
- /*BLD_ID_FORT1, -1,
- BLD_ID_SPEC21, BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_SPEC22, BLD_ID_FORT2, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_SPEC23, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_SMITH, BLD_ID_MARKET, BLD_ID_MAGE1, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE2, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_HORDE2U, BLD_ID_DWELL3U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL4, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, BLD_ID_MAGE2, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL5, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,*/
- //BLD_ID_GRAIL, -1,
- BLD_ID_WHARF, -1,
- -100
- };
- int Dependencies4[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_SPEC17, BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_WHARF, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_SPEC21, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MARKET, BLD_ID_SMITH, BLD_ID_MAGE1, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_SPEC22, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1, BLD_ID_SPEC22, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL3, BLD_ID_TAVERN, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL4, BLD_ID_SPEC17, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL4, BLD_ID_TAVERN, -1,
- //BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL2, BLD_ID_DWELL3, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, BLD_ID_MAGE2, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL6, -1,
- //BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int Dependencies5[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_SPEC23, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_SPEC17, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_SPEC21, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_SMITH, BLD_ID_MARKET, BLD_ID_MAGE1, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL3, -1,
- //BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL3, -1,
- //BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL5, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- BLD_ID_SPEC22, BLD_ID_DWELL7U, -1,
- //BLD_ID_GRAIL, -1,
- BLD_ID_WHARF, -1,
- -100
- };
- int Dependencies6[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_SPEC17, BLD_ID_FORT1, -1,
- BLD_ID_SPEC23, BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_SPEC22, BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_SPEC21, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MAGE1, BLD_ID_MARKET, BLD_ID_SMITH, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, BLD_ID_DWELL3, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL3U, BLD_ID_DWELL3, BLD_ID_SMITH, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL4U, BLD_ID_DWELL4, BLD_ID_MAGE1, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, BLD_ID_DWELL2, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL5, BLD_ID_DWELL2, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL6, -1,
- //BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- //BLD_ID_GRAIL, -1,
- BLD_ID_WHARF, -1,
- -100
- };
- int Dependencies7[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_SPEC21, BLD_ID_FORT1, -1,
- BLD_ID_SPEC22, BLD_ID_SPEC21, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_SPEC17, BLD_ID_HALL2, BLD_ID_SPEC21, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MARKET, BLD_ID_SMITH, BLD_ID_MAGE1, -1,
- BLD_ID_WHARF, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL1U, BLD_ID_DWELL1, BLD_ID_TAVERN, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL3, -1,
- //BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL3, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL5U, BLD_ID_DWELL5, BLD_ID_SILO, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL6, BLD_ID_DWELL4, -1,
- //BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int Dependencies8[] = {
- BLD_ID_FORT1, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_WHARF, -1,
- BLD_ID_TAVERN, -1,
- BLD_ID_SMITH, -1,
- BLD_ID_MARKET, -1,
- BLD_ID_SILO, BLD_ID_MARKET, -1,
- BLD_ID_SPEC17, BLD_ID_MARKET, -1,
- BLD_ID_MAGE1, -1,
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- //BLD_ID_SPEC21, BLD_ID_MAGE1, -1,
- BLD_ID_HALL2, BLD_ID_TAVERN, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, BLD_ID_MARKET, BLD_ID_SMITH, BLD_ID_MAGE1, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, BLD_ID_FORT3, -1,
- BLD_ID_DWELL1, BLD_ID_FORT1, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL1U, BLD_ID_DWELL1, BLD_ID_MARKET, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, -1,
- BLD_ID_DWELL2, BLD_ID_FORT1, BLD_ID_MAGE1, -1,
- //BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL3, BLD_ID_DWELL1, -1,
- //BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL4, BLD_ID_HALL3, -1,
- BLD_ID_DWELL5, BLD_ID_DWELL2, -1,
- //BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6, BLD_ID_DWELL3, BLD_ID_SMITH, -1,
- //BLD_ID_DWELL6U, BLD_ID_DWELL6, BLD_ID_MAGE2, -1,
- BLD_ID_DWELL7, BLD_ID_DWELL6, BLD_ID_HALL2, -1,
- //BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- //BLD_ID_GRAIL, -1,
- -100
- };
- int ObsolutionsAll[] = {
- BLD_ID_MAGE2, BLD_ID_MAGE1, -1,
- BLD_ID_MAGE3, BLD_ID_MAGE2, -1,
- BLD_ID_MAGE4, BLD_ID_MAGE3, -1,
- BLD_ID_MAGE5, BLD_ID_MAGE4, -1,
- BLD_ID_FORT2, BLD_ID_FORT1, -1,
- BLD_ID_FORT3, BLD_ID_FORT2, -1,
- BLD_ID_HALL2, BLD_ID_HALL1, -1,
- BLD_ID_HALL3, BLD_ID_HALL2, -1,
- BLD_ID_HALL4, BLD_ID_HALL3, -1,
- BLD_ID_HORDE1U, BLD_ID_HORDE1, -1,
- BLD_ID_HORDE2U, BLD_ID_HORDE2, -1,
- BLD_ID_DWELL1U, BLD_ID_DWELL1, -1,
- BLD_ID_DWELL2U, BLD_ID_DWELL2, -1,
- BLD_ID_DWELL3U, BLD_ID_DWELL3, -1,
- BLD_ID_DWELL4U, BLD_ID_DWELL4, -1,
- BLD_ID_DWELL5U, BLD_ID_DWELL5, -1,
- BLD_ID_DWELL6U, BLD_ID_DWELL6, -1,
- BLD_ID_DWELL7U, BLD_ID_DWELL7, -1,
- -100
- };
- int Obsolutions0[] = {
- BLD_ID_SPEC22, BLD_ID_TAVERN, -1,
- BLD_ID_HORDE1, BLD_ID_DWELL3, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL3U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions1[] = {
- //BLD_ID_HORDE1, BLD_ID_DWELL2, -1,
- //BLD_ID_HORDE1U, BLD_ID_DWELL2U, BLD_ID_HORDE1, -1,
- BLD_ID_HORDE2, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE2U, BLD_ID_DWELL1U, BLD_ID_HORDE2, -1,
- //BLD_ID_SPEC21, BLD_ID_SPEC17, -1,
- -100
- };
- int Obsolutions2[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions3[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- BLD_ID_HORDE2, BLD_ID_DWELL3, -1,
- BLD_ID_HORDE2U, BLD_ID_DWELL3U, BLD_ID_HORDE2, -1,
- -100
- };
- int Obsolutions4[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions5[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions6[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions7[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- int Obsolutions8[] = {
- BLD_ID_HORDE1, BLD_ID_DWELL1, -1,
- BLD_ID_HORDE1U, BLD_ID_DWELL1U, BLD_ID_HORDE1, -1,
- -100
- };
- //int cstl_X_offsets[] = {0,2,4,6,1,3,5, 4,5,1,2,0,6,4, 2,0,0,0};
- //int cstl_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,1,0,0,0, 2,2,0,0};
- int cstl_X_offsets[] = {0,2,4,6,1,3,5, 3,4,5,1,2,0,6, 5,1, 3,0};
- int cstl_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,1,0,0,0, 2,2, 2,0};
- int cstl_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x06,0x0E,0x07,0x0A,0x10, 0x12,0x15,17,0x00};
- /* H4 Style
- int cstl_X_offsets[] = {0,2,4,6,0,2,4,6, 0,2,4,6, 0,6, 0,2, 6, 0};
- int cstl_Y_offsets[] = {1,1,1,1,2,2,2,2, 0,0,0,0, 3,3, 4,4, 4, 0};
- int cstl_buildings[] = {39,37,40,42,38,16,41,43, 10,7,5,14, 0,21, 15,6, 17, 10};*/
- int ramp_X_offsets[] = {0,2,4,6,1,3,5, 2,4,0,2,0,6,3, 5,1,4, 6};
- int ramp_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,0,0,0,2, 2,2,1, 1};
- int ramp_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x0E,0x07,0x0A,0x10,21, 0x18,0x16,0x11 ,6};
- int tower_X_offsets[] = {0,2,4,6,1,3,5, 2,4,4,0,2,0,6,5, 6,3,1};
- int tower_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,1,0,0,0,2, 1,2,2};
- int tower_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x16,0x0E,0x07,0x0A,0x10,0x12, 6,0x17,0x11};
- int inferno_X_offsets[] = {0,2,4,6,1,3,5, 2,4,0,2,0,6,4,0, 2,4,6, 6};
- int inferno_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,0,0,0,2,2, 2,1,2, 1};
- int inferno_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x0E,0x07,0x0A,0x10,0x12, 0x15,0x16,0x17,0x18, 6};
- int warlock_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x0E,0x07,0x0A,0x10,0x12,0x11,0x15,6, 0x17 /*15,16*/};
- //int warlock_buildings_[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x16, 0x00,0x05,0x0E,0x07,0x0A,0x10,0x12,0x11,0x15,6, 0x17 /*15,16*/};
- int barbarian_X_offsets[] = {0,2,4,6,1,3,5, 2,4,0,2,0,6,5, 3,6,4,1};
- int barbarian_Y_offsets[] = {3,3,3,3,4,4,4, 1,0,1,0,0,0,2, 2,1,1,2};
- int barbarian_buildings[] = {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24, 0x00,0x05,0x0E,0x07,0x0A,0x10,0x12, 0x15,6,0x17,0x11};
- int __stdcall HallBldFix(LoHook* h, HookContext* c)
- {
- //запрет грейдов в окне холла
- //и да, это write-only code
- //прости, дяденька будущий я, я больше так не буду
- if(c->ecx >= 0 || c->ecx <= 6)
- *(char*)0x460E23 = ((*(int*)(0x836ADC + o_TownMgr->town->type*8) >> (5+c->ecx))&1)?7:0;
- //берем бит из таблицы разрешенности зданий, соответствующий нужному зданию,
- //сравниваем его с единицей, подсовываем расчетчику апгрейда
- //и, кстати, проверка на c->ecx - фуфло
- //окно холла в замке : маяк -> укрепления под отдельную клетку
- if( o_TownMgr->town->type == 0)
- {
- c->edx = cstl_buildings[c->ecx];
- //if(c->edx == 7 && o_TownMgr->town->IsBuildingBuilt(9,0)) c->edx = 17;
- return NO_EXEC_DEFAULT;
- }
- //оплот: добавляем в окно холла верфь
- if( o_TownMgr->town->type == 1)
- {
- c->edx = ramp_buildings[c->ecx];
- return NO_EXEC_DEFAULT;
- }
- //башня: добавляем верфь
- if( o_TownMgr->town->type == 2)
- {
- c->edx = tower_buildings[c->ecx];
- //if(c->edx == 5 && o_TownMgr->town->IsBuildingBuilt(5,0)) c->edx = 21; //гильдия воров как апгрейд таверны
- return NO_EXEC_DEFAULT;
- }
- //инферно: добавляем верфь
- if( o_TownMgr->town->type == 3)
- {
- c->edx = inferno_buildings[c->ecx];
- return NO_EXEC_DEFAULT;
- }
- //варлок: выебываемся с третьим грейдом, добавляем верфь
- if( o_TownMgr->town->type == 5)
- {
- c->edx = warlock_buildings[c->ecx];
- if (o_TownMgr->town->IsBuildingBuilt(BLD_ID_DWELL7U,1) && c->edx == BLD_ID_DWELL7) c->edx = 0x16; //апгрейд башни
- return NO_EXEC_DEFAULT;
- }
- //варвар: добавляем верфь, убираем мастерскую бм в грейды кузни
- if( o_TownMgr->town->type == 6)
- {
- c->edx = barbarian_buildings[c->ecx];
- if(c->edx == 16 && o_TownMgr->town->IsBuildingBuilt(BLD_ID_SMITH,0)) c->edx = BLD_ID_SPEC22; //апгрейд кузницы
- return NO_EXEC_DEFAULT;
- }
- //лишь один дедушка дервиш хороший был город
- //и тетушка ведьма
- return EXEC_DEFAULT;
- }
- int __stdcall HallLocFix(LoHook* h, HookContext* c)
- {
- *(int*)0x5CA989 = (int)cstl_Y_offsets - c->ebp;
- *(int*)0x5CA9AA = (int)cstl_X_offsets - c->ebp;
- *(int*)0x5CAA00 = (int)cstl_Y_offsets - c->ebp;
- *(int*)0x5CAA11 = (int)cstl_X_offsets - c->ebp;
- *(int*)0x5CAA70 = (int)cstl_Y_offsets - c->ebp;
- *(int*)0x5CAA8E = (int)cstl_X_offsets - c->ebp;
- *(int*)0x5CAAE0 = (int)cstl_Y_offsets - c->ebp;
- *(int*)0x5CAB01 = (int)cstl_X_offsets - c->ebp;
- *(int*)0x5CABCF = (int)ramp_Y_offsets - c->ebp;
- *(int*)0x5CABF0 = (int)ramp_X_offsets - c->ebp;
- *(int*)0x5CAC46 = (int)ramp_Y_offsets - c->ebp;
- *(int*)0x5CAC57 = (int)ramp_X_offsets - c->ebp;
- *(int*)0x5CACB7 = (int)ramp_Y_offsets - c->ebp;
- *(int*)0x5CACD5 = (int)ramp_X_offsets - c->ebp;
- *(int*)0x5CAD27 = (int)ramp_Y_offsets - c->ebp;
- *(int*)0x5CAD48 = (int)ramp_X_offsets - c->ebp;
- *(int*)0x5CAE17 = (int)tower_Y_offsets - c->ebp;
- *(int*)0x5CAE38 = (int)tower_X_offsets - c->ebp;
- *(int*)0x5CAE8E = (int)tower_Y_offsets - c->ebp;
- *(int*)0x5CAE9F = (int)tower_X_offsets - c->ebp;
- *(int*)0x5CAEFF = (int)tower_Y_offsets - c->ebp;
- *(int*)0x5CAF1D = (int)tower_X_offsets - c->ebp;
- *(int*)0x5CAF69 = (int)tower_Y_offsets - c->ebp;
- *(int*)0x5CAF8A = (int)tower_X_offsets - c->ebp;
- *(int*)0x5CB059 = (int)inferno_Y_offsets - c->ebp;
- *(int*)0x5CB07A = (int)inferno_X_offsets - c->ebp;
- *(int*)0x5CB0D0 = (int)inferno_Y_offsets - c->ebp;
- *(int*)0x5CB0E1 = (int)inferno_X_offsets - c->ebp;
- *(int*)0x5CB141 = (int)inferno_Y_offsets - c->ebp;
- *(int*)0x5CB15F = (int)inferno_X_offsets - c->ebp;
- *(int*)0x5CB1B1 = (int)inferno_Y_offsets - c->ebp;
- *(int*)0x5CB1D2 = (int)inferno_X_offsets - c->ebp;
- *(int*)0x5CB9AC = (int)barbarian_Y_offsets - c->ebp;
- *(int*)0x5CB9CD = (int)barbarian_X_offsets - c->ebp;
- *(int*)0x5CBB5B = (int)barbarian_Y_offsets - c->ebp;
- *(int*)0x5CBB6D = (int)barbarian_X_offsets - c->ebp;
- *(int*)0x5CBD04 = (int)barbarian_Y_offsets - c->ebp;
- *(int*)0x5CBD22 = (int)barbarian_X_offsets - c->ebp;
- *(int*)0x5CBEAC = (int)barbarian_Y_offsets - c->ebp;
- *(int*)0x5CBECD = (int)barbarian_X_offsets - c->ebp;
- return EXEC_DEFAULT;
- }
- int __stdcall OnUnitBuildWindow(HiHook* h, int* building_struct, _Town_* town, signed int a3, int a4)
- {
- int ret = CALL_4(int, __thiscall, h->GetOriginalFunc(), building_struct, town, a3, a4);
- if(a3 == 0x0D && town->type == 5 && town->IsBuildingBuilt(22,1))
- {
- building_struct[25] = 81;
- building_struct[29] = building_struct[27];
- }
- return ret;
- }
- void __stdcall PatchIt (PEvent e)
- {
- //0066D03C - таблица количества окошек 0x13 - гнусный хак, и так мы делать не будем
- *(char*)0x66D03C = 0x11; //rampart +shipyard
- *(char*)0x66D03D = 0x12; //rampart +shipyard
- //*(char*)0x66D03E = 0x13; //tower +shipyard
- *(char*)0x66D03F = 0x13; //inferno +shipyard //не будем, но еретика нет
- //*(char*)0x66D042 = 0x13; //strong +shipyard
- *(char*)0x5CAB4D = 0x11;
- *(char*)0x5CAD94 = 0x12; //rampart +shipyard
- //*(char*)0x5CAFD6 = 0x13; //tower +shipyard
- *(char*)0x5CB21E = 0x13; //inferno +shipyard
- //*(char*)0x5CC056 = 0x13; //strong +shipyard
- //ГМ4-5
- *(unsigned short*)4591590 = 37008; //cstl skip
- *(char*)0x460FAA = 0x40; //barb id
- *(char*)0x460FAE = 0x40; //wtch id
- //спрайты кораблей в окнах верфей
- *(int*)0x68A394 = 0x68C068; //ramp
- *(int*)0x68A398 = 0x68C068; //twr
- *(int*)0x68A39C = 0x68C068; //inf
- *(int*)0x68A3A4 = 0x68C068; //dung
- *(int*)0x68A3A8 = 0x68C068; //str
- *(char*)0x5C355E = 0xEB; //исправляем вылет при постройке цитадели в городе с верфью. Не понимаю^WW понимаю, это костыль для разных спрайтов
- //*(char*)0x5C3471 = 0xEB; //исправляем вылет при постройке манавортекса у Варлока
- //*(unsigned short*)0x5C3471 = 0x9090; //исправляем вылет при постройке манавортекса у Варлока
- //*(char*)0x5C3427 = 0xBC; //еще раз
- //говноговноговно, заткнуто графикой
- *(char*)0x4610DB = 0x6; //нет грейда верфи в замке
- *(char*)0x4E4D5C = 0xEB; //нет бонуса от маяка, готовим его к судьбе Укреплений
- *(int*)0x46166C = 0x4612DF; //нету изменений в холле у Сорки
- *(char*)0x461171 = 0x11; //фонтан удачи - не грейд пруда в экране холла ????
- *(char*)0x5D2F5E = 0x55; //фонтан удачи - не грейд холла в хинтах
- *(char*)0x4C617C = 5; //радиус обзора от башни
- *(char*)0x4C79CF = 5;
- *(char*)0x5BF4F2 = 5;
- //сило
- _Resources_* siloes = ((_Resources_*)0x688F04);
- //сорка: ртуть
- siloes[1].crystal = 0;
- siloes[1].mercury = 1;
- //визард: джем
- siloes[2].jems = 1;
- //еретик: сера
- siloes[3].mercury = 0;
- siloes[3].sulfur = 1;
- //ведьма: кристаллы
- siloes[7].wood = 0;
- siloes[7].ore = 0;
- siloes[7].crystal = 1;
- //дервиш: джем
- siloes[8].mercury = 0;
- siloes[8].jems = 1;
- emerald->WriteLoHook(0x5CA8FC,(void*)HallLocFix);
- //выпил портала вызова
- emerald->WriteByte(0x5D8BDB, 50);
- emerald->WriteByte(0x5D8C14, 50);
- emerald->WriteByte(0x5C6522, 50);
- emerald->WriteByte(0x51D2B1, 50);
- emerald->WriteByte(0x4C8B3C, 50);
- emerald->WriteHiHook(0x551960, SPLICE_, EXTENDED_, THISCALL_, (void*)OnUnitBuildWindow);
- }
- //после создания окна вога
- void __stdcall PatchIt2 (PEvent e)
- {
- emerald->WriteLoHook(0x460DE2,(void*)HallBldFix);
- //сетки
- //здесь, потому что перекрываем правки HD
- *(int*)0x5CA92D = (int)"zpthbkfr.pcx";
- *(int*)0x5CAB73 = (int)"ZPTHBKDG.pcx";
- //зеленые драконы
- *(int*)0x80312C = 0x51;
- }
- int GetCreatureFromCastlf(int line, int offset, _Town_* cstl)
- {
- /*if(cstl->type < 0 ||
- cstl->type > 8 ||
- cstl->mag_level > 5 ||
- cstl->owner_id < -1 ||
- cstl->owner_id > 8 ||
- cstl->built_this_turn > 2 ||
- offset < 0 ||
- offset > 9*7*2
- )
- {
- char mess[255];
- sprintf(mess,"%i",line);
- MessageBoxA(0,mess,mess,0);
- }*/
- /*char mess[255];
- sprintf(mess,"%i",line);
- MessageBoxA(0,mess,mess,0);*/
- int type = offset/14;
- int level = (offset%14)%7;
- int upgrade = (offset%14)/7;
- //return ((int*)0x836CC8)[(type*2+upgrade)*7+level];
- if(upgrade)
- {
- upgrade = (*(int*)(0x836ADC + cstl->type*8) >> (5+level))&1;
- }
- int default_ret = ((int*)0x6747B4)[(cstl->type*2+upgrade)*7+level];
- if (type == 5 && level == 6 && !cstl->IsBuildingBuilt(0x16,1))
- {
- default_ret-=1;
- }
- return default_ret;
- /*if (type == 2 && level == 2 && upgrade ==0 && cstl->Number&1) return 32;
- if (type == 2 && level == 2 && upgrade ==1 && cstl->Number&1) return 117;
- if (type == 2 && level == 2 && upgrade ==0 && !(cstl->Number&1)) return 33;
- if (type == 2 && level == 2 && upgrade ==1 && !(cstl->Number&1)) return 116;*/
- //return ((int*)0x836CC8)[(type*2+upgrade)*7+level];
- }
- #define GetCreatureFromCastle(a,b) GetCreatureFromCastlf(__LINE__,(a),(b))
- signed int __stdcall CorrectTownCreatureGrowth(HiHook *h, _Town_* _cstl, int a2, int a3)
- {
- signed int result; // eax@1
- int i = 0;
- result = 0;
- do
- {
- if ( GetCreatureFromCastle(14*(_cstl->type)+i, _cstl) == a2 )
- break;
- ++result;
- ++i;
- }
- while ( result < 14 );
- if ( result != 14 )
- {
- *(int *)((int)_cstl + 4 * result + 0x118) += a3;
- //_cstl->guards.count[result]+=a3;
- if ( result < 7 )
- //_cstl->guards0.count[result]+=a3;
- *(int *)((int)_cstl + 4 * result + 0x134) += a3;
- }
- return result;
- }
- void __stdcall splice_00551B50(HiHook *h, _Town_* cstl, int edx)
- {
- int a1 = (int)cstl;
- //sub_00551B80(MonstersInTowns_9x2x7[edx0 + 14 * *(_BYTE *)(a1 + 4)], a1 + 2 * edx0 + 22);
- CALL_2(void,__fastcall,0x551B80,GetCreatureFromCastle(edx + 14 * cstl->type, cstl), a1 + 2 * edx + 22);
- return;
- }
- // Город при вычислении локальной ценности части легиона.
- _Town_* LegioTown = NULL;
- int __stdcall StoreLegion(LoHook* h, HookContext* c)
- {
- LegioTown = (_Town_*)c->esi;
- return EXEC_DEFAULT;
- }
- int __stdcall hook_428602(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(c->ebp + 0x8))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_428964(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->ebx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_429BB1(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(c->ebp - 0x14))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_429DEC(LoHook* h, HookContext* c)
- {c->ecx = GetCreatureFromCastle(c->eax,(_Town_*)c->edi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_429F32(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)c->edi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42A026(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edi,(_Town_*)c->eax); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42B538(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->ecx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42B5D9(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(c->edx,(_Town_*)c->ecx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42B5F3(LoHook* h, HookContext* c)
- {c->esi = GetCreatureFromCastle(c->esi,(_Town_*)c->ecx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42B724(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->ecx,(_Town_*)c->edi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42BE42(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(c->eax,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42CF07(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(c->ebp + 0xC))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42D241(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)(*(int*)(c->ebp + 0x8))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_432E94(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx, LegioTown); return NO_EXEC_DEFAULT;}
- int __stdcall hook_432F5F(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(c->ecx,(_Town_*)c->edi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_43363B(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)c->edx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_4BF302(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(7+c->eax/4,(_Town_*)(*(int*)(c->ebp - 0x10))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_4BF307(LoHook* h, HookContext* c)
- {c->esi = GetCreatureFromCastle(c->eax/4,(_Town_*)(*(int*)(c->ebp - 0x10))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_4C8D2D(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(c->ecx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_51CFD8(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(c->ebp - 0x14))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_525A8B(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(7+c->eax,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_525AAD(LoHook* h, HookContext* c)
- {c->return_address = (c->eax == GetCreatureFromCastle(c->ecx,(_Town_*)c->esi))?0x525ABA:0x525B56; return NO_EXEC_DEFAULT;}
- int __stdcall hook_52A31B(LoHook* h, HookContext* c)
- {c->ebx = GetCreatureFromCastle(c->edx,(_Town_*)c->edi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5519A7(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5BEF9E(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)c->ecx); return NO_EXEC_DEFAULT;}
- //int __stdcall hook_551B68(LoHook* h, HookContext* c)
- // {c->ecx = GetCreatureFromCastle(c->eax,(CASTLE*)c->ecx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5BFC66(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->ecx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5BFFDF(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C0098(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C0264(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(c->esi/2,(_Town_*)c->ecx); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C6023(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C7196(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->ecx,(_Town_*)(*(int*)(c->ebx + 0x38))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C7CE5(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(c->ebx + 0x38))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C7D1E(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax,(_Town_*)(*(int*)(c->ebx + 0x38))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5D9DE4(LoHook* h, HookContext* c)
- { int tmgr = *(int*)0x69954C;
- c->edx = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)(0x38 + tmgr))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5D9E5D(LoHook* h, HookContext* c)
- { int tmgr = *(int*)0x69954C;
- c->edx = GetCreatureFromCastle(c->ecx,(_Town_*)(*(int*)(0x38 + tmgr))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5DD099(LoHook* h, HookContext* c)
- { int tmgr = *(int*)0x69954C;
- c->eax = GetCreatureFromCastle(c->edx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5DDAD6(LoHook* h, HookContext* c)
- { int tmgr = *(int*)0x69954C;
- c->eax = GetCreatureFromCastle(c->ecx,(_Town_*)(*(int*)(0x38 + tmgr))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C8037(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax-30,(_Town_*)(*(int*)(c->ebx + 0x38))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5C0BEC(LoHook* h, HookContext* c)
- {c->ebx = GetCreatureFromCastle(c->edx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_551A14(LoHook* h, HookContext* c)
- {c->edx = GetCreatureFromCastle(c->ecx-7,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5DD96B(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->edx,(_Town_*)(*(int*)((*(int*)0x69954C) + 0x38))); return NO_EXEC_DEFAULT;}
- int __stdcall hook_42BCC9(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(c->eax-30,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int __stdcall hook_4C69AF(LoHook* h, HookContext* c)
- {
- _Town_* t = (_Town_*)c->ebx;
- int creature = c->edi;
- if(t->type == 5 && t->IsBuildingBuilt(0x16,1) && c->edi == 81)
- {
- c->eax = 82;
- c->return_address = 0x4C6A18;
- return NO_EXEC_DEFAULT;
- }
- if(c->edi != GetCreatureFromCastle(c->eax-30,t) )
- {
- c->return_address = 0x4C69df;
- }
- else
- {
- c->return_address = 0x4C69b8;
- }
- return NO_EXEC_DEFAULT;
- }
- int __stdcall hook_5C0203(LoHook* h, HookContext* c)
- {c->ecx = GetCreatureFromCastle(c->ecx,(_Town_*)c->esi); return NO_EXEC_DEFAULT;}
- int saved_town_struct;
- int __stdcall hook_521711(LoHook* h, HookContext* c)
- {saved_town_struct = c->edx; return EXEC_DEFAULT;}
- int __stdcall hook_52190D(LoHook* h, HookContext* c)
- {c->eax = GetCreatureFromCastle(c->eax-19,(_Town_*)saved_town_struct); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5218F7(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(c->eax-33,(_Town_*)saved_town_struct); return NO_EXEC_DEFAULT;}
- int __stdcall hook_5219B2(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(c->eax-69,(_Town_*)saved_town_struct); return NO_EXEC_DEFAULT;}
- int __stdcall hook_521951(LoHook* h, HookContext* c)
- {c->edi = GetCreatureFromCastle(c->eax-332,(_Town_*)saved_town_struct); return NO_EXEC_DEFAULT;}
- int __stdcall OnSpecBuildAIValueCalc(LoHook* h, HookContext* c)
- {
- _Town_* town = (_Town_*)c->ebx;
- int building = c->edi;
- if (town->type == 5 && building == 22)
- {
- int value = 1;
- if(town->field_03)
- {
- value = -1;
- }
- else
- {
- //should be dynamic
- value = 9999;
- }
- c->return_address = 0x42B1CB;
- *(int*)(c->ebp + c->edi * 4 - 0x114) = value;
- return NO_EXEC_DEFAULT;
- }
- return EXEC_DEFAULT;
- }
- int __stdcall GetMonsterUpgrade(HiHook *h, int a)
- {
- if(a == 81 || a == 82)
- return a+1;
- else
- return CALL_1(int, __thiscall, h->GetOriginalFunc(), a);
- }
- int __stdcall HasMonsterUpgrade(HiHook *h, int a)
- {
- if(a == 81 || a == 82)
- return true;
- else
- return CALL_1(int, __thiscall, h->GetOriginalFunc(), a);
- }
- inline void Citrine(PatcherInstance * citrine)
- {
- //!!!в моп забанено
- //"При проверке недели монстра учитываем пороховой склад"
- //citrine->WriteLoHook(0x5C0203,(void*)hook_5C0203);
- //43. Неизвестно (АИ-визит в город? sub_0042BA60) вычисление ИИ ценности армии от постройки жилища - используется только с неулучшенными существами
- citrine->WriteLoHook(0x42BCC9,(void*)hook_42BCC9);
- //44. Неизвестно (расчет морали в диалогах?)
- citrine->WriteLoHook(0x4C69AF,(void*)hook_4C69AF);
- //10. Для ИИ: покупка в городе
- //ЗДЕСЬ ЕБУЧИЙ БАГ - исправлено
- citrine->WriteLoHook(0x428602,(void*)hook_428602); //edx, [ebp+8] -> eax
- //11. Для ИИ: оценка ИИ ценности ресурсов
- citrine->WriteLoHook(0x428964,(void*)hook_428964); //edx, ebx -> eax
- //12. Для ИИ: оценка ИИ максимальной стоимости существ в городах
- citrine->WriteLoHook(0x429BB1,(void*)hook_429BB1); //edx, [ebp-0x14] -> eax
- //13. Для ИИ: оценка ИИ максимальной дороговизны приростов сушеств
- citrine->WriteLoHook(0x429DEC,(void*)hook_429DEC); //eax, edi -> ecx
- //14. Неизвестно: оценка ИИ максимальной дороговизны приростов сушеств(?)
- citrine->WriteLoHook(0x429F32,(void*)hook_429F32); //eax, edi -> eax
- //15. Неизвестно (пока вылет, потом посмотрим): оценка ИИ максимальной дороговизны приростов сушеств
- //citrine->WriteLoHook(0x42A026,(void*)hook_42A026); //eax, edi -> eax
- //16. Для ИИ: вычисление ценности строительства неулучшенного жилища - используется только с неулучшенными существами
- citrine->WriteLoHook(0x42B538,(void*)hook_42B538); //edx, ecx -> eax
- //17-18. Для ИИ: вычисление ценности строительства улучшенного жилища - обрабатывается отдельно
- citrine->WriteLoHook(0x42B5D9,(void*)hook_42B5D9); //edx, ecx -> edi
- citrine->WriteLoHook(0x42B5F3,(void*)hook_42B5F3); //esi, ecx -> esi
- citrine->WriteLoHook(0x42B04D, (void*)OnSpecBuildAIValueCalc);
- //19. Неизвестно: При оценке ИИ ценности постройки цитадели или замка учитываем
- citrine->WriteLoHook(0x42B724,(void*)hook_42B724); //eax, edi -> eax
- //20. ИИ: При покупке ИИ армии в городе учитываем морских волков.
- citrine->WriteLoHook(0x42BE42,(void*)hook_42BE42); //eax, esi -> edx
- //21. Неизвестно: При создании структуры пополнения армии ИИ от города учитываем морских волков
- citrine->WriteLoHook(0x42CF07,(void*)hook_42CF07); //edx, [ebp+c] -> eax
- //22. ИИ: При заполнении ИИ списка доступных для покупки существ города учитываем морских волков
- citrine->WriteLoHook(0x42D241,(void*)hook_42D241); //eax, [ebp+8] -> eax
- //23. ИИ: При вычислении ИИ локальной ценности части легиона учитываем морских волков
- //Очередной вылет, faraon3.gm1, witch2.gm1, поправлен
- citrine->WriteLoHook(0x432E81, (void*)StoreLegion);
- citrine->WriteLoHook(0x432E94,(void*)hook_432E94); //edx, esi -> eax
- //24. ИИ: При вычислении ИИ глобальной ценности части легиона учитываем морских волков
- citrine->WriteLoHook(0x432F5F,(void*)hook_432F5F); //ecx, edi -> edx
- //25. Неизвестно: При вычислении ИИ ценности легиона учитываем морских волков
- citrine->WriteLoHook(0x43363B,(void*)hook_43363B); //eax, edx -> eax
- //три обращения из 47AB00,11,33 - получение апгрейда
- citrine->WriteHiHook(0x47AAD0,SPLICE_,EXTENDED_,THISCALL_,(void*)GetMonsterUpgrade);
- /*citrine->WriteHiHook(0x47AB50,SPLICE_,EXTENDED_,THISCALL_,(void*)GetMonsterDegrade);*/
- citrine->WriteHiHook(0x47AA50,SPLICE_,EXTENDED_,THISCALL_,(void*)HasMonsterUpgrade);
- //новый месяц
- //26. Неизвестно: При проверке месяца монстра учитываем пороховой склад.
- citrine->WriteLoHook(0x4C8D2D,(void*)hook_4C8D2D); //ecx, esi -> edx
- //; 27-28. Неизвестно
- //Еженедельный апгрейд юнитов в нейтральных замках на карте.
- citrine->WriteLoHook(0x4BF302,(void*)hook_4BF302); //(eax/4)+7 [ebp-0x10] -> edi
- citrine->WriteLoHook(0x4BF308,(void*)hook_4BF307); //eax/4 [ebp-0x10] -> esi
- //citrine->WriteLoHook(0x503290,(void*)hook_); //, ->
- //окно города
- //29. кадры существ для найма в обзоре королевства:
- citrine->WriteLoHook(0x51CFD8,(void*)hook_51CFD8); //edx,[EBP-14] -> eax
- //30-31. Неизвестно: улучшение ИИ существ в городе, обрабатывается отдельно (!!!)
- citrine->WriteLoHook(0x525A8B,(void*)hook_525A8B); //edx,[EBP-14] -> eax
- citrine->WriteLoHook(0x525AAD,(void*)hook_525AAD); //cmp ..
- //32. Неизвестно: при вычислении ИИ ценности атаки города учитываем морских волков.
- citrine->WriteLoHook(0x52A31B,(void*)hook_52A31B); //edx, edi -> ebx
- //окно покупки юнита
- //9. Отображение неулучшенного существа в диалоге найма при клике в Форте
- citrine->WriteLoHook(0x5519A7,(void*)hook_5519A7); //edx, edi -> ebx
- //; 1. Отображение улучшенного существа в диалоге найма при клике в Форте:
- citrine->WriteLoHook(0x551A14,(void*)hook_551A14); //апгрейды
- //обзор королевства
- //citrine->WriteLoHook(0x551B68,(void*)hook_551B68); //eax, eci -> ecx //сплайс ниже
- // инициализация орд
- //citrine->WriteLoHook(0x5BE383,(void*)hook_52A31B); //старт игры
- //citrine->WriteLoHook(0x5BE3AB,(void*)hook_52A31B); //старт игры
- //; 34. Установка прироста монстров в города в первый день игры:
- citrine->WriteLoHook(0x5BEF9E,(void*)hook_5BEF9E); //
- //; 46. Неизвестно: При вычислении добавки к приросту от легиона
- citrine->WriteLoHook(0x5BFC66,(void*)hook_5BFC66); //
- //4. Цифры прироста:
- citrine->WriteLoHook(0x5BFFDF,(void*)hook_5BFFDF); //Цифры прироста
- //47. Бонус прироста от Статуи Легиона
- citrine->WriteLoHook(0x5C0098,(void*)hook_5C0098); //
- //0x5C0203 - новая неделя
- //жилища. Править обязательно!!11
- //При подготовке иконки и описания источников прироста в городе учитываем морских волков.
- //citrine->WriteLoHook(0x5C0264,(void*)hook_5C0264); //
- // При прибавке существ из-за глобальных событий учитываем морских волков.
- //citrine->WriteLoHook(0x5C0527,(void*)hook_); //absent in MoP
- //0x5C057E - используется только с неулучшенными существами.
- //citrine->WriteLoHook(0x5C057E,(void*)hook_5C0264); //
- //0x5C0B34, 0x5C0BEC - настройка случайного города - третьего грейда нет в формате карты.
- //citrine->WriteLoHook(0x5C0B34,(void*)hook_5C0264); //
- //в моп и хоте забанено
- //citrine->WriteLoHook(0x5C0BEC,(void*)hook_5C0BEC); //
- //3. Кадры иконок найма:
- citrine->WriteLoHook(0x5C6023,(void*)hook_5C6023); //Кадры иконок найма
- //2.при подготовке информации города для окна форта
- citrine->WriteLoHook(0x5C7196,(void*)hook_5C7196); //
- //; 35. Подсказка к орде первого уровня в городе при наведении мыши:
- citrine->WriteLoHook(0x5C7CE5,(void*)hook_5C7CE5); //
- //; 36. Подсказка к орде третьего уровня в городе при наведении мыши:
- citrine->WriteLoHook(0x5C7D1E,(void*)hook_5C7D1E); //
- //; 42. подсказка к двеллингу без орды
- citrine->WriteLoHook(0x5C8037,(void*)hook_5C8037); //хинты
- //5. Отрисовка существ двеллингов в Форте:
- //окно форта
- citrine->WriteLoHook(0x5D9DE4,(void*)hook_5D9DE4); //edx, tmgr -> edx
- citrine->WriteLoHook(0x5D9E5D,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5D9ED3,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5D9F4C,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5D9FC5,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5DA03E,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5DA0C2,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- citrine->WriteLoHook(0x5DA1BA,(void*)hook_5D9E5D); //ecx, tmgr -> edx
- //8. Подсказки к существам в Форте при наведении мыши
- citrine->WriteLoHook(0x5DD099,(void*)hook_5DD099); //edx, esi -> edx
- //7. Параметры существ в Форте
- citrine->WriteLoHook(0x5DDAD6,(void*)hook_5DDAD6); //ecx, [edx+38] -> eax
- //6. Названия существ в Форте
- citrine->WriteLoHook(0x5DD96B,(void*)hook_5DD96B); //
- //сплайсы
- //; 33. Неизвестно:
- citrine->WriteHiHook(0x551B50,SPLICE_,EXTENDED_,FASTCALL_,(void*)splice_00551B50);
- //37. Снова запуск карты:
- citrine->WriteHiHook(0x5C0250,SPLICE_,EXTENDED_,THISCALL_,(void*)CorrectTownCreatureGrowth);
- //еще обзор королевства
- //сохраняем структуру города
- citrine->WriteLoHook(0x521711,(void*)hook_521711); //
- //; 38. Подсказка в кадру существа для найма в обзоре королевства (слева):
- citrine->WriteLoHook(0x52190D,(void*)hook_52190D); //
- //; 39. Подсказка в цифре кол-ва существа для найма в обзоре королевства (справа):
- citrine->WriteLoHook(0x5218F4,(void*)hook_5218F7); //
- //; 40. Подсказка в кадру существа для найма в обзоре королевства (справа):
- citrine->WriteLoHook(0x5219B2,(void*)hook_5219B2); //
- //; 41. Подсказка в цифре кол-ва существа для найма в обзоре королевства (cлева):
- citrine->WriteLoHook(0x521951,(void*)hook_521951); //
- }
- BOOL APIENTRY DllMain( HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- if (ul_reason_for_call == DLL_PROCESS_ATTACH)
- {
- globalPatcher = GetPatcher();
- emerald = globalPatcher->CreateInstance("h2sw_buildups");
- Citrine(emerald);
- //кажется, эти таблицы требуются едва ли не сразу, пусть правки будут здесь
- *(int*)0x004EB816 = (int)Dependencies0;
- *(int*)0x004EB8B3 = (int)Dependencies1;
- *(int*)0x004EB971 = (int)Dependencies2;
- *(int*)0x004EBA39 = (int)Dependencies3;
- *(int*)0x004EBA48 = (int)Dependencies4;
- *(int*)0x004EBA5C = (int)Dependencies5;
- *(int*)0x004EBA70 = (int)Dependencies6;
- *(int*)0x004EBA84 = (int)Dependencies7;
- *(int*)0x004EBA98 = (int)Dependencies8;
- *(int*)0x004EBAC9 = (int)ObsolutionsAll;
- *(int*)0x004EBB04 = (int)ObsolutionsAll;
- *(int*)0x004EBB3F = (int)ObsolutionsAll;
- *(int*)0x004EBB7A = (int)ObsolutionsAll;
- *(int*)0x004EBC74 = (int)ObsolutionsAll;
- *(int*)0x004EBAD8 = (int)Obsolutions0;
- *(int*)0x004EBB13 = (int)Obsolutions1;
- *(int*)0x004EBB89 = (int)Obsolutions2;
- *(int*)0x004EBB4E = (int)Obsolutions3;
- *(int*)0x004EBB98 = (int)Obsolutions4;
- *(int*)0x004EBBA7 = (int)Obsolutions5;
- *(int*)0x004EBBB6 = (int)Obsolutions6;
- *(int*)0x004EBBC5 = (int)Obsolutions7;
- *(int*)0x004EBBD4 = (int)Obsolutions8;
- *(int*)0x688820 = 14;//орда дендруидов -> орда фей
- *(int*)0x688824 = 10;//орда дендруидов -> орда фей
- *(char*)0x68A3CA = 0;
- *(char*)0x68A3CB = 0+7;
- *(int*)0x688830 = 28; //орда хоббитов
- *(int*)0x688834 = 8;//орда кабанов -> орда хоббитов
- *(char*)0x68A3B8 = 0;
- *(char*)0x68A3B9 = 0+7;
- ConnectEra();
- RegisterHandler(PatchIt,"OnBeforeWoG");
- RegisterHandler(PatchIt2,"OnAfterCreateWindow");
- /*case :
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;*/
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment