This commit is contained in:
parent
e30f6a5a26
commit
feb4773c65
|
|
@ -27,7 +27,7 @@ uint32_t NewClosure(uint32_t v, void* f, int freeVarsCnt)
|
||||||
return MLnewclosure(v, f, freeVarsCnt);
|
return MLnewclosure(v, f, freeVarsCnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static realSqPushString* MLSqPushString = NULL;
|
static SqPushStringFunc* MLSqPushString = NULL;
|
||||||
|
|
||||||
uint32_t NewPushString(uint32_t v, wchar_t* f, int freeVarsCnt)
|
uint32_t NewPushString(uint32_t v, wchar_t* f, int freeVarsCnt)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
27
test/pch.h
27
test/pch.h
|
|
@ -28,12 +28,9 @@
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------Squirrel
|
//-------------------------------------------------------------------------------------------Squirrel
|
||||||
|
|
||||||
// Push 根表
|
// PushRoot
|
||||||
typedef int(SqPushRootT)(uint32_t v);
|
typedef int(SqPushRootFunc)(uint32_t v);
|
||||||
static SqPushRootT* SQPushRootTable = (SqPushRootT*)0x1358C50;
|
static SqPushRootFunc* SQPushRootTable = (SqPushRootFunc*)0x1358C50;
|
||||||
// Push 函数名
|
|
||||||
typedef int(realSqPushString)(uint32_t v, const wchar_t* funcName, int a);
|
|
||||||
static realSqPushString* RealSqPushString = (realSqPushString*)0x1358A60;
|
|
||||||
// Push 函数绑定闭包
|
// Push 函数绑定闭包
|
||||||
typedef int(realSqNewClosure)(uint32_t v, void* funcAddr, int a);
|
typedef int(realSqNewClosure)(uint32_t v, void* funcAddr, int a);
|
||||||
static realSqNewClosure* RealSqNewClosure = (realSqNewClosure*)0x135B850;
|
static realSqNewClosure* RealSqNewClosure = (realSqNewClosure*)0x135B850;
|
||||||
|
|
@ -61,6 +58,24 @@ static SqGetUserdataFunc* SQGetUserdata = (SqGetUserdataFunc*)0x1358EC0;
|
||||||
//GetObjtypetag
|
//GetObjtypetag
|
||||||
typedef int(SqGetObjtypetagFunc)(uint32_t v, DWORD* up);
|
typedef int(SqGetObjtypetagFunc)(uint32_t v, DWORD* up);
|
||||||
static SqGetObjtypetagFunc* SQGetObjtypetag = (SqGetObjtypetagFunc*)0x1358F20;
|
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;
|
||||||
|
//PushString
|
||||||
|
typedef int(SqPushStringFunc)(uint32_t v, const wchar_t* s, int len);
|
||||||
|
static SqPushStringFunc* SQPushString = (SqPushStringFunc*)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;
|
||||||
|
|
||||||
//获取Squirrel v 基址
|
//获取Squirrel v 基址
|
||||||
inline uint32_t GetSqVm();
|
inline uint32_t GetSqVm();
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<EnableUAC>false</EnableUAC>
|
<EnableUAC>false</EnableUAC>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<EnableUAC>false</EnableUAC>
|
<EnableUAC>false</EnableUAC>
|
||||||
<AdditionalDependencies>squirrel.lib;libMinHook.x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>squirrel.lib;libMinHook.x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
|
||||||
45
test/函数块.cpp
45
test/函数块.cpp
|
|
@ -251,7 +251,7 @@ void RegisterNutApi(const wchar_t* funcName, void* funcAddr, uint32_t v)
|
||||||
if (!v)
|
if (!v)
|
||||||
v = GetSqVm();
|
v = GetSqVm();
|
||||||
SQPushRootTable(v);
|
SQPushRootTable(v);
|
||||||
RealSqPushString(v, funcName, -1);
|
SQPushString(v, funcName, -1);
|
||||||
RealSqNewClosure(v, funcAddr, 0);
|
RealSqNewClosure(v, funcAddr, 0);
|
||||||
SQNewSlot(v, -3, false);
|
SQNewSlot(v, -3, false);
|
||||||
SQPopTop(v);
|
SQPopTop(v);
|
||||||
|
|
@ -464,6 +464,48 @@ static SQInteger GivePlayerEqu(HSQUIRRELVM v)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//È¥¸±±¾
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
void RegisterNut()
|
void RegisterNut()
|
||||||
{
|
{
|
||||||
RegisterNutApi(L"L_sq_Test", sq_Test);
|
RegisterNutApi(L"L_sq_Test", sq_Test);
|
||||||
|
|
@ -480,6 +522,7 @@ void RegisterNut()
|
||||||
RegisterNutApi(L"L_sq_SendPack", SendPack);
|
RegisterNutApi(L"L_sq_SendPack", SendPack);
|
||||||
RegisterNutApi(L"L_sq_GivePlayerItem", GivePlayerItem);
|
RegisterNutApi(L"L_sq_GivePlayerItem", GivePlayerItem);
|
||||||
RegisterNutApi(L"L_sq_GivePlayerEqu", GivePlayerEqu);
|
RegisterNutApi(L"L_sq_GivePlayerEqu", GivePlayerEqu);
|
||||||
|
RegisterNutApi(L"L_sq_GoDungeon", GoDungeon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue