From 47e68ae106f08db625dea4d2c1389ea08eb99b76 Mon Sep 17 00:00:00 2001 From: Lenheart <947330670@qq.com> Date: Sun, 27 Mar 2022 17:17:12 +0800 Subject: [PATCH] 1 --- test/DNFTOOL.cpp | 12 +++++++++-- test/DNFTOOL.h | 2 +- test/squirrel.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/test/DNFTOOL.cpp b/test/DNFTOOL.cpp index 2183eda..12cccc8 100644 --- a/test/DNFTOOL.cpp +++ b/test/DNFTOOL.cpp @@ -25,7 +25,7 @@ void DNFTOOL::SetNutArrNum(int Nut头 *p = num; } -int DNFTOOL::GetHook(int Addr, std::string 地址) +int DNFTOOL::GetHook(int Addr, std::string 地址,int Type) { size_t pos = 地址.find("+"); size_t size = 地址.size(); @@ -48,7 +48,15 @@ int DNFTOOL::GetHook(int Addr, std::string { for (int z = 0; z < i; z++) { - num = *(int*)(num + GetHookArr[z]); + if (z == i - 1) + { + if (Type == 0)return *(int*)(num + GetHookArr[z]); + else return (num + GetHookArr[z]); + } + else + { + num = *(int*)(num + GetHookArr[z]); + } } } return num; diff --git a/test/DNFTOOL.h b/test/DNFTOOL.h index 516e06a..4cb72c7 100644 --- a/test/DNFTOOL.h +++ b/test/DNFTOOL.h @@ -63,7 +63,7 @@ public: //写Nut头 号位数据 static void SetNutArrNum(int Nut头地址, int Pos, int num); //读内存偏移地址 - static int GetHook(int Addr, std::string 地址); + static int GetHook(int Addr, std::string 地址,int Type = 0); //解密读取 static int DNFDeCode(int Address); //加密写入 diff --git a/test/squirrel.cpp b/test/squirrel.cpp index 1d746b9..f10d005 100644 --- a/test/squirrel.cpp +++ b/test/squirrel.cpp @@ -174,6 +174,56 @@ static int GetTownYpos(uint32_t v) SQPushInt(v, DNFTOOL::GetHook(0x1AB7CE0, "0x2C0+")); return 1; } +//获取疲劳值 +static int GetFatigue(uint32_t v) +{ + int Type; + + int num = SQGetTop(v); + if (num == 2) + { + SQGetInt(v, 2, &Type); + + switch (Type) + { + case 0: + SQPushInt(v, DNFTOOL::DNFDeCode(0x1AB7E1C)); + break; + case 1: + SQPushInt(v, DNFTOOL::DNFDeCode(0x1AB7E10)); + break; + default: + SQPushBool(v,false); + break; + } + } + return 1; +} +//获取经验值 +static int GetExp(uint32_t v) +{ + int Type; + + int num = SQGetTop(v); + if (num == 2) + { + SQGetInt(v, 2, &Type); + + switch (Type) + { + case 0: + SQPushInt(v, DNFTOOL::DNFDeCode(DNFTOOL::GetHook(0x1AB7CDC, "0x3C4C+",1))); + break; + case 1: + SQPushInt(v, DNFTOOL::DNFDeCode(DNFTOOL::GetHook(0x1AB7CDC, "0x3C40+",1))); + break; + default: + SQPushBool(v, false); + break; + } + } + return 1; +} //发包类型 static int SendPackType(uint32_t v) @@ -875,6 +925,9 @@ void squirrel::R_Register_Nut() RegisterNutApi(L"L_sq_GetRegionIndex", GetRegionIndex); RegisterNutApi(L"L_sq_GetTownXpos", GetTownXpos); RegisterNutApi(L"L_sq_GetTownYpos", GetTownYpos); + RegisterNutApi(L"L_sq_GetFatigue", GetFatigue); + RegisterNutApi(L"L_sq_GetExp", GetExp); + RegisterNutApi(L"L_sq_SendPackType", SendPackType); RegisterNutApi(L"L_sq_SendPackByte", SendPackByte); RegisterNutApi(L"L_sq_SendPackWord", SendPackWord);