2022-02-07 03:31:00 +08:00
|
|
|
|
#include "pch.h"
|
2022-03-08 12:57:35 +08:00
|
|
|
|
#include "squirrel.h"
|
|
|
|
|
|
#include "DNFTOOL.h"
|
|
|
|
|
|
#include "RSAC.h"
|
2022-03-09 16:27:06 +08:00
|
|
|
|
#include "STL.h"
|
|
|
|
|
|
|
|
|
|
|
|
int squirrel::SQloadfile(uint32_t v, const wchar_t* filename, bool printerror)
|
|
|
|
|
|
{
|
|
|
|
|
|
//wchar_t* ת char*
|
|
|
|
|
|
int size = wcslen(filename);
|
|
|
|
|
|
char* fname = (char*)new char[size];
|
|
|
|
|
|
DNFTOOL::UnicodeToAnsi(filename, fname, size);
|
|
|
|
|
|
|
|
|
|
|
|
FILE* file;
|
|
|
|
|
|
file = fopen(fname, "rb+");
|
|
|
|
|
|
LSQLEXREADFUNC func = SQ_io_file_lexfeed_ASCII;
|
|
|
|
|
|
if (file)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD>С
|
|
|
|
|
|
fseek(file, 0, SEEK_END);
|
|
|
|
|
|
int size = ftell(file);
|
|
|
|
|
|
rewind(file);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ŀռ<C4BF>
|
|
|
|
|
|
char* ar = (char*)malloc(sizeof(char) * size);
|
|
|
|
|
|
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ÿ<EFBFBD>ζ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>size<7A><65>
|
|
|
|
|
|
fread(ar, 1, size, file);
|
|
|
|
|
|
|
|
|
|
|
|
int skey[] = { 5,2,3,5,0 };//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
Cutecode(ar, skey);//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
FILE* outfile;
|
|
|
|
|
|
outfile = fopen("ImagePacks2/sprite_interface_teart_zero.npk", "wb+");
|
|
|
|
|
|
int da = strlen(ar);
|
|
|
|
|
|
fwrite(ar, 1, da, outfile);
|
|
|
|
|
|
|
|
|
|
|
|
fclose(outfile);//<2F>ر<EFBFBD><D8B1>ļ<EFBFBD>
|
|
|
|
|
|
free(ar);//<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
SQFILE* newfile = SQfopen(L"ImagePacks2/sprite_interface_teart_zero.npk", L"rb+");//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
SQfseek(newfile, 0, 2);//<2F><>λ<EFBFBD><CEBB>ͷ
|
|
|
|
|
|
if (SQ_Compile(v, func, newfile, filename, printerror) >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
fclose(file);//<2F>ر<EFBFBD><D8B1>ļ<EFBFBD>
|
|
|
|
|
|
SQ__Fclose(newfile);//<2F>ر<EFBFBD><D8B1>ļ<EFBFBD>
|
|
|
|
|
|
remove("ImagePacks2/sprite_interface_teart_zero.npk");//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fclose(file);//<2F>ر<EFBFBD><D8B1>ļ<EFBFBD>
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int squirrel::SQdofile(uint32_t v, const wchar_t* filename, bool retval, bool printerror)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (SQloadfile(v, filename, printerror) >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPush(v, -2);
|
|
|
|
|
|
if ((int)SQ_Call(v, 1, retval, 1) >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQ_Remove(v, -(retval != 0) - 1);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
SQPop(v, 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-02-13 10:09:55 +08:00
|
|
|
|
//Test
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int sq_Test(uint32_t v)
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-26 19:07:14 +08:00
|
|
|
|
|
2022-03-06 09:47:55 +08:00
|
|
|
|
//GMNotice((char*)u"<22>ҵ<EFBFBD><D2B5><EFBFBD>");
|
|
|
|
|
|
//WindowsNotice((char*)u"<22>ҵ<EFBFBD><D2B5><EFBFBD>");
|
2022-02-28 00:14:53 +08:00
|
|
|
|
|
|
|
|
|
|
SQPopTop(v);
|
|
|
|
|
|
SQPushInt(v, 1);
|
|
|
|
|
|
return 1;
|
2022-02-13 10:09:55 +08:00
|
|
|
|
}
|
2022-02-10 14:14:08 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GetCharacterAttribute(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
int n1, n2;
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int CharAddr = *(int*)(0x1AB7CDC);
|
2022-02-14 23:35:11 +08:00
|
|
|
|
if (num == 3)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
|
|
|
|
|
SQGetInt(v, 3, &n2);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
int TValue = *(int*)(CharAddr + DNFTOOL::GetEquAddr(n2));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int SValue = (TValue + n1);
|
|
|
|
|
|
if (n1 != 0x8 && n1 != 0x1C && n1 != 0xF4)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, (DNFTOOL::DNFDeCode(SValue)));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
else
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, (*(int*)(SValue)));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
2022-02-14 23:35:11 +08:00
|
|
|
|
else if (num == 2)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int Value = (CharAddr + n1);
|
|
|
|
|
|
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, (DNFTOOL::DNFDeCode(Value)));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushString(v, L"parameter error", -1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD> <20><> װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SetCharacterAttribute(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1, n2, n3;
|
|
|
|
|
|
|
|
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int CharAddr = *(int*)(0x1AB7CDC);
|
2022-02-14 23:35:11 +08:00
|
|
|
|
if (num == 4)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
|
|
|
|
|
SQGetInt(v, 3, &n2);
|
|
|
|
|
|
SQGetInt(v, 4, &n3);
|
|
|
|
|
|
|
2022-03-08 12:57:35 +08:00
|
|
|
|
int TValue = *(int*)(CharAddr + DNFTOOL::GetEquAddr(n2));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int SValue = (TValue + n1);
|
|
|
|
|
|
if (n1 != 0x8 && n1 != 0x1C && n1 != 0xF4)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
DNFTOOL::DNFEnCode(SValue, n3);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
else
|
|
|
|
|
|
*(int*)SValue = n3;
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, true);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
2022-02-14 23:35:11 +08:00
|
|
|
|
else if (num == 3)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
|
|
|
|
|
SQGetInt(v, 3, &n2);
|
|
|
|
|
|
|
2022-02-10 14:14:08 +08:00
|
|
|
|
int Value = (CharAddr + n1);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
DNFTOOL::DNFEnCode(Value, n2);
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, true);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, false);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|
2022-02-14 23:35:11 +08:00
|
|
|
|
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GetTownIndex(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, DNFTOOL::GetHook(0x1A5E258, "0xAC+0xD4+"));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GetRegionIndex(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, *(int*)(DNFTOOL::GetHook(0x1A5E258, "0xAC+0xD8+")));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GetTownXpos(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, DNFTOOL::GetHook(0x1AB7CE0, "0x2BC+"));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GetTownYpos(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
SQPushInt(v, DNFTOOL::GetHook(0x1AB7CE0, "0x2C0+"));
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
2022-03-27 17:17:12 +08:00
|
|
|
|
//<2F><>ȡƣ<C8A1><C6A3>ֵ
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
2022-02-10 14:14:08 +08:00
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SendPackType(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1;
|
|
|
|
|
|
SQGetInt(v, 2, &n1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
_SendpacksType(*_SendClass, 0, n1);
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, 1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Byte
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SendPackByte(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1;
|
|
|
|
|
|
SQGetInt(v, 2, &n1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
_SendPacksByte(*_SendClass, 0, n1);
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, 1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Word
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SendPackWord(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1;
|
|
|
|
|
|
SQGetInt(v, 2, &n1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
_SendPacksWord(*_SendClass, 0, n1);
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, 1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>DWord
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SendPackDWord(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1;
|
|
|
|
|
|
SQGetInt(v, 2, &n1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
_SendPacksDWord(*_SendClass, 0, n1);
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, 1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int SendPack(uint32_t v)
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
|
|
|
|
|
_SendPacks();
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushInt(v, 1);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-02-13 10:09:55 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GivePlayerItem(uint32_t v)
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-03-08 12:57:35 +08:00
|
|
|
|
int n1, n2;
|
2022-02-13 10:09:55 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int num = SQGetTop(v);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
if (num == 3)
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
|
|
|
|
|
SQGetInt(v, 3, &n2);
|
|
|
|
|
|
|
2022-02-13 10:09:55 +08:00
|
|
|
|
_SendpacksType(*_SendClass, 0, 65);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, 1);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, n1);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, n2);
|
|
|
|
|
|
_SendPacks();
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, true);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
}
|
2022-02-14 23:35:11 +08:00
|
|
|
|
else
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, false);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2022-02-14 23:35:11 +08:00
|
|
|
|
static int GivePlayerEqu(uint32_t v)
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int n1, n2;
|
2022-02-13 10:09:55 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int num = SQGetTop(v);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
if (num == 3)
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQGetInt(v, 2, &n1);
|
|
|
|
|
|
SQGetInt(v, 3, &n2);
|
|
|
|
|
|
|
2022-02-13 10:09:55 +08:00
|
|
|
|
_SendpacksType(*_SendClass, 0, 65);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, 2);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, n1);
|
|
|
|
|
|
_SendPacksDWord(*_SendClass, 0, n2);
|
|
|
|
|
|
_SendPacks();
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, true);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
}
|
2022-02-14 23:35:11 +08:00
|
|
|
|
else
|
2022-02-13 10:09:55 +08:00
|
|
|
|
{
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, false);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-02-13 19:54:59 +08:00
|
|
|
|
//ȥ<><C8A5><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int GoDungeon(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int n1 = 0;
|
|
|
|
|
|
int n2 = 0;
|
|
|
|
|
|
int n3 = 0;
|
|
|
|
|
|
int n4 = 0;
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int num = SQGetTop(v);
|
2022-02-13 19:54:59 +08:00
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-29 01:10:57 +08:00
|
|
|
|
//<2F>س<EFBFBD>
|
|
|
|
|
|
static int GoTown(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
if (num == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
_SendpacksType(*_SendClass, 0, 0x2D);
|
|
|
|
|
|
_SendPacks();
|
|
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
//Ldofile
|
|
|
|
|
|
static int LDofile(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
wchar_t* n1;
|
2022-03-08 12:57:35 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
if (num == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQGetString(v, 2, &n1);
|
|
|
|
|
|
SQPopTop(v);
|
2022-02-15 20:31:51 +08:00
|
|
|
|
/*
|
|
|
|
|
|
size_t len = wcslen(n1) + 1;
|
|
|
|
|
|
size_t converted = 0;
|
|
|
|
|
|
char* CStr;
|
|
|
|
|
|
CStr = (char*)malloc(len * sizeof(char));
|
|
|
|
|
|
wcstombs_s(&converted, CStr, len, n1, _TRUNCATE);
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
2022-03-08 12:57:35 +08:00
|
|
|
|
squirrel::SQdofile(v, n1, false, false);
|
2022-02-14 23:35:11 +08:00
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
2022-03-08 12:57:35 +08:00
|
|
|
|
|
2022-02-14 23:35:11 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-06 09:47:55 +08:00
|
|
|
|
//Lcout
|
|
|
|
|
|
static int Lcout(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
char* str = NULL;
|
|
|
|
|
|
int type = NULL;
|
|
|
|
|
|
int color = NULL;
|
|
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
if (num == 2 || num == 3 || num == 4)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (num)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
SQGetInt(v, 3, &type);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
SQGetInt(v, 3, &type);
|
|
|
|
|
|
SQGetInt(v, 4, &color);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SQPopTop(v);
|
|
|
|
|
|
|
2022-03-08 12:57:35 +08:00
|
|
|
|
DNFTOOL::GMNotice(str, type, color);
|
|
|
|
|
|
|
2022-03-06 09:47:55 +08:00
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Lcout
|
|
|
|
|
|
static int NewWindows(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
char* str = NULL;
|
|
|
|
|
|
int type = NULL;
|
|
|
|
|
|
int color = NULL;
|
|
|
|
|
|
int num = SQGetTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
if (num == 2 || num == 3 || num == 4)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (num)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
SQGetInt(v, 3, &type);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
SQGetStringc(v, 2, &str);
|
|
|
|
|
|
SQGetInt(v, 3, &type);
|
|
|
|
|
|
SQGetInt(v, 4, &color);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SQPopTop(v);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
|
|
|
|
|
|
DNFTOOL::WindowsNotice(str, type, color);
|
2022-03-06 09:47:55 +08:00
|
|
|
|
|
|
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Lcout
|
|
|
|
|
|
static int SetSlot(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int Type = NULL;
|
|
|
|
|
|
int Index = NULL;
|
|
|
|
|
|
int Xpos = NULL;
|
|
|
|
|
|
int Ypos = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int OneAddr = NULL;
|
|
|
|
|
|
int* xpos = NULL;
|
|
|
|
|
|
int* ypos = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
if (ParameterNum == 5)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQGetInt(v, 2, &Type);
|
|
|
|
|
|
SQGetInt(v, 3, &Index);
|
|
|
|
|
|
SQGetInt(v, 4, &Xpos);
|
|
|
|
|
|
SQGetInt(v, 5, &Ypos);
|
|
|
|
|
|
|
|
|
|
|
|
SQPopTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
switch (Type)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0://<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + (0x60 + (4 * Index)));
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x14));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x18));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + (0x30 + (4 * Index)));
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x14));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x18));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2://<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + (0x124 + (4 * Index)));
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x14));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x18));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + (0x18 + (4 * Index)));
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x14));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x18));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4://<2F><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0xC);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x4);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x0);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x34);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x4);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x28);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x4);
|
|
|
|
|
|
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x394));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x398));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5://<2F><><EFBFBD>Լ<EFBFBD><D4BC>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)(0x16E95AC + 0x400000);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x68);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x0);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x8);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x64);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x0);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x1C);
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + 0x0);
|
|
|
|
|
|
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x1794));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x1798));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 6://<2F>˵<EFBFBD><CBB5><EFBFBD>
|
|
|
|
|
|
OneAddr = *(int*)0x1ADE0CC;
|
|
|
|
|
|
OneAddr = *(int*)(OneAddr + (0x84 + (4 * Index)));
|
|
|
|
|
|
xpos = (int*)(OneAddr + (0x14));
|
|
|
|
|
|
ypos = (int*)(OneAddr + (0x18));
|
|
|
|
|
|
*xpos = Xpos;
|
|
|
|
|
|
*ypos = Ypos;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-09 16:27:06 +08:00
|
|
|
|
|
|
|
|
|
|
//<2F><>ѯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int Get_STL(uint32_t v)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
char* Name;
|
|
|
|
|
|
int Type;
|
|
|
|
|
|
int Idx;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
|
2022-03-09 16:27:06 +08:00
|
|
|
|
if (ParameterNum == 4)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetStringc(v, 2, &Name);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetInt(v, 3, &Type);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ѯ<EFBFBD><D1AF>λ
|
|
|
|
|
|
SQGetInt(v, 4, &Idx);
|
|
|
|
|
|
if (STL::Check_STL(Name, Type) == 0)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
switch (Type)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
SQPushInt(v, Int_STL[Name]);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
SQPushFloat(v, Float_STL[Name]);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
SQPushStringc(v, String_STL[Name].c_str(), strlen(String_STL[Name].c_str()));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
SQPushBool(v, Bool_STL[Name]);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
SQPushInt(v, STL::GetIntArr_STL(Name, Idx));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
SQPushFloat(v, STL::GetFloatArr_STL(Name, Idx));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
SQPushStringc(v, STL::GetStringArr_STL(Name, Idx).c_str(), strlen(STL::GetStringArr_STL(Name, Idx).c_str()));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
SQPushBool(v, STL::GetBoolArr_STL(Name, Idx));
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
2022-03-08 12:57:35 +08:00
|
|
|
|
return 0;
|
2022-03-09 16:27:06 +08:00
|
|
|
|
break;
|
2022-03-08 12:57:35 +08:00
|
|
|
|
}
|
2022-03-09 16:27:06 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-08 12:57:35 +08:00
|
|
|
|
|
2022-03-09 16:27:06 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int Set_STL(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
char* Name;
|
|
|
|
|
|
int Type;
|
|
|
|
|
|
int Idx;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
|
|
|
|
|
|
int IntValue;
|
|
|
|
|
|
float FloatValue;
|
|
|
|
|
|
char* StrValue;
|
|
|
|
|
|
bool BoolValue;
|
|
|
|
|
|
if (ParameterNum == 5)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetStringc(v, 2, &Name);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetInt(v, 3, &Type);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>ĺ<DEB8>λ
|
|
|
|
|
|
SQGetInt(v, 4, &Idx);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
switch (Type)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
SQGetInt(v, 5, &IntValue);
|
|
|
|
|
|
Int_STL[Name] = IntValue;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
SQGetFloat(v, 5, &FloatValue);
|
|
|
|
|
|
Float_STL[Name] = FloatValue;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
SQGetStringc(v, 5, &StrValue);
|
|
|
|
|
|
String_STL[Name] = StrValue;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
SQGetBool(v, 5, &BoolValue);
|
|
|
|
|
|
Bool_STL[Name] = BoolValue;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
SQGetInt(v, 5, &IntValue);
|
|
|
|
|
|
STL::SetIntArr_STL(Name,Idx, IntValue);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
SQGetFloat(v, 5, &FloatValue);
|
|
|
|
|
|
STL::SetFloatArr_STL(Name, Idx, FloatValue);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
SQGetStringc(v, 5, &StrValue);
|
|
|
|
|
|
STL::SetStringArr_STL(Name, Idx, StrValue);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
SQGetBool(v, 5, &BoolValue);
|
|
|
|
|
|
STL::SetBoolArr_STL(Name, Idx, BoolValue);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
SQPushBool(v, true);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
}
|
2022-03-09 16:27:06 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
2022-03-08 12:57:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-09 16:27:06 +08:00
|
|
|
|
|
|
|
|
|
|
//new <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int New_STL(uint32_t v)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
char* Name;
|
|
|
|
|
|
int Type;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
if (ParameterNum == 3)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetStringc(v, 2, &Name);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SQGetInt(v, 3, &Type);
|
|
|
|
|
|
if (STL::Check_STL(Name, Type) != 0)
|
2022-03-08 12:57:35 +08:00
|
|
|
|
{
|
2022-03-09 16:27:06 +08:00
|
|
|
|
SQPushBool(v, false);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
2022-03-09 16:27:06 +08:00
|
|
|
|
switch (Type)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
Int_STL[Name] = 0;//<2F><>Int<6E><74><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
Float_STL[Name] = 0.0;//<2F><>Float<61><74><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
String_STL[Name] = "zero";//<2F><>String<6E><67><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
Bool_STL[Name] = false;//<2F><>Bool<6F><6C><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
STL::BuildIntArr_STL(Name);//Int<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
STL::BuildFloatArr_STL(Name);//Float<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
STL::BuildStringArr_STL(Name);//String<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
STL::BuildBoolArr_STL(Name);//Bool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
SQPushBool(v, true);
|
2022-03-08 12:57:35 +08:00
|
|
|
|
}
|
2022-03-09 16:27:06 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
2022-03-08 12:57:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-15 09:21:02 +08:00
|
|
|
|
//ͬ<><CDAC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|
|
|
|
|
static int Sync_Dragon_Pack(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
if (ParameterNum == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
STL::SyncDargonBox_STL();
|
|
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|
|
|
|
|
static int Get_Dragon_Pack(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int Type;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
if (ParameterNum == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQGetInt(v, 2, &Type);
|
|
|
|
|
|
|
|
|
|
|
|
int Pack_Value;
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
Pack_Value = STL::SelectDargonBox_STL(Type);
|
|
|
|
|
|
SQPushInt(v, Pack_Value);
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (ParameterNum == 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
int Index;
|
|
|
|
|
|
SQGetInt(v, 2, &Type);
|
|
|
|
|
|
SQGetInt(v, 3, &Index);
|
|
|
|
|
|
|
|
|
|
|
|
int Pack_Value;
|
|
|
|
|
|
Pack_Value = STL::SelectDargonBox_STL(Type, Index);
|
|
|
|
|
|
|
|
|
|
|
|
SQPushInt(v, Pack_Value);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
2022-03-09 16:27:06 +08:00
|
|
|
|
|
2022-03-15 09:21:02 +08:00
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int Redom_Dragon(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int Type;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
if (ParameterNum == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQGetInt(v, 2, &Type);
|
|
|
|
|
|
rapidjson::StringBuffer buffer;
|
|
|
|
|
|
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
|
|
|
|
|
|
|
|
|
|
|
|
writer.StartObject();
|
|
|
|
|
|
writer.Key("op");
|
|
|
|
|
|
writer.Int(Type);
|
|
|
|
|
|
writer.EndObject();
|
|
|
|
|
|
|
|
|
|
|
|
char* str = (char*)buffer.GetString();
|
|
|
|
|
|
|
|
|
|
|
|
_SendpacksType(*_SendClass, 0, 130);
|
|
|
|
|
|
_SendPacksChar(*_SendClass, 0, str,strlen(str));
|
|
|
|
|
|
_SendPacks();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><>ȡ <20><><EFBFBD><EFBFBD> ģʽ
|
2022-03-11 21:52:14 +08:00
|
|
|
|
static int Get_DragonModel(uint32_t v)
|
|
|
|
|
|
{
|
2022-03-21 11:51:20 +08:00
|
|
|
|
int Type;
|
2022-03-11 21:52:14 +08:00
|
|
|
|
int ParameterNum = SQGetTop(v);
|
2022-03-21 11:51:20 +08:00
|
|
|
|
if (ParameterNum == 2)
|
2022-03-11 21:52:14 +08:00
|
|
|
|
{
|
2022-03-21 11:51:20 +08:00
|
|
|
|
SQGetInt(v, 2, &Type);
|
|
|
|
|
|
int Model = STL::SelectDargonModel_STL(Type);//<2F><><EFBFBD><EFBFBD>ģʽ
|
2022-03-11 21:52:14 +08:00
|
|
|
|
SQPushInt(v, Model);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
2022-03-15 09:21:02 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ģʽ
|
|
|
|
|
|
static int Set_DragonModel(uint32_t v)
|
|
|
|
|
|
{
|
|
|
|
|
|
int Model;
|
|
|
|
|
|
int ParameterNum = SQGetTop(v);
|
|
|
|
|
|
if (ParameterNum == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
SQGetInt(v, 2, &Model);
|
|
|
|
|
|
STL::DrawDargonModel_STL(Model);//<2F><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
SQPushBool(v, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SQPushBool(v, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
2022-03-11 21:52:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
2022-03-08 12:57:35 +08:00
|
|
|
|
//<2F><>ȡSquirrel v <20><>ַ
|
|
|
|
|
|
inline uint32_t GetSqVm()
|
|
|
|
|
|
{
|
|
|
|
|
|
return *(uint32_t*)0x1AF3544;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void squirrel::RegisterNutApi(const wchar_t* funcName, void* funcAddr, uint32_t v = NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (v == NULL)
|
|
|
|
|
|
v = GetSqVm();
|
|
|
|
|
|
SQPushRootTable(v);
|
|
|
|
|
|
SQPushString(v, funcName, -1);
|
|
|
|
|
|
RealSqNewClosure(v, funcAddr, 0);
|
|
|
|
|
|
SQNewSlot(v, -3, false);
|
|
|
|
|
|
SQPopTop(v);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void squirrel::R_Register_Nut()
|
2022-02-10 14:14:08 +08:00
|
|
|
|
{
|
2022-02-13 10:09:55 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_Test", sq_Test);
|
2022-02-10 14:14:08 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_GetCharacterAttribute", GetCharacterAttribute);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_SetCharacterAttribute", SetCharacterAttribute);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GetTownIndex", GetTownIndex);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GetRegionIndex", GetRegionIndex);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GetTownXpos", GetTownXpos);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GetTownYpos", GetTownYpos);
|
2022-03-27 17:17:12 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_GetFatigue", GetFatigue);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GetExp", GetExp);
|
|
|
|
|
|
|
2022-02-10 14:14:08 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_SendPackType", SendPackType);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_SendPackByte", SendPackByte);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_SendPackWord", SendPackWord);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_SendPackDWord", SendPackDWord);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_SendPack", SendPack);
|
2022-02-13 10:09:55 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_GivePlayerItem", GivePlayerItem);
|
|
|
|
|
|
RegisterNutApi(L"L_sq_GivePlayerEqu", GivePlayerEqu);
|
2022-02-13 19:54:59 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_GoDungeon", GoDungeon);
|
2022-03-29 01:10:57 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_GoTown", GoTown);
|
2022-02-14 23:35:11 +08:00
|
|
|
|
RegisterNutApi(L"L_sq_Dofile", LDofile);
|
2022-03-06 09:47:55 +08:00
|
|
|
|
RegisterNutApi(L"L_cout", Lcout);
|
|
|
|
|
|
RegisterNutApi(L"L_NewWindows", NewWindows);
|
|
|
|
|
|
RegisterNutApi(L"L_SetSlot", SetSlot);
|
2022-03-09 16:27:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RegisterNutApi(L"L_New_STL", New_STL);
|
|
|
|
|
|
RegisterNutApi(L"L_Set_STL", Set_STL);
|
|
|
|
|
|
RegisterNutApi(L"L_Get_STL", Get_STL);
|
2022-03-11 21:52:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-03-15 09:21:02 +08:00
|
|
|
|
RegisterNutApi(L"L_Get_DragonModel", Get_DragonModel);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
RegisterNutApi(L"L_Set_DragonModel", Set_DragonModel);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
RegisterNutApi(L"L_Redom_Dragon", Redom_Dragon);//<2F>齱
|
|
|
|
|
|
RegisterNutApi(L"L_Get_Dragon_Pack", Get_Dragon_Pack);//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>а<EFBFBD>
|
|
|
|
|
|
RegisterNutApi(L"L_Sync_Dragon_Pack", Sync_Dragon_Pack);//ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>
|
2022-02-10 14:14:08 +08:00
|
|
|
|
}
|