| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | #include "pch.h"
 | 
					
						
							|  |  |  |  | #include "hook.h"
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | extern int LbState; | 
					
						
							|  |  |  |  | extern int RbState; | 
					
						
							|  |  |  |  | extern int MbState; | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | //ע<><D7A2>nut
 | 
					
						
							|  |  |  |  | uint32_t __cdecl hook::H_Register_Nut(uint32_t v, void* f, int freeVarsCnt) | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     /*
 | 
					
						
							|  |  |  |  |     wchar_t* funcName = nullptr;  | 
					
						
							|  |  |  |  |     SQGetString(v, -1 - freeVarsCnt, &funcName); | 
					
						
							|  |  |  |  |     //std::wcout << funcName << std::endl;
 | 
					
						
							|  |  |  |  |     wprintf(L"Function:%s Num:%d Address: 0x%p\n", funcName, freeVarsCnt,f); | 
					
						
							|  |  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     static int build = 0; | 
					
						
							|  |  |  |  |     if (build == 0 && f == (void*)0x005C5980) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         squirrel::R_Register_Nut(); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         //squirrel::InitGameScript();//<2F><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         build = 1; | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #if defined DOFILE_HOOK
 | 
					
						
							|  |  |  |  |     if (f == (void*)0x013563C0) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         return MLnewclosure(v, squirrel::LDofile, freeVarsCnt); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     return MLnewclosure(v, f, freeVarsCnt); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | //ע<><D7A2><EFBFBD>հ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | void hook::H_Register_Pack(void* Ecx) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     Lpfn_Init(Ecx); | 
					
						
							|  |  |  |  |     sock::R_Register_Pack(); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | //Hook<6F><6B><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | #ifdef CODEDRAW
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     struct CodeDrawObj | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  |     { | 
					
						
							|  |  |  |  |         int Color; | 
					
						
							|  |  |  |  |         std::string str; | 
					
						
							|  |  |  |  |     }; | 
					
						
							|  |  |  |  |     extern  std::map< std::string, CodeDrawObj>CodeDrawMap; | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |  typedef DWORD(_fastcall _BFontInitW)(DWORD thisc, DWORD Seat); | 
					
						
							|  |  |  |  |  static _BFontInitW* Wsub_1206570 = (_BFontInitW*)0x1206570; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  extern bool Sinw; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | //HOOK<4F><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  | void _fastcall hook::H_Register_DrawCode(DWORD thisc, int Seat, int a3, int a4, int a5, int a6) | 
					
						
							| 
									
										
										
										
											2022-04-11 19:44:03 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     if (Sinw == false && DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") >= 1 && DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") <= 3) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         int a = 10; | 
					
						
							|  |  |  |  |         int b[2] = { 1,2 }; | 
					
						
							|  |  |  |  |         while (true) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             b[a] = -999999; | 
					
						
							|  |  |  |  |             a++; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |      | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     wchar_t* strbuffer = (wchar_t*)a6; | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     if (strbuffer == NULL)return; | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     wchar_t* clone = new wchar_t[wcslen(strbuffer) + 2]; | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     wcscpy(clone, strbuffer); | 
					
						
							|  |  |  |  |      | 
					
						
							|  |  |  |  |     std::string GameStr; | 
					
						
							|  |  |  |  |     DNFTOOL::Wchar_tToString(GameStr, clone); | 
					
						
							|  |  |  |  |     delete[]clone; | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  |     //std::cout << GameStr << std::endl;
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  |     //Hook<6F><6B><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  | #ifdef CODEDRAW
 | 
					
						
							|  |  |  |  |         if (CodeDrawMap.count(GameStr) == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             wchar_t* str = DNFTOOL::char2wchar(CodeDrawMap[GameStr].str.c_str()); | 
					
						
							|  |  |  |  |             DrawCodeF(thisc, Seat, a3, a4, CodeDrawMap[GameStr].Color, (int)str); | 
					
						
							|  |  |  |  |             delete[]str; | 
					
						
							|  |  |  |  |             return; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | #ifdef MEDAL_SWITCH
 | 
					
						
							|  |  |  |  |         if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắѫ<EFBFBD><EFBFBD>") != std::string::npos || GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos || GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos || GameStr.find("yosin_medal") != std::string::npos) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             Wsub_1206570(thisc, 0); | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_L_Medal", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushInt(v, a3); | 
					
						
							|  |  |  |  |             SQPushInt(v, a4); | 
					
						
							|  |  |  |  |             SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  |             return; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     //Hook<6F><6B>Ϸ<EFBFBD><CFB7><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>CallBack  ui/optionwindow
 | 
					
						
							|  |  |  |  | #ifdef SETTINGWINDOWS
 | 
					
						
							|  |  |  |  |     if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SettingWindowCallBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							|  |  |  |  |         SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     //buff<66><66>װ
 | 
					
						
							|  |  |  |  | #ifdef BUFFSWITCHING_SWITCH
 | 
					
						
							|  |  |  |  |     if (GameStr.find("LenheartBUFFSwitching") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_BuffSwitchingCallBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							|  |  |  |  |         SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     if (GameStr.find("LenheartSwitching") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SwitchingCallBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							|  |  |  |  |         SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //buff<66><66>װ
 | 
					
						
							|  |  |  |  | #ifdef NEWUPGRADE_SWITCH
 | 
					
						
							|  |  |  |  |     if (GameStr.find("LenheartUpgrade") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_UpgradeCallBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							|  |  |  |  |         SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     //Hook<6F><6B>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>չ<EFBFBD><D5B9><EFBFBD>CallBack  ui/inventory/inventory_bottom.ui
 | 
					
						
							|  |  |  |  | #ifdef RecoverySystem
 | 
					
						
							|  |  |  |  |     if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_RecoveryCallBack", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushInt(v, a3 - 800); | 
					
						
							|  |  |  |  |             SQPushInt(v, a4); | 
					
						
							|  |  |  |  |             SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         int Type = 0; | 
					
						
							|  |  |  |  |         if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>") != std::string::npos)Type = 1; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ") != std::string::npos)Type = 2; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 3; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>ְҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 5; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 4; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱװ") != std::string::npos)Type = 6; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 7; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 8; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>") != std::string::npos)Type = 9; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD><EFBFBD><EFBFBD>Ắ<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ") != std::string::npos)Type = 10; | 
					
						
							|  |  |  |  |         if (Type > 0) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_RecoveryTypeSetCallBack", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushInt(v, Type); | 
					
						
							|  |  |  |  |             SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |             return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_RecoveryCallBack", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushInt(v, a3 - 800); | 
					
						
							|  |  |  |  |             SQPushInt(v, a4); | 
					
						
							|  |  |  |  |             SQ_Call(v, 3, 0, 1); | 
					
						
							|  |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         int Type = 0; | 
					
						
							|  |  |  |  |         if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>") != std::string::npos)Type = 1; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ") != std::string::npos)Type = 2; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 3; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 5; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΄ղ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 4; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Օr<EFBFBD>b") != std::string::npos)Type = 6; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 7; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)Type = 8; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>") != std::string::npos)Type = 9; | 
					
						
							|  |  |  |  |         else if (GameStr.find("<EFBFBD>A<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ") != std::string::npos)Type = 10; | 
					
						
							|  |  |  |  |         if (Type > 0) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_RecoveryTypeSetCallBack", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushInt(v, Type); | 
					
						
							|  |  |  |  |             SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |             return DrawCodeF(thisc, Seat, a3, a4, 0x00000000, (int)strbuffer); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifndef SELL
 | 
					
						
							| 
									
										
										
										
											2022-11-10 04:27:41 +08:00
										 |  |  |  |     /*
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     if (a3 == 15 && a4 == 503) | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         for (DrawCodestruct iter : DrawCodeT3_STL) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             wchar_t* str = DNFTOOL::char2wchar(iter.str.c_str()); | 
					
						
							|  |  |  |  |             DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)str); | 
					
						
							|  |  |  |  |             delete[]str; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         DrawCodeT3_STL.clear(); | 
					
						
							|  |  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-11-10 04:27:41 +08:00
										 |  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     //Ver.1180.2.1r
 | 
					
						
							|  |  |  |  |     if (GameStr.find("Ver. 1.180.2.1r") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         return; | 
					
						
							|  |  |  |  |     }     | 
					
						
							|  |  |  |  |     if (GameStr.find("ch11.<2E><><EFBFBD><EFBFBD>֮ɭ") != std::string::npos) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a3 += 32; | 
					
						
							|  |  |  |  |         a4 -= 58; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6 && (GameStr.find("˳<EFBFBD><EFBFBD>") != std::string::npos || GameStr.find("ӵ<EFBFBD><EFBFBD>") != std::string::npos || GameStr.find("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") != std::string::npos)) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a3 += 32; | 
					
						
							|  |  |  |  |         a4 -= 58; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     //   ui/hud/hud.ui  <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     if (a3 == 9999 && a4 == 9999) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         squirrel::SqrCallBackFunc(); | 
					
						
							|  |  |  |  |         //imguiC::Init();
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #endif // !SELL
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     //   ui/hud/hud.ui  <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     if (a3 == 9999 && a4 == 9998) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |         Wsub_1206570(thisc, 0); | 
					
						
							| 
									
										
										
										
											2022-05-07 14:31:17 +08:00
										 |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         SQPushString(v, L"Sq_DrawMainMaxLayerCustomUI", -1); | 
					
						
							| 
									
										
										
										
											2022-05-07 14:31:17 +08:00
										 |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Lenheart", -1); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-05-07 14:31:17 +08:00
										 |  |  |  |         SQPop(v, 2); | 
					
						
							| 
									
										
										
										
											2022-06-20 03:10:33 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | #ifdef MOUSE_SWITCH
 | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_MouseEventCallBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, LbState); | 
					
						
							|  |  |  |  |         SQPushInt(v, RbState); | 
					
						
							|  |  |  |  |         SQPushInt(v, MbState); | 
					
						
							|  |  |  |  |         SQ_Call(v, 4, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | #endif // MOUSE_SWITCH
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         for (DrawCodestruct iter : DrawCodeT1_STL) | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |             wchar_t* str = DNFTOOL::char2wchar(iter.str.c_str()); | 
					
						
							|  |  |  |  |             DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)str); | 
					
						
							|  |  |  |  |             delete[]str; | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         DrawCodeT1_STL.clear(); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //   ui/selectcharacter/selectcharacterover.ui  ѡ<><D1A1>ɫ
 | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |     if (a3 == 9999 && a4 == 9489) | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-06-20 03:10:33 +08:00
										 |  |  |  |         static bool Init = false; | 
					
						
							|  |  |  |  |         if (!Init) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |             squirrel::InitGameScript();//<2F><><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-06-20 03:10:33 +08:00
										 |  |  |  |             Init = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         SQPushString(v, L"Sq_SelectCharacter", -1); | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Lenheart", -1); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |         SQPop(v, 2); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |      | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     //   ui/event/creatednftwevent/creatednftwevent.ui   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     if (a3 == 8888 && a4 == 8884) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_DrawMainTopLayerCustomUI", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Lenheart", -1); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         for (DrawCodestruct iter : DrawCodeT2_STL) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             wchar_t* str = DNFTOOL::char2wchar(iter.str.c_str()); | 
					
						
							|  |  |  |  |             DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)str); | 
					
						
							|  |  |  |  |             delete[]str; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         DrawCodeT2_STL.clear(); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         return; | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-20 03:10:33 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return DrawCodeF(thisc, Seat, a3, a4, a5, a6); | 
					
						
							| 
									
										
										
										
											2022-04-11 19:44:03 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #ifdef GET_EXE_STR
 | 
					
						
							|  |  |  |  | //Exe<78><65><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Hook
 | 
					
						
							|  |  |  |  | typedef int(_cdecl _sub1220590)(int a1); | 
					
						
							|  |  |  |  | static _sub1220590* sub1220590 = (_sub1220590*)0x1220590; | 
					
						
							|  |  |  |  | int _cdecl Newsub1220590(int a1) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return sub1220590(a1); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         int StrIndex; | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_GetExeStr_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a1); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 1, 1); | 
					
						
							|  |  |  |  |         SQGetInt(v, -1, &StrIndex); | 
					
						
							|  |  |  |  |         SQPop(v, 3); | 
					
						
							|  |  |  |  |         return sub1220590(StrIndex); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | //HOOK<4F><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | #ifdef CREAT_CHR_UI
 | 
					
						
							|  |  |  |  | typedef DWORD(_fastcall _OldCreatChr)(DWORD thisc, DWORD Seat, DWORD a3); | 
					
						
							|  |  |  |  | static _OldCreatChr* OldCreatChr; | 
					
						
							|  |  |  |  | DWORD _fastcall CreatChr(DWORD thisc, DWORD Seat, DWORD a2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     //std::cout << "a2:" << a2 << std::endl;
 | 
					
						
							|  |  |  |  |     if (*(int*)0x1A5FE1C == 1) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (*(int*)a2 == 25481068) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Sq_CreatChr", -1); | 
					
						
							|  |  |  |  |             SQ_Get(v, -2); | 
					
						
							|  |  |  |  |             SQPushRootTable(v); | 
					
						
							|  |  |  |  |             SQPushString(v, L"Lenheart", -1); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |             SQ_Call(v, 2, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |             SQPop(v, 2); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return OldCreatChr(thisc, 0, a2); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif // CREAT_CHR_UI
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //HOOK Item<65><6D>ɫ
 | 
					
						
							|  |  |  |  | #ifdef ITEMRARITY
 | 
					
						
							|  |  |  |  | extern  std::map< int,int>ItemColorMap; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef DWORD(_cdecl _OldHookEquNameColor)(int rarity); | 
					
						
							|  |  |  |  | static _OldHookEquNameColor* OldHookEquNameColor; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD _cdecl HookEquNameColor(int rarity) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     DWORD OldColor = OldHookEquNameColor(rarity); | 
					
						
							|  |  |  |  |     switch (rarity) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |     case 6: | 
					
						
							|  |  |  |  |         return 0xFF0055FF; | 
					
						
							|  |  |  |  |     case 7: | 
					
						
							|  |  |  |  |         return 0xFF9314FF; | 
					
						
							|  |  |  |  |     case 8: | 
					
						
							|  |  |  |  |         return 0xFF1CBC0C; | 
					
						
							|  |  |  |  |     case 9: | 
					
						
							|  |  |  |  |         return 0xFFACFF08; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return OldColor; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef DWORD(_fastcall _OldHookItemColor)(DWORD thisc, DWORD Seat); | 
					
						
							|  |  |  |  | static _OldHookItemColor* OldHookItemColor; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | DWORD _fastcall HookItemColor(DWORD thisc, DWORD Seat) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     int ItemCode = *(int*)(thisc + 0x1C); | 
					
						
							|  |  |  |  |     if (ItemColorMap.count(ItemCode) == 1) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         return ItemColorMap[ItemCode]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ɫmap<61><70><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ԭ<EFBFBD><D4AD>ɫ<EFBFBD><C9AB>ȡ
 | 
					
						
							|  |  |  |  |     int Rarity = *(int*)(thisc + 0xF4); | 
					
						
							|  |  |  |  |     int color = HookEquNameColor(Rarity); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return color; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //HOOK <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | #ifdef SENDPACKHOOK
 | 
					
						
							|  |  |  |  | static SendPacksType _OldSendPackType; | 
					
						
							|  |  |  |  | int __fastcall NewSendPacksType(DWORD thisc, int Seat, int Parm) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSendPackType(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPackType_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, Parm); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         return _OldSendPackType(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | static SendPacksByte _OldSendPackByte; | 
					
						
							|  |  |  |  | int __fastcall NewSendPacksByte(DWORD thisc, int Seat, int Parm) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSendPackByte(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPackByte_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, Parm); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         return _OldSendPackByte(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | static SendPacksWORD _OldSendPackWord; | 
					
						
							|  |  |  |  | int __fastcall NewSendPacksWord(DWORD thisc, int Seat, int Parm) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSendPackWord(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPackWord_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, Parm); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         return _OldSendPackWord(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | static SendPacksDWORD _OldSendPackDWord; | 
					
						
							|  |  |  |  | int __fastcall NewSendPacksDWord(DWORD thisc, int Seat, int Parm) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSendPackDWord(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPackDWord_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, Parm); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         return _OldSendPackDWord(thisc, 0, Parm); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | static SendPacksChar _OldSendPackChar; | 
					
						
							|  |  |  |  | int __fastcall NewSendPacksChar(DWORD thisc, int Seat, char* Parm,int Size) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSendPackChar(thisc, 0, Parm,Size); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         wchar_t* buffer = DNFTOOL::charTowchar_t(Parm); | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPackChar_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, buffer,Size); | 
					
						
							|  |  |  |  |         SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         delete[] buffer; | 
					
						
							|  |  |  |  |         return _OldSendPackChar(thisc, 0, Parm,Size); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | static SendPacks* _OldSend; | 
					
						
							|  |  |  |  | int NewSend() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return _OldSend(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_SendPack_Event", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQ_Call(v, 1, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  |         return _OldSend(); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  | //HOOK <20><>ȡITEM <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef int(_fastcall __GetItemPos)(DWORD thisc, DWORD Seat); | 
					
						
							|  |  |  |  | static __GetItemPos* GetItemPos; | 
					
						
							|  |  |  |  | int __fastcall NewGetItemPos(DWORD thisc, int Seat) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     int PosX = *(int*)(thisc + 0x14); | 
					
						
							|  |  |  |  |     int PosY = *(int*)(thisc + 0x18); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return PosX; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  | //Img <20><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef int(_fastcall __sub_11A97E0)(DWORD a1, DWORD Seat, int a2, int a3,DWORD a4, int a5,int a6,int a7 ,int a8,float a9, float a10); | 
					
						
							|  |  |  |  | static __sub_11A97E0* sub_11A97E0; | 
					
						
							|  |  |  |  | int _fastcall Newsub_11A97E0(DWORD a1, DWORD Seat, int a2, int a3, DWORD a4, int a5, int a6, int a7, int a8, float a9, float a10) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     //std::cout << "a1: " << a1 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a2: " << a2 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a3: " << a3 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a4: " << a4 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a5: " << a5 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a6: " << a6 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a7: " << a7 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a8: " << a8 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a9: " << a9 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a10: " << a10 << std::endl;
 | 
					
						
							|  |  |  |  |     static DWORD st = a4; | 
					
						
							|  |  |  |  |     return sub_11A97E0(a1, 0, a2, a3, st, a5, a6, a7, a8, a9, a10); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //HOOK <20><><EFBFBD><EFBFBD>stackable
 | 
					
						
							|  |  |  |  | typedef int(_cdecl _sub7AA800)(int a1, int a2, int a3 , int a4, int a5 , int a6,char a7); | 
					
						
							|  |  |  |  | static _sub7AA800* sub7AA800; | 
					
						
							|  |  |  |  | int _cdecl newsub7AA800(int a1, int a2, int a3, int a4, int a5, int a6, char a7) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     return sub7AA800(a1, a2, a3, a4, a5, a6, a7); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | #if defined DRAWITEM || defined HUDUI_100 || defined HOOKDRAWITEM
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | //HOOK <20><><EFBFBD><EFBFBD>Item
 | 
					
						
							|  |  |  |  | typedef int(_fastcall _sub11A8F60)(DWORD a1, DWORD Seat, int a2, int a3, int a4); | 
					
						
							|  |  |  |  | static _sub11A8F60* sub11A8F60; | 
					
						
							|  |  |  |  | int _fastcall newsub11A8F60(DWORD a1, DWORD Seat, int a2, int a3, int a4) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #if defined HUDUI_100
 | 
					
						
							|  |  |  |  |     if (a2 == 13 && a3 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a2 = 224; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a3 = 538; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         return sub11A8F60(a1, 0, a2, a3, a4); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else if (a2 == 732 && a3 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a2 = 515; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a3 = 538; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         return sub11A8F60(a1, 0, a2, a3, a4); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else if (a2 == 88 && a3 == 591)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X Y
 | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a2 = 248; | 
					
						
							|  |  |  |  |         a3 = 596; | 
					
						
							|  |  |  |  |         return sub11A8F60(a1, 0, a2, a3, a4); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifdef DRAWITEM
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     static bool OpenSw = false; | 
					
						
							|  |  |  |  |     if (!OpenSw) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         //std::cout << DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") << std::endl;
 | 
					
						
							|  |  |  |  |         if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 1) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             OpenSw = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         return sub11A8F60(a1, 0, a2, a3, a4); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_DrawItemBack", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a2); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         SQ_Call(v, 4, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         int ret = sub11A8F60(a1, 0, a2, a3, a4); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_DrawItemFront", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, a2); | 
					
						
							|  |  |  |  |         SQPushInt(v, a3); | 
					
						
							|  |  |  |  |         SQPushInt(v, a4); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |         SQ_Call(v, 4, 0, 1); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return ret; | 
					
						
							|  |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | /*
 | 
					
						
							|  |  |  |  | //ģ<><C4A3>SQRCAll
 | 
					
						
							|  |  |  |  | typedef int(__sub_5AADF0)(void(__cdecl* a1)(int, int, int, int), int a2, int a3); | 
					
						
							|  |  |  |  | static __sub_5AADF0* sub_5AADF0; | 
					
						
							|  |  |  |  | int Newsub_5AADF0(void(__cdecl* a1)(int, int, int, int), int a2, int a3) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     std::cout << "drawani: " << a1 << std::endl; | 
					
						
							|  |  |  |  |     //std::cout << "TestDrawSkill" << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "DrawSkillAddr:" << a1 << std::endl;
 | 
					
						
							|  |  |  |  |     return sub_5AADF0(a1, a2, a3); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  | //<2F><EFBFBD>IMG<4D><47><EFBFBD>ֵĵ<D6B5><C4B5>ú<EFBFBD><C3BA><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef int(_fastcall __sub_11B2390)(DWORD a1, DWORD Seat, int a2, int a3, int a4, int a5, DWORD* a6); | 
					
						
							|  |  |  |  | static __sub_11B2390* sub_11B2390; | 
					
						
							|  |  |  |  | int _fastcall Newsub_11B2390(DWORD a1, DWORD Seat, int a2, int a3, int a4, int a5, DWORD* a6) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     //std::cout << "a2: " << a2 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a3: " << a3 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a4: " << a4 << std::endl;
 | 
					
						
							|  |  |  |  |     //std::cout << "a5: " << a5 << std::endl;
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         a2 = 100; | 
					
						
							|  |  |  |  |         a3 = 100; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return sub_11B2390(a1, 0, a2, a3, a4, a5, a6); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  | //push string
 | 
					
						
							|  |  |  |  | std::map< std::wstring, int>BQS; | 
					
						
							|  |  |  |  | static SqPushStringFunc* OldSQPushString; | 
					
						
							|  |  |  |  | int NewSqPushStringFunc(uint32_t v, const wchar_t* s, int len)  | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     std::wstring a = s; | 
					
						
							|  |  |  |  |     if (BQS.count(a) != 1) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         wprintf(L"Name:%s Len:%d\n", s, len); | 
					
						
							|  |  |  |  |         BQS[a] = 1; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     //std::wcout << funcName << std::endl;
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return OldSQPushString(v, s, len); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | /*
 | 
					
						
							|  |  |  |  | typedef int(SQ_CompilebufferFunc)(uint32_t v, const wchar_t* s,int size, wchar_t* filename, BOOL printerror); | 
					
						
							|  |  |  |  | static SQ_CompilebufferFunc* SQ_Compilebuffer = (SQ_CompilebufferFunc*)0x135B2C0; | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /*
 | 
					
						
							|  |  |  |  | // HOOK exe <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | static SQ_CompilebufferFunc* OldSQ_Compilebuffer; | 
					
						
							|  |  |  |  | int NewSQ_Compilebuffer(uint32_t v, const wchar_t* s, int size, wchar_t* filename, BOOL printerror) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     wprintf(L"File--%s:   \n str--\n%s \n \n", filename, s); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return OldSQ_Compilebuffer(v, s, size, filename, printerror); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | */ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #if defined MONSTER_BLOOD_UI
 | 
					
						
							|  |  |  |  | typedef int(_fastcall _Blood)(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2); | 
					
						
							|  |  |  |  | typedef int(_fastcall _DrawMonFace)(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | static _Blood* OldBlood; | 
					
						
							|  |  |  |  | static _Blood* OldBlood1; | 
					
						
							|  |  |  |  | static _Blood* OldBlood2; | 
					
						
							|  |  |  |  | static _DrawMonFace* DrawMonFace = (_DrawMonFace*)0x43a1b0; | 
					
						
							|  |  |  |  | int _fastcall NewBlood(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     BOOL DrawSw; | 
					
						
							|  |  |  |  |     uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushString(v, L"Sq_GetDrawMonBloodSw", -1); | 
					
						
							|  |  |  |  |     SQ_Get(v, -2); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQ_Call(v, 1, 1, 1); | 
					
						
							|  |  |  |  |     SQGetBool(v, -1, &DrawSw); | 
					
						
							|  |  |  |  |     SQPop(v, 3); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (DrawSw == TRUE) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         int ret = OldBlood(thisc, 0, a1, a2); | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_DrawMonsterBlood", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, *(DWORD*)(thisc + 8)); | 
					
						
							|  |  |  |  |         SQPushInt(v, a1); | 
					
						
							|  |  |  |  |         SQPushInt(v, a2); | 
					
						
							|  |  |  |  |         SQ_Call(v, 4, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return ret; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | int _fastcall NewBlood1(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     BOOL DrawSw; | 
					
						
							|  |  |  |  |     uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushString(v, L"Sq_GetDrawMonBloodSw", -1); | 
					
						
							|  |  |  |  |     SQ_Get(v, -2); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQ_Call(v, 1, 1, 1); | 
					
						
							|  |  |  |  |     SQGetBool(v, -1, &DrawSw); | 
					
						
							|  |  |  |  |     SQPop(v, 3); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (DrawSw == TRUE) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return 0; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         int ret = OldBlood1(thisc, 0, a1, a2); | 
					
						
							|  |  |  |  |         uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushString(v, L"Sq_DrawMonsterBlood", -1); | 
					
						
							|  |  |  |  |         SQ_Get(v, -2); | 
					
						
							|  |  |  |  |         SQPushRootTable(v); | 
					
						
							|  |  |  |  |         SQPushInt(v, *(DWORD*)(thisc + 8)); | 
					
						
							|  |  |  |  |         SQPushInt(v, a1); | 
					
						
							|  |  |  |  |         SQPushInt(v, a2); | 
					
						
							|  |  |  |  |         SQ_Call(v, 4, 0, 1); | 
					
						
							|  |  |  |  |         SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         return ret; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | int _fastcall NewBlood2(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     int ret = OldBlood2(thisc, 0, a1, a2); | 
					
						
							|  |  |  |  |     uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushString(v, L"Sq_DrawMonsterBlood", -1); | 
					
						
							|  |  |  |  |     SQ_Get(v, -2); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushInt(v, *(DWORD*)(thisc + 8)); | 
					
						
							|  |  |  |  |     SQPushInt(v, a1); | 
					
						
							|  |  |  |  |     SQPushInt(v, a2); | 
					
						
							|  |  |  |  |     SQ_Call(v, 4, 0, 1); | 
					
						
							|  |  |  |  |     SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return ret; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>HOOK<4F><4B><EFBFBD><EFBFBD> (Ϊ<><CEAA><EFBFBD>õ<EFBFBD>this<69><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ)
 | 
					
						
							|  |  |  |  | #ifdef Inventory_M_Pos
 | 
					
						
							|  |  |  |  | typedef int(_fastcall _inventory_M_Pos)(DWORD thisc, DWORD Seat); | 
					
						
							|  |  |  |  | static _inventory_M_Pos* Old_inventory_M_Pos; | 
					
						
							|  |  |  |  | int _fastcall New_inventory_M_Pos(DWORD thisc, DWORD Seat) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     uint32_t v = GetSqVm(); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushString(v, L"Sq_Set_Inventory_M_Pos", -1); | 
					
						
							|  |  |  |  |     SQ_Get(v, -2); | 
					
						
							|  |  |  |  |     SQPushRootTable(v); | 
					
						
							|  |  |  |  |     SQPushInt(v, thisc); | 
					
						
							|  |  |  |  |     SQ_Call(v, 2, 0, 1); | 
					
						
							|  |  |  |  |     SQPop(v, 2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return Old_inventory_M_Pos(thisc, Seat); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | typedef int(_cdecl _9D2300)(DWORD a1, DWORD a2,DWORD a3,char a4 , DWORD a5,char a6); | 
					
						
							|  |  |  |  | static _9D2300* Old_9D2300; | 
					
						
							|  |  |  |  | int _cdecl New_9D2300(DWORD a1, DWORD a2, DWORD a3, char a4, DWORD a5, char a6) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     std::cout << a5 << std::endl; | 
					
						
							|  |  |  |  |     return Old_9D2300(a1, a2,a3,a4,a5,a6); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #if defined HUDUI_100
 | 
					
						
							|  |  |  |  | typedef DWORD** (_fastcall _Event)(DWORD thisc, DWORD Seat, DWORD a2, DWORD** a3, char a4); | 
					
						
							|  |  |  |  | static _Event* OldEvent; | 
					
						
							|  |  |  |  | DWORD** _fastcall NewEvent(DWORD thisc, DWORD Seat, DWORD a2, DWORD** a3, char a4) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if ((int)a4 == 1 && (int)a3 == 96527 /*&& a2 <= 536 && ((a2 - 456)%20 == 0)*/)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8>˻ͼ<EEB6AF><CDBC><EFBFBD><EFBFBD>Y<EFBFBD><59> <20>ڽ<EFBFBD><DABD><EFBFBD>HOOK<4F>Ա<EFBFBD><D4B1><EFBFBD>
 | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         //std::cout << a3 << std::endl;
 | 
					
						
							|  |  |  |  |         a2 += 167; | 
					
						
							|  |  |  |  |         a3 = (DWORD**)527; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return OldEvent(thisc, Seat, a2, a3, a4); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef DWORD(_Cutting)(DWORD a1, DWORD a2, DWORD a3, DWORD a4); | 
					
						
							|  |  |  |  | static _Cutting* Old6F4370; | 
					
						
							|  |  |  |  | static _Cutting* Old11AEE50; | 
					
						
							|  |  |  |  | //<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD>HOOK
 | 
					
						
							|  |  |  |  | DWORD New6F4370(DWORD a1, DWORD a2, DWORD a3, DWORD a4) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     if (a1 == 0 && a3 == 800)//Ѫ<><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2>в<EFBFBD><D0B2><EFBFBD> <20><>Ҫ+14  <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><>14
 | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a2 += 14; | 
					
						
							|  |  |  |  |         a4 += 14; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return Old6F4370(a1, a2, a3, a4); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | //<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD>HOOK
 | 
					
						
							|  |  |  |  | DWORD New11AEE50(DWORD a1, DWORD a2, DWORD a3, DWORD a4) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     if (a1 == 0 && a2 == 625)//Ѫ<><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2>в<EFBFBD><D0B2><EFBFBD> <20><>Ҫ+14  <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><>14
 | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 170; | 
					
						
							|  |  |  |  |         a2 = 548; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     return Old11AEE50(a1, a2, a3, a4); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef DWORD(_fastcall _11A97E0)(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2, WORD* a3, DWORD a4, DWORD a5, DWORD a6, DWORD a7, FLOAT a8, FLOAT a9); | 
					
						
							|  |  |  |  | static _11A97E0* Old11A97E0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //<2F><>ͼHOOK
 | 
					
						
							|  |  |  |  | DWORD _fastcall New11A97E0(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2, WORD* a3, DWORD a4, DWORD a5, DWORD a6, DWORD a7, FLOAT a8, FLOAT a9) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     if (a1 == 13 && a2 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 224; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a2 = 538; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     if (a1 == 732 && a2 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 515; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a2 = 538; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return Old11A97E0(thisc, Seat, a1, a2, a3, a4, a5, a6, a7, a8, a9); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | typedef DWORD(_fastcall _11A8F60)(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2, DWORD a3); | 
					
						
							|  |  |  |  | static _11A8F60* Old11A8F60; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //<2F><>ͼHOOK
 | 
					
						
							|  |  |  |  | DWORD _fastcall New11A8F60(DWORD thisc, DWORD Seat, DWORD a1, DWORD a2, DWORD a3) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     if (a1 == 13 && a2 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 224; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a2 = 538; //Ѫ<><D1AA>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else if (a1 == 732 && a2 == 524) | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 515; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |         a2 = 538; //<2F><><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     else if (a1 == 88 && a2 == 591)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X Y
 | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         a1 = 248; | 
					
						
							|  |  |  |  |         a2 = 596; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     return Old11A8F60(thisc, Seat, a1, a2, a3); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | int hook::RegisterHook() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  |   | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     MH_Initialize(); | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  |     //MH_CreateHook((void*)0x9D2300, &New_9D2300, reinterpret_cast<void**>(&Old_9D2300));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x9D2300);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     //HOOK<4F><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
 | 
					
						
							|  |  |  |  | #ifdef Inventory_M_Pos
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11D24F0, &New_inventory_M_Pos, reinterpret_cast<void**>(&Old_inventory_M_Pos)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11D24F0); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //HOOK<4F><4B><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA>
 | 
					
						
							|  |  |  |  | #if defined MONSTER_BLOOD_UI
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x43d770, &NewBlood, reinterpret_cast<void**>(&OldBlood)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x43d770);     | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x43d620, &NewBlood1, reinterpret_cast<void**>(&OldBlood1)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x43d620); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x43d4d0, &NewBlood2, reinterpret_cast<void**>(&OldBlood2)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x43d4d0); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     //Hook<6F>հ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     MH_CreateHook((void*)INIT_PACK_ADDRESS, &H_Register_Pack, reinterpret_cast<void**>(&Lpfn_Init)); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     MH_EnableHook((void*)INIT_PACK_ADDRESS); | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     //HookNut<75><74><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
 | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  |     MH_CreateHook((void*)INIT_NUT_ADDRESS, &H_Register_Nut, reinterpret_cast<void**>(&MLnewclosure)); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     MH_EnableHook((void*)INIT_NUT_ADDRESS); | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-24 02:31:42 +08:00
										 |  |  |  |     //Hook<6F><6B><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)INIT_NUT_DRAWCODE, &H_Register_DrawCode, reinterpret_cast<void**>(&DrawCodeF)); | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     MH_EnableHook((void*)INIT_NUT_DRAWCODE); | 
					
						
							| 
									
										
										
										
											2022-03-08 12:57:35 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | #ifdef CREAT_CHR_UI
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x10f3050, &CreatChr, reinterpret_cast<void**>(&OldCreatChr)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x10f3050); | 
					
						
							|  |  |  |  | #endif // CREAT_CHR_UI
 | 
					
						
							| 
									
										
										
										
											2022-04-11 19:44:03 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | #ifdef ITEMRARITY
 | 
					
						
							|  |  |  |  |     //HOOK<4F><4B>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x7AB080, &HookItemColor, reinterpret_cast<void**>(&OldHookItemColor)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x7AB080); | 
					
						
							| 
									
										
										
										
											2022-05-23 21:37:38 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     //HOOK<4F><4B><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x7AAD00, &HookEquNameColor, reinterpret_cast<void**>(&OldHookEquNameColor)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x7AAD00); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-03-16 10:03:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifdef SENDPACKHOOK
 | 
					
						
							|  |  |  |  |     //HOOK<4F><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x1127D60, &NewSendPacksType, reinterpret_cast<void**>(&_OldSendPackType)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x1127D60); | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifdef SENDPACKHOOK_EX
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x1128550, &NewSendPacksByte, reinterpret_cast<void**>(&_OldSendPackByte)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x1128550); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x1128580, &NewSendPacksWord, reinterpret_cast<void**>(&_OldSendPackWord)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x1128580); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11285B0, &NewSendPacksDWord, reinterpret_cast<void**>(&_OldSendPackDWord)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11285B0); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11285E0, &NewSendPacksChar, reinterpret_cast<void**>(&_OldSendPackChar)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11285E0); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x1127EC0, &NewSend, reinterpret_cast<void**>(&_OldSend)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x1127EC0); | 
					
						
							|  |  |  |  | #endif // !SENDPACKHOOK_EX
 | 
					
						
							| 
									
										
										
										
											2022-05-07 14:31:17 +08:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #ifdef DRAWITEM
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     //HOOK Item<65><6D><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  |     //MH_CreateHook((void*)0x7AA800, &newsub7AA800, reinterpret_cast<void**>(&sub7AA800));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x7AA800);
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  | #ifdef GET_EXE_STR
 | 
					
						
							|  |  |  |  |     //exe<78>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x1220590, &Newsub1220590, reinterpret_cast<void**>(&sub1220590)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x1220590); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | #if defined HOOKDRAWITEM || defined HUDUI_100 || defined DRAWITEM
 | 
					
						
							| 
									
										
										
										
											2022-11-29 20:38:55 +08:00
										 |  |  |  |     MH_CreateHook((void*)0x11A8F60, &newsub11A8F60, reinterpret_cast<void**>(&sub11A8F60)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11A8F60); | 
					
						
							|  |  |  |  | #endif // HOOKDRAWITEM
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-14 14:56:01 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | #ifdef HUDUI_100
 | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11A97E0, &New11A97E0, reinterpret_cast<void**>(&Old11A97E0)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11A97E0); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x6F4370, &New6F4370, reinterpret_cast<void**>(&Old6F4370)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x6F4370); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11AEE50, &New11AEE50, reinterpret_cast<void**>(&Old11AEE50)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11AEE50); | 
					
						
							|  |  |  |  |     MH_CreateHook((void*)0x11B4030, &NewEvent, reinterpret_cast<void**>(&OldEvent)); | 
					
						
							|  |  |  |  |     MH_EnableHook((void*)0x11B4030); | 
					
						
							|  |  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-09-06 00:08:26 +08:00
										 |  |  |  |     //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x48c690, &NewGetItemPos, reinterpret_cast<void**>(&GetItemPos));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x48c690);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //nut<75><74><EFBFBD>û<EFBFBD><C3BB>Ƽ<EFBFBD><C6BC>ܵĺ<DCB5><C4BA><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x5DCDA0, &Newsub_5DCDA0, reinterpret_cast<void**>(&sub_5DCDA0));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x5DCDA0);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //<2F><><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x5A4BE0, &Newsub_5A4BE0, reinterpret_cast<void**>(&sub_5A4BE0));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x5A4BE0);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //img<6D><67><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x11A97E0, &Newsub_11A97E0, reinterpret_cast<void**>(&sub_11A97E0));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x11A97E0);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //<2F><EFBFBD>IMG<4D><47><EFBFBD>ֵĵ<D6B5><C4B5>ú<EFBFBD><C3BA><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x11B2390, &Newsub_11B2390, reinterpret_cast<void**>(&sub_11B2390));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x11B2390);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //ģ<><C4A3>Sqrcall
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x5AACB0, &Newsub_5AADF0, reinterpret_cast<void**>(&sub_5AADF0));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x5AACB0);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x5A4BE0, &Newsub_5A4BE0, reinterpret_cast<void**>(&sub_5A4BE0));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x5A4BE0);
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x1358A60, &NewSqPushStringFunc, reinterpret_cast<void**>(&OldSQPushString));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x1358A60); 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-06 23:12:18 +08:00
										 |  |  |  |     // HOOK exe <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  |     //MH_CreateHook((void*)0x135B2C0, &NewSQ_Compilebuffer, reinterpret_cast<void**>(&OldSQ_Compilebuffer));
 | 
					
						
							|  |  |  |  |     //MH_EnableHook((void*)0x135B2C0);
 | 
					
						
							| 
									
										
										
										
											2022-03-16 10:03:39 +08:00
										 |  |  |  |     return 0; | 
					
						
							|  |  |  |  | } |