111
This commit is contained in:
parent
b67d7b8414
commit
e30f6a5a26
|
|
@ -1,6 +1,5 @@
|
||||||
// dllmain.cpp : 定义 DLL 应用程序的入口点。
|
// dllmain.cpp : 定义 DLL 应用程序的入口点。
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
//#include "函数块.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -9,15 +8,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int(SqGetStringFunc)(uint32_t v, uint32_t stackIndex, wchar_t** ppString);
|
|
||||||
static SqGetStringFunc* SQGetString = (SqGetStringFunc*)0x1358E70;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static realSqNewClosure* MLnewclosure = NULL;
|
static realSqNewClosure* MLnewclosure = NULL;
|
||||||
|
|
||||||
uint32_t NewClosure(uint32_t v, void* f, int freeVarsCnt)
|
uint32_t NewClosure(uint32_t v, void* f, int freeVarsCnt)
|
||||||
|
|
@ -54,10 +44,6 @@ int HOOK()
|
||||||
{
|
{
|
||||||
std::cout << u8"开始hook" << std::endl;
|
std::cout << u8"开始hook" << std::endl;
|
||||||
|
|
||||||
if (MH_Initialize() != MH_OK)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (MH_CreateHook((void*)0x135B850, &NewClosure,
|
if (MH_CreateHook((void*)0x135B850, &NewClosure,
|
||||||
|
|
@ -92,14 +78,11 @@ int HOOK()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef int(isgm)(int C);
|
|
||||||
static isgm* gm = (isgm*)0x176F380;
|
|
||||||
|
|
||||||
|
|
||||||
void testcall()
|
void testcall()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
//SQDofile(GetSqVm(),L"1.cpp",0,0);
|
||||||
//std::cout << gm(0x186FB828) << std::endl;
|
//std::cout << gm(0x186FB828) << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
19
test/pch.h
19
test/pch.h
|
|
@ -43,7 +43,24 @@ static SqNewSlot* SQNewSlot = (SqNewSlot*)0x135AA80;
|
||||||
// 平栈
|
// 平栈
|
||||||
typedef int(SqPopTop)(uint32_t v);
|
typedef int(SqPopTop)(uint32_t v);
|
||||||
static SqPopTop* SQPopTop = (SqPopTop*)0x1358FF0;
|
static SqPopTop* SQPopTop = (SqPopTop*)0x1358FF0;
|
||||||
|
//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;
|
||||||
|
//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;
|
||||||
|
|
||||||
//获取Squirrel v 基址
|
//获取Squirrel v 基址
|
||||||
inline uint32_t GetSqVm();
|
inline uint32_t GetSqVm();
|
||||||
|
|
|
||||||
66
test/函数块.cpp
66
test/函数块.cpp
|
|
@ -257,6 +257,13 @@ void RegisterNutApi(const wchar_t* funcName, void* funcAddr, uint32_t v)
|
||||||
SQPopTop(v);
|
SQPopTop(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Test
|
||||||
|
static SQInteger sq_Test(uint32_t v)
|
||||||
|
{
|
||||||
|
|
||||||
|
//sq_pushinteger(v, n1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
//读人物 或 装备属性
|
//读人物 或 装备属性
|
||||||
static SQInteger GetCharacterAttribute(HSQUIRRELVM v)
|
static SQInteger GetCharacterAttribute(HSQUIRRELVM v)
|
||||||
{
|
{
|
||||||
|
|
@ -401,8 +408,65 @@ static SQInteger SendPack(HSQUIRRELVM v)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//发物品给玩家
|
||||||
|
static SQInteger GivePlayerItem(HSQUIRRELVM v)
|
||||||
|
{
|
||||||
|
SQInteger n1,n2;
|
||||||
|
|
||||||
|
|
||||||
|
sq_getinteger(v, 2, &n1);
|
||||||
|
sq_getinteger(v, 3, &n2);
|
||||||
|
|
||||||
|
if (n1>0 && n2>0)
|
||||||
|
{
|
||||||
|
_SendpacksType(*_SendClass, 0, 65);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, 1);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, n1);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, n2);
|
||||||
|
_SendPacks();
|
||||||
|
|
||||||
|
sq_pushinteger(v, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!n1 || !n2)
|
||||||
|
{
|
||||||
|
sq_pushinteger(v, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//发装备给玩家
|
||||||
|
static SQInteger GivePlayerEqu(HSQUIRRELVM v)
|
||||||
|
{
|
||||||
|
SQInteger n1, n2;
|
||||||
|
|
||||||
|
|
||||||
|
sq_getinteger(v, 2, &n1);
|
||||||
|
sq_getinteger(v, 3, &n2);
|
||||||
|
|
||||||
|
if (n1 > 0 && n2 > 0)
|
||||||
|
{
|
||||||
|
_SendpacksType(*_SendClass, 0, 65);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, 2);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, n1);
|
||||||
|
_SendPacksDWord(*_SendClass, 0, n2);
|
||||||
|
_SendPacks();
|
||||||
|
|
||||||
|
sq_pushinteger(v, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!n1 || !n2)
|
||||||
|
{
|
||||||
|
sq_pushinteger(v, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void RegisterNut()
|
void RegisterNut()
|
||||||
{
|
{
|
||||||
|
RegisterNutApi(L"L_sq_Test", sq_Test);
|
||||||
RegisterNutApi(L"L_sq_GetCharacterAttribute", GetCharacterAttribute);
|
RegisterNutApi(L"L_sq_GetCharacterAttribute", GetCharacterAttribute);
|
||||||
RegisterNutApi(L"L_sq_SetCharacterAttribute", SetCharacterAttribute);
|
RegisterNutApi(L"L_sq_SetCharacterAttribute", SetCharacterAttribute);
|
||||||
RegisterNutApi(L"L_sq_GetTownIndex", GetTownIndex);
|
RegisterNutApi(L"L_sq_GetTownIndex", GetTownIndex);
|
||||||
|
|
@ -414,6 +478,8 @@ void RegisterNut()
|
||||||
RegisterNutApi(L"L_sq_SendPackWord", SendPackWord);
|
RegisterNutApi(L"L_sq_SendPackWord", SendPackWord);
|
||||||
RegisterNutApi(L"L_sq_SendPackDWord", SendPackDWord);
|
RegisterNutApi(L"L_sq_SendPackDWord", SendPackDWord);
|
||||||
RegisterNutApi(L"L_sq_SendPack", SendPack);
|
RegisterNutApi(L"L_sq_SendPack", SendPack);
|
||||||
|
RegisterNutApi(L"L_sq_GivePlayerItem", GivePlayerItem);
|
||||||
|
RegisterNutApi(L"L_sq_GivePlayerEqu", GivePlayerEqu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue