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
2023-11-13 14:00:01 +08:00
static int OtherPlayerInfoType = 0 ;
static bool HookOtherPlayerInfo = false ;
static int OtherPlayerInfoImg = 0 ;
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
{
2023-11-13 14:00:01 +08:00
//wchar_t* funcName = nullptr;
//SQGetString(v, -1 - freeVarsCnt, &funcName);
//char* OutPutText = DNFTOOL::SquirrelU2W(funcName);
//std::string FuncName = OutPutText;
//delete []OutPutText;
2022-09-06 00:08:26 +08:00
//std::wcout << funcName << std::endl;
2023-11-13 14:00:01 +08:00
//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 ;
2023-11-13 14:00:01 +08:00
//Quick_SQdofileBuffer("BaseC_Tool", BaseC_Tool);
//Quick_SQdofileBuffer("BaseC_Tool1", BaseC_Tool1);
//Quick_SQdofileBuffer("BaseC_Tool2", BaseC_Tool2);
//Quick_SQdofileBuffer("BaseC_Tool3", BaseC_Tool3);
uint32_t v = GetSqVm ( ) ;
std : : string BaseFile = " YosinBaseC " ;
//std::string Base = "function Sq_Get_Ex_LevelData(a,b,c) {return 0;} function Sq_Get_Ex_IntData(a,b,c) {return 0;} function Sq_Get_Ex_SkillCoolTime(a,b,c) {return 0;} function Lenheart(pack) {} function Sq_DrawMainMaxLayerCustomUI(pack) { } function Sq_DrawMainTopLayerCustomUI(pack) {} function Sq_SelectCharacter(Chunk){} function Sq_SendPackType_Event(Chunk){} function Sq_SendPackByte_Event(Chunk){} function Sq_SendPackWord_Event(Chunk){} function Sq_SendPackDWord_Event(Chunk){} function Sq_SendPackChar_Event(Chunk){} function Sq_SendPack_Event(Chunk){} function Sq_Pack_Control(Chunk){} ";
2024-03-31 13:23:55 +08:00
std : : string Base = R " (
Lenheart_P_Update < - true ;
function Sq_L_Medal ( x , y ) { }
2023-11-13 14:00:01 +08:00
function Sq_SettingWindowCallBack ( x , y ) { }
function Sq_BuffSwitchingCallBack ( x , y ) { }
function Sq_SwitchingCallBack ( x , y ) { }
function Sq_UpgradeCallBack ( x , y ) { }
function Sq_RecoveryCallBack ( x , y ) { }
function Sq_RecoveryTypeSetCallBack ( Type ) { }
function Sq_DrawMainMaxLayerCustomUI ( pack ) { }
function Lenheart ( VmTop ) { }
function Sq_MouseEventCallBack ( Lb , Rb , Mb ) { }
function Sq_SelectCharacter ( Chunk ) { }
function Sq_DrawMainTopLayerCustomUI ( pack ) { }
function Sq_GetExeStr_Event ( StrIndex ) { return StrIndex ; }
function Sq_CreatChr ( chunk ) { }
function Sq_SendPackType_Event ( Type ) { }
function Sq_SendPackByte_Event ( Parm ) { }
function Sq_SendPackWord_Event ( Parm ) { }
function Sq_SendPackDWord_Event ( Parm ) { }
function Sq_SendPackChar_Event ( Parm ) { }
function Sq_SendPack_Event ( ) { }
function Sq_DrawItemBack ( Xpos , Ypos , Image ) { }
function Sq_DrawItemFront ( Xpos , Ypos , Image ) { }
function Sq_GetDrawMonBloodSw ( ) { return false ; }
function Sq_DrawMonsterBlood ( Object , X , Y ) { }
function Sq_Set_Inventory_M_Pos ( This ) { }
function Sq_Get_Ex_IntData ( SkillAddress , Idx , objAddress ) { return 0 ; }
function Sq_Get_Ex_SkillCoolTime ( SkillAddress , Idx , objAddress ) { return 0 ; }
function Sq_Get_Ex_LevelData ( SkillAddress , Idx , objAddress ) { return 0 ; }
function Sq_PlayerEachPos ( x , y ) { }
function Sq_DrawMainMaxLayerCustomUI ( pack ) { }
function Sq_PushDamageFontData ( ObjAddress , X , Y , Z , Value , Type ) { return 0 ; }
function Sq_Pack_Control ( chunk ) { }
function Sq_MessageWindowDraw ( a , c ) { }
function Sq_Get_Event_Pos ( a ) { return 1 ; }
function Sq_L_OtherPlayerInfo ( x , y , Type , Value , ImgBuf ) { local str = Value . tostring ( ) ; local lenght = LenheartTextClass . GetStringLength ( str ) ; L_sq_DrawImg ( ImgBuf , x + 70 - lenght , y + 5 ) ; return Value ; }
function Sq_DrawMiniMapUI ( a ) { }
2024-03-31 13:23:55 +08:00
function Sq_CompleteTask ( a1 , a2 , a3 ) { }
function L_drawMainCustomUI_All ( ) { }
function L_MouseCallBack ( a , b , c , d ) { }
function L_DrawWindow_A ( ) { }
function L_DrawWindow_B ( ) { }
2023-11-13 14:00:01 +08:00
) " ;
wchar_t * sfile = DNFTOOL : : charTowchar_t ( ( char * ) BaseFile . c_str ( ) ) ;
wchar_t * ss = DNFTOOL : : charTowchar_t ( ( char * ) Base . c_str ( ) ) ;
squirrel : : SQdofileBuffer ( v , sfile , ss ) ;
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 ) ;
}
2023-11-13 14:00:01 +08:00
typedef uint32_t ( __cdecl * LSqPushStringFunc ) ( uint32_t v , const wchar_t * s , uint32_t l ) ;
LSqPushStringFunc LrealSqPushString ;
std : : string & NReplaceAll ( std : : string & str , const std : : string & src , const std : : string & dst ) {
std : : string : : size_type pos ( 0 ) ;
while ( true ) {
if ( ( pos = str . find ( src ) ) ! = std : : string : : npos ) {
str . replace ( pos , src . length ( ) , dst ) ;
}
else {
break ;
}
}
return str ;
}
uint32_t __cdecl LMySqPushString ( uint32_t v , const wchar_t * s , uint32_t l )
{
//<2F> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ܹ<EFBFBD> <DCB9> <EFBFBD> <EFBFBD> <EFBFBD>
if ( ! wcscmp ( s , L " getCurrentModuleDamageRate " ) ) {
return LrealSqPushString ( v , L " L_getCurrentModuleDamageRate " , l ) ;
}
//drawmain drawMainCustomUI_ATFighter(obj)
//if (wcsstr(s, L"drawMainCustomUI_")) {
2024-03-31 13:23:55 +08:00
// std::cout << 11 << std::endl;
2023-11-13 14:00:01 +08:00
//}
//compilestring
//wprintf(L"Function:%s \n",s );
return LrealSqPushString ( v , s , l ) ;
}
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 ;
2023-11-13 14:00:01 +08:00
typedef int ( _fastcall _DrawOtherPlayer_Img ) ( int thisc , void * , int X , int Y , int Img ) ;
static _DrawOtherPlayer_Img * DrawOtherPlayer_Img = ( _DrawOtherPlayer_Img * ) 0x11A8F60 ;
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
{
2023-11-13 14:00:01 +08:00
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 ;
2023-11-13 14:00:01 +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 ) ;
2023-11-13 14:00:01 +08:00
2022-11-06 23:12:18 +08:00
std : : string GameStr ;
DNFTOOL : : Wchar_tToString ( GameStr , clone ) ;
delete [ ] clone ;
2023-11-13 14:00:01 +08:00
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> HOOK
if ( OtherPlayerInfoType ! = 0 ) {
if ( ! HookOtherPlayerInfo ) {
HookOtherPlayerInfo = true ;
}
else {
HookOtherPlayerInfo = false ;
int Value = atoi ( GameStr . c_str ( ) ) ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_L_OtherPlayerInfo " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , a3 ) ;
SQPushInt ( v , a4 ) ;
SQPushInt ( v , OtherPlayerInfoType - 1 ) ;
SQPushInt ( v , Value ) ;
if ( OtherPlayerInfoImg ) {
SQPushInt ( v , OtherPlayerInfoImg ) ;
//DrawOtherPlayer_Img(*(int*)0x1B45B94, 0, a3, a4 + 3, OtherPlayerInfoImg);
}
else {
SQPushInt ( v , 0 ) ;
}
SQ_Call ( v , 6 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & Value ) ;
SQPop ( v , 3 ) ;
wchar_t wcs [ 128 ] ;
int Type = OtherPlayerInfoType - 1 ;
if ( ( Type > = 12 & & Type < = 16 ) | | Type = = 18 | | Type = = 19 ) {
wsprintf ( wcs , L " +%d%S " , Value , " .0% " ) ;
}
else {
wsprintf ( wcs , L " %d " , Value ) ;
}
DrawCodeF ( thisc , Seat , a3 , a4 , a5 , ( int ) wcs ) ;
OtherPlayerInfoType = 0 ;
//DrawCodeF(thisc, Seat, a3, a4, a5, a6);
return ;
}
}
2024-03-31 13:23:55 +08:00
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 6 ) {
if ( GameStr . find ( " ch20.<2E> <> <EFBFBD> <E1A1BE> <EFBFBD> " ) ! = std : : string : : npos )
{
wchar_t * nclone = L " <EFBFBD> <EFBFBD> ʱ<EFBFBD> <EFBFBD> ֮ս -<2D> ű<EFBFBD> <C5B1> <EFBFBD> <EFBFBD> <EFBFBD> " ;
return DrawCodeF ( thisc , Seat , a3 , a4 , a5 , ( int ) nclone ) ;
}
}
2023-11-13 14:00:01 +08:00
//if (GameStr.find("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ") != std::string::npos)
//{
// std::cout << GameStr << std::endl;
//}
2022-11-29 20:38:55 +08:00
//std::cout << GameStr << std::endl;
2023-11-13 14:00:01 +08:00
//if (GameStr.find("<22> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> ") != std::string::npos)
//{
// wchar_t* nclone = new wchar_t[wcslen(strbuffer) + 8];
// WReplace(nclone, strbuffer, L"<22> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> ", L"VIPװ<50> <D7B0> ");
// //string_replace(GameStr, "<22> <> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> ", "VIPװ<50> <D7B0> ");
// //const wchar_t* newstrbuffer = DNFTOOL::GetWC((char*)GameStr.c_str());
// return DrawCodeF(thisc, Seat, a3, a4, a5, (int)nclone);
//}
2022-11-29 20:38:55 +08:00
//Hook<6F> <6B> <EFBFBD> <EFBFBD>
2023-04-14 14:56:01 +08:00
2023-05-12 16:08:39 +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
2023-05-12 16:08:39 +08:00
//ǿ<> <C7BF> ϵͳ
2023-04-14 14:56:01 +08:00
# 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>
2023-11-13 14:00:01 +08:00
//if (a3 == 9999 && a4 == 9999)
//{
// squirrel::SqrCallBackFunc();
// //imguiC::Init();
// return;
//}
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>
2023-11-13 14:00:01 +08:00
// if (a3 == 9999 && a4 == 9998)
// {
// Wsub_1206570(thisc, 0);
// uint32_t v = GetSqVm();
// //SQPushRootTable(v);
// //SQPushString(v, L"Sq_DrawMainMaxLayerCustomUI", -1);
// //SQ_Get(v, -2);
// //SQPushRootTable(v);
// //SQPushString(v, L"Lenheart", -1);
// //SQ_Call(v, 2, 0, 1);
// //SQPop(v, 2);
//
//#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
//
//
// for (DrawCodestruct iter : DrawCodeT1_STL)
// {
// wchar_t* str = DNFTOOL::char2wchar(iter.str.c_str());
// DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)str);
// delete[]str;
// }
// DrawCodeT1_STL.clear();
// return;
// }
2022-09-06 00:08:26 +08:00
// ui/selectcharacter/selectcharacterover.ui ѡ <> <D1A1> ɫ
2023-11-13 14:00:01 +08:00
//if (a3 == 9999 && a4 == 9489)
//{
// static bool Init = false;
// if (!Init)
// {
// squirrel::InitGameScript();//<2F> <> <EFBFBD> ó<EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// Init = true;
// }
// uint32_t v = GetSqVm();
// SQPushRootTable(v);
// SQPushString(v, L"Sq_SelectCharacter", -1);
// SQ_Get(v, -2);
// SQPushRootTable(v);
// SQPushString(v, L"Lenheart", -1);
// SQ_Call(v, 2, 0, 1);
// SQPop(v, 2);
// return;
//}
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>
2023-11-13 14:00:01 +08:00
//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);
// SQ_Call(v, 2, 0, 1);
// SQPop(v, 2);
2022-09-06 00:08:26 +08:00
2023-11-13 14:00:01 +08:00
// 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();
// 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 ) ;
2023-11-13 14:00:01 +08:00
2022-11-06 23:12:18 +08:00
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 ;
}
*/
2023-11-13 14:00:01 +08:00
//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)
//{
// if (a7 != 0)std::cout << a7 << std::endl;;
// static DWORD st = a4;
// return sub_11A97E0(a1, 0, a2, a3, st, a5, a6, a7, a8, a9, a10);
//}
2022-09-06 00:08:26 +08:00
//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-11-13 14:00:01 +08:00
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 ;
2023-11-13 14:00:01 +08:00
typedef int ( _fastcall _Load_Npk ) ( int thisc , void * , int a2 , wchar_t * a3 ) ;
typedef int ( _fastcall _Get_Img ) ( int thisc , void * , int a2 ) ;
static _Load_Npk * Load_Npk = ( _Load_Npk * ) 0x11C0410 ;
static _Get_Img * Get_Img = ( _Get_Img * ) 0x11AA190 ;
2022-09-06 00:08:26 +08:00
int _fastcall newsub11A8F60 ( DWORD a1 , DWORD Seat , int a2 , int a3 , int a4 )
{
2023-11-13 14:00:01 +08:00
//int n = Load_Npk(*(int*)0x1B4684C, 0, 0, L"character/swordman/effect/skillicon.img");
//int imgbuf = Get_Img(n,0,70);
//if (a4 == imgbuf) {
// std::cout << "sadsasd" << std::endl;
//}
//#if defined HUDUI_100
// //Ѫ<> <D1AA>
// if (a2 == 0 && a3 == 508) {
// static int hudimg = Load_Npk(*(int*)0x1B4684C, 0, 0, L"interface2/hud/hud.img");
// if (Get_Img(hudimg, 0, 0) == a4) {
// return 0;
// }
// }
//#endif
2023-04-14 14:56:01 +08:00
2023-05-12 16:08:39 +08:00
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
{
2023-11-13 14:00:01 +08:00
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 ) ;
SQ_Call ( v , 4 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
2022-09-06 00:08:26 +08:00
int ret = sub11A8F60 ( a1 , 0 , a2 , a3 , a4 ) ;
2023-11-13 14:00:01 +08:00
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_DrawItemFront " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQPushInt ( v , a4 ) ;
SQ_Call ( v , 4 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
2022-09-06 00:08:26 +08:00
return ret ;
}
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
2022-09-06 00:08:26 +08:00
}
2023-11-13 14:00:01 +08:00
2022-11-06 23:12:18 +08:00
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 ) ;
}
*/
2023-11-13 14:00:01 +08:00
2022-09-06 00:08:26 +08:00
//<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;
2023-11-13 14:00:01 +08:00
2022-09-06 00:08:26 +08:00
return sub_11B2390 ( a1 , 0 , a2 , a3 , a4 , a5 , a6 ) ;
}
2023-11-13 14:00:01 +08:00
2022-09-06 00:08:26 +08:00
/*
//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 ) ;
}
2023-11-13 14:00:01 +08:00
2023-04-14 14:56:01 +08:00
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>
{
2023-11-13 14:00:01 +08:00
int StrIndex ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Event_Pos " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , 1 ) ;
SQ_Call ( v , 2 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & StrIndex ) ;
SQPop ( v , 3 ) ;
a2 + = 144 ;
a3 = ( DWORD * * ) StrIndex ;
2023-04-14 14:56:01 +08:00
}
2023-05-12 16:08:39 +08:00
2023-04-14 14:56:01 +08:00
return OldEvent ( thisc , Seat , a2 , a3 , a4 ) ;
}
2023-11-13 14:00:01 +08:00
//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 == 371 && a2 == 461) {
//
// }
// 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);
//}
2023-04-14 14:56:01 +08:00
2023-05-12 16:08:39 +08:00
typedef DWORD ( _fastcall _11816B0 ) ( DWORD thisc , DWORD Seat , DWORD * a2 , int a3 ) ;
static _11816B0 * Old11816B0 ;
//<2F> <> ͼHOOK
DWORD _fastcall New11816B0 ( DWORD thisc , DWORD Seat , DWORD * a2 , int a3 )
{
wchar_t * str = ( wchar_t * ) a3 ;
char * OutPutText = DNFTOOL : : SquirrelU2W ( str ) ;
std : : string B = OutPutText ;
2023-11-13 14:00:01 +08:00
if ( B . find ( " prepareDraw_appendage " ) ! = std : : string : : npos ) {
std : : cout < < 111 < < std : : endl ;
}
2023-05-12 16:08:39 +08:00
delete [ ] OutPutText ;
return Old11816B0 ( thisc , Seat , a2 , a3 ) ;
}
2023-11-13 14:00:01 +08:00
typedef struct REG
{
DWORD EAX ;
DWORD EBX ;
DWORD ECX ;
DWORD EDX ;
DWORD ESI ;
DWORD EDI ;
DWORD ESP ;
DWORD EBP ;
} REG ;
REG heart = { 0 } ;
//GetIntData
typedef DWORD ( _fastcall _908510 ) ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) ;
static _908510 * Old908510 ;
DWORD _fastcall New908510 ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 )
{
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old908510 ( thisc , Seat , a2 , a3 ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_IntData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , thisc ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
return NutAddValue + Old908510 ( thisc , Seat , a2 , a3 ) ;
}
typedef DWORD ( _fastcall _909020 ) ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) ;
static _908510 * Old909020 ;
DWORD _fastcall New909020 ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 )
2022-03-08 12:57:35 +08:00
{
2023-11-13 14:00:01 +08:00
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old909020 ( thisc , Seat , a2 , a3 ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_SkillCoolTime " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , thisc ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
return NutAddValue + Old909020 ( thisc , Seat , a2 , a3 ) ;
}
2022-11-06 23:12:18 +08:00
2023-11-13 14:00:01 +08:00
typedef struct LevelDataBuffer
{
DWORD SkillAddresss ;
DWORD SkillIdx ;
DWORD ObjectAddress ;
2023-04-14 14:56:01 +08:00
2023-11-13 14:00:01 +08:00
} RELevelDataBufferG ;
LevelDataBuffer _LevelDataBuffer = { 0 } ;
2022-11-06 23:12:18 +08:00
2023-11-13 14:00:01 +08:00
//GetLevelData
typedef DWORD ( _fastcall _908770 ) ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 , int a4 , int a5 , int a6 , int a7 , int a8 , int a9 ) ;
static _908770 * Old908770 ;
DWORD _fastcall New908770 ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 , int a4 , int a5 , int a6 , int a7 , int a8 , int a9 )
{
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old908770 ( thisc , Seat , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 ) ;
/*
* thisc = <EFBFBD> <EFBFBD> <EFBFBD> ܶ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
* a2 = <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݺ <EFBFBD> λ
* a3 = <EFBFBD> <EFBFBD> <EFBFBD> ܵ ȼ <EFBFBD>
* a4 = <EFBFBD> <EFBFBD> ɫ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ
*/
_LevelDataBuffer . SkillAddresss = thisc ;
_LevelDataBuffer . SkillIdx = a2 ;
_LevelDataBuffer . ObjectAddress = a3 ;
int ret = Old908770 ( thisc , Seat , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 ) ;
return ret ;
}
//ԭ<> <D4AD> <EFBFBD> <EFBFBD> ɫGet
typedef DWORD ( _fastcall _90A4A0 ) ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) ;
static _90A4A0 * Old90A4A0 ;
DWORD _fastcall New90A4A0 ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) {
static bool OpenSw = false ;
if ( ! OpenSw )
{
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 1 )
{
OpenSw = true ;
}
return Old90A4A0 ( thisc , Seat , a2 , a3 ) ;
}
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old90A4A0 ( thisc , Seat , a2 , a3 ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_LevelData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , thisc ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
int ret = NutAddValue + Old90A4A0 ( thisc , Seat , a2 , a3 ) ;
return ret ;
}
//<2F> <> ȡ<EFBFBD> <C8A1> <EFBFBD> ܶ<EFBFBD> <DCB6> <EFBFBD>
typedef int __fastcall sub_TTTTTT ( int a1 , int a2 , int a3 ) ;
static sub_TTTTTT * TFuncsub_GetSkillAddress = ( sub_TTTTTT * ) 0x8406C0 ;
//Nut<75> <74> ɫGet1
typedef DWORD ( _fastcall _BA89D0 ) ( DWORD thisc , DWORD Seat , DWORD a2 , DWORD a3 , DWORD a4 ) ;
static _BA89D0 * OldBA89D0 ;
DWORD _fastcall NewBA89D0 ( DWORD thisc , DWORD Seat , DWORD a2 , DWORD a3 , DWORD a4 ) {
static bool OpenSw = false ;
if ( ! OpenSw )
{
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 1 )
{
OpenSw = true ;
}
return OldBA89D0 ( thisc , Seat , a2 , a3 , a4 ) ;
}
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return OldBA89D0 ( thisc , Seat , a2 , a3 , a4 ) ;
DWORD ADDRESS = TFuncsub_GetSkillAddress ( thisc , 0 , a3 ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_LevelData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , ADDRESS ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , thisc ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
int ret = NutAddValue + OldBA89D0 ( thisc , Seat , a2 , a3 , a4 ) ;
return ret ;
}
//Nut<75> <74> ɫGet2
typedef DWORD ( _5A40E0 ) ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 ) ;
static _5A40E0 * Old5A40E0 ;
DWORD New5A40E0 ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 ) {
static bool OpenSw = false ;
if ( ! OpenSw )
{
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 1 )
{
OpenSw = true ;
}
return Old5A40E0 ( a1 , a2 , a3 , a4 ) ;
}
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old5A40E0 ( a1 , a2 , a3 , a4 ) ;
DWORD ADDRESS = TFuncsub_GetSkillAddress ( a1 , 0 , a2 ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_LevelData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , ADDRESS ) ;
SQPushInt ( v , a3 ) ;
SQPushInt ( v , a1 ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
int ret = NutAddValue + Old5A40E0 ( a1 , a2 , a3 , a4 ) ;
return ret ;
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0> HOOK
typedef DWORD ( _fastcall _90FB30 ) ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) ;
static _90FB30 * Old90FB30 ;
DWORD _fastcall New90FB30 ( DWORD thisc , DWORD Seat , DWORD a2 , int a3 ) {
if ( a3 ! = * ( int * ) 0x1AB7CDC ) return Old90FB30 ( thisc , 0 , a2 , a3 ) ;
_LevelDataBuffer . SkillAddresss = thisc ;
_LevelDataBuffer . SkillIdx = a2 ;
_LevelDataBuffer . ObjectAddress = a3 ;
return Old90FB30 ( thisc , 0 , a2 , a3 ) ;
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> HOOK
typedef DWORD ( _75D1F0 ) ( DWORD thisc ) ;
static _75D1F0 * Old75D1F0 ;
DWORD New75D1F0 ( DWORD thisc ) {
static bool OpenSw = false ;
if ( ! OpenSw )
{
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 1 )
{
OpenSw = true ;
}
return Old75D1F0 ( thisc ) ;
}
if ( _LevelDataBuffer . ObjectAddress ! = * ( int * ) 0x1AB7CDC ) return Old75D1F0 ( thisc ) ;
int NutAddValue ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_Get_Ex_LevelData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , _LevelDataBuffer . SkillAddresss ) ;
SQPushInt ( v , _LevelDataBuffer . SkillIdx ) ;
SQPushInt ( v , _LevelDataBuffer . ObjectAddress ) ;
SQ_Call ( v , 4 , 1 , 1 ) ;
SQGetInt ( v , - 1 , & NutAddValue ) ;
SQPop ( v , 3 ) ;
if ( NutAddValue ! = 0 ) {
int ret = NutAddValue + Old75D1F0 ( thisc ) ;
_LevelDataBuffer . SkillAddresss = 0 ;
_LevelDataBuffer . SkillIdx = 0 ;
_LevelDataBuffer . ObjectAddress = 0 ;
return ret ;
}
return Old75D1F0 ( thisc ) ;
}
typedef int ( _fastcall _Get_Img ) ( int thisc , void * , int a2 ) ;
static _Get_Img * OldGet_Img ;
int _fastcall NewGet_Img ( int thisc , void * , int a2 ) {
2024-03-31 13:23:55 +08:00
if ( a2 = = 239 ) {
std : : cout < < 12123123 < < std : : endl ;
2023-11-13 14:00:01 +08:00
}
return OldGet_Img ( thisc , 0 , a2 ) ;
}
typedef int ( _fastcall _11C0410 ) ( int * thisc , void * , int a2 , wchar_t * a3 ) ;
static _11C0410 * Old11C0410 ;
int _fastcall New11C0410 ( int * thisc , void * , int a2 , wchar_t * a3 )
{
wchar_t * str = ( wchar_t * ) a3 ;
//if (!wcscmp(str, L"character/swordman/effect/frenzy/blood-spirits.img")) {
// std::cout << 111 << std::endl;
//}
char * OutPutText = DNFTOOL : : wchar_tTochar ( str ) ;
2024-03-31 13:23:55 +08:00
static std : : map < std : : string , bool > UNN ;
2023-11-13 14:00:01 +08:00
std : : string B = OutPutText ;
2024-03-31 13:23:55 +08:00
if ( B . find ( " .img " ) ! = std : : string : : npos )
{
if ( ! UNN [ B ] ) {
UNN [ B ] = true ;
std : : cout < < B < < std : : endl ;
}
}
2023-11-13 14:00:01 +08:00
//if (B.find("extrafeature") != std::string::npos) {
// std::cout << B << std::endl;
//}
delete [ ] OutPutText ;
return Old11C0410 ( thisc , 0 , a2 , a3 ) ;
}
void __declspec ( naked ) PlayerEach2 ( ) {
static int address = 0x11B34E0 ;
static int address1 = 0x001004B59 ;
_asm
{
pushad
pushfd
mov heart . ECX , ecx
mov heart . EDI , edi
}
if ( heart . EDI = = 2 ) {
SQPushRootTable ( * ( uint32_t * ) 0x1AF3544 ) ;
SQPushString ( * ( uint32_t * ) 0x1AF3544 , L " Sq_PlayerEachPos " , - 1 ) ;
SQ_Get ( * ( uint32_t * ) 0x1AF3544 , - 2 ) ;
SQPushRootTable ( * ( uint32_t * ) 0x1AF3544 ) ;
SQPushInt ( * ( uint32_t * ) 0x1AF3544 , * ( int * ) ( heart . ECX + 0x14 ) ) ;
SQPushInt ( * ( uint32_t * ) 0x1AF3544 , * ( int * ) ( heart . ECX + 0x18 ) ) ;
SQ_Call ( * ( uint32_t * ) 0x1AF3544 , 3 , 0 , 1 ) ;
SQPop ( * ( uint32_t * ) 0x1AF3544 , 2 ) ;
}
_asm {
popfd
popad
call address
test al , al
jmp address1
}
}
REG MouseAsm = { 0 } ;
void __declspec ( naked ) MouseWheelUp ( ) {
static int address = 0x11BDE12 ;
static int address1 = 0x0011BDEEE ;
static int address2 = 0x0011BDEDF ;
static int address3 = 0x0011BDECE ;
_asm
{
pushad
pushfd
mov MouseAsm . EDI , edi
mov MouseAsm . ECX , ecx
}
if ( ( int ) * ( BYTE * ) 0x1B46886 = = 0 ) {
_asm {
popfd
popad
jmp address
}
}
else {
if ( MouseAsm . EDI = = 0x20A ) {
if ( MouseAsm . ECX = = 0x780000 ) {
_asm {
popfd
popad
jmp address3
}
}
else {
_asm {
popfd
popad
jmp address2
}
}
}
else {
_asm {
popfd
popad
jmp address1
}
}
}
}
REG PassObjectPoAsm = { 0 } ;
typedef DWORD ( _fastcall _6A4630 ) ( DWORD thisc , DWORD Seat , DWORD a2 , DWORD a3 ) ;
static _6A4630 * Old6A4630 = ( _6A4630 * ) 0x6A4630 ;
static wchar_t * str = L " TETETETE " ;
void __declspec ( naked ) PassObjectPoJmp ( ) {
static int address = 0xE5AE58 ;
static int address1 = 0xE5AE68 ;
_asm
{
pushad
pushfd
mov PassObjectPoAsm . EDI , edi
mov PassObjectPoAsm . EAX , eax
}
//printf("=%2x\n", *(DWORD*)(PassObjectPoAsm.EDI + 0xEE8));
// printf("=%2x\n", *(DWORD*)(PassObjectPoAsm.EDI + 0xEFC));
if ( * ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEE8 ) = = 0 & & * ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEFC ) = = 0 ) {
* ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEE8 ) = ( DWORD ) str ;
* ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEFC ) = 0XF ;
Old6A4630 ( PassObjectPoAsm . EDI , 0 , ( DWORD ) 0x1ACDD80 , PassObjectPoAsm . EAX ) ;
* ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEE8 ) = 0 ;
* ( DWORD * ) ( PassObjectPoAsm . EDI + 0xEFC ) = 0 ;
_asm {
popfd
popad
jmp address1
}
}
_asm {
popfd
popad
mov edx , [ edi ]
jmp address
}
}
void __declspec ( naked ) TestJmp ( ) {
static int address = 0X04627A7 ;
static int address1 = 0x04627EB ;
_asm
{
pushad
pushfd
mov PassObjectPoAsm . ECX , ecx
}
if ( * ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = = 24000001 )
{
//printf("<22> ɹ<EFBFBD> \n\n");
// printf("ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
* ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = 24000002 ;
//printf("<22> ɹ<EFBFBD> ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
}
_asm {
popfd
popad
mov edx , dword ptr ds : [ ebx ]
cmp edx , dword ptr ds : [ ecx + 0xC ]
jge dnf4627EB
jmp address
dnf4627EB :
jmp address1
}
}
void __declspec ( naked ) TestJmp1 ( ) {
static int address = 0X04627A7 ;
static int address1 = 0x04627EB ;
_asm
{
pushad
pushfd
mov PassObjectPoAsm . ECX , ecx
}
if ( * ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = = 24000001 )
{
//printf("<22> ɹ<EFBFBD> \n\n");
//printf("ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
* ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = 24000002 ;
// printf("<22> ɹ<EFBFBD> ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
}
_asm {
popfd
popad
mov eax , dword ptr ds : [ edi ]
cmp eax , dword ptr ds : [ ecx + 0xC ]
jl dnf46259B
jmp address
dnf46259B :
jmp address1
}
}
void __declspec ( naked ) TestJmp2 ( ) {
static int address = 0X04627A7 ;
static int address1 = 0x46259B ;
_asm
{
pushad
pushfd
mov PassObjectPoAsm . ECX , ecx
}
//printf("ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
if ( * ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = = 24000001 )
{
// printf("<22> ɹ<EFBFBD> \n\n");
* ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = 24000002 ;
}
_asm {
popfd
popad
mov edx , dword ptr ds : [ ebx ]
cmp edx , dword ptr ds : [ ecx + 0xC ]
jge dnf4627EB
jmp address
dnf4627EB :
jmp address1
}
}
void __declspec ( naked ) TestJmp3 ( ) {
static int address = 0x0462584 ;
static int address1 = 0x0046259B ;
_asm
{
pushad
pushfd
mov PassObjectPoAsm . ECX , ecx
}
if ( * ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = = 24000001 )
{
//printf("<22> ɹ<EFBFBD> \n\n");
//printf("ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
* ( DWORD * ) ( PassObjectPoAsm . ECX + 0xC ) = 24000002 ;
//printf("<22> ɹ<EFBFBD> ֵ=%d\n", *(DWORD*)(PassObjectPoAsm.ECX + 0xC));
}
_asm {
popfd
popad
mov eax , dword ptr ds : [ edi ]
cmp eax , dword ptr ds : [ ecx + 0xC ]
jl dnf4627EB
jmp address
dnf4627EB :
jmp address1
}
}
//void __declspec(naked)DrawMainCallBack() {
//
// static int address = 0x1A5FB20;
// static int address3 = 0xE6DF4B;
// static int address1 = 0xE6D9AE;
// _asm
// {
// pushad
// pushfd
// }
//
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushString(*(uint32_t*)0x1AF3544, L"Sq_DrawMainMaxLayerCustomUI", -1);
// SQ_Get(*(uint32_t*)0x1AF3544, -2);
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushInt(*(uint32_t*)0x1AF3544, 111);
// SQ_Call(*(uint32_t*)0x1AF3544, 2, 0, 1);
// SQPop(*(uint32_t*)0x1AF3544, 2);
//
//
// _asm {
// popfd
// popad
// mov ecx, address
// test ecx, ecx
// jmp address1
// }
//}
2024-03-31 13:23:55 +08:00
2023-11-13 14:00:01 +08:00
typedef DWORD ( _fastcall _4C61F0 ) ( DWORD thisc , DWORD Seat ) ;
static _4C61F0 * Old4C61F0 ;
# include "json.hpp"
using json = nlohmann : : json ;
extern bool jiaoben ;
extern std : : vector < std : : string > BaseData ;
# include<fstream>
# include <dinput.h>
2024-03-31 13:23:55 +08:00
void outputWcharToFile ( const wchar_t * str , const wchar_t * filename ) {
std : : wofstream file ( filename ) ;
if ( file . is_open ( ) ) {
file < < str ;
file . close ( ) ;
}
else {
std : : wcerr < < L " Error: Unable to open file " < < filename < < std : : endl ;
}
}
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
void Suxn ( ) {
size_t Ds = BaseData . size ( ) ;
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
for ( size_t i = 0 ; i < Ds ; i + + )
{
std : : string filename = " BaseData " + std : : to_string ( i ) ;
std : : string str = BaseData [ i ] ;
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
//std::cout << nutstr << std::endl;
wchar_t * sfile = DNFTOOL : : charTowchar_t ( ( char * ) filename . c_str ( ) ) ;
wchar_t * ss = DNFTOOL : : charTowchar_t ( ( char * ) str . c_str ( ) ) ;
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
//outputWcharToFile(ss, sfile);
//wprintf(L"Function:%s \n", ss);
//std::cout << i << std::endl;
uint32_t v = GetSqVm ( ) ;
squirrel : : SQdofileBuffer ( v , sfile , ss ) ;
}
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
BaseData . clear ( ) ;
jiaoben = false ;
}
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
//DrawMain HOOK
DWORD _fastcall New4C61F0 ( DWORD thisc , DWORD Seat )
{
static bool Init = false ;
2023-11-13 14:00:01 +08:00
2024-03-31 13:23:55 +08:00
if ( BaseData . size ( ) > 0 & & jiaoben = = true & & DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 1 ) {
Suxn ( ) ;
2023-11-13 14:00:01 +08:00
}
if ( Init ) {
//DrawMain
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_DrawMainMaxLayerCustomUI " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , 111 ) ;
SQ_Call ( v , 2 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
2024-03-31 13:23:55 +08:00
SQPushRootTable ( v ) ;
SQPushString ( v , L " L_DrawWindow_A " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQ_Call ( v , 1 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
2023-11-13 14:00:01 +08:00
}
# ifndef SELL
//ѭ<> <D1AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
squirrel : : SqrCallBackFunc ( ) ;
# endif
static bool mouseInit = false ;
//ѡ <> <D1A1> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB> <EFBFBD> <EFBFBD>
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 0 ) {
if ( ! Init )
{
//Sleep(1000);
squirrel : : InitGameScript ( ) ; //<2F> <> <EFBFBD> ó<EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Init = true ;
mouseInit = true ;
}
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_SelectCharacter " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Lenheart " , - 1 ) ;
SQ_Call ( v , 2 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
}
# ifdef MOUSE_SWITCH
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ص<EFBFBD>
if ( mouseInit ) {
uint32_t v = GetSqVm ( ) ;
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
return Old4C61F0 ( thisc , Seat ) ;
}
typedef DWORD ( _cdecl _7EEED0 ) ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 , DWORD a5 , DWORD a6 ) ;
static _7EEED0 * Old7EEED0 ;
//<2F> ˺<EFBFBD> <CBBA> <EFBFBD> <EFBFBD> <EFBFBD> HOOK
DWORD _cdecl New7EEED0 ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 , DWORD a5 , DWORD a6 )
{
int StrIndex ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_PushDamageFontData " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , a1 ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQPushInt ( v , a4 ) ;
SQPushInt ( v , a5 ) ;
SQPushInt ( v , a6 ) ;
SQ_Call ( v , 7 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
SQGetInt ( v , - 1 , & StrIndex ) ;
if ( StrIndex = = 1 ) {
return 0 ;
}
else {
DWORD ret = Old7EEED0 ( a1 , a2 , a3 , a4 , a5 , a6 ) ;
return ret ;
}
}
typedef DWORD ( _fastcall _F542F0 ) ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 , DWORD a5 , DWORD a6 ) ;
static _F542F0 * OldF542F0 ;
//
DWORD _cdecl NewF542F0 ( DWORD a1 , DWORD a2 , DWORD a3 , DWORD a4 , DWORD a5 , DWORD a6 )
{
std : : cout < < a1 < < std : : endl ;
std : : cout < < a2 < < std : : endl ;
std : : cout < < a3 < < std : : endl ;
std : : cout < < a4 < < std : : endl ;
std : : cout < < a5 < < std : : endl ;
std : : cout < < a6 < < std : : endl ;
DWORD ret = OldF542F0 ( a1 , a2 , a3 , a4 , a5 , a6 ) ;
return ret ;
}
typedef DWORD ( _499160 ) ( DWORD a1 ) ;
static _499160 * Old499160 ;
DWORD _cdecl New499160 ( DWORD a1 )
{
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_MessageWindowDraw " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , 1 ) ;
SQPushInt ( v , 1 ) ;
SQ_Call ( v , 3 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
DWORD ret = Old499160 ( a1 ) ;
return ret ;
}
int HookPlayerInfoString ( wchar_t * str ) {
if ( str ! = NULL ) {
wchar_t * clone = new wchar_t [ wcslen ( str ) + 2 ] ;
wcscpy ( clone , str ) ;
std : : string GameStr ;
DNFTOOL : : Wchar_tToString ( GameStr , clone ) ;
delete [ ] clone ;
int Value = atoi ( GameStr . c_str ( ) ) ;
Value = 9999999 ;
wchar_t wcs [ 128 ] ;
wsprintf ( wcs , L " %d " , Value ) ;
return ( int ) & wcs ;
}
}
wchar_t PlayerInfowcs [ 128 ] ;
static int NewStrPlayerInfo ;
void __declspec ( naked ) PlayerInfo ( ) {
static int address = 0XEDE480 ;
static int address1 = 0X0EDE6CD ;
_asm
{
pushad
pushfd
mov heart . ECX , ecx
mov heart . ESI , esi
}
//std::cout << "<22> Լ<EFBFBD> <D4BC> <EFBFBD> <EFBFBD> <EFBFBD> = "<< heart.ECX << std::endl;
//wprintf(L"<22> Լ<EFBFBD> <D4BC> <EFBFBD> ֵ = %s\n\n", heart.ESI + 0x18);
NewStrPlayerInfo = 9999999 ;
wsprintf ( ( wchar_t * ) ( heart . ESI + 0x18 ) , L " %d " , NewStrPlayerInfo ) ;
/*wchar_t* strbuffer = (wchar_t*)(heart.ESI + 0x18);
if ( strbuffer ! = NULL ) {
wchar_t * clone = new wchar_t [ wcslen ( strbuffer ) + 2 ] ;
wcscpy ( clone , strbuffer ) ;
std : : string GameStr ;
DNFTOOL : : Wchar_tToString ( GameStr , clone ) ;
delete [ ] clone ;
int Value = atoi ( GameStr . c_str ( ) ) ;
Value = 9999999 ;
wchar_t wcs [ 128 ] ;
wsprintf ( wcs , L " %d " , Value ) ;
} */
//std::wcout << "Esi" << *(wchar_t*)(heart.ESI + 0x18) << std::endl;
//if (heart.EDI == 2) {
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushString(*(uint32_t*)0x1AF3544, L"Sq_PlayerEachPos", -1);
// SQ_Get(*(uint32_t*)0x1AF3544, -2);
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushInt(*(uint32_t*)0x1AF3544, *(int*)(heart.ECX + 0x14));
// SQPushInt(*(uint32_t*)0x1AF3544, *(int*)(heart.ECX + 0x18));
// SQ_Call(*(uint32_t*)0x1AF3544, 3, 0, 1);
// SQPop(*(uint32_t*)0x1AF3544, 2);
//}
_asm {
popfd
popad
push ecx
mov ecx , ebx
call address
jmp address1
}
}
void __declspec ( naked ) PlayerInfo2 ( ) {
static int address = 0XEDE480 ;
static int address1 = 0x0EDE6E3 ;
_asm
{
pushad
pushfd
mov heart . ECX , ecx
mov heart . ESI , esi
}
NewStrPlayerInfo = 9999999 ;
wsprintf ( ( wchar_t * ) ( heart . ESI + 0x18 ) , L " %d " , NewStrPlayerInfo ) ;
//std::wcout << "Esi" << *(wchar_t*)(heart.ESI + 0x18) << std::endl;
//if (heart.EDI == 2) {
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushString(*(uint32_t*)0x1AF3544, L"Sq_PlayerEachPos", -1);
// SQ_Get(*(uint32_t*)0x1AF3544, -2);
// SQPushRootTable(*(uint32_t*)0x1AF3544);
// SQPushInt(*(uint32_t*)0x1AF3544, *(int*)(heart.ECX + 0x14));
// SQPushInt(*(uint32_t*)0x1AF3544, *(int*)(heart.ECX + 0x18));
// SQ_Call(*(uint32_t*)0x1AF3544, 3, 0, 1);
// SQPop(*(uint32_t*)0x1AF3544, 2);
//}
_asm {
popfd
popad
push ecx
lea ecx , [ ebx + 0x7E ]
call address
jmp address1
}
}
typedef int ( _fastcall _FA42D0 ) ( int a1 , int seat , int a2 , int a3 ) ;
static _FA42D0 * OldFA42D0 ;
int _fastcall NewFA42D0 ( int a1 , int seat , int a2 , int a3 )
{
OtherPlayerInfoType = a2 + 1 ;
return OldFA42D0 ( a1 , seat , a2 , a3 ) ;
}
typedef int ( _FA3570 ) ( DWORD * a1 , int a2 , int a3 ) ;
static _FA3570 * OldFA3570 ;
int NewFA3570 ( DWORD * a1 , int a2 , int a3 )
{
int ret = OldFA3570 ( a1 , a2 , a3 ) ;
OtherPlayerInfoImg = ret ;
return 0 ;
}
typedef void ( _fastcall _4B8430 ) ( int a1 , int seat , int a2 ) ;
static _4B8430 * Old4B8430 ;
void _fastcall New4B8430 ( int a1 , int seat , int a2 )
{
//return Old4B8430(a1, seat, a2);
}
//<2F> <> <EFBFBD> Ƽ <EFBFBD> <C6BC> <EFBFBD>
typedef void ( _fastcall _909D70 ) ( int a1 , int seat , int a2 , int a3 , int a4 , int a5 , int a6 , int a7 , int a8 , int a9 , int a10 , int a11 ) ;
static _909D70 * Old909D70 ;
void _fastcall New909D70 ( int a1 , int seat , int a2 , int a3 , int a4 , int a5 , int a6 , int a7 , int a8 , int a9 , int a10 , int a11 )
{
return Old909D70 ( a1 , seat , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 ) ;
//return Old4B8430(a1, seat, a2);
}
typedef int ( _fastcall _1030C30 ) ( int a1 , int a2 , BYTE * a3 ) ;
static _1030C30 * Old1030C30 ;
int _fastcall New1030C30 ( int a1 , int a2 , BYTE * a3 )
{
int ret = Old1030C30 ( a1 , a2 , a3 ) ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_DrawMiniMapUI " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , 111 ) ;
SQ_Call ( v , 2 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
return ret ;
}
2024-03-31 13:23:55 +08:00
typedef int ( _fastcall _8EE1E0 ) ( DWORD thisc , DWORD Seat , int a2 , char a3 , char a4 ) ;
static _8EE1E0 * Old8EE1E0 ;
int _fastcall New8EE1E0 ( DWORD thisc , DWORD Seat , int a2 , char a3 , char a4 )
{
int ret = Old8EE1E0 ( thisc , Seat , a2 , a3 , a4 ) ;
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " Sq_CompleteTask " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , a2 ) ;
SQPushInt ( v , a3 ) ;
SQPushInt ( v , a4 ) ;
SQ_Call ( v , 4 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
return ret ;
}
typedef int ( _fastcall _674030 ) ( wchar_t * thisc , DWORD Seat , int a2 , int a3 ) ;
static _674030 * Old674030 ;
int _fastcall New674030 ( wchar_t * thisc , DWORD Seat , int a2 , int a3 )
{
wchar_t * strbuffer = ( wchar_t * ) a2 ;
wchar_t * clone = new wchar_t [ wcslen ( strbuffer ) + 2 ] ;
wcscpy ( clone , strbuffer ) ;
std : : string GameStr ;
DNFTOOL : : Wchar_tToString ( GameStr , clone ) ;
delete [ ] clone ;
int ret = Old674030 ( thisc , Seat , a2 , a3 ) ;
if ( GameStr . find ( " drawMainCustomUI_ " ) ! = std : : string : : npos ) {
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " L_drawMainCustomUI_All " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQ_Call ( v , 1 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
}
return ret ;
}
int AByteLittleToInt ( unsigned char * Count )
{
int int1 = Count [ 0 ] & 0xff ;
int int2 = ( Count [ 1 ] & 0xff ) < < 8 ;
int int3 = ( Count [ 2 ] & 0xff ) < < 16 ;
int int4 = ( Count [ 3 ] & 0xff ) < < 24 ;
return int1 | int2 | int3 | int4 ;
}
typedef int ( _fastcall _6FE1D0 ) ( DWORD * thisc , DWORD Seat , int a2 , int a3 ) ;
static _6FE1D0 * Old6FE1D0 ;
int _fastcall New6FE1D0 ( DWORD * thisc , DWORD Seat , int a2 , int a3 )
{
std : : cout < < " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <EFBFBD> " < < ( int ) * ( unsigned __int16 * ) ( a2 + 1 ) < < std : : endl ;
if ( a2 ) {
//std::cout << "<22> <> ַΪ<D6B7> <CEAA> " << std::hex << a2 << std::endl;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> ָ<EFBFBD> 룬<EFBFBD> <EBA3AC> <EFBFBD> 磺
char * address = ( char * ) a2 ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> 0x1234
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> ֽڲ<D6BD> ת<EFBFBD> <D7AA> Ϊint
unsigned char byte1 = address [ 0 ] ;
unsigned char byte2 = address [ 1 ] ;
// <20> <> <EFBFBD> <EFBFBD> ת<EFBFBD> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> int
//std::cout << "ת<> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> int<6E> <74> һ λΪ<CEBB> <CEAA> " << (int)byte1 << std::endl;
//std::cout << "ת<> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> int<6E> ڶ<EFBFBD> λΪ<CEBB> <CEAA> " << (int)byte2 << std::endl << std::endl << std::endl;
if ( ( int ) byte2 = = 23 ) {
for ( size_t i = 0 ; i < 0x1f ; i + + )
{
std : : cout < < ( int ) address [ i ] < < " " ;
}
std : : cout < < std : : endl ;
return 0 ;
}
}
//std::cout << (*(BYTE*)(a2)) << std::endl;
//std::cout << (*(BYTE*)(a2+1)) << std::endl;
//std::cout << (*(BYTE*)(a2+2)) << std::endl;
//std::cout << (*(BYTE*)(a2+3)) << std::endl;
int ret = Old6FE1D0 ( thisc , 0 , a2 , a3 ) ;
return ret ;
}
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ¼<EFBFBD>
typedef void ( _11BDC90 ) ( int a1 , unsigned int a2 , int a3 ) ;
static _11BDC90 * Old11BDC90 ;
void New11BDC90 ( int a1 , unsigned int a2 , int a3 ) {
static bool Init = false ;
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 0 ) {
if ( ! Init )
{
Init = true ;
}
}
if ( Init ) {
int X = * ( int * ) 0x1B4686C ;
int Y = * ( int * ) 0x1B46870 ;
if ( ( X | Y ) > = 0 ) {
uint32_t v = GetSqVm ( ) ;
DWORD VmTop = SQGetTop ( v ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " L_MouseCallBack " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQPushInt ( v , a1 ) ;
SQPushInt ( v , a2 ) ;
sq_pushinteger ( ( HSQUIRRELVM ) v , X ) ;
sq_pushinteger ( ( HSQUIRRELVM ) v , Y ) ;
SQ_Call ( v , 5 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
}
}
Old11BDC90 ( a1 , a2 , a3 ) ;
return ;
}
typedef int ( _fastcall _1183720 ) ( DWORD thisc , DWORD Seat , int a2 ) ;
static _1183720 * Old1183720 ;
int _fastcall New1183720 ( DWORD thisc , DWORD Seat , int a2 )
{
int ret = Old1183720 ( thisc , 0 , a2 ) ;
static bool Init = false ;
if ( DNFTOOL : : GetHook ( 0x1A5FB4C , " 0x14+0x28+ " ) = = 0 ) {
if ( ! Init )
{
Init = true ;
}
}
if ( Init ) {
if ( a2 = = 0x1a500f0 ) {
uint32_t v = GetSqVm ( ) ;
SQPushRootTable ( v ) ;
SQPushString ( v , L " L_DrawWindow_B " , - 1 ) ;
SQ_Get ( v , - 2 ) ;
SQPushRootTable ( v ) ;
SQ_Call ( v , 1 , 0 , 1 ) ;
SQPop ( v , 2 ) ;
}
}
return ret ;
}
2023-11-13 14:00:01 +08:00
# include "inlinehook.h"
int hook : : RegisterHook ( )
{
//<2F> <> <EFBFBD> Ҳ˵<D2B2> ѡ <EFBFBD> <D1A1> HOOK <20> лص<D0BB>
inlinehook SSS ( 0x001004B52 , ( int ) & PlayerEach2 ) ;
SSS . Motify_address ( ) ;
//<2F> <EFBFBD> <DEB8> <EFBFBD> <EFBFBD> <EFBFBD>
inlinehook MMM ( 0x011BDE05 , ( int ) & MouseWheelUp ) ;
MMM . Motify_address ( ) ;
2024-03-31 13:23:55 +08:00
//inlinehook QQQ(0x049DEDB, (int)&TestDDraw);
//QQQ.Motify_address();
2023-11-13 14:00:01 +08:00
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
//inlinehook WWW(0xEDE6C5, (int)&PlayerInfo);
//WWW.Motify_address();
////<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
//inlinehook EEE(0xEDE6DA, (int)&PlayerInfo2);
//EEE.Motify_address();
MH_Initialize ( ) ;
2024-03-31 13:23:55 +08:00
//<2F> <> <EFBFBD> ڻ<EFBFBD> <DABB> <EFBFBD> HOOK
MH_CreateHook ( ( void * ) 0x1183720 , & New1183720 , reinterpret_cast < void * * > ( & Old1183720 ) ) ;
MH_EnableHook ( ( void * ) 0x1183720 ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ¼<EFBFBD> HOOK
MH_CreateHook ( ( void * ) 0x11BDC90 , & New11BDC90 , reinterpret_cast < void * * > ( & Old11BDC90 ) ) ;
MH_EnableHook ( ( void * ) 0x11BDC90 ) ;
2023-11-13 14:00:01 +08:00
//N<> <4E> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ
MH_CreateHook ( ( void * ) 0x1030C30 , & New1030C30 , reinterpret_cast < void * * > ( & Old1030C30 ) ) ;
MH_EnableHook ( ( void * ) 0x1030C30 ) ;
2024-03-31 13:23:55 +08:00
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> HOOK
MH_CreateHook ( ( void * ) 0x8EE1E0 , & New8EE1E0 , reinterpret_cast < void * * > ( & Old8EE1E0 ) ) ;
MH_EnableHook ( ( void * ) 0x8EE1E0 ) ;
//<2F> ٷ<EFBFBD> <D9B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> NutHook
MH_CreateHook ( ( void * ) 0x674030 , & New674030 , reinterpret_cast < void * * > ( & Old674030 ) ) ;
MH_EnableHook ( ( void * ) 0x674030 ) ;
2023-11-13 14:00:01 +08:00
//MH_CreateHook((void*)0x909D70, &New909D70, reinterpret_cast<void**>(&Old909D70));
//MH_EnableHook((void*)0x909D70);
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> ֵHook
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> Hook
MH_CreateHook ( ( void * ) 0xFA42D0 , & NewFA42D0 , reinterpret_cast < void * * > ( & OldFA42D0 ) ) ;
MH_EnableHook ( ( void * ) 0xFA42D0 ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> ֵHook
MH_CreateHook ( ( void * ) 0xFA3570 , & NewFA3570 , reinterpret_cast < void * * > ( & OldFA3570 ) ) ;
MH_EnableHook ( ( void * ) 0xFA3570 ) ;
//MH_CreateHook((void*)0xEDE480, &NewEDE480, reinterpret_cast<void**>(&OldEDE480));
//MH_EnableHook((void*)0xEDE480);
//MH_CreateHook((void*)0xF542F0, &NewF542F0, reinterpret_cast<void**>(&OldF542F0));
//MH_EnableHook((void*)0xF542F0);
//MH_CreateHook((void*)0x9D2300, &New_9D2300, reinterpret_cast<void**>(&Old_9D2300));
//MH_EnableHook((void*)0x9D2300);
//<2F> <> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> HOOK
MH_CreateHook ( ( void * ) 0x499160 , & New499160 , reinterpret_cast < void * * > ( & Old499160 ) ) ;
MH_EnableHook ( ( void * ) 0x499160 ) ;
//DrawMain HOOK
MH_CreateHook ( ( void * ) 0x4C61F0 , & New4C61F0 , reinterpret_cast < void * * > ( & Old4C61F0 ) ) ;
MH_EnableHook ( ( void * ) 0x4C61F0 ) ;
# ifdef FONT_BANK_SYSTEM
//<2F> ˺<EFBFBD> <CBBA> <EFBFBD> <EFBFBD> <EFBFBD> HOOK
MH_CreateHook ( ( void * ) 0x7EEED0 , & New7EEED0 , reinterpret_cast < void * * > ( & Old7EEED0 ) ) ;
MH_EnableHook ( ( void * ) 0x7EEED0 ) ;
# endif
//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 ) ) ;
2022-11-06 23:12:18 +08:00
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 ) ;
2024-03-31 13:23:55 +08:00
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-05-12 16:08:39 +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-11-13 14:00:01 +08:00
2022-11-29 20:38:55 +08:00
MH_CreateHook ( ( void * ) 0x11A8F60 , & newsub11A8F60 , reinterpret_cast < void * * > ( & sub11A8F60 ) ) ;
MH_EnableHook ( ( void * ) 0x11A8F60 ) ;
2023-11-13 14:00:01 +08:00
FILE * file = fopen ( " ImagePacks2/!HUD_Yosin<69> ټ<EFBFBD> UI.NPK " , " rb " ) ;
if ( file ) {
//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 ) ;
//<2F> <> <EFBFBD> ƾ<EFBFBD> <C6BE> <EFBFBD> <EFBFBD> <EFBFBD> Hook
MH_CreateHook ( ( void * ) 0x4B8430 , & New4B8430 , reinterpret_cast < void * * > ( & Old4B8430 ) ) ;
MH_EnableHook ( ( void * ) 0x4B8430 ) ;
}
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);
2023-11-13 14:00:01 +08:00
//HOOK PushString
MH_CreateHook ( ( void * ) 0x1358A60 , & LMySqPushString , reinterpret_cast < void * * > ( & LrealSqPushString ) ) ;
MH_EnableHook ( ( void * ) 0x1358A60 ) ;
2022-09-06 00:08:26 +08:00
2023-05-12 16:08:39 +08:00
//MH_CreateHook((void*)0x11816B0, &New11816B0, reinterpret_cast<void**>(&Old11816B0));
//MH_EnableHook((void*)0x11816B0);
2022-09-06 00:08:26 +08:00
2023-11-13 14:00:01 +08:00
//<2F> <> ȡ<EFBFBD> <C8A1> ̬<EFBFBD> <CCAC> <EFBFBD> <EFBFBD>
MH_CreateHook ( ( void * ) 0x908510 , & New908510 , reinterpret_cast < void * * > ( & Old908510 ) ) ;
MH_EnableHook ( ( void * ) 0x908510 ) ;
////<2F> <> ȡ<EFBFBD> <C8A1> ȴ
MH_CreateHook ( ( void * ) 0x909020 , & New909020 , reinterpret_cast < void * * > ( & Old909020 ) ) ;
MH_EnableHook ( ( void * ) 0x909020 ) ;
////<2F> <> ȡ<EFBFBD> <C8A1> ̬<EFBFBD> <CCAC> <EFBFBD> <EFBFBD>
//MH_CreateHook((void*)0x0908770, &New908770, reinterpret_cast<void**>(&Old908770));
//MH_EnableHook((void*)0x0908770);
////<2F> <> ȡ<EFBFBD> <C8A1> ̬<EFBFBD> <CCAC> <EFBFBD> <EFBFBD>
MH_CreateHook ( ( void * ) 0x090A4A0 , & New90A4A0 , reinterpret_cast < void * * > ( & Old90A4A0 ) ) ;
MH_EnableHook ( ( void * ) 0x090A4A0 ) ;
MH_CreateHook ( ( void * ) 0x0BA89D0 , & NewBA89D0 , reinterpret_cast < void * * > ( & OldBA89D0 ) ) ;
MH_EnableHook ( ( void * ) 0x0BA89D0 ) ;
MH_CreateHook ( ( void * ) 0x05A40E0 , & New5A40E0 , reinterpret_cast < void * * > ( & Old5A40E0 ) ) ;
MH_EnableHook ( ( void * ) 0x05A40E0 ) ;
//MH_CreateHook((void*)0x90FB30, &New90FB30, reinterpret_cast<void**>(&Old90FB30));
//MH_EnableHook((void*)0x90FB30);
MH_CreateHook ( ( void * ) 0x075D1F0 , & New75D1F0 , reinterpret_cast < void * * > ( & Old75D1F0 ) ) ;
MH_EnableHook ( ( void * ) 0x075D1F0 ) ;
//MH_CreateHook((void*)0x11C0410, &New11C0410, reinterpret_cast<void**>(&Old11C0410));
//MH_EnableHook((void*)0x11C0410);
//MH_CreateHook((void*)0x11AA190, &NewGet_Img, reinterpret_cast<void**>(&OldGet_Img));
//MH_EnableHook((void*)0x11AA190);
//MH_CreateHook((void*)0x10041D0, &New10041D0, reinterpret_cast<void**>(&Old10041D0));
//MH_EnableHook((void*)0x10041D0);
2022-09-06 00:08:26 +08:00
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);
2024-03-31 13:23:55 +08:00
//<2F> հ <EFBFBD> HOOK
//MH_CreateHook((void*)0x06FE1D0, &New6FE1D0, reinterpret_cast<void**>(&Old6FE1D0));
//MH_EnableHook((void*)0x06FE1D0);
2022-03-16 10:03:39 +08:00
return 0 ;
}