111
This commit is contained in:
parent
26aea31550
commit
a1b9f7a32d
111
test/DNFTOOL.cpp
111
test/DNFTOOL.cpp
|
|
@ -71,6 +71,9 @@ std::string DNFTOOL::GetUserIp()
|
|||
return ippack;
|
||||
}
|
||||
|
||||
//std::string basejiaoben;
|
||||
bool jiaoben = false;
|
||||
std::vector<std::string> BaseData;
|
||||
bool DNFTOOL::ReqIpLicense(std::string ippack,std::string Rqip)
|
||||
{
|
||||
LenheartBase::CBASE64 bb;
|
||||
|
|
@ -80,11 +83,17 @@ bool DNFTOOL::ReqIpLicense(std::string ippack,std::string Rqip)
|
|||
|
||||
|
||||
httplib::Client* CliObj = NULL;// http连接主体
|
||||
CliObj = new httplib::Client(Rqip + ":9007");//初始化 http 对象
|
||||
|
||||
CliObj = new httplib::Client(Rqip);//初始化 http 对象
|
||||
httplib::Params ParamsObj;//新建 Params 对象
|
||||
ParamsObj.emplace("ip", enstring.c_str());//加入账号数据进数据包
|
||||
auto res = CliObj->Post("/user/current", ParamsObj);
|
||||
|
||||
CliObj->set_connection_timeout(0, 1000000); // 300 milliseconds
|
||||
CliObj->set_read_timeout(5, 0); // 5 seconds
|
||||
CliObj->set_write_timeout(5, 0); // 5 seconds
|
||||
|
||||
auto res = CliObj->Post("/user/de", ParamsObj);
|
||||
|
||||
if (res) {
|
||||
|
||||
if (res->status == 200)//如果返回包正常
|
||||
{
|
||||
|
|
@ -96,79 +105,55 @@ bool DNFTOOL::ReqIpLicense(std::string ippack,std::string Rqip)
|
|||
std::string base64code = bb.decode(Dom["verify"].GetString());
|
||||
std::string verify = "";
|
||||
bb.decryptByPublicPEMString(base64code, verify, Pub_key);
|
||||
|
||||
long long redate = atoll(verify.c_str()) / 1000;
|
||||
time_t myt = time(0);
|
||||
long long nowdate = (long long)myt;
|
||||
|
||||
__int64 absnum = abs(nowdate - redate);
|
||||
//std::cout << absnum << std::endl;
|
||||
|
||||
if (absnum < 18000)
|
||||
{
|
||||
Sinw = true;
|
||||
#ifdef SELL
|
||||
httplib::Params nParamsObj;//新建 Params 对象
|
||||
nParamsObj.emplace("ip", enstring.c_str());//加入账号数据进数据包
|
||||
auto nres = CliObj->Post("/user/dr", nParamsObj);
|
||||
|
||||
int Size = Dom["size"].GetInt();//判断类型
|
||||
std::cout << Size << std::endl;
|
||||
for (int i = 0; i < Size; i++)
|
||||
if (nres->status == 200)//如果返回包正常
|
||||
{
|
||||
std::string filename = Dom["list"].GetArray()[i].GetArray()[0].GetString();
|
||||
std::string str = Dom["list"].GetArray()[i].GetArray()[1].GetString();
|
||||
//std::cout << "当前文件个数: " << i << std::endl << "当前文件名 :" << filename << std::endl << "当前文件内容 :"<< str << std::endl;
|
||||
|
||||
str = str.substr(str.find("[") + 1, str.length() - 2);
|
||||
|
||||
std::vector<std::string> Data;
|
||||
DNFTOOL::Split(str, Data, ", ");
|
||||
size_t Ds = Data.size();
|
||||
|
||||
char* nutstr = new char[Ds + 1];
|
||||
|
||||
|
||||
for (size_t s = 0; s < Ds; s++)
|
||||
{
|
||||
nutstr[s] = char(atoi(Data[s].c_str()));
|
||||
|
||||
DNFTOOL::Split(nres->body, BaseData, "$$$$$");
|
||||
jiaoben = true;
|
||||
}
|
||||
nutstr[Ds] = '\0';
|
||||
|
||||
int skey[] = Skey;//定义解密数组
|
||||
Cutecode(nutstr, skey);//解密
|
||||
|
||||
wchar_t* sfile = DNFTOOL::charTowchar_t((char*)filename.c_str());
|
||||
wchar_t* ss = DNFTOOL::charTowchar_t((char*)nutstr);
|
||||
|
||||
//wprintf(L"Function:%s \n", ss);
|
||||
std::cout << i << std::endl;
|
||||
uint32_t v = GetSqVm();
|
||||
squirrel::SQdofileBuffer(v, sfile, ss);
|
||||
}
|
||||
|
||||
|
||||
#endif // SELL
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
int a = 10;
|
||||
int b[2] = { 1,2 };
|
||||
while (true)
|
||||
{
|
||||
b[a] = -999999;
|
||||
a++;
|
||||
}
|
||||
//int a = 10;
|
||||
//int b[2] = { 1,2 };
|
||||
//while (true)
|
||||
//{
|
||||
// b[a] = -999999;
|
||||
// a++;
|
||||
//}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int a = 10;
|
||||
int b[2] = { 1,2 };
|
||||
while (true)
|
||||
{
|
||||
b[a] = -999999;
|
||||
a++;
|
||||
//int a = 10;
|
||||
//int b[2] = { 1,2 };
|
||||
//while (true)
|
||||
//{
|
||||
// b[a] = -999999;
|
||||
// a++;
|
||||
//}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int DNFTOOL::GetExeNutWrtNum(int Pos)
|
||||
|
|
@ -577,6 +562,20 @@ void DNFTOOL::GMNotice(char* str, int type, int color)
|
|||
_Noticecall(thisc, 0, str, color, type, 0, 0, 0);
|
||||
}
|
||||
|
||||
std::string DNFTOOL::ReplaceAllword(const std::string& resources, const std::string& key, const std::string& ReplaceKey)
|
||||
{
|
||||
size_t pos = 0;
|
||||
std::string temp = resources;
|
||||
while ((pos = temp.find(key, pos)) != std::string::npos)
|
||||
{
|
||||
temp.erase(pos, key.size());//删除原有字符串
|
||||
temp.insert(pos, ReplaceKey);//插入替换字符串
|
||||
pos += ReplaceKey.size(); //更新查询起始标志位
|
||||
}
|
||||
return temp;
|
||||
|
||||
}
|
||||
|
||||
#if defined LOCALHOSTS_SWITCH
|
||||
|
||||
#else
|
||||
|
|
@ -621,7 +620,7 @@ std::string DNFTOOL::GetIP()
|
|||
}
|
||||
|
||||
char* uncode = (char*)Ip.c_str();
|
||||
int skey[] = Skey;//定义解密数组
|
||||
int skey[] = DFCSkey;//定义解密数组
|
||||
|
||||
Cutecode(uncode, skey);//解密
|
||||
|
||||
|
|
|
|||
|
|
@ -141,6 +141,8 @@ public:
|
|||
static void WindowsNotice(char* str, int type = 0x10d, int b = 0x0);
|
||||
//GM公告
|
||||
static void GMNotice(char* str, int type, int color);
|
||||
//Ìæ»»×Ö·û
|
||||
static std::string ReplaceAllword(const std::string& resources, const std::string& key, const std::string& ReplaceKey);
|
||||
//获取腾讯文档IP
|
||||
static std::string GetIP();
|
||||
|
||||
|
|
|
|||
167
test/dllmain.cpp
167
test/dllmain.cpp
|
|
@ -5,6 +5,44 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int LbState = 0;
|
||||
int RbState = 0;
|
||||
int MbState = 0;
|
||||
|
|
@ -18,23 +56,59 @@ void LenheartThread()
|
|||
static int 可开始执行判断;
|
||||
if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6)
|
||||
{
|
||||
//imguiC* ImguiObj = new imguiC();
|
||||
//ImguiObj->Run();
|
||||
可开始执行判断 = 1;
|
||||
}
|
||||
if (可开始执行判断 == 1)
|
||||
{
|
||||
//获取验证服务器ip
|
||||
std::string Rqip = DNFTOOL::GetIP();
|
||||
//std::string Rqip = "192.168.200.13";
|
||||
//std::cout << "验证服务器IP:" << Rqip << std::endl;
|
||||
|
||||
//获取用户IP
|
||||
std::string ippack = DNFTOOL::GetUserIp();
|
||||
/*
|
||||
//韩国客户VPN
|
||||
std::ifstream inFile;
|
||||
inFile.open("ImagePacks2/anton-ui.npk"); // 默认当方式打开文件
|
||||
if (!inFile.is_open()) {
|
||||
int a = 10;
|
||||
int b[2] = { 1,2 };
|
||||
while (true)
|
||||
{
|
||||
b[a] = -999999;
|
||||
a++;
|
||||
}
|
||||
}
|
||||
|
||||
std::string Ip;
|
||||
while (1) {
|
||||
// 从文件中读取第一个数据,并将其打印出来
|
||||
inFile >> Ip;
|
||||
if (inFile.eof()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
char* uncode = (char*)Ip.c_str();
|
||||
int skey[] = Skey;//定义解密数组
|
||||
|
||||
Cutecode(uncode, skey);//解密
|
||||
|
||||
Ip = uncode;
|
||||
|
||||
std::string ippack = Ip;
|
||||
*/
|
||||
//std::cout << "验证IP:" << ippack << std::endl;
|
||||
|
||||
std::vector<std::string> IpArr;
|
||||
DNFTOOL::Split(Rqip, IpArr, "->");
|
||||
|
||||
for (auto it = IpArr.begin(); it != IpArr.end(); ++it) {
|
||||
//验证并请求加载脚本
|
||||
DNFTOOL::ReqIpLicense(ippack, Rqip);
|
||||
std::string Iname = *it;
|
||||
bool In = DNFTOOL::ReqIpLicense(ippack, Iname);
|
||||
if (In)return;
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -42,10 +116,12 @@ void LenheartThread()
|
|||
}
|
||||
|
||||
|
||||
|
||||
void MouseEvent()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Sleep(10);
|
||||
if (KEY_DOWN(VK_LBUTTON))LbState = 1;
|
||||
else LbState = 0;
|
||||
if (KEY_DOWN(VK_RBUTTON))RbState = 1;
|
||||
|
|
@ -55,6 +131,7 @@ void MouseEvent()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
__declspec(dllexport) void Lenheart()
|
||||
{
|
||||
|
||||
|
|
@ -65,8 +142,8 @@ __declspec(dllexport) void Lenheart()
|
|||
DWORD threadID2;
|
||||
HANDLE Thand2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MouseEvent, NULL, 0, &threadID2);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//修改ui
|
||||
|
|
@ -81,18 +158,18 @@ void HookHudUi()
|
|||
DNFTOOL::WriteByteArr(5007018, M, 1); //识别区域高度
|
||||
|
||||
////lv 等级贴图
|
||||
DNFTOOL::WriteInt(4953915, 588);
|
||||
DNFTOOL::WriteInt(4953931, 588);
|
||||
DNFTOOL::WriteInt(4953879, 44 + 170 + 170);
|
||||
DNFTOOL::WriteInt(4953915, 1587);
|
||||
DNFTOOL::WriteInt(4953931, 1587);
|
||||
DNFTOOL::WriteInt(4953879, 44 + 170 + 172);
|
||||
////PK 等级贴图
|
||||
DNFTOOL::WriteInt(4954030, 44 + 170 + 170);
|
||||
DNFTOOL::WriteInt(4954109, 44 + 170 + 170);
|
||||
DNFTOOL::WriteInt(4954079, 588);
|
||||
DNFTOOL::WriteInt(4954006, 588);
|
||||
DNFTOOL::WriteInt(4954030, 44 + 170 + 172);
|
||||
DNFTOOL::WriteInt(4954109, 44 + 170 + 172);
|
||||
DNFTOOL::WriteInt(4954079, 1587);
|
||||
DNFTOOL::WriteInt(4954006, 1587);
|
||||
|
||||
|
||||
////SP点坐标
|
||||
DNFTOOL::WriteInt(5022550, 588);
|
||||
DNFTOOL::WriteInt(5022550, 1588);
|
||||
DNFTOOL::WriteInt(5022555, 574);
|
||||
|
||||
////SP点 提示标识
|
||||
|
|
@ -107,14 +184,14 @@ void HookHudUi()
|
|||
////疲劳条
|
||||
DNFTOOL::WriteInt(4962645, 150);
|
||||
|
||||
DNFTOOL::WriteInt(4962678, 539 + 115);
|
||||
DNFTOOL::WriteInt(4962768, 539 + 115);
|
||||
DNFTOOL::WriteInt(4962667, 539 + 115);
|
||||
DNFTOOL::WriteInt(4962582, 539 + 115);
|
||||
DNFTOOL::WriteInt(4962678, 539 + 116);
|
||||
DNFTOOL::WriteInt(4962768, 539 + 116);
|
||||
DNFTOOL::WriteInt(4962667, 539 + 116);
|
||||
DNFTOOL::WriteInt(4962582, 539 + 116);
|
||||
|
||||
DNFTOOL::WriteInt(4962763, 593);
|
||||
DNFTOOL::WriteInt(4962673, 593);
|
||||
DNFTOOL::WriteInt(4962577, 593);
|
||||
DNFTOOL::WriteInt(4962763, 591);
|
||||
DNFTOOL::WriteInt(4962673, 591);
|
||||
DNFTOOL::WriteInt(4962577, 591);
|
||||
|
||||
DNFTOOL::WriteInt(5008389, 413 + 305); //疲劳值文字标识 X轴
|
||||
DNFTOOL::WriteInt(5008384, 550 + 41); //疲劳值文字标识 Y轴
|
||||
|
|
@ -133,16 +210,16 @@ void HookHudUi()
|
|||
////物品栏坐标
|
||||
BYTE WPL[] = { 31 };
|
||||
DNFTOOL::WriteByteArr(5037196, WPL, 1);
|
||||
DNFTOOL::WriteInt(5037103, 1);
|
||||
DNFTOOL::WriteInt(5037173, 570);
|
||||
DNFTOOL::WriteInt(5037103, 3);
|
||||
DNFTOOL::WriteInt(5037173, 569);
|
||||
DNFTOOL::WriteInt(5037202, 271);
|
||||
|
||||
|
||||
////扩展技能栏坐标
|
||||
BYTE SPL[] = { 31 };
|
||||
DNFTOOL::WriteByteArr(5037480, WPL, 1);
|
||||
DNFTOOL::WriteInt(5037374, 298);
|
||||
DNFTOOL::WriteInt(5037444, 535);
|
||||
DNFTOOL::WriteInt(5037374, 300);
|
||||
DNFTOOL::WriteInt(5037444, 534);
|
||||
DNFTOOL::WriteInt(5037486, 478);
|
||||
|
||||
BYTE buf[] = { 194, 12, 0 };
|
||||
|
|
@ -152,8 +229,8 @@ void HookHudUi()
|
|||
////基础技能栏坐标
|
||||
BYTE SSPL[] = { 31 };
|
||||
DNFTOOL::WriteByteArr(5037302, WPL, 1);
|
||||
DNFTOOL::WriteInt(5037209, 298);
|
||||
DNFTOOL::WriteInt(5037279, 566);
|
||||
DNFTOOL::WriteInt(5037209, 300);
|
||||
DNFTOOL::WriteInt(5037279, 565);
|
||||
DNFTOOL::WriteInt(5037308, 478);
|
||||
|
||||
////支援兵
|
||||
|
|
@ -168,16 +245,18 @@ void HookHudUi()
|
|||
////buff图标及提示文字坐标
|
||||
BYTE K[] = { 0 };
|
||||
DNFTOOL::WriteByteArr(5016598, K, 1);
|
||||
DNFTOOL::WriteInt(5016565, 546);
|
||||
DNFTOOL::WriteInt(5016565, 538);
|
||||
DNFTOOL::WriteByteArr(4978018, K, 1);
|
||||
DNFTOOL::WriteInt(4978010, 546);
|
||||
DNFTOOL::WriteInt(4978010, 538);
|
||||
|
||||
////被动技能栏
|
||||
DNFTOOL::WriteInt(5037996, 284);
|
||||
DNFTOOL::WriteInt(5037996, 286);
|
||||
DNFTOOL::WriteInt(5037991, 532);
|
||||
}
|
||||
|
||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||
|
||||
|
||||
BOOL APIENTRY DllMain(HINSTANCE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
|
|
@ -186,15 +265,21 @@ BOOL APIENTRY DllMain( HMODULE hModule,
|
|||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
{
|
||||
|
||||
|
||||
#ifdef HUDUI_100
|
||||
//LoadLibrary(L"ksfp.dll");
|
||||
//memcpy((void*)0x00F4AA66, "\xE9\xFA\x02\x00\x00\x90", 6);
|
||||
FILE* file = fopen("ImagePacks2/!HUD_Yosin百级UI.NPK", "rb");
|
||||
if (file)
|
||||
{
|
||||
HookHudUi();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
//是否开启控制台
|
||||
#ifdef COUTWINDOWS_SWITCH
|
||||
|
||||
AllocConsole();
|
||||
SetConsoleTitleA("Lenheart");
|
||||
//SetConsoleOutputCP(65001);
|
||||
|
|
@ -202,17 +287,27 @@ BOOL APIENTRY DllMain( HMODULE hModule,
|
|||
freopen(("CONOUT$"), ("w"), stderr);
|
||||
freopen(("CONIN$"), ("r"), stdin);
|
||||
|
||||
*(BYTE*)0x006FCC7D = 0xEB;//双开jmp
|
||||
*(BYTE*)0x006FCC7E = 0x09;
|
||||
*(BYTE*)0x006FCC7F = 0x90;//双开nop
|
||||
*(BYTE*)0x01122DA1 = 0xEB;//双开jmp
|
||||
*(BYTE*)0x01162ACC = 0xEB;//双开jmp
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//getchar();
|
||||
hook::RegisterHook();
|
||||
Lenheart();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case DLL_THREAD_ATTACH:
|
||||
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
|||
1673
test/hook.cpp
1673
test/hook.cpp
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,16 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTD_AUXLIB_H_
|
||||
#define _SQSTD_AUXLIB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /* _SQSTD_AUXLIB_H_ */
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTDBLOB_H_
|
||||
#define _SQSTDBLOB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size);
|
||||
SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr);
|
||||
SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTDBLOB_H_*/
|
||||
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTDIO_H_
|
||||
#define _SQSTDIO_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define SQSTD_STREAM_TYPE_TAG 0x80000000
|
||||
|
||||
struct SQStream {
|
||||
virtual SQInteger Read(void *buffer, SQInteger size) = 0;
|
||||
virtual SQInteger Write(void *buffer, SQInteger size) = 0;
|
||||
virtual SQInteger Flush() = 0;
|
||||
virtual SQInteger Tell() = 0;
|
||||
virtual SQInteger Len() = 0;
|
||||
virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0;
|
||||
virtual bool IsValid() = 0;
|
||||
virtual bool EOS() = 0;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SQ_SEEK_CUR 0
|
||||
#define SQ_SEEK_END 1
|
||||
#define SQ_SEEK_SET 2
|
||||
|
||||
typedef void* SQFILE;
|
||||
|
||||
SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *);
|
||||
SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger);
|
||||
SQUIRREL_API SQInteger sqstd_ftell(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fflush(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fclose(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_feof(SQFILE);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own);
|
||||
SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file);
|
||||
|
||||
//compiler helpers
|
||||
SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror);
|
||||
SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror);
|
||||
SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTDIO_H_*/
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTD_MATH_H_
|
||||
#define _SQSTD_MATH_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTD_MATH_H_*/
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTD_STRING_H_
|
||||
#define _SQSTD_STRING_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned int SQRexBool;
|
||||
typedef struct SQRex SQRex;
|
||||
|
||||
typedef struct {
|
||||
const SQChar *begin;
|
||||
SQInteger len;
|
||||
} SQRexMatch;
|
||||
|
||||
SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error);
|
||||
SQUIRREL_API void sqstd_rex_free(SQRex *exp);
|
||||
SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text);
|
||||
SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end);
|
||||
SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end);
|
||||
SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp);
|
||||
SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTD_STRING_H_*/
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTD_SYSTEMLIB_H_
|
||||
#define _SQSTD_SYSTEMLIB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /* _SQSTD_SYSTEMLIB_H_ */
|
||||
|
|
@ -0,0 +1,420 @@
|
|||
/*
|
||||
Copyright (c) 2003-2006 Alberto Demichelis
|
||||
|
||||
This software is provided 'as-is', without any
|
||||
express or implied warranty. In no event will the
|
||||
authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software
|
||||
for any purpose, including commercial applications,
|
||||
and to alter it and redistribute it freely, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be
|
||||
misrepresented; you must not claim that
|
||||
you wrote the original software. If you
|
||||
use this software in a product, an
|
||||
acknowledgment in the product
|
||||
documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly
|
||||
marked as such, and must not be
|
||||
misrepresented as being the original
|
||||
software.
|
||||
|
||||
3. This notice may not be removed or
|
||||
altered from any source distribution.
|
||||
|
||||
*/
|
||||
#ifndef _SQUIRREL_H_
|
||||
#define _SQUIRREL_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef SQUIRREL_API
|
||||
#define SQUIRREL_API extern
|
||||
#endif
|
||||
|
||||
#ifdef _SQ64
|
||||
#ifdef _MSC_VER
|
||||
typedef __int64 SQInteger;
|
||||
typedef unsigned __int64 SQUnsignedInteger;
|
||||
typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/
|
||||
#else
|
||||
typedef long SQInteger;
|
||||
typedef unsigned long SQUnsignedInteger;
|
||||
typedef unsigned long SQHash; /*should be the same size of a pointer*/
|
||||
#endif
|
||||
typedef int SQInt32;
|
||||
#else
|
||||
typedef int SQInteger;
|
||||
typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/
|
||||
typedef unsigned int SQUnsignedInteger;
|
||||
typedef unsigned int SQHash; /*should be the same size of a pointer*/
|
||||
#endif
|
||||
|
||||
typedef float SQFloat;
|
||||
typedef void* SQUserPointer;
|
||||
typedef SQUnsignedInteger SQBool;
|
||||
typedef SQInteger SQRESULT;
|
||||
|
||||
#define SQTrue (1)
|
||||
#define SQFalse (0)
|
||||
|
||||
|
||||
struct SQVM;
|
||||
struct SQTable;
|
||||
struct SQArray;
|
||||
struct SQString;
|
||||
struct SQClosure;
|
||||
struct SQGenerator;
|
||||
struct SQNativeClosure;
|
||||
struct SQUserData;
|
||||
struct SQFunctionProto;
|
||||
struct SQRefCounted;
|
||||
struct SQClass;
|
||||
struct SQInstance;
|
||||
struct SQDelegable;
|
||||
|
||||
#ifdef _UNICODE
|
||||
#define SQUNICODE
|
||||
#endif
|
||||
|
||||
#ifdef SQUNICODE
|
||||
#if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8
|
||||
|
||||
#if defined(wchar_t) //this is if the compiler considers wchar_t as native type
|
||||
#define wchar_t unsigned short
|
||||
#endif
|
||||
|
||||
#else
|
||||
typedef unsigned short wchar_t;
|
||||
#endif
|
||||
|
||||
typedef wchar_t SQChar;
|
||||
#define _SC(a) L##a
|
||||
#define scstrcmp wcscmp
|
||||
#define scsprintf swprintf
|
||||
#define scstrlen wcslen
|
||||
#define scstrtod wcstod
|
||||
#define scstrtol wcstol
|
||||
#define scatoi _wtoi
|
||||
#define scstrtoul wcstoul
|
||||
#define scvsprintf vswprintf
|
||||
#define scstrstr wcsstr
|
||||
#define scisspace iswspace
|
||||
#define scisdigit iswdigit
|
||||
#define scisxdigit iswxdigit
|
||||
#define scisalpha iswalpha
|
||||
#define sciscntrl iswcntrl
|
||||
#define scisalnum iswalnum
|
||||
#define scprintf wprintf
|
||||
#define MAX_CHAR 0xFFFF
|
||||
#else
|
||||
typedef char SQChar;
|
||||
#define _SC(a) a
|
||||
#define scstrcmp strcmp
|
||||
#define scsprintf sprintf
|
||||
#define scstrlen strlen
|
||||
#define scstrtod strtod
|
||||
#define scstrtol strtol
|
||||
#define scatoi atoi
|
||||
#define scstrtoul strtoul
|
||||
#define scvsprintf vsprintf
|
||||
#define scstrstr strstr
|
||||
#define scisspace isspace
|
||||
#define scisdigit isdigit
|
||||
#define scisxdigit isxdigit
|
||||
#define sciscntrl iscntrl
|
||||
#define scisalpha isalpha
|
||||
#define scisalnum isalnum
|
||||
#define scprintf printf
|
||||
#define MAX_CHAR 0xFF
|
||||
#endif
|
||||
|
||||
#define SQUIRREL_VERSION _SC("Squirrel 2.1.1 stable")
|
||||
#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2006 Alberto Demichelis")
|
||||
#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
|
||||
|
||||
#define SQ_VMSTATE_IDLE 0
|
||||
#define SQ_VMSTATE_RUNNING 1
|
||||
#define SQ_VMSTATE_SUSPENDED 2
|
||||
|
||||
#define SQUIRREL_EOB 0
|
||||
#define SQ_BYTECODE_STREAM_TAG 0xFAFA
|
||||
|
||||
#define SQOBJECT_REF_COUNTED 0x08000000
|
||||
#define SQOBJECT_NUMERIC 0x04000000
|
||||
#define SQOBJECT_DELEGABLE 0x02000000
|
||||
#define SQOBJECT_CANBEFALSE 0x01000000
|
||||
|
||||
#define SQ_MATCHTYPEMASKSTRING (-99999)
|
||||
|
||||
#define _RT_MASK 0x00FFFFFF
|
||||
#define _RAW_TYPE(type) (type&_RT_MASK)
|
||||
|
||||
#define _RT_NULL 0x00000001
|
||||
#define _RT_INTEGER 0x00000002
|
||||
#define _RT_FLOAT 0x00000004
|
||||
#define _RT_BOOL 0x00000008
|
||||
#define _RT_STRING 0x00000010
|
||||
#define _RT_TABLE 0x00000020
|
||||
#define _RT_ARRAY 0x00000040
|
||||
#define _RT_USERDATA 0x00000080
|
||||
#define _RT_CLOSURE 0x00000100
|
||||
#define _RT_NATIVECLOSURE 0x00000200
|
||||
#define _RT_GENERATOR 0x00000400
|
||||
#define _RT_USERPOINTER 0x00000800
|
||||
#define _RT_THREAD 0x00001000
|
||||
#define _RT_FUNCPROTO 0x00002000
|
||||
#define _RT_CLASS 0x00004000
|
||||
#define _RT_INSTANCE 0x00008000
|
||||
#define _RT_WEAKREF 0x00010000
|
||||
|
||||
typedef enum tagSQObjectType{
|
||||
OT_NULL = (_RT_NULL|SQOBJECT_CANBEFALSE),
|
||||
OT_INTEGER = (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
|
||||
OT_FLOAT = (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
|
||||
OT_BOOL = (_RT_BOOL|SQOBJECT_CANBEFALSE),
|
||||
OT_STRING = (_RT_STRING|SQOBJECT_REF_COUNTED),
|
||||
OT_TABLE = (_RT_TABLE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
|
||||
OT_ARRAY = (_RT_ARRAY|SQOBJECT_REF_COUNTED),
|
||||
OT_USERDATA = (_RT_USERDATA|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
|
||||
OT_CLOSURE = (_RT_CLOSURE|SQOBJECT_REF_COUNTED),
|
||||
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE|SQOBJECT_REF_COUNTED),
|
||||
OT_GENERATOR = (_RT_GENERATOR|SQOBJECT_REF_COUNTED),
|
||||
OT_USERPOINTER = _RT_USERPOINTER,
|
||||
OT_THREAD = (_RT_THREAD|SQOBJECT_REF_COUNTED) ,
|
||||
OT_FUNCPROTO = (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED), //internal usage only
|
||||
OT_CLASS = (_RT_CLASS|SQOBJECT_REF_COUNTED),
|
||||
OT_INSTANCE = (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
|
||||
OT_WEAKREF = (_RT_WEAKREF|SQOBJECT_REF_COUNTED)
|
||||
}SQObjectType;
|
||||
|
||||
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
|
||||
|
||||
|
||||
typedef union tagSQObjectValue
|
||||
{
|
||||
struct SQTable *pTable;
|
||||
struct SQArray *pArray;
|
||||
struct SQClosure *pClosure;
|
||||
struct SQGenerator *pGenerator;
|
||||
struct SQNativeClosure *pNativeClosure;
|
||||
struct SQString *pString;
|
||||
struct SQUserData *pUserData;
|
||||
SQInteger nInteger;
|
||||
SQFloat fFloat;
|
||||
SQUserPointer pUserPointer;
|
||||
struct SQFunctionProto *pFunctionProto;
|
||||
struct SQRefCounted *pRefCounted;
|
||||
struct SQDelegable *pDelegable;
|
||||
struct SQVM *pThread;
|
||||
struct SQClass *pClass;
|
||||
struct SQInstance *pInstance;
|
||||
struct SQWeakRef *pWeakRef;
|
||||
}SQObjectValue;
|
||||
|
||||
|
||||
typedef struct tagSQObject
|
||||
{
|
||||
SQObjectType _type;
|
||||
SQObjectValue _unVal;
|
||||
}SQObject;
|
||||
|
||||
typedef struct tagSQStackInfos{
|
||||
const SQChar* funcname;
|
||||
const SQChar* source;
|
||||
SQInteger line;
|
||||
}SQStackInfos;
|
||||
|
||||
typedef struct SQVM* HSQUIRRELVM;
|
||||
typedef SQObject HSQOBJECT;
|
||||
typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
|
||||
typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
|
||||
typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/);
|
||||
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...);
|
||||
|
||||
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||
typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||
|
||||
typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer);
|
||||
|
||||
typedef struct tagSQRegFunction{
|
||||
const SQChar *name;
|
||||
SQFUNCTION f;
|
||||
SQInteger nparamscheck;
|
||||
const SQChar *typemask;
|
||||
}SQRegFunction;
|
||||
|
||||
/*vm*/
|
||||
SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);
|
||||
SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);
|
||||
SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_close(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);
|
||||
SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);
|
||||
SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror);
|
||||
SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);
|
||||
|
||||
/*compiler*/
|
||||
SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
|
||||
SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
|
||||
SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
|
||||
SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
|
||||
SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
|
||||
|
||||
/*stack operations*/
|
||||
SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop);
|
||||
SQUIRREL_API void sq_poptop(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop);
|
||||
SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);
|
||||
SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);
|
||||
|
||||
/*object creation handling*/
|
||||
SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);
|
||||
SQUIRREL_API void sq_newtable(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size);
|
||||
SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
|
||||
SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);
|
||||
SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);
|
||||
SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f);
|
||||
SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n);
|
||||
SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b);
|
||||
SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
|
||||
SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
|
||||
SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
|
||||
SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
|
||||
SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
|
||||
SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
|
||||
SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread);
|
||||
SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
|
||||
SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
|
||||
SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
|
||||
SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
|
||||
SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
|
||||
SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);
|
||||
SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);
|
||||
SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);
|
||||
SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
|
||||
SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
|
||||
SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase);
|
||||
SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);
|
||||
|
||||
/*object manipulation*/
|
||||
SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
|
||||
SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
|
||||
SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);
|
||||
|
||||
/*calls*/
|
||||
SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror);
|
||||
SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
|
||||
SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
|
||||
SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);
|
||||
SQUIRREL_API void sq_reseterror(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);
|
||||
|
||||
/*raw object handling*/
|
||||
SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
|
||||
SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);
|
||||
SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
SQUIRREL_API void sq_resetobject(HSQOBJECT *po);
|
||||
SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);
|
||||
SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o);
|
||||
SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o);
|
||||
SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o);
|
||||
SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);
|
||||
|
||||
/*GC*/
|
||||
SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v);
|
||||
|
||||
/*serialization*/
|
||||
SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
|
||||
SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
|
||||
|
||||
/*mem allocation*/
|
||||
SQUIRREL_API void *sq_malloc(SQUnsignedInteger size);
|
||||
SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
|
||||
SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
|
||||
|
||||
/*debug*/
|
||||
SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
|
||||
SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
|
||||
|
||||
/*UTILITY MACRO*/
|
||||
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
|
||||
#define sq_istable(o) ((o)._type==OT_TABLE)
|
||||
#define sq_isarray(o) ((o)._type==OT_ARRAY)
|
||||
#define sq_isfunction(o) ((o)._type==OT_FUNCPROTO)
|
||||
#define sq_isclosure(o) ((o)._type==OT_CLOSURE)
|
||||
#define sq_isgenerator(o) ((o)._type==OT_GENERATOR)
|
||||
#define sq_isnativeclosure(o) ((o)._type==OT_NATIVECLOSURE)
|
||||
#define sq_isstring(o) ((o)._type==OT_STRING)
|
||||
#define sq_isinteger(o) ((o)._type==OT_INTEGER)
|
||||
#define sq_isfloat(o) ((o)._type==OT_FLOAT)
|
||||
#define sq_isuserpointer(o) ((o)._type==OT_USERPOINTER)
|
||||
#define sq_isuserdata(o) ((o)._type==OT_USERDATA)
|
||||
#define sq_isthread(o) ((o)._type==OT_THREAD)
|
||||
#define sq_isnull(o) ((o)._type==OT_NULL)
|
||||
#define sq_isclass(o) ((o)._type==OT_CLASS)
|
||||
#define sq_isinstance(o) ((o)._type==OT_INSTANCE)
|
||||
#define sq_isbool(o) ((o)._type==OT_BOOL)
|
||||
#define sq_isweakref(o) ((o)._type==OT_WEAKREF)
|
||||
#define sq_type(o) ((o)._type)
|
||||
|
||||
/* deprecated */
|
||||
#define sq_createslot(v,n) sq_newslot(v,n,SQFalse)
|
||||
|
||||
#define SQ_OK (0)
|
||||
#define SQ_ERROR (-1)
|
||||
|
||||
#define SQ_FAILED(res) (res<0)
|
||||
#define SQ_SUCCEEDED(res) (res>=0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQUIRREL_H_*/
|
||||
|
|
@ -27,7 +27,7 @@ public:
|
|||
//构造jmp
|
||||
m_self_byte[0] = '\xe9';
|
||||
//计算偏移
|
||||
int offset = self_address - (original_address + Byte_Length);
|
||||
int offset = self_address+1 - (original_address + Byte_Length);
|
||||
|
||||
//构造跳转到我们的函数BYTE
|
||||
memcpy(&m_self_byte[1], &offset, Byte_Length - 2);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
|
@ -51,25 +51,25 @@ static Sq_Get* SQ_Get = (Sq_Get*)0x135AE30;
|
|||
#define SQOBJECT_DELEGABLE 0x02000000
|
||||
#define SQOBJECT_CANBEFALSE 0x01000000
|
||||
|
||||
typedef enum tagSQObjectType {
|
||||
OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
|
||||
OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
|
||||
OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
|
||||
OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
|
||||
OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
|
||||
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
|
||||
OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
|
||||
OT_USERPOINTER = _RT_USERPOINTER,
|
||||
OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
|
||||
OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
|
||||
OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
|
||||
OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
|
||||
}SQObjectType;
|
||||
//typedef enum tagSQObjectType {
|
||||
// OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
|
||||
// OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
// OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
// OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
|
||||
// OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
|
||||
// OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
// OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
|
||||
// OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
// OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
|
||||
// OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
|
||||
// OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
|
||||
// OT_USERPOINTER = _RT_USERPOINTER,
|
||||
// OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
|
||||
// OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
|
||||
// OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
|
||||
// OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
// OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
|
||||
//}SQObjectType;
|
||||
//SQ_GetType
|
||||
typedef int(Sq_GetType)(uint32_t v, int n);
|
||||
static Sq_GetType* SQ_GetType = (Sq_GetType*)0x1358CD0;
|
||||
|
|
@ -143,6 +143,11 @@ static SqPushFloatFunc* SQPushFloat = (SqPushFloatFunc*)0x1358B60;
|
|||
typedef int(SqPushUserpointerFunc)(uint32_t v, void* sfloat);
|
||||
static SqPushUserpointerFunc* SqPushUserpointer = (SqPushUserpointerFunc*)0x1358BA0;
|
||||
|
||||
////sq_newarray
|
||||
//typedef int(_sq_newarray)(uint32_t v, int count);
|
||||
//static _sq_newarray* sq_newarray = (_sq_newarray*)0x135A490;
|
||||
|
||||
|
||||
|
||||
//SQLOADFILE
|
||||
typedef void* (SQLOADFILEFunc)(uint32_t v, const wchar_t* filename, BOOL printerror);
|
||||
|
|
@ -218,9 +223,14 @@ public://
|
|||
|
||||
static int SQloadfileBuffer(uint32_t v, const wchar_t* filename, const wchar_t* str,BOOL printerror);
|
||||
static int SQdofileBuffer(uint32_t v, const wchar_t* filename, const wchar_t* str);
|
||||
|
||||
static int LenheartGetIntData(uint32_t v);//获取静态数据
|
||||
public://绘制类
|
||||
static int sq_GetImg(uint32_t v);
|
||||
static int sq_DrawItem(uint32_t v);
|
||||
static int sq_DrawImg(uint32_t v);//绘制Img
|
||||
static int sq_IntiNumberDraw(uint32_t v);//初始化数字绘制
|
||||
static int sq_DrawNumber(uint32_t v);//数字绘制
|
||||
|
||||
public://对象类
|
||||
static int GetObjectAddress(uint32_t v);//获取对象地址
|
||||
|
|
@ -230,11 +240,16 @@ public://
|
|||
static int SetObjectInfo(uint32_t v);//设置对象属性
|
||||
static int SetObjectDeInfo(uint32_t v);//设置对象属性
|
||||
static int GetObjectLevel(uint32_t v);//获取对象等级
|
||||
static int sq_GetPlayerEachName(uint32_t v);//获取玩家交互对象名字
|
||||
|
||||
|
||||
public://NUT API ½Ó¿Ú
|
||||
public:
|
||||
|
||||
//NUT API 接口
|
||||
static int sq_GetSkillAddress(uint32_t v);//获取技能地址
|
||||
static int sq_Test(uint32_t v);//测试接口
|
||||
static int sq_OpenConsole(uint32_t v);//´ò¿ª¿ØÖÆÌ¨
|
||||
static int sq_OpenConsole(uint32_t v);
|
||||
//打开控制台
|
||||
static int sq_Switching(uint32_t v);//换装参数
|
||||
static int sq_MoveMap(uint32_t v);//顺图
|
||||
static int GetCharacterAttribute(uint32_t v);//读人物或装备属性
|
||||
|
|
@ -259,6 +274,7 @@ public://NUT API
|
|||
static int RegisterItemColor_STL(uint32_t v);//设置项目颜色
|
||||
static int RegisterCodeDraw_STL(uint32_t v);//设置项目颜色
|
||||
static int Sout(uint32_t v);//输出
|
||||
static int Clock(uint32_t v);//获取程序运行时间
|
||||
|
||||
public://发包 API
|
||||
static int SendPackType(uint32_t v);//发包类型
|
||||
|
|
|
|||
27
test/pch.h
27
test/pch.h
|
|
@ -37,28 +37,30 @@
|
|||
//#define RsHook "RsHook 开启"
|
||||
//#define DOFILE_HOOK "群服dofile hook"
|
||||
|
||||
//#define COUTWINDOWS_SWITCH "输出窗口 开启"
|
||||
|
||||
#ifndef SELL
|
||||
#define COUTWINDOWS_SWITCH "输出窗口 开启"
|
||||
#define GOLD_LIGHT "曙光 开启"
|
||||
#define ITEMRARITY "道具品级 开启"
|
||||
#define MONSTER_BLOOD_UI "血槽修改 开启"
|
||||
|
||||
#define CREAT_CHR_UI "创建角色 开启"
|
||||
#define GET_EXE_STR "获取EXE字符串索引 开启"
|
||||
#define DRAWITEM "绘制ITEM 开启"
|
||||
#define HOOKDRAWITEM "HOOK绘制ITEM 开启"
|
||||
#define SETTINGWINDOWS "设置窗口HOOK 开启"
|
||||
#define CODEDRAW "HOOK文字 开启"
|
||||
#define HUDUI_100 "百级UI 开启"
|
||||
//#define HUDUI_100 "百级UI 开启"
|
||||
#define SENDPACKHOOK_EX "发包HookEX 开启"
|
||||
|
||||
#define RecoverySystem "回收系统 开启"
|
||||
#define Inventory_M_Pos "背包鼠标位置HOOK 开启"//(开启回收系统需要鼠标位置支持)
|
||||
#endif // !SELL
|
||||
|
||||
|
||||
#define MOUSE_SWITCH "鼠标回调 开启"
|
||||
#define SENDPACKHOOK "发包Hook 开启"
|
||||
#define COPY_MESSAGE "消息框黏贴HOOK 开启"
|
||||
|
||||
#define SENDPACKHOOK_EX "发包HookEX 开启"
|
||||
|
||||
|
||||
#define CHRATRBT_SWITCH "人物或装备属性 查看 修改 开启"
|
||||
|
|
@ -73,6 +75,7 @@
|
|||
#define DOFILE_API_SWITCH "L_Dofile调用 开启"
|
||||
#define ADDRESS_API_SWITCH "内存操作 开启"
|
||||
#define NEW_WINDOW_API_SWITCH "L新建窗口 开启"
|
||||
#define YOSIN_BASE "娱心基础配置 开启"
|
||||
|
||||
|
||||
#define DRAGONBOX_SWITCH "龙盒开启"
|
||||
|
|
@ -87,7 +90,15 @@
|
|||
#define HUSHI_SWITCH "护石开启"
|
||||
#define BUFFSWITCHING_SWITCH "buff换装开启"
|
||||
#define NEWUPGRADE_SWITCH "新版强化开启"
|
||||
|
||||
#define SIGN_IN_SWITCH "签到开启"
|
||||
#define SERVER_AUCTION_SWITCH "全服竞拍开启"
|
||||
#define RAID_AUCTION_SWITCH "团本竞拍开启"
|
||||
#define ONLINEEVENT_SYSTEM "在线签到开启"
|
||||
#define MARRY_SYSTEM "结婚系统开启"
|
||||
#define FATE_SELECT_SYSTEM "命运的抉择开启"
|
||||
#define FONT_BANK_SYSTEM "字体仓库开启"
|
||||
#define RecoverySystem "回收系统 开启"
|
||||
#define Inventory_M_Pos "背包鼠标位置HOOK 开启"//(开启回收系统需要鼠标位置支持)
|
||||
|
||||
#define NORMAL_STL "普通STL开启"
|
||||
#define TIME_STL "时间STL开启"
|
||||
|
|
@ -114,6 +125,9 @@
|
|||
# define Skey {5,1,9,1,3}
|
||||
#endif
|
||||
|
||||
# define DFCSkey {7,2,4,3,8}
|
||||
|
||||
|
||||
# define Pri_key "-----BEGIN PRIVATE KEY-----\n"\
|
||||
"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFRCM7WMVgU81p\n"\
|
||||
"JXGmH7nxun7IaXiERWtegwJ7WsV6I4D+K4TMHkm5LVgnsQnFWluJhNkpO7iMR7mA\n"\
|
||||
|
|
@ -153,3 +167,6 @@
|
|||
#include "hook.h"
|
||||
#include "lsquirrel.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
123
test/sock.cpp
123
test/sock.cpp
|
|
@ -25,7 +25,7 @@ void sock::Pack_Control(int idx, int code, void* p3, void* p4)
|
|||
int Op = Dom["op"].GetInt();//ÅжÏÀàÐÍ
|
||||
|
||||
|
||||
#if defined GOLD_LIGHT
|
||||
#if !defined GOLD_LIGHTT
|
||||
wchar_t* ss = DNFTOOL::charTowchar_t(Buffer);
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
|
|
@ -216,6 +216,127 @@ void sock::Pack_Control(int idx, int code, void* p3, void* p4)
|
|||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//签到包
|
||||
#ifdef SIGN_IN_SWITCH
|
||||
if (Op >= 20051000 && Op <= 20051999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//全服竞拍
|
||||
#ifdef SERVER_AUCTION_SWITCH
|
||||
if (Op >= 25701000 && Op <= 25701999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//在线签到活动
|
||||
#ifdef ONLINEEVENT_SYSTEM
|
||||
if (Op >= 20052000 && Op <= 20052999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//结婚系统
|
||||
#ifdef MARRY_SYSTEM
|
||||
if (Op >= 20019000 && Op <= 20019999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//命运的抉择
|
||||
#ifdef FATE_SELECT_SYSTEM
|
||||
if (Op >= 20023000 && Op <= 20023999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//字体仓库
|
||||
#ifdef FONT_BANK_SYSTEM
|
||||
if (Op >= 20024000 && Op <= 20024999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
//团本竞拍
|
||||
#ifdef RAID_AUCTION_SWITCH
|
||||
if (Op >= 25700000 && Op <= 25700999)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
//娱心基础配置
|
||||
#ifdef YOSIN_BASE
|
||||
if (Op >= 30000 && Op <= 40000)
|
||||
{
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"Sq_Pack_Control", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
|
||||
SQ_Call(v, 2, 0, 1);
|
||||
SQPop(v, 2);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
1360
test/squirrel.cpp
1360
test/squirrel.cpp
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,316 @@
|
|||
#pragma once
|
||||
#include "DNFTOOL.h"
|
||||
#include "RSAC.h"
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------Squirrel
|
||||
// printFunc 输出调用栈和栈内容
|
||||
typedef int(SqPrintFunc)(uint32_t v);
|
||||
static SqPrintFunc* SQPrintFunc = (SqPrintFunc*)0x1354060;
|
||||
// PushRoot
|
||||
typedef int(SqPushRootFunc)(uint32_t v);
|
||||
static SqPushRootFunc* SQPushRootTable = (SqPushRootFunc*)0x1358C50;
|
||||
// Push 函数绑定闭包
|
||||
typedef int(realSqNewClosure)(uint32_t v, void* funcAddr, int a);
|
||||
static realSqNewClosure* RealSqNewClosure = (realSqNewClosure*)0x135B850;
|
||||
#define INIT_NUT_ADDRESS 0x135B850
|
||||
static realSqNewClosure* MLnewclosure = nullptr;
|
||||
// New槽
|
||||
typedef int(SqNewSlot)(uint32_t v, int a, BOOL b);
|
||||
static SqNewSlot* SQNewSlot = (SqNewSlot*)0x135AA80;
|
||||
// 平栈
|
||||
typedef int(SqPopTop)(uint32_t v);
|
||||
static SqPopTop* SQPopTop = (SqPopTop*)0x1358FF0;
|
||||
// 平栈
|
||||
typedef int(SqPop)(uint32_t v, int n);
|
||||
static SqPop* SQPop = (SqPop*)0x1358FD0;
|
||||
//SQ_Get
|
||||
typedef int(Sq_Get)(uint32_t v, int n);
|
||||
static Sq_Get* SQ_Get = (Sq_Get*)0x135AE30;
|
||||
|
||||
#define _RT_NULL 0x00000001
|
||||
#define _RT_INTEGER 0x00000002
|
||||
#define _RT_FLOAT 0x00000004
|
||||
#define _RT_BOOL 0x00000008
|
||||
#define _RT_STRING 0x00000010
|
||||
#define _RT_TABLE 0x00000020
|
||||
#define _RT_ARRAY 0x00000040
|
||||
#define _RT_USERDATA 0x00000080
|
||||
#define _RT_CLOSURE 0x00000100
|
||||
#define _RT_NATIVECLOSURE 0x00000200
|
||||
#define _RT_GENERATOR 0x00000400
|
||||
#define _RT_USERPOINTER 0x00000800
|
||||
#define _RT_THREAD 0x00001000
|
||||
#define _RT_FUNCPROTO 0x00002000
|
||||
#define _RT_CLASS 0x00004000
|
||||
#define _RT_INSTANCE 0x00008000
|
||||
#define _RT_WEAKREF 0x00010000
|
||||
|
||||
#define SQOBJECT_REF_COUNTED 0x08000000
|
||||
#define SQOBJECT_NUMERIC 0x04000000
|
||||
#define SQOBJECT_DELEGABLE 0x02000000
|
||||
#define SQOBJECT_CANBEFALSE 0x01000000
|
||||
|
||||
typedef enum tagSQObjectType {
|
||||
OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
|
||||
OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
|
||||
OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
|
||||
OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
|
||||
OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
|
||||
OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
|
||||
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
|
||||
OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
|
||||
OT_USERPOINTER = _RT_USERPOINTER,
|
||||
OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
|
||||
OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
|
||||
OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
|
||||
OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
|
||||
OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
|
||||
}SQObjectType;
|
||||
//SQ_GetType
|
||||
typedef int(Sq_GetType)(uint32_t v, int n);
|
||||
static Sq_GetType* SQ_GetType = (Sq_GetType*)0x1358CD0;
|
||||
|
||||
|
||||
|
||||
//SQ_Rawget
|
||||
typedef int(Sq_Rawget)(uint32_t v, int n);
|
||||
static Sq_Rawget* SQ_Rawget = (Sq_Rawget*)0x135AEA0;
|
||||
//SQ*Getlocal
|
||||
typedef wchar_t* (SqGetlocal)(uint32_t v, int n, int idx);
|
||||
static SqGetlocal* SQGetlocal = (SqGetlocal*)0x135AFD0;
|
||||
//SQ_Wakeupvm
|
||||
typedef int (Sq_Wakeupvm)(uint32_t v, int n, int retval, int raiseerror);
|
||||
static Sq_Wakeupvm* SQ_Wakeupvm = (Sq_Wakeupvm*)0x135B0D0;
|
||||
//SQ_Call
|
||||
typedef int (Sq_CallFunc)(uint32_t v, int params, int retval, int raiseerror);
|
||||
static Sq_CallFunc* SQ_Call = (Sq_CallFunc*)0x1359280;
|
||||
//SQ_Remove
|
||||
typedef int (SQ_RemoveFunc)(uint32_t v, int idx);
|
||||
static SQ_RemoveFunc* SQ_Remove = (SQ_RemoveFunc*)0x1359000;
|
||||
//GetInt
|
||||
typedef int(SqGetIntFunc)(uint32_t v, uint32_t stackIndex, int* sint);
|
||||
static SqGetIntFunc* SQGetInt = (SqGetIntFunc*)0x1358D70;
|
||||
//GetFloat
|
||||
typedef int(SqGetFloatFunc)(uint32_t v, uint32_t stackIndex, FLOAT* sfloat);
|
||||
static SqGetFloatFunc* SQGetFloat = (SqGetFloatFunc*)0x1358DD0;
|
||||
//GetBool
|
||||
typedef int(SqGetBoolFunc)(uint32_t v, uint32_t stackIndex, BOOL* sbool);
|
||||
static SqGetBoolFunc* SQGetBool = (SqGetBoolFunc*)0x1358E30;
|
||||
//GetString
|
||||
typedef int(SqGetStringFunc)(uint32_t v, uint32_t stackIndex, wchar_t** sstring);
|
||||
static SqGetStringFunc* SQGetString = (SqGetStringFunc*)0x1358E70;
|
||||
typedef int(SqGetStringCFunc)(uint32_t v, uint32_t stackIndex, char** sstring);
|
||||
static SqGetStringCFunc* SQGetStringc = (SqGetStringCFunc*)0x1358E70;
|
||||
//GetUserdata
|
||||
typedef int(SqGetUserdataFunc)(uint32_t v, uint32_t stackIndex, DWORD* up, DWORD* up1);
|
||||
static SqGetUserdataFunc* SQGetUserdata = (SqGetUserdataFunc*)0x1358EC0;
|
||||
//GetObjtypetag
|
||||
typedef int(SqGetObjtypetagFunc)(uint32_t v, DWORD* up);
|
||||
static SqGetObjtypetagFunc* SQGetObjtypetag = (SqGetObjtypetagFunc*)0x1358F20;
|
||||
//GetUserpointer
|
||||
typedef int(SqGetUserpointerFunc)(uint32_t v, uint32_t idx, DWORD* up);
|
||||
static SqGetUserpointerFunc* SQGetUserpointer = (SqGetUserpointerFunc*)0x1358F80;
|
||||
//GetTop
|
||||
typedef int(SqGetTopFunc)(uint32_t v);
|
||||
static SqGetTopFunc* SQGetTop = (SqGetTopFunc*)0x1358FC0;
|
||||
//Push
|
||||
typedef int(SqPushFunc)(uint32_t v, int idx);
|
||||
static SqPushFunc* SQPush = (SqPushFunc*)0x1358C90;
|
||||
//PushString
|
||||
typedef int(SqPushStringFunc)(uint32_t v, const wchar_t* s, int len);
|
||||
typedef int(SqPushStringFuncs)(uint32_t v, const char* s, int len);
|
||||
static SqPushStringFunc* SQPushString = (SqPushStringFunc*)0x1358A60;
|
||||
static SqPushStringFuncs* SQPushStringc = (SqPushStringFuncs*)0x1358A60;
|
||||
//PushInt
|
||||
typedef int(SqPushIntFunc)(uint32_t v, int sint);
|
||||
static SqPushIntFunc* SQPushInt = (SqPushIntFunc*)0x1358AD0;
|
||||
//PushBool
|
||||
typedef int(SqPushBoolFunc)(uint32_t v, BOOL sbool);
|
||||
static SqPushBoolFunc* SQPushBool = (SqPushBoolFunc*)0x1358B10;
|
||||
//PushFloat
|
||||
typedef int(SqPushFloatFunc)(uint32_t v, FLOAT sfloat);
|
||||
static SqPushFloatFunc* SQPushFloat = (SqPushFloatFunc*)0x1358B60;
|
||||
|
||||
|
||||
|
||||
//SQLOADFILE
|
||||
typedef void* (SQLOADFILEFunc)(uint32_t v, const wchar_t* filename, BOOL printerror);
|
||||
static SQLOADFILEFunc* SQLOADFILEF = (SQLOADFILEFunc*)0x13560E0;
|
||||
//SQDOFILE
|
||||
typedef void* (SQDOFILEFunc)(uint32_t v, const wchar_t* filename, BOOL retval, BOOL printerror);
|
||||
static SQDOFILEFunc* SQDOFILE = (SQDOFILEFunc*)0x1356240;
|
||||
|
||||
|
||||
|
||||
typedef void* (*SQFILE)();
|
||||
#define SQ_SUCCEEDED(res) (res>=0)
|
||||
//SQ_io_file_lexfeed_编码
|
||||
//typedef int(LSQLEXREADFUNC)(int n);
|
||||
typedef int(*LSQLEXREADFUNC)(int n);
|
||||
static LSQLEXREADFUNC SQ_io_file_lexfeed_ASCII = (LSQLEXREADFUNC)0x1355F60;
|
||||
static LSQLEXREADFUNC SQ_io_file_lexfeed_UCS2_BE = (LSQLEXREADFUNC)0x1356050;
|
||||
static LSQLEXREADFUNC SQ_io_file_lexfeed_UCS2_LE = (LSQLEXREADFUNC)0x1356020;
|
||||
static LSQLEXREADFUNC SQ_io_file_lexfeed_UTF8 = (LSQLEXREADFUNC)0x1355F90;
|
||||
//SQfopen
|
||||
typedef SQFILE* (SQfopenFunc)(const wchar_t* filename, const wchar_t* type);
|
||||
static SQfopenFunc* SQfopen = (SQfopenFunc*)0x1355DC0;
|
||||
//SQfread
|
||||
typedef int(SQfreadFunc)(void* buffer, int a, int b, void* file);
|
||||
static SQfreadFunc* SQfread = (SQfreadFunc*)0x1355DD0;
|
||||
//SQwrite
|
||||
typedef int(SQwriteFunc)(void* buffer, int a, int b, void* file);
|
||||
static SQwriteFunc* SQwrite = (SQwriteFunc*)0x1355DE0;
|
||||
//SQfseek
|
||||
typedef int(SQfseekFunc)(void* buffer, int a, int b);
|
||||
static SQfseekFunc* SQfseek = (SQfseekFunc*)0x1355DF0;
|
||||
//SQftell
|
||||
typedef int(SQftellFunc)(void* file);
|
||||
static SQftellFunc* SQftell = (SQftellFunc*)0x1355E50;
|
||||
//SQ_File_read
|
||||
typedef int(SQ_File_readFunc)(void* file, void* afile, int a);
|
||||
static SQ_File_readFunc* SQ_File_read = (SQ_File_readFunc*)0x1356090;
|
||||
//SQ_Readclosure
|
||||
typedef int(SQ_ReadclosureFunc)(uint32_t v, SQ_File_readFunc a, void* file);
|
||||
static SQ_ReadclosureFunc* SQ_Readclosure = (SQ_ReadclosureFunc*)0x1359460;
|
||||
//SQ_Fclose
|
||||
typedef int(SQ__FcloseFunc)(void* file);
|
||||
static SQ__FcloseFunc* SQ__Fclose = (SQ__FcloseFunc*)0x1355E70;
|
||||
//SQ_Compile
|
||||
typedef int(SQ_CompileFunc)(uint32_t v, LSQLEXREADFUNC FUNC, void* file, const wchar_t* filename, BOOL printerror);
|
||||
static SQ_CompileFunc* SQ_Compile = (SQ_CompileFunc*)0x135A390;
|
||||
//SQ_Throwerror
|
||||
typedef int(SQ_ThrowerrorFunc)(uint32_t v, const wchar_t* error);
|
||||
static SQ_ThrowerrorFunc* SQ_Throwerror = (SQ_ThrowerrorFunc*)0x13591A0;
|
||||
|
||||
//获取Squirrel v 基址
|
||||
inline uint32_t GetSqVm();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class squirrel
|
||||
{
|
||||
private:
|
||||
|
||||
|
||||
public://加载
|
||||
static int SQloadfile(uint32_t v, const wchar_t* filename, BOOL printerror);
|
||||
static int SQdofile(uint32_t v, const wchar_t* filename, BOOL retval, BOOL printerror);
|
||||
|
||||
public://NUT API 接口
|
||||
static int sq_Test(uint32_t v);//测试接口
|
||||
static int GetCharacterAttribute(uint32_t v);//读人物或装备属性
|
||||
static int SetCharacterAttribute(uint32_t v);//写人物或装备属性
|
||||
static int GetTownIndex(uint32_t v);//获取城镇编号
|
||||
static int GetRegionIndex(uint32_t v);//获取城镇区域编号
|
||||
static int GetTownXpos(uint32_t v);//获取城镇X坐标
|
||||
static int GetTownYpos(uint32_t v);//获取城镇Y坐标
|
||||
static int GetFatigue(uint32_t v);//获取疲劳值
|
||||
static int GetExp(uint32_t v);//获取经验值
|
||||
static int GoDungeon(uint32_t v);//去副本
|
||||
static int GoTown(uint32_t v);//回城
|
||||
static int MoveTown(uint32_t v);//回城
|
||||
static int LDofile(uint32_t v);//Ldofile
|
||||
static int Lcout(uint32_t v);//Lcout
|
||||
static int NewWindows(uint32_t v);//新建窗口
|
||||
static int SetSlot(uint32_t v);//设置UI槽坐标
|
||||
|
||||
public://发包 API
|
||||
static int SendPackType(uint32_t v);//发包类型
|
||||
static int SendPackByte(uint32_t v);//发包Byte
|
||||
static int SendPackWord(uint32_t v);//发包Word
|
||||
static int SendPackDWord(uint32_t v);//发包DWord
|
||||
static int SendPackWChar(uint32_t v);//发包char*
|
||||
static int SendPack(uint32_t v);//发包
|
||||
|
||||
static int GivePlayerItem(uint32_t v);//发物品给玩家
|
||||
static int GivePlayerEqu(uint32_t v);//发装备给玩家
|
||||
|
||||
public://容器类接口
|
||||
static int Get_STL(uint32_t v);//查询 类型容器
|
||||
static int Set_STL(uint32_t v);//设置 类型容器
|
||||
static int New_STL(uint32_t v);//new 类型容器
|
||||
static int Timer_STL(uint32_t v);//时间容器
|
||||
static int Jsoner_STL(uint32_t v);//时间容器
|
||||
|
||||
static int Coder_STL(uint32_t v);//时间容器
|
||||
|
||||
public://龙盒
|
||||
static int Sync_Dragon_Pack(uint32_t v);//同步 龙盒数据包
|
||||
static int Get_Dragon_Pack(uint32_t v);//获取 龙盒数据包
|
||||
static int Redom_Dragon(uint32_t v);//发送 开龙盒
|
||||
static int Get_DragonModel(uint32_t v);//获取 龙盒 模式
|
||||
static int Set_DragonModel(uint32_t v);//设置 龙盒 模式
|
||||
|
||||
public:
|
||||
|
||||
//新增nut接口funcName绑定C语言函数funcAddr
|
||||
static void RegisterNutApi(const wchar_t* funcName, void* funcAddr, uint32_t v);
|
||||
//注册接口
|
||||
static void R_Register_Nut();
|
||||
};
|
||||
|
||||
|
||||
|
||||
//新增Nut接口绑定C函数
|
||||
// 示例如下
|
||||
/*
|
||||
static int GoDungeon(uint32_t v)
|
||||
{
|
||||
int n1 = 0;
|
||||
int n2 = 0;
|
||||
int n3 = 0;
|
||||
int n4 = 0;
|
||||
|
||||
int num;
|
||||
num = SQGetTop(v);
|
||||
|
||||
if (num == 2)
|
||||
{
|
||||
SQGetInt(v, 2, &n1);
|
||||
}
|
||||
else if (num == 5)
|
||||
{
|
||||
SQGetInt(v, 2, &n1);
|
||||
SQGetInt(v, 3, &n2);
|
||||
SQGetInt(v, 4, &n3);
|
||||
SQGetInt(v, 5, &n4);
|
||||
}
|
||||
else
|
||||
{
|
||||
SQPushBool(v, false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
_SendpacksType(*_SendClass, 0, 15);
|
||||
_SendPacks();
|
||||
|
||||
_SendpacksType(*_SendClass, 0, 16);
|
||||
_SendPacksWord(*_SendClass, 0, n1);
|
||||
_SendPacksByte(*_SendClass, 0, n2);
|
||||
_SendPacksByte(*_SendClass, 0, n3);
|
||||
_SendPacksByte(*_SendClass, 0, n4);
|
||||
_SendPacks();
|
||||
|
||||
SQPushBool(v, true);
|
||||
//return 1 表示该函数有返回值传给nut脚本 0则无
|
||||
return 1;
|
||||
}
|
||||
*/
|
||||
//新增C++调用 nut
|
||||
// 示例如下
|
||||
/*
|
||||
uint32_t v = GetSqVm();
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"dofile", -1);
|
||||
SQ_Get(v, -2);
|
||||
SQPushRootTable(v);
|
||||
SQPushString(v, L"1.cpp", -1);
|
||||
SQ_Call(v, 2, 1, 0);
|
||||
SQPop(v, 2);
|
||||
*/
|
||||
|
|
@ -78,9 +78,10 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>F:\zhuomian\新客户端\Plugins\</OutDir>
|
||||
<OutDir>I:\DOF\新客户端\Plugins\</OutDir>
|
||||
<LibraryPath>G:\Qt\Tools\OpenSSL\Win_x86\lib;$(LibraryPath)</LibraryPath>
|
||||
<IncludePath>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\include;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\imgui;G:\Qt\Tools\OpenSSL\Win_x86\include;$(IncludePath)</IncludePath>
|
||||
<TargetName>Lenheart</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
|
|
@ -123,7 +124,7 @@
|
|||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<Optimization>Full</Optimization>
|
||||
<DisableSpecificWarnings>4244;4018;</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings>4244;4018;4996;</DisableSpecificWarnings>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
|
@ -132,8 +133,8 @@
|
|||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
<AdditionalDependencies>libMinHook.x86.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\lib.X86;D:\hookDNF\DOF_DllHook\test;E:\openssl\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libMinHook.x86.lib;libcrypto.lib;libssl.lib;squirrel.lib;sqstdlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>H:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\lib;C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\lib.X86;D:\hookDNF\DOF_DllHook\test;E:\openssl\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries>
|
||||
</IgnoreSpecificDefaultLibraries>
|
||||
</Link>
|
||||
|
|
@ -179,6 +180,7 @@
|
|||
<ClInclude Include="DNFTOOL.h" />
|
||||
<ClInclude Include="hook.h" />
|
||||
<ClInclude Include="inlinehook.h" />
|
||||
<ClInclude Include="json.hpp" />
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="ReadNpk.hpp" />
|
||||
<ClInclude Include="RSAC.h" />
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@
|
|||
<ClInclude Include="ReadNpk.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="json.hpp">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
|
|
|
|||
Loading…
Reference in New Issue