11
This commit is contained in:
@@ -10,7 +10,7 @@ function L_HUD_BloodBackground() {
|
||||
if (!obj) return;
|
||||
if (RootTab.rawin("HudUi_Obj")) {
|
||||
RootTab.HudUi_Obj.BottomShow(obj);
|
||||
}
|
||||
}
|
||||
if (RootTab.rawin("EventList_Obj")) {
|
||||
foreach(win in EventList_Obj.Events) {
|
||||
win.EventShow(obj);
|
||||
|
||||
@@ -100,6 +100,7 @@ function L_drawMainCustomUI_All() {
|
||||
|
||||
//初始化Item信息
|
||||
if (!getroottable().rawin("RINDRO_GET_ITEM_FLAG")) {
|
||||
RINDRO_CONFIG <- Rindro_GetLocalConfig();
|
||||
getroottable().RINDRO_GET_ITEM_FLAG <- true;
|
||||
Rindro_BaseToolClass.SendPackEx({
|
||||
op = 20069005,
|
||||
@@ -160,3 +161,7 @@ function L_drawMainCustomUI_All() {
|
||||
// }
|
||||
}
|
||||
// getroottable().Lsnzz <- Clock();
|
||||
|
||||
// dofile("sqr/Base/_Tool/Json.nut");
|
||||
|
||||
// print(T);
|
||||
52
Base/UI/Lenheart_Cursor_Class.nut
Normal file
52
Base/UI/Lenheart_Cursor_Class.nut
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
文件名:Lenheart_Cursor_Class.nut
|
||||
路径:Base/UI/Lenheart_Cursor_Class.nut
|
||||
创建日期:2024-09-25 19:23
|
||||
文件用途:鼠标绘制逻辑
|
||||
*/
|
||||
class Rindro_Cursor {
|
||||
|
||||
UseState = 0;
|
||||
|
||||
TypeState = 0;
|
||||
SubState = 0;
|
||||
|
||||
constructor() {
|
||||
|
||||
}
|
||||
|
||||
function Proc(Xpos, Ypos) {
|
||||
|
||||
//使用自建的鼠标绘制函数
|
||||
if (UseState) {
|
||||
//工作类型为0
|
||||
if (TypeState == 0) {
|
||||
//常规状态
|
||||
if (SubState == 0) {
|
||||
L_sq_DrawImg("interface/newstyle/windows/cursor.img", 0, Xpos, Ypos);
|
||||
}
|
||||
//按下状态
|
||||
else if (SubState == 1) {
|
||||
L_sq_DrawImg("interface/newstyle/windows/cursor.img", 1, Xpos, Ypos);
|
||||
}
|
||||
} else {
|
||||
L_sq_DrawImg("interface/newstyle/windows/cursor.img", TypeState, Xpos, Ypos);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function Sync(Xpos, Ypos) {
|
||||
Proc(Xpos, Ypos);
|
||||
return UseState;
|
||||
}
|
||||
}
|
||||
_Rindro_Cusor_ <- Rindro_Cursor();
|
||||
|
||||
function SyncRindro_Cursor(Xpos, Ypos) {
|
||||
if (getroottable().rawin("_Rindro_Cusor_")) {
|
||||
local Ret = _Rindro_Cusor_.Sync(Xpos, Ypos);
|
||||
return Ret;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -168,6 +168,8 @@ class Rindro_EventList {
|
||||
x = X - 456,
|
||||
y = Y
|
||||
};
|
||||
|
||||
L_sq_RefreshEventIcon();
|
||||
}
|
||||
|
||||
constructor() {
|
||||
|
||||
@@ -21,26 +21,32 @@ class R_Mouse {
|
||||
}
|
||||
//锁定鼠标
|
||||
function Lock() {
|
||||
_Rindro_Cusor_.UseState = 1;
|
||||
L_sq_WAB(0x1B46886, 1);
|
||||
}
|
||||
//解锁鼠标
|
||||
function UnLock() {
|
||||
_Rindro_Cusor_.UseState = 0;
|
||||
L_sq_WAB(0x1B46886, 0);
|
||||
}
|
||||
//获取鼠标工作类型
|
||||
function GetType() {
|
||||
return _Rindro_Cusor_.TypeState;
|
||||
// return L_sq_RAB(0x1b46898);
|
||||
}
|
||||
//设置鼠标工作类型
|
||||
function SetType(Type) {
|
||||
_Rindro_Cusor_.TypeState = Type;
|
||||
// L_sq_WAB(0x1b46898, Type);
|
||||
}
|
||||
//鼠标0状态下是否按下
|
||||
function GetBaseState() {
|
||||
return _Rindro_Cusor_.SubState;
|
||||
// return L_sq_RAB(0x1B46874);
|
||||
}
|
||||
//鼠标0状态设置是否按下
|
||||
function SetBaseState(Flag) {
|
||||
_Rindro_Cusor_.SubState = Flag;
|
||||
// return L_sq_WAB(0x1B46874, Flag);
|
||||
}
|
||||
|
||||
@@ -51,7 +57,7 @@ class R_Mouse {
|
||||
//如果鼠标工作类型不是0则设置为0
|
||||
if (R_Mouse.GetType() != 0) R_Mouse.SetType(0);
|
||||
//如果鼠标是按下状态则设置为未按下
|
||||
// if (R_Mouse.GetBaseState() != 0) R_Mouse.SetBaseState(0);
|
||||
if (R_Mouse.GetBaseState() != 0) R_Mouse.SetBaseState(0);
|
||||
}
|
||||
}
|
||||
//基础窗口类 所有UI类继承与本类
|
||||
@@ -254,54 +260,46 @@ class LenheartNewUI_Windows extends LenheartNewUI_BaseWindow {
|
||||
// L_sq_MouseClick();
|
||||
}
|
||||
|
||||
//道具信息窗口地址
|
||||
ItemInfoDrawS = null;
|
||||
//绘制道具相信信息
|
||||
ItemObject = null;
|
||||
|
||||
//获取道具信息并生成缓存
|
||||
function GetItemInfo(Id) {
|
||||
if (!Rindro_ItemInfoObject.rawin(Id)) {
|
||||
local ItemObject = L_sq_GetItem(Id);
|
||||
if (!ItemObject) ItemObject = L_sq_GetItem(3037);
|
||||
Rindro_ItemInfoObject.rawset(Id, ItemObject);
|
||||
}
|
||||
}
|
||||
//绘制道具带道具信息 带道具边框
|
||||
function DrawItemEx(X, Y, Id, Count) {
|
||||
if (!Rindro_ItemInfoObject.rawin(Id)) Id = 3037;
|
||||
if (Id != -1) {
|
||||
local Rarity = Rindro_ItemInfoObject[Id].Rarity ? Rindro_ItemInfoObject[Id].Rarity : 0;
|
||||
L_sq_DrawImg("interface2/rindro_reward.img", Rarity, X - 3, Y - 3);
|
||||
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||
ItemInfoDrawS = {};
|
||||
ItemInfoDrawS.X <- X;
|
||||
ItemInfoDrawS.Y <- Y;
|
||||
ItemInfoDrawS.ItemId <- Id;
|
||||
}
|
||||
}
|
||||
GetItemInfo(Id);
|
||||
local Rarity = L_sq_RA(Rindro_ItemInfoObject[Id] + 0xF4);
|
||||
L_sq_DrawImg("interface2/rindro_reward.img", Rarity, X - 3, Y - 3);
|
||||
DrawItemBase(X, Y, Id, Count);
|
||||
}
|
||||
//绘制道具带道具信息
|
||||
function DrawItemBase(X, Y, Id, Count) {
|
||||
if (!Rindro_ItemInfoObject.rawin(Id)) Id = 3037;
|
||||
if (Id != -1) {
|
||||
local Rarity = Rindro_ItemInfoObject[Id].Rarity ? Rindro_ItemInfoObject[Id].Rarity : 0;
|
||||
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||
ItemInfoDrawS = {};
|
||||
ItemInfoDrawS.X <- X;
|
||||
ItemInfoDrawS.Y <- Y;
|
||||
ItemInfoDrawS.ItemId <- Id;
|
||||
GetItemInfo(Id);
|
||||
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||
//打开道具信息窗口
|
||||
if (!ItemInfoDrawS) {
|
||||
ItemInfoDrawS = L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 275, Rindro_ItemInfoObject[Id], 41);
|
||||
//校准道具信息窗口位置
|
||||
L_Sq_CallFunc(0xF3B3B0, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], ItemInfoDrawS, IMouse.GetXPos(), IMouse.GetYPos(), 28, 28);
|
||||
}
|
||||
}
|
||||
}
|
||||
//绘制悬停
|
||||
function DrawItemInfo() {
|
||||
if (ItemInfoDrawS) {
|
||||
if (!ItemObject) {
|
||||
local ItemId = ItemInfoDrawS.ItemId;
|
||||
if (Rindro_ItemInfoObject.rawin(ItemId)) {
|
||||
ItemObject = ItemInfoClass(Rindro_ItemInfoObject[ItemId]);
|
||||
}
|
||||
}
|
||||
ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength);
|
||||
} else {
|
||||
ItemObject = null;
|
||||
if (ItemInfoDrawS) {
|
||||
L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||
ItemInfoDrawS = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//生成DT
|
||||
function GenerateDt() {
|
||||
try {
|
||||
@@ -321,10 +319,8 @@ class LenheartNewUI_Windows extends LenheartNewUI_BaseWindow {
|
||||
LenheartNewUI_BaseWindow.Show(obj);
|
||||
if (DeBugMode) DeBug(obj);
|
||||
|
||||
|
||||
DrawItemInfo();
|
||||
//初始化绘制道具
|
||||
ItemInfoDrawS = null;
|
||||
// ItemInfoDrawS = null;
|
||||
}
|
||||
|
||||
function TopShow(obj) {
|
||||
@@ -686,6 +682,7 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
|
||||
isInRect = false;
|
||||
|
||||
OnClick = null;
|
||||
OnClickSound = null;
|
||||
ObjectId = null;
|
||||
|
||||
Visible = true;
|
||||
@@ -714,13 +711,18 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
|
||||
}
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) isLBDown = true;
|
||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) {
|
||||
isLBDown = true;
|
||||
if (!OnClickSound) {
|
||||
R_Utils.PlaySound("CLICK_BUTTON1");
|
||||
} else {
|
||||
R_Utils.PlaySound(OnClickSound);
|
||||
}
|
||||
}
|
||||
}
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
if (isLBDown && OnClick) {
|
||||
local obj = sq_getMyCharacter();
|
||||
obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
OnClick();
|
||||
}
|
||||
isLBDown = false;
|
||||
@@ -922,6 +924,10 @@ class LenheartNewUI_BaseInput extends LenheartNewUI_CommonUi {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function SetStr(Value) {
|
||||
L_sq_SetInputBoxStr(InputController, Value);
|
||||
}
|
||||
}
|
||||
|
||||
//复选框
|
||||
|
||||
30
Base/_Tool/Hacker_Class.nut
Normal file
30
Base/_Tool/Hacker_Class.nut
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
文件名:Hacker_Class.nut
|
||||
路径:Base/_Tool/Hacker_Class.nut
|
||||
创建日期:2024-09-24 06:25
|
||||
文件用途:
|
||||
*/
|
||||
class _Rindro_Hacker {
|
||||
HookTable = null;
|
||||
|
||||
constructor() {
|
||||
HookTable = {};
|
||||
}
|
||||
|
||||
function UnLoadHook(AddressStr) {
|
||||
Sq_DeHookFunc(HookTable[AddressStr]);
|
||||
}
|
||||
|
||||
function LoadHook(AddressStr, ArgumentArr, EnterFunc, LeaveFunc) {
|
||||
//如果已经HOOK过 需要先卸载原来的HOOK
|
||||
if (HookTable.rawin(AddressStr)) {
|
||||
UnLoadHook(AddressStr);
|
||||
print("地址: " + AddressStr + " 已经装载了Hook,本次操作将会卸载之前的Hook在执行。")
|
||||
}
|
||||
|
||||
local Controler = Sq_HookFunc(AddressStr, ArgumentArr, EnterFunc, LeaveFunc);
|
||||
HookTable.rawset(AddressStr, Controler);
|
||||
}
|
||||
}
|
||||
//初始化Hacker
|
||||
Rindro_Haker <- _Rindro_Hacker();
|
||||
42
Base/_Tool/Hacker_RegApi.nut
Normal file
42
Base/_Tool/Hacker_RegApi.nut
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
文件名:Hacker_RegApi.nut
|
||||
路径:Base/_Tool/Hacker_RegApi.nut
|
||||
创建日期:2024-09-25 18:31
|
||||
文件用途:注册API
|
||||
*/
|
||||
//工具类
|
||||
class R_Utils {
|
||||
|
||||
//播放音效
|
||||
function PlaySound(SoundName) {
|
||||
L_Sq_CallFunc(0x75BD70, "void", FFI_MS_CDECL, ["pointer", "int", "int", "int"], Memory.allocUtf8String(SoundName).C_Object, -1, 0, 0);
|
||||
}
|
||||
|
||||
//读取文件内容
|
||||
function ReadScript(Path, Size, CodePage) {
|
||||
local ReadPath = L_sq_P2I(Memory.allocUtf8String(Path).C_Object);
|
||||
local Reader = Memory.alloc(Size);
|
||||
local ReadBuffer = L_sq_P2I(Reader.C_Object);
|
||||
L_Sq_CallFunc(0x11A2030, "int", FFI_FASTCALL, ["int", "int", "int", "int", "int", "int"], 0x1D17638, 0, ReadPath, ReadBuffer, 0x100000, 0x19DAF4);
|
||||
|
||||
|
||||
if (CodePage == "utf8")
|
||||
return Reader.readUtf8String();
|
||||
if (CodePage == "unicode")
|
||||
return Reader.readUnicodeString();
|
||||
if (CodePage == "big5")
|
||||
return Reader.readBig5String();
|
||||
}
|
||||
|
||||
//读取配置表
|
||||
function ReadScriptConfig(Path, Size, ...) {
|
||||
local CodePage = "utf8";
|
||||
if (vargc > 0) CodePage = vargv[0];
|
||||
local Script = R_Utils.ReadScript(Path, Size, CodePage);
|
||||
local Func = compilestring("return " + Script);
|
||||
local Ret = Func();
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
201
Base/_Tool/MemoryClass.nut
Normal file
201
Base/_Tool/MemoryClass.nut
Normal file
@@ -0,0 +1,201 @@
|
||||
/*
|
||||
文件名:MemoryClass.nut
|
||||
路径:Base/_Tool/MemoryClass.nut
|
||||
创建日期:2024-09-24 08:22
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
class Memory {
|
||||
|
||||
function alloc(Size) {
|
||||
return NativePointer(Size);
|
||||
}
|
||||
|
||||
function allocUtf8String(Str) {
|
||||
return NativePointer(Str_Ptr(Str));
|
||||
}
|
||||
}
|
||||
|
||||
class NativePointer {
|
||||
|
||||
C_Object = null;
|
||||
|
||||
constructor(T) {
|
||||
if (type(T) == "integer") {
|
||||
C_Object = Sq_New_Point(T);
|
||||
//注册销毁伪析构
|
||||
Register_Destruction(C_Object, this);
|
||||
} else if (type(T) == "userdata") {
|
||||
C_Object = T;
|
||||
}
|
||||
}
|
||||
|
||||
function add(intoffset) {
|
||||
this.C_Object = L_sq_I2P(L_sq_P2I(this.C_Object) + intoffset);
|
||||
return this;
|
||||
}
|
||||
|
||||
function sub(intoffset) {
|
||||
this.C_Object = L_sq_I2P(L_sq_P2I(this.C_Object) - intoffset);
|
||||
return this;
|
||||
}
|
||||
|
||||
function writeByteArray(arr) {
|
||||
Sq_Memory_WriteByteArr(this.C_Object, arr);
|
||||
}
|
||||
|
||||
function readByteArray(size) {
|
||||
local PointB = Sq_Point2Blob(this.C_Object, size);
|
||||
local arr = [];
|
||||
foreach(value in PointB) {
|
||||
arr.append(value);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
function write(value, type) {
|
||||
local Buf = blob(0);
|
||||
Buf.writen(value, type);
|
||||
local arr = [];
|
||||
foreach(value in Buf) {
|
||||
arr.append(value);
|
||||
}
|
||||
writeByteArray(arr);
|
||||
}
|
||||
|
||||
function writeS8(value) {
|
||||
write(value, 'c');
|
||||
}
|
||||
|
||||
function writeU8(value) {
|
||||
write(value, 'b');
|
||||
}
|
||||
|
||||
function writeS16(value) {
|
||||
write(value, 's');
|
||||
}
|
||||
|
||||
function writeU16(value) {
|
||||
write(value, 'w');
|
||||
}
|
||||
|
||||
function writeS32(value) {
|
||||
write(value, 'i');
|
||||
}
|
||||
|
||||
function writeU32(value) {
|
||||
write(value, 'i');
|
||||
}
|
||||
|
||||
function writeShort(value) {
|
||||
write(value, 's');
|
||||
}
|
||||
|
||||
function writeUShort(value) {
|
||||
write(value, 'w');
|
||||
}
|
||||
|
||||
function writeInt(value) {
|
||||
write(value, 'i');
|
||||
}
|
||||
|
||||
function writeUInt(value) {
|
||||
write(value, 'i');
|
||||
}
|
||||
|
||||
function writeFloat(value) {
|
||||
write(value, 'f');
|
||||
}
|
||||
|
||||
function writeDouble(value) {
|
||||
write(value, 'd');
|
||||
}
|
||||
|
||||
|
||||
function read(type) {
|
||||
local Buf = Sq_Point2Blob(this.C_Object, 4);
|
||||
return Buf.readn(type);
|
||||
}
|
||||
|
||||
function readS8() {
|
||||
return read('c');
|
||||
}
|
||||
|
||||
function readU8() {
|
||||
return read('b');
|
||||
}
|
||||
|
||||
function readS16() {
|
||||
return read('s');
|
||||
}
|
||||
|
||||
function readU16() {
|
||||
return read('w');
|
||||
}
|
||||
|
||||
function readS32() {
|
||||
return read('i');
|
||||
}
|
||||
|
||||
function readU32() {
|
||||
return read('i');
|
||||
}
|
||||
|
||||
function readShort() {
|
||||
return read('s');
|
||||
}
|
||||
|
||||
function readUShort() {
|
||||
return read('w');
|
||||
}
|
||||
|
||||
function readInt() {
|
||||
return read('i');
|
||||
}
|
||||
|
||||
function readUInt() {
|
||||
return read('i');
|
||||
}
|
||||
|
||||
function readFloat() {
|
||||
return read('f');
|
||||
}
|
||||
|
||||
function readDouble() {
|
||||
return read('d');
|
||||
}
|
||||
|
||||
|
||||
function readUnicodeString(...) {
|
||||
if (vargc > 0) {
|
||||
return Sq_Memory_ReadString(this.C_Object, vargv[0]);
|
||||
} else {
|
||||
return Sq_Memory_ReadString(this.C_Object);
|
||||
}
|
||||
}
|
||||
|
||||
function readUtf8String(...) {
|
||||
if (vargc > 0) {
|
||||
return Sq_Memory_ReadStringByUtf8(this.C_Object, vargv[0]);
|
||||
} else {
|
||||
return Sq_Memory_ReadStringByUtf8(this.C_Object);
|
||||
}
|
||||
}
|
||||
|
||||
function readBig5String(...) {
|
||||
if (vargc > 0) {
|
||||
return Sq_Memory_ReadStringByBig5(this.C_Object, vargv[0]);
|
||||
} else {
|
||||
return Sq_Memory_ReadStringByBig5(this.C_Object);
|
||||
}
|
||||
}
|
||||
|
||||
function readPointer() {
|
||||
return Sq_ReadPoint(this.C_Object);
|
||||
}
|
||||
|
||||
function tostring() {
|
||||
return this.C_Object.tostring();
|
||||
}
|
||||
}
|
||||
@@ -6,56 +6,54 @@
|
||||
*/
|
||||
if (!getroottable().rawin("Rindro_ItemInfoObject")) Rindro_ItemInfoObject <- {};
|
||||
if (!getroottable().rawin("Rindro_ItemInfoBuf")) Rindro_ItemInfoBuf <- "";
|
||||
if (!getroottable().rawin("RINDRO_INIT_FLAG")) RINDRO_INIT_FLAG <- false;
|
||||
if (!getroottable().rawin("RINDRO_INIT_FLAG")) RINDRO_INIT_FLAG <- true;
|
||||
|
||||
//获取本地配置
|
||||
function Rindro_GetLocalConfig() {
|
||||
local Buf = L_sq_GetLocalConfig();
|
||||
if (!Buf) {
|
||||
return {
|
||||
md5 = -1
|
||||
};
|
||||
} else return Json.Decode(Buf);
|
||||
// local Buf = L_sq_GetLocalConfig();
|
||||
// if (!Buf) {
|
||||
// return {
|
||||
// md5 = -1
|
||||
// };
|
||||
// } else return dofile("Rindro_Config.cfg");
|
||||
}
|
||||
// if (!getroottable().rawin("RINDRO_CONFIG"))
|
||||
RINDRO_CONFIG <- Rindro_GetLocalConfig();
|
||||
|
||||
//获取本地信息版本
|
||||
function Rindro_GetMd5() {
|
||||
return RINDRO_CONFIG.md5;
|
||||
// return RINDRO_CONFIG.md5;
|
||||
return -1;
|
||||
}
|
||||
|
||||
//初始化各种信息
|
||||
function Rindro_Init() {
|
||||
//道具信息
|
||||
local ItemArray = getroottable().RINDRO_CONFIG.itemInfo;
|
||||
Rindro_ItemInfoBuf = "";
|
||||
foreach(Value in ItemArray) {
|
||||
if (Value.Name2.len() == 0)
|
||||
Value.Name2 = "Rindro-Team";
|
||||
getroottable().Rindro_ItemInfoObject[Value.Id] <- Value;
|
||||
}
|
||||
RINDRO_INIT_FLAG = true;
|
||||
// //道具信息
|
||||
// local ItemArray = getroottable().RINDRO_CONFIG.itemInfo;
|
||||
// Rindro_ItemInfoBuf = "";
|
||||
// foreach(Value in ItemArray) {
|
||||
// if (Value.Name2.len() == 0)
|
||||
// Value.Name2 = "Rindro-Team";
|
||||
// getroottable().Rindro_ItemInfoObject[Value.Id] <- Value;
|
||||
// }
|
||||
// RINDRO_INIT_FLAG = true;
|
||||
}
|
||||
//更新本地配置
|
||||
function Rindro_ItemInfoCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
if ("ZipSEnd" in Jso) {
|
||||
getroottable().Rindro_ItemInfoObject <- {};
|
||||
Rindro_ItemInfoBuf += Jso.ZipS;
|
||||
local ZlibStrBuf = L_sq_Dezlib(Rindro_ItemInfoBuf);
|
||||
if (ZlibStrBuf == "null") {
|
||||
Rindro_ItemInfoBuf = "";
|
||||
return;
|
||||
}
|
||||
L_sq_SetLocalConfig(ZlibStrBuf);
|
||||
|
||||
getroottable().RINDRO_CONFIG <- Json.Decode(ZlibStrBuf);
|
||||
|
||||
Rindro_Init();
|
||||
} else {
|
||||
Rindro_ItemInfoBuf += Jso.ZipS;
|
||||
}
|
||||
// local Jso = Json.Decode(Chunk);
|
||||
// if ("ZipSEnd" in Jso) {
|
||||
// getroottable().Rindro_ItemInfoObject <- {};
|
||||
// Rindro_ItemInfoBuf += Jso.ZipS;
|
||||
// local ZlibStrBuf = L_sq_Dezlib(Rindro_ItemInfoBuf);
|
||||
// if (ZlibStrBuf == "null") {
|
||||
// Rindro_ItemInfoBuf = "";
|
||||
// return;
|
||||
// }
|
||||
// ZlibStrBuf = L_sq_DecondeJson(ZlibStrBuf);
|
||||
// L_sq_SetLocalConfig("return " + ZlibStrBuf);
|
||||
// getroottable().RINDRO_CONFIG <- dofile("Rindro_Config.cfg");
|
||||
// Rindro_Init();
|
||||
// } else {
|
||||
// Rindro_ItemInfoBuf += Jso.ZipS;
|
||||
// }
|
||||
}
|
||||
Pack_Control.rawset(20240422, Rindro_ItemInfoCallBack);
|
||||
//无需更新本地配置
|
||||
@@ -299,4 +297,110 @@ class ItemInfoClass {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// local ReadPath = L_sq_P2I(Memory.allocUtf8String("etc/rindro/horseguessing/horseguessing.dat").C_Object);
|
||||
// print(format("%02x", ReadPath));
|
||||
// local Reader = Memory.alloc(1024);
|
||||
// local ReadBuffer = L_sq_P2I(Reader.C_Object);
|
||||
// print(format("%02x", ReadBuffer));
|
||||
// L_Sq_CallFunc(0x11A2030, "int", FFI_FASTCALL, ["int", "int", "int", "int", "int", "int"], 0x1D17638, 0, ReadPath, ReadBuffer, 0x100000, 0x19DAF4);
|
||||
// // print(Reader.readUtf8String());
|
||||
// local Func = compilestring(Reader.readUtf8String());
|
||||
// local Ret = Func();
|
||||
// print(Ret);
|
||||
|
||||
// local Tabs = dofile("aw.nut");
|
||||
// print(Tabs.itemInfo.len());
|
||||
// local Address = L_Sq_GetExportByName("fopen");
|
||||
// print(Address);
|
||||
// L_Sq_CallFunc(0xE6E070, "void", 4, ["int", "int", "int", "int", "char"], L_sq_RA(0x1A5FB20), 0, 33, "", 0x65535);
|
||||
|
||||
// Rindro_Haker.LoadHook(0x4C9FA0, ["pointer", "int", "void"],
|
||||
// function(args) {
|
||||
// // print(555);
|
||||
// return null;
|
||||
// },
|
||||
// function(args) {
|
||||
// // print(666);
|
||||
// return null;
|
||||
// });
|
||||
|
||||
|
||||
// print(L_sq_StringBinById(435110));
|
||||
|
||||
// Rindro_Haker.LoadHook(0x4017F0, ["int", "int", "int", "int"],
|
||||
// function(args) {
|
||||
// print(args[0]);
|
||||
// print(args[1]);
|
||||
// print(args[2]);
|
||||
// return null;
|
||||
// },
|
||||
// function(args) {
|
||||
|
||||
// return null;
|
||||
// });
|
||||
|
||||
|
||||
// 0x121a1e2
|
||||
//this 0x1D17638
|
||||
// local Read = Memory.alloc(10000);
|
||||
// print(Read);
|
||||
// L_Sq_CallFunc(0x11A2030, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], 0x1D17638, Memory.allocUtf8String("sqr/a.nut").C_Object, Read.C_Object, 0x100000,0x19DAF4);
|
||||
// local Str = Read.readUtf8String();
|
||||
// print(Str);
|
||||
|
||||
// local A = IRDSQRCharacter.pushScriptFiles("a.nut");
|
||||
// local Read = Memory.alloc(10000);
|
||||
// print(Read);
|
||||
// L_Sq_CallFunc(0x121A100, "char", FFI_MS_CDECL, ["int", "int", "int", "int", "int"], Memory.allocUtf8String("").C_Object, Memory.allocUtf8String("sqr/a.nut").C_Object, Read.C_Object, 0x100000,0x19DAF4);
|
||||
// local Str = Read.readUtf8String();
|
||||
// print(Str);
|
||||
|
||||
// L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 79, 0, 0);
|
||||
|
||||
// local Old = L_sq_RA(0x1AB7CDC);
|
||||
// Old = L_sq_RA(Old + 0x3038);
|
||||
// local ItemObject = L_sq_GetItem(27582);
|
||||
// //移除
|
||||
// L_Sq_CallFunc(0x825AD0, "void", FFI_THISCALL, ["int","int"], L_sq_RA(0x1AB7CDC),Old);
|
||||
// //移除Ani
|
||||
// L_Sq_CallFunc(0x84CD10, "void", FFI_THISCALL, ["int","int"], L_sq_RA(0x1AB7CDC),Old);
|
||||
// //穿戴
|
||||
// L_Sq_CallFunc(0x825570, "void", FFI_THISCALL, ["int","int"], L_sq_RA(0x1AB7CDC),ItemObject);
|
||||
|
||||
// local ItemObject = L_sq_GetItem(101020037);
|
||||
// // print(ItemObject);
|
||||
// // L_Sq_CallFunc(0x4B0F10, "int", FFI_THISCALL, ["int"], L_sq_RA(0x1AE45B4));
|
||||
// local Hs = L_Sq_CallFunc(0x779EB0, "pointer", FFI_THISCALL, ["int"], L_sq_RA(0x1AE45B4));
|
||||
// print(Hs);
|
||||
// Hs = L_sq_P2I(Hs);
|
||||
// print(format("%02x", Hs));
|
||||
// L_Sq_CallFunc(0x825AD0, "void", FFI_THISCALL, ["int","int"], Hs, ItemObject);
|
||||
// L_Sq_CallFunc(0x84CD10, "void", FFI_THISCALL, ["int","int"], L_sq_RA(0x1AB7CDC), ItemObject);
|
||||
// local PP = L_Sq_CallFunc(0x65DE50, "pointer", FFI_THISCALL, ["pointer"], 0xE8675E97, 0);
|
||||
// print("PP: " + PP);
|
||||
|
||||
// local WuseAdd = L_Sq_CallFunc(0x972220, "int", FFI_MS_CDECL, ["int", "int", "int"], 27582, 0x19E990, 0);
|
||||
// print("MY: " + WuseAdd);
|
||||
// print(L_sq_Test());
|
||||
// local Address = L_sq_Test(26058);
|
||||
// print(Address);
|
||||
// local Ret = L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 275, Address, 41);
|
||||
// print(Ret);
|
||||
// L_Sq_CallFunc(0xF3B3B0, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], Ret, 600, 200, 28, 28);
|
||||
|
||||
|
||||
// Rindro_Haker.LoadHook(0x11C0410, ["int", "int", "int", "int"],
|
||||
// function(args) {
|
||||
// // print(args[0]);
|
||||
// return null;
|
||||
// },
|
||||
// function(args) {
|
||||
// // print(args.pop());
|
||||
// // print(">>>>>>");
|
||||
// return null;
|
||||
// });
|
||||
Reference in New Issue
Block a user