| 
									
										
										
										
											2024-09-15 13:08:42 +08:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | #include "controller.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef int (*fnCUser_CheckMoveTown)(void *CUser, unsigned int a2); | 
					
						
							|  |  |  | typedef int (*fnWongWork_CDungeonClear_getClearedDungeonDiff)(void *thisC, short a2); | 
					
						
							|  |  |  | typedef signed int (*fnCUser_use_stackable)(void *CUser, short a2, void *a3, int a4, int a5); | 
					
						
							|  |  |  | typedef int (*fnWongWork_CItemUpgrade_Separate__DoProcUpgrade)(void *thisC, void *CUser, void *a3, void *a4); | 
					
						
							|  |  |  | typedef int (*fnCUserCharacInfo_incCurCharacUsedFatigue)(void *thisC, unsigned short a2); | 
					
						
							|  |  |  | typedef int (*fnDisPatcher_BuyItem_get_data)(void *a1, void *a2, int a3, void *a4); | 
					
						
							|  |  |  | typedef bool (*fnDispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon)(int a1, void *CUser, int a3); | 
					
						
							|  |  |  | typedef int (*fnCParty_get_item)(void *thisC, void *CUser, int a4, bool a5, char a6, int *a7, unsigned char *a8, bool *a9); | 
					
						
							|  |  |  | typedef int (*fnCInventory_insertItemIntoInventory)(void **a1, __int64 a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, char a16, int a17, unsigned char a18, unsigned char a19); | 
					
						
							|  |  |  | typedef int (*fnCParty__onGetItem)(void *thisC, void *a2, unsigned int a3, int a4); | 
					
						
							|  |  |  | typedef int (*fnCUser_get_unique_id)(void *thisC); | 
					
						
							|  |  |  | typedef int (*fnCHackLog_OverDamage_GetDungeonLimitDamageAndHackType)(void *a1, _DWORD *a2, _DWORD *a3); | 
					
						
							|  |  |  | typedef int (*fnCDungeon_get_index)(void *CDungeon); | 
					
						
							|  |  |  | typedef int (*fnCUserCharacInfo_get_charac_level)(void *thisC); | 
					
						
							|  |  |  | typedef int (*fnCParty_getMonsterTotalExp)(void *thisC, unsigned int a2, char a3, int a4, float a5, float a6, bool a7); | 
					
						
							|  |  |  | typedef char *(*fnCParty_set_clear_reward_exp_parameter)(long double ExpAffectRate, void *thisC, void *a3, int a4, void *a5); | 
					
						
							|  |  |  | typedef int (*fnBingoEvent_sendOneMatchLineReward)(void *thisC, void *a2); | 
					
						
							|  |  |  | typedef int (*fnBingoEvent_sendMaxMatchLineReward)(void *thisC, void *a2); | 
					
						
							|  |  |  | typedef int (*fnCBattle_Field_add_monsters_current_map)(void *a1, int a2, int a3, void *a4, _DWORD *a5, int *a6, _DWORD *a7); | 
					
						
							|  |  |  | typedef int (*fnCDungeon_get_standard_level)(void *thisC); | 
					
						
							|  |  |  | typedef int (*fnCUser_isHumanCertified)(void *CUser); | 
					
						
							|  |  |  | typedef void (*fnDispatcher_ChangeAnotherSkillTree_send)(void *thisC, void *a2, void *a3); | 
					
						
							|  |  |  | typedef void (*fnCUser_AddDailyItem)(void *thisC); | 
					
						
							|  |  |  | typedef int (*fnGameWorld_leave_game_world)(int a1, void *thisC, void *a3); | 
					
						
							|  |  |  | typedef int (*fnCGameManager_user_exit)(int a1, void *mutex, void **a3); | 
					
						
							|  |  |  | typedef void (*fnGameWorld_send_chat_msg)(void *a1, void *a2, char a3, unsigned short a4, int a5, char *dest, size_t n, void *src, size_t a9, int a10); | 
					
						
							|  |  |  | typedef int (*fnGameWorld_IsForbiddenChat)(void *thisC, char *s); | 
					
						
							|  |  |  | typedef void (*fnCUser_quest_action)(void **thisC, int a2, void *a3, int a4, int a5); | 
					
						
							|  |  |  | typedef int (*fnCParty_get_dungeon_clear_state)(void *thisC); | 
					
						
							|  |  |  | typedef int (*fnCParty_SetPlayResult)(void *thisC, void *a2); | 
					
						
							|  |  |  | typedef int (*fnBestClearTime_getBestClearTime)(void *thisC, char a2, int a3); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_CheckMoveTown, 0x8678526); | 
					
						
							|  |  |  | SUBHOOK_INIT(WongWork_CDungeonClear_getClearedDungeonDiff, 0x85BF96C); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_use_stackable, 0x865E0AE); | 
					
						
							|  |  |  | SUBHOOK_INIT(WongWork_CItemUpgrade_Separate__DoProcUpgrade, 0x811E468); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUserCharacInfo_incCurCharacUsedFatigue, 0x8696422); | 
					
						
							|  |  |  | SUBHOOK_INIT(DisPatcher_BuyItem_get_data, 0x81BE658); | 
					
						
							|  |  |  | SUBHOOK_INIT(Dispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon, 0x81FE4B8); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty_get_item, 0x85A3B98); | 
					
						
							|  |  |  | SUBHOOK_INIT(CInventory_insertItemIntoInventory, 0x8502D86); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty__onGetItem, 0x85B949C); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_get_unique_id, 0x80DA37C); | 
					
						
							|  |  |  | SUBHOOK_INIT(CHackLog_OverDamage_GetDungeonLimitDamageAndHackType, 0x8286790); | 
					
						
							|  |  |  | SUBHOOK_INIT(CDungeon_get_index, 0x80FDCF0); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUserCharacInfo_get_charac_level, 0x80DA2B8); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty_getMonsterTotalExp, 0x85A23DC); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty_set_clear_reward_exp_parameter, 0x85ADB00); | 
					
						
							|  |  |  | SUBHOOK_INIT(BingoEvent_sendOneMatchLineReward, 0x80CA3D4); | 
					
						
							|  |  |  | SUBHOOK_INIT(BingoEvent_sendMaxMatchLineReward, 0x80CA622); | 
					
						
							|  |  |  | SUBHOOK_INIT(CBattle_Field_add_monsters_current_map, 0x830162E); | 
					
						
							|  |  |  | SUBHOOK_INIT(CDungeon_get_standard_level, 0x80F9810); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_isHumanCertified, 0x823021A); | 
					
						
							|  |  |  | SUBHOOK_INIT(Dispatcher_ChangeAnotherSkillTree_send, 0x81D2134); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_AddDailyItem, 0x8656CAA); | 
					
						
							|  |  |  | SUBHOOK_INIT(GameWorld_leave_game_world, 0x86C5288); | 
					
						
							|  |  |  | SUBHOOK_INIT(CGameManager_user_exit, 0x82985A8); | 
					
						
							|  |  |  | SUBHOOK_INIT(GameWorld_send_chat_msg, 0x86C975E); | 
					
						
							|  |  |  | SUBHOOK_INIT(GameWorld_IsForbiddenChat, 0x86CD908); | 
					
						
							|  |  |  | SUBHOOK_INIT(CUser_quest_action, 0x866DA8A); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty_get_dungeon_clear_state, 0x822D89C); | 
					
						
							|  |  |  | SUBHOOK_INIT(CParty_SetPlayResult, 0x85B2412); | 
					
						
							|  |  |  | SUBHOOK_INIT(BestClearTime_getBestClearTime, 0x80C8AC0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CUser_CheckMoveTown(void *CUser, unsigned int a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     // 执行虚拟机 Main 函数
 | 
					
						
							|  |  |  |     SQInteger Ret = -99; | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); // saves the stack size before the call
 | 
					
						
							|  |  |  |     sq_pushroottable(v);          // pushes the global table
 | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_CheckMoveTown"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     {                        // gets the fie123oo' from the global table
 | 
					
						
							|  |  |  |         sq_pushroottable(v); // push the 'this' (in this case is the global table)
 | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_call(v, 3, SQTrue, SQTrue); // calls the function
 | 
					
						
							|  |  |  |         sq_getinteger(v, -1, &Ret); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); // restores the original stack size
 | 
					
						
							|  |  |  |     if (Ret == -99) | 
					
						
							|  |  |  |         return CUser_CheckMoveTown(CUser, a2); | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         return Ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _WongWork_CDungeonClear_getClearedDungeonDiff(void *thisC, short a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int OldRet = WongWork_CDungeonClear_getClearedDungeonDiff(thisC, a2); | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     SQInteger Ret = -99; | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_WongWork_CDungeonClear_getClearedDungeonDiff"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, OldRet); | 
					
						
							|  |  |  |         sq_call(v, 4, SQTrue, SQTrue); | 
					
						
							|  |  |  |         sq_getinteger(v, -1, &Ret); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (Ret == -99) | 
					
						
							|  |  |  |         return OldRet; | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         return Ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | signed int _CUser_use_stackable(void *CUser, short a2, void *a3, int a4, int a5) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_use_stackable"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushinteger(v, a5); | 
					
						
							|  |  |  |         sq_call(v, 6, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CUser_use_stackable(CUser, a2, a3, a4, a5); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _WongWork_CItemUpgrade_Separate__DoProcUpgrade(void *thisC, void *CUser, void *a3, void *a4) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int OldRet = WongWork_CItemUpgrade_Separate__DoProcUpgrade(thisC, CUser, a3, a4); | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger Ret = -99; | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_WongWork_CItemUpgrade_Separate__DoProcUpgrade"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_pushinteger(v, OldRet); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a4); | 
					
						
							|  |  |  |         sq_call(v, 6, SQTrue, SQTrue); | 
					
						
							|  |  |  |         sq_getinteger(v, -1, &Ret); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (Ret == -99) | 
					
						
							|  |  |  |         return OldRet; | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         return Ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CUserCharacInfo_incCurCharacUsedFatigue(void *thisC, unsigned short a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUserCharacInfo_incCurCharacUsedFatigue"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_call(v, 3, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CUserCharacInfo_incCurCharacUsedFatigue(thisC, a2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _DisPatcher_BuyItem_get_data(void *a1, void *a2, int a3, void *a4) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_DisPatcher_BuyItem_get_data"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a4); | 
					
						
							|  |  |  |         sq_call(v, 5, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return DisPatcher_BuyItem_get_data(a1, a2, a3, a4); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool _Dispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon(int a1, void *CUser, int a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int OldRet = Dispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon(a1, CUser, a3); | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger Ret = -99; | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_Dispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushinteger(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, OldRet); | 
					
						
							|  |  |  |         sq_call(v, 5, SQTrue, SQTrue); | 
					
						
							|  |  |  |         sq_getinteger(v, -1, &Ret); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (Ret == -99) | 
					
						
							|  |  |  |         return OldRet; | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         return Ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CParty_get_item(void *thisC, void *CUser, int a4, bool a5, char a6, int *a7, unsigned char *a8, bool *a9) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty_get_item"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushbool(v, a5); | 
					
						
							|  |  |  |         sq_pushinteger(v, a6); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a7); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a8); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a9); | 
					
						
							|  |  |  |         sq_call(v, 9, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty_get_item(thisC, CUser, a4, a5, a6, a7, a8, a9); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CInventory_insertItemIntoInventory(void **a1, __int64 a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, char a16, int a17, unsigned char a18, unsigned char a19) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CInventory_insertItemIntoInventory"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a1); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushinteger(v, a5); | 
					
						
							|  |  |  |         sq_pushinteger(v, a6); | 
					
						
							|  |  |  |         sq_pushinteger(v, a7); | 
					
						
							|  |  |  |         sq_pushinteger(v, a8); | 
					
						
							|  |  |  |         sq_pushinteger(v, a9); | 
					
						
							|  |  |  |         sq_pushinteger(v, a10); | 
					
						
							|  |  |  |         sq_pushinteger(v, a11); | 
					
						
							|  |  |  |         sq_pushinteger(v, a12); | 
					
						
							|  |  |  |         sq_pushinteger(v, a13); | 
					
						
							|  |  |  |         sq_pushinteger(v, a14); | 
					
						
							|  |  |  |         sq_pushinteger(v, a15); | 
					
						
							|  |  |  |         sq_pushinteger(v, a16); | 
					
						
							|  |  |  |         sq_pushinteger(v, a17); | 
					
						
							|  |  |  |         sq_pushinteger(v, a18); | 
					
						
							|  |  |  |         sq_pushinteger(v, a19); | 
					
						
							|  |  |  |         sq_call(v, 20, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CInventory_insertItemIntoInventory(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CParty__onGetItem(void *thisC, void *a2, unsigned int a3, int a4) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty__onGetItem"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_call(v, 5, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty__onGetItem(thisC, a2, a3, a4); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CUser_get_unique_id(void *thisC) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_get_unique_id"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CUser_get_unique_id(thisC); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CHackLog_OverDamage_GetDungeonLimitDamageAndHackType(void *a1, _DWORD *a2, _DWORD *a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CHackLog_OverDamage_GetDungeonLimitDamageAndHackType"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_call(v, 4, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CHackLog_OverDamage_GetDungeonLimitDamageAndHackType(a1, a2, a3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CDungeon_get_index(void *CDungeon) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CDungeon_get_index"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CDungeon); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CDungeon_get_index(CDungeon); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CUserCharacInfo_get_charac_level(void *thisC) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUserCharacInfo_get_charac_level"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CUserCharacInfo_get_charac_level(thisC); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CParty_getMonsterTotalExp(void *thisC, unsigned int a2, char a3, int a4, float a5, float a6, bool a7) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty_getMonsterTotalExp"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushfloat(v, a5); | 
					
						
							|  |  |  |         sq_pushfloat(v, a6); | 
					
						
							|  |  |  |         sq_pushbool(v, a7); | 
					
						
							|  |  |  |         sq_call(v, 8, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty_getMonsterTotalExp(thisC, a2, a3, a4, a5, a6, a7); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | char *_CParty_set_clear_reward_exp_parameter(long double ExpAffectRate, void *thisC, void *a3, int a4, void *a5) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty_set_clear_reward_exp_parameter"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushinteger(v, ExpAffectRate); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a5); | 
					
						
							|  |  |  |         sq_call(v, 6, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty_set_clear_reward_exp_parameter(ExpAffectRate, thisC, a3, a4, a5); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _BingoEvent_sendOneMatchLineReward(void *thisC, void *a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_BingoEvent_sendOneMatchLineReward"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_call(v, 3, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return BingoEvent_sendOneMatchLineReward(thisC, a2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _BingoEvent_sendMaxMatchLineReward(void *thisC, void *a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_BingoEvent_sendMaxMatchLineReward"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_call(v, 3, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return BingoEvent_sendMaxMatchLineReward(thisC, a2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CBattle_Field_add_monsters_current_map(void *a1, int a2, int a3, void *a4, _DWORD *a5, int *a6, _DWORD *a7) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CBattle_Field_add_monsters_current_map"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a1); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a4); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a5); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a6); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a7); | 
					
						
							|  |  |  |         sq_call(v, 8, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CBattle_Field_add_monsters_current_map(a1, a2, a3, a4, a5, a6, a7); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CDungeon_get_standard_level(void *thisC) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CDungeon_get_standard_level"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CDungeon_get_standard_level(thisC); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CUser_isHumanCertified(void *CUser) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_isHumanCertified"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, CUser); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CUser_isHumanCertified(CUser); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void _Dispatcher_ChangeAnotherSkillTree_send(void *thisC, void *a2, void *a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_Dispatcher_ChangeAnotherSkillTree_send"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_call(v, 4, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     Dispatcher_ChangeAnotherSkillTree_send(thisC, a2, a3); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void _CUser_AddDailyItem(void *thisC) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_AddDailyItem"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     CUser_AddDailyItem(thisC); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _GameWorld_leave_game_world(int a1, void *thisC, void *a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_GameWorld_leave_game_world"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushinteger(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_call(v, 4, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return GameWorld_leave_game_world(a1, thisC, a3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CGameManager_user_exit(int a1, void *mutex, void **a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CGameManager_user_exit"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushinteger(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, mutex); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_call(v, 4, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CGameManager_user_exit(a1, mutex, a3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void _GameWorld_send_chat_msg(void *a1, void *a2, char a3, unsigned __int16 a4, int a5, char *dest, size_t n, void *src, size_t a9, int a10) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_GameWorld_send_chat_msg"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a1); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushinteger(v, a5); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, dest); | 
					
						
							|  |  |  |         sq_pushinteger(v, n); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, src); | 
					
						
							|  |  |  |         sq_pushinteger(v, a9); | 
					
						
							|  |  |  |         sq_pushinteger(v, a10); | 
					
						
							|  |  |  |         sq_call(v, 11, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     GameWorld_send_chat_msg(a1, a2, a3, a4, a5, dest, n, src, a9, a10); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _GameWorld_IsForbiddenChat(void *thisC, char *s) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_GameWorld_IsForbiddenChat"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushstring(v, s, -1); | 
					
						
							|  |  |  |         sq_call(v, 3, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return GameWorld_IsForbiddenChat(thisC, s); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void _CUser_quest_action(void **thisC, int a2, void *a3, int a4, int a5) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CUser_quest_action"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a3); | 
					
						
							|  |  |  |         sq_pushinteger(v, a4); | 
					
						
							|  |  |  |         sq_pushinteger(v, a5); | 
					
						
							|  |  |  |         sq_call(v, 6, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     CUser_quest_action(thisC, a2, a3, a4, a5); | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CParty_get_dungeon_clear_state(void *thisC) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty_get_dungeon_clear_state"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_call(v, 2, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty_get_dungeon_clear_state(thisC); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _CParty_SetPlayResult(void *thisC, void *a2) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_CParty_SetPlayResult"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, a2); | 
					
						
							|  |  |  |         sq_call(v, 3, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return CParty_SetPlayResult(thisC, a2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int _BestClearTime_getBestClearTime(void *thisC, char a2, int a3) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::lock_guard<std::recursive_mutex> lock(SqMtx); | 
					
						
							|  |  |  |     SQInteger top = sq_gettop(v); | 
					
						
							|  |  |  |     sq_pushroottable(v); | 
					
						
							|  |  |  |     sq_pushstring(v, _SC("Cb_BestClearTime_getBestClearTime"), -1); | 
					
						
							|  |  |  |     if (SQ_SUCCEEDED(sq_get(v, -2))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         sq_pushroottable(v); | 
					
						
							|  |  |  |         sq_pushuserpointer(v, thisC); | 
					
						
							|  |  |  |         sq_pushinteger(v, a2); | 
					
						
							|  |  |  |         sq_pushinteger(v, a3); | 
					
						
							|  |  |  |         sq_call(v, 4, SQFalse, SQTrue); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     sq_settop(v, top); | 
					
						
							|  |  |  |     return BestClearTime_getBestClearTime(thisC, a2, a3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void OpenHook1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUser_CheckMoveTown); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(WongWork_CDungeonClear_getClearedDungeonDiff); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUser_use_stackable); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(WongWork_CItemUpgrade_Separate__DoProcUpgrade); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUserCharacInfo_incCurCharacUsedFatigue); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(DisPatcher_BuyItem_get_data); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(Dispatcher_BuyCeraShopItem_useCountDownCoinInFreeCoinDungeon); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty_get_item); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CInventory_insertItemIntoInventory); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty__onGetItem); | 
					
						
							| 
									
										
										
										
											2024-09-16 17:07:36 +08:00
										 |  |  |     // SUBHOOK_SETUP(CUser_get_unique_id);
 | 
					
						
							| 
									
										
										
										
											2024-09-15 13:08:42 +08:00
										 |  |  |     SUBHOOK_SETUP(CHackLog_OverDamage_GetDungeonLimitDamageAndHackType); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CDungeon_get_index); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUserCharacInfo_get_charac_level); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty_getMonsterTotalExp); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty_set_clear_reward_exp_parameter); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(BingoEvent_sendOneMatchLineReward); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(BingoEvent_sendMaxMatchLineReward); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CBattle_Field_add_monsters_current_map); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CDungeon_get_standard_level); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUser_isHumanCertified); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(Dispatcher_ChangeAnotherSkillTree_send); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUser_AddDailyItem); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(GameWorld_leave_game_world); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CGameManager_user_exit); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(GameWorld_send_chat_msg); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(GameWorld_IsForbiddenChat); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CUser_quest_action); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty_get_dungeon_clear_state); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(CParty_SetPlayResult); | 
					
						
							|  |  |  |     SUBHOOK_SETUP(BestClearTime_getBestClearTime); | 
					
						
							|  |  |  | } |