This commit is contained in:
parent
39d60b284e
commit
b2133d8463
|
|
@ -10,7 +10,7 @@ function L_HUD_BloodBackground() {
|
||||||
if (!obj) return;
|
if (!obj) return;
|
||||||
if (RootTab.rawin("HudUi_Obj")) {
|
if (RootTab.rawin("HudUi_Obj")) {
|
||||||
RootTab.HudUi_Obj.BottomShow(obj);
|
RootTab.HudUi_Obj.BottomShow(obj);
|
||||||
}
|
}
|
||||||
if (RootTab.rawin("EventList_Obj")) {
|
if (RootTab.rawin("EventList_Obj")) {
|
||||||
foreach(win in EventList_Obj.Events) {
|
foreach(win in EventList_Obj.Events) {
|
||||||
win.EventShow(obj);
|
win.EventShow(obj);
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ function L_drawMainCustomUI_All() {
|
||||||
|
|
||||||
//初始化Item信息
|
//初始化Item信息
|
||||||
if (!getroottable().rawin("RINDRO_GET_ITEM_FLAG")) {
|
if (!getroottable().rawin("RINDRO_GET_ITEM_FLAG")) {
|
||||||
|
RINDRO_CONFIG <- Rindro_GetLocalConfig();
|
||||||
getroottable().RINDRO_GET_ITEM_FLAG <- true;
|
getroottable().RINDRO_GET_ITEM_FLAG <- true;
|
||||||
Rindro_BaseToolClass.SendPackEx({
|
Rindro_BaseToolClass.SendPackEx({
|
||||||
op = 20069005,
|
op = 20069005,
|
||||||
|
|
@ -160,3 +161,7 @@ function L_drawMainCustomUI_All() {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
// getroottable().Lsnzz <- Clock();
|
// getroottable().Lsnzz <- Clock();
|
||||||
|
|
||||||
|
// dofile("sqr/Base/_Tool/Json.nut");
|
||||||
|
|
||||||
|
// print(T);
|
||||||
|
|
@ -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,
|
x = X - 456,
|
||||||
y = Y
|
y = Y
|
||||||
};
|
};
|
||||||
|
|
||||||
|
L_sq_RefreshEventIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
|
|
||||||
|
|
@ -21,26 +21,32 @@ class R_Mouse {
|
||||||
}
|
}
|
||||||
//锁定鼠标
|
//锁定鼠标
|
||||||
function Lock() {
|
function Lock() {
|
||||||
|
_Rindro_Cusor_.UseState = 1;
|
||||||
L_sq_WAB(0x1B46886, 1);
|
L_sq_WAB(0x1B46886, 1);
|
||||||
}
|
}
|
||||||
//解锁鼠标
|
//解锁鼠标
|
||||||
function UnLock() {
|
function UnLock() {
|
||||||
|
_Rindro_Cusor_.UseState = 0;
|
||||||
L_sq_WAB(0x1B46886, 0);
|
L_sq_WAB(0x1B46886, 0);
|
||||||
}
|
}
|
||||||
//获取鼠标工作类型
|
//获取鼠标工作类型
|
||||||
function GetType() {
|
function GetType() {
|
||||||
|
return _Rindro_Cusor_.TypeState;
|
||||||
// return L_sq_RAB(0x1b46898);
|
// return L_sq_RAB(0x1b46898);
|
||||||
}
|
}
|
||||||
//设置鼠标工作类型
|
//设置鼠标工作类型
|
||||||
function SetType(Type) {
|
function SetType(Type) {
|
||||||
|
_Rindro_Cusor_.TypeState = Type;
|
||||||
// L_sq_WAB(0x1b46898, Type);
|
// L_sq_WAB(0x1b46898, Type);
|
||||||
}
|
}
|
||||||
//鼠标0状态下是否按下
|
//鼠标0状态下是否按下
|
||||||
function GetBaseState() {
|
function GetBaseState() {
|
||||||
|
return _Rindro_Cusor_.SubState;
|
||||||
// return L_sq_RAB(0x1B46874);
|
// return L_sq_RAB(0x1B46874);
|
||||||
}
|
}
|
||||||
//鼠标0状态设置是否按下
|
//鼠标0状态设置是否按下
|
||||||
function SetBaseState(Flag) {
|
function SetBaseState(Flag) {
|
||||||
|
_Rindro_Cusor_.SubState = Flag;
|
||||||
// return L_sq_WAB(0x1B46874, Flag);
|
// return L_sq_WAB(0x1B46874, Flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -51,7 +57,7 @@ class R_Mouse {
|
||||||
//如果鼠标工作类型不是0则设置为0
|
//如果鼠标工作类型不是0则设置为0
|
||||||
if (R_Mouse.GetType() != 0) R_Mouse.SetType(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类继承与本类
|
//基础窗口类 所有UI类继承与本类
|
||||||
|
|
@ -254,54 +260,46 @@ class LenheartNewUI_Windows extends LenheartNewUI_BaseWindow {
|
||||||
// L_sq_MouseClick();
|
// L_sq_MouseClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//道具信息窗口地址
|
||||||
ItemInfoDrawS = null;
|
ItemInfoDrawS = null;
|
||||||
//绘制道具相信信息
|
//绘制道具相信信息
|
||||||
ItemObject = 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) {
|
function DrawItemEx(X, Y, Id, Count) {
|
||||||
if (!Rindro_ItemInfoObject.rawin(Id)) Id = 3037;
|
GetItemInfo(Id);
|
||||||
if (Id != -1) {
|
local Rarity = L_sq_RA(Rindro_ItemInfoObject[Id] + 0xF4);
|
||||||
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_DrawImg("interface2/rindro_reward.img", Rarity, X - 3, Y - 3);
|
DrawItemBase(X, Y, Id, Count);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//绘制道具带道具信息
|
//绘制道具带道具信息
|
||||||
function DrawItemBase(X, Y, Id, Count) {
|
function DrawItemBase(X, Y, Id, Count) {
|
||||||
if (!Rindro_ItemInfoObject.rawin(Id)) Id = 3037;
|
GetItemInfo(Id);
|
||||||
if (Id != -1) {
|
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||||
local Rarity = Rindro_ItemInfoObject[Id].Rarity ? Rindro_ItemInfoObject[Id].Rarity : 0;
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||||
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 = {};
|
ItemInfoDrawS = L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 275, Rindro_ItemInfoObject[Id], 41);
|
||||||
ItemInfoDrawS.X <- X;
|
//校准道具信息窗口位置
|
||||||
ItemInfoDrawS.Y <- Y;
|
L_Sq_CallFunc(0xF3B3B0, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], ItemInfoDrawS, IMouse.GetXPos(), IMouse.GetYPos(), 28, 28);
|
||||||
ItemInfoDrawS.ItemId <- Id;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
//绘制悬停
|
|
||||||
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 {
|
} else {
|
||||||
ItemObject = null;
|
if (ItemInfoDrawS) {
|
||||||
|
L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||||
|
ItemInfoDrawS = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//生成DT
|
//生成DT
|
||||||
function GenerateDt() {
|
function GenerateDt() {
|
||||||
try {
|
try {
|
||||||
|
|
@ -321,10 +319,8 @@ class LenheartNewUI_Windows extends LenheartNewUI_BaseWindow {
|
||||||
LenheartNewUI_BaseWindow.Show(obj);
|
LenheartNewUI_BaseWindow.Show(obj);
|
||||||
if (DeBugMode) DeBug(obj);
|
if (DeBugMode) DeBug(obj);
|
||||||
|
|
||||||
|
|
||||||
DrawItemInfo();
|
|
||||||
//初始化绘制道具
|
//初始化绘制道具
|
||||||
ItemInfoDrawS = null;
|
// ItemInfoDrawS = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function TopShow(obj) {
|
function TopShow(obj) {
|
||||||
|
|
@ -686,6 +682,7 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
|
||||||
isInRect = false;
|
isInRect = false;
|
||||||
|
|
||||||
OnClick = null;
|
OnClick = null;
|
||||||
|
OnClickSound = null;
|
||||||
ObjectId = null;
|
ObjectId = null;
|
||||||
|
|
||||||
Visible = true;
|
Visible = true;
|
||||||
|
|
@ -714,13 +711,18 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
|
||||||
}
|
}
|
||||||
//鼠标左键按下回调
|
//鼠标左键按下回调
|
||||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
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) {
|
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||||
if (isLBDown && OnClick) {
|
if (isLBDown && OnClick) {
|
||||||
local obj = sq_getMyCharacter();
|
|
||||||
obj.sq_PlaySound("CLICK_BUTTON1");
|
|
||||||
OnClick();
|
OnClick();
|
||||||
}
|
}
|
||||||
isLBDown = false;
|
isLBDown = false;
|
||||||
|
|
@ -922,6 +924,10 @@ class LenheartNewUI_BaseInput extends LenheartNewUI_CommonUi {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SetStr(Value) {
|
||||||
|
L_sq_SetInputBoxStr(InputController, Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//复选框
|
//复选框
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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_ItemInfoObject")) Rindro_ItemInfoObject <- {};
|
||||||
if (!getroottable().rawin("Rindro_ItemInfoBuf")) Rindro_ItemInfoBuf <- "";
|
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() {
|
function Rindro_GetLocalConfig() {
|
||||||
local Buf = L_sq_GetLocalConfig();
|
// local Buf = L_sq_GetLocalConfig();
|
||||||
if (!Buf) {
|
// if (!Buf) {
|
||||||
return {
|
// return {
|
||||||
md5 = -1
|
// md5 = -1
|
||||||
};
|
// };
|
||||||
} else return Json.Decode(Buf);
|
// } else return dofile("Rindro_Config.cfg");
|
||||||
}
|
}
|
||||||
// if (!getroottable().rawin("RINDRO_CONFIG"))
|
|
||||||
RINDRO_CONFIG <- Rindro_GetLocalConfig();
|
|
||||||
|
|
||||||
//获取本地信息版本
|
//获取本地信息版本
|
||||||
function Rindro_GetMd5() {
|
function Rindro_GetMd5() {
|
||||||
return RINDRO_CONFIG.md5;
|
// return RINDRO_CONFIG.md5;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//初始化各种信息
|
//初始化各种信息
|
||||||
function Rindro_Init() {
|
function Rindro_Init() {
|
||||||
//道具信息
|
// //道具信息
|
||||||
local ItemArray = getroottable().RINDRO_CONFIG.itemInfo;
|
// local ItemArray = getroottable().RINDRO_CONFIG.itemInfo;
|
||||||
Rindro_ItemInfoBuf = "";
|
// Rindro_ItemInfoBuf = "";
|
||||||
foreach(Value in ItemArray) {
|
// foreach(Value in ItemArray) {
|
||||||
if (Value.Name2.len() == 0)
|
// if (Value.Name2.len() == 0)
|
||||||
Value.Name2 = "Rindro-Team";
|
// Value.Name2 = "Rindro-Team";
|
||||||
getroottable().Rindro_ItemInfoObject[Value.Id] <- Value;
|
// getroottable().Rindro_ItemInfoObject[Value.Id] <- Value;
|
||||||
}
|
// }
|
||||||
RINDRO_INIT_FLAG = true;
|
// RINDRO_INIT_FLAG = true;
|
||||||
}
|
}
|
||||||
//更新本地配置
|
//更新本地配置
|
||||||
function Rindro_ItemInfoCallBack(Chunk) {
|
function Rindro_ItemInfoCallBack(Chunk) {
|
||||||
local Jso = Json.Decode(Chunk);
|
// local Jso = Json.Decode(Chunk);
|
||||||
if ("ZipSEnd" in Jso) {
|
// if ("ZipSEnd" in Jso) {
|
||||||
getroottable().Rindro_ItemInfoObject <- {};
|
// getroottable().Rindro_ItemInfoObject <- {};
|
||||||
Rindro_ItemInfoBuf += Jso.ZipS;
|
// Rindro_ItemInfoBuf += Jso.ZipS;
|
||||||
local ZlibStrBuf = L_sq_Dezlib(Rindro_ItemInfoBuf);
|
// local ZlibStrBuf = L_sq_Dezlib(Rindro_ItemInfoBuf);
|
||||||
if (ZlibStrBuf == "null") {
|
// if (ZlibStrBuf == "null") {
|
||||||
Rindro_ItemInfoBuf = "";
|
// Rindro_ItemInfoBuf = "";
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
L_sq_SetLocalConfig(ZlibStrBuf);
|
// ZlibStrBuf = L_sq_DecondeJson(ZlibStrBuf);
|
||||||
|
// L_sq_SetLocalConfig("return " + ZlibStrBuf);
|
||||||
getroottable().RINDRO_CONFIG <- Json.Decode(ZlibStrBuf);
|
// getroottable().RINDRO_CONFIG <- dofile("Rindro_Config.cfg");
|
||||||
|
// Rindro_Init();
|
||||||
Rindro_Init();
|
// } else {
|
||||||
} else {
|
// Rindro_ItemInfoBuf += Jso.ZipS;
|
||||||
Rindro_ItemInfoBuf += Jso.ZipS;
|
// }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Pack_Control.rawset(20240422, Rindro_ItemInfoCallBack);
|
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;
|
||||||
|
// });
|
||||||
|
|
@ -4,6 +4,9 @@ dofile("sqr/Base/_ENUM/_ENUM_KEY.nut"); //按键枚举类
|
||||||
|
|
||||||
//基础工具类
|
//基础工具类
|
||||||
dofile("sqr/Base/_Tool/BaseTool_Class.nut"); //基础工具类
|
dofile("sqr/Base/_Tool/BaseTool_Class.nut"); //基础工具类
|
||||||
|
dofile("sqr/Base/_Tool/MemoryClass.nut"); //内存类
|
||||||
|
dofile("sqr/Base/_Tool/Hacker_Class.nut"); //黑客工具类
|
||||||
|
dofile("sqr/Base/_Tool/Hacker_RegApi.nut"); //黑客注册工具类
|
||||||
//基础工具类
|
//基础工具类
|
||||||
|
|
||||||
//回调注册类
|
//回调注册类
|
||||||
|
|
@ -20,6 +23,7 @@ dofile("sqr/Base/_Z_Data/CharacterInfoData.nut"); //角色信息数据
|
||||||
//数据类
|
//数据类
|
||||||
|
|
||||||
//UI框架类
|
//UI框架类
|
||||||
|
dofile("sqr/Base/UI/Lenheart_Cursor_Class.nut"); //鼠标类
|
||||||
dofile("sqr/Base/UI/OldWindowsMap.nut"); //窗口Map
|
dofile("sqr/Base/UI/OldWindowsMap.nut"); //窗口Map
|
||||||
dofile("sqr/Base/UI/Lenheart_UI_Class.nut"); //UI
|
dofile("sqr/Base/UI/Lenheart_UI_Class.nut"); //UI
|
||||||
dofile("sqr/Base/UI/Lenheart_Ani_Class.nut"); //Ani
|
dofile("sqr/Base/UI/Lenheart_Ani_Class.nut"); //Ani
|
||||||
|
|
@ -47,3 +51,4 @@ dofile("sqr/Project/Shapeshifting/Shapeshifting.nut"); //时装变身
|
||||||
dofile("sqr/Project/HudUi/HudUi.nut"); //百级UI
|
dofile("sqr/Project/HudUi/HudUi.nut"); //百级UI
|
||||||
dofile("sqr/Project/DamagePerSecond/DamagePerSecond.nut"); //秒伤统计
|
dofile("sqr/Project/DamagePerSecond/DamagePerSecond.nut"); //秒伤统计
|
||||||
dofile("sqr/Project/CollectionBox/CollectionBox.nut"); //收集箱
|
dofile("sqr/Project/CollectionBox/CollectionBox.nut"); //收集箱
|
||||||
|
dofile("sqr/Project/HorseGuessing/HorseGuessing.nut"); //骑士马战
|
||||||
|
|
@ -357,41 +357,43 @@ class RinDro_Anton extends Rindro_BaseToolClass {
|
||||||
//绘制通关副本动画
|
//绘制通关副本动画
|
||||||
function DrawPlayAni(obj) {
|
function DrawPlayAni(obj) {
|
||||||
if (!DrawPlayAniMark || !DrawPlayAniT) return;
|
if (!DrawPlayAniMark || !DrawPlayAniT) return;
|
||||||
|
local Offset = 0;
|
||||||
|
if (getroottable().Rindro_Scr_Width > 800) Offset = ((getroottable().Rindro_Scr_Width - 800) / 2);
|
||||||
local Ct = Clock() - DrawPlayAniT;
|
local Ct = Clock() - DrawPlayAniT;
|
||||||
switch (DrawPlayAniMark) {
|
switch (DrawPlayAniMark) {
|
||||||
case 1: //通关擎天A
|
case 1: //通关擎天A
|
||||||
case 2: //通关擎天B
|
case 2: //通关擎天B
|
||||||
case 13: //通关擎天B
|
case 13: //通关擎天B
|
||||||
local Ani = T_DrawDynamicAni(obj, "common/anton/title/04_clear_back.ani", 0, 180, "安图恩通关擎天A" + DrawPlayAniT);
|
local Ani = T_DrawDynamicAni(obj, "common/anton/title/04_clear_back.ani", 0 + Offset, 180, "安图恩通关擎天A" + DrawPlayAniT);
|
||||||
local str = "擎天之柱A";
|
local str = "擎天之柱A";
|
||||||
if (DrawPlayAniMark == 2) str = "擎天之柱B"
|
if (DrawPlayAniMark == 2) str = "擎天之柱B"
|
||||||
if (DrawPlayAniMark == 13) str = "黑色火山"
|
if (DrawPlayAniMark == 13) str = "黑色火山"
|
||||||
if (Ct >= 350 && Ct <= 1400) L_sq_DrawCode(str, 236 + 158 - LenheartTextClass.GetStringLength(str) / 2, 244, sq_RGBA(255, 146, 0, 250), 0, 1);
|
if (Ct >= 350 && Ct <= 1400) L_sq_DrawCode(str, 236 + Offset + 158 - LenheartTextClass.GetStringLength(str) / 2, 244, sq_RGBA(255, 146, 0, 250), 0, 1);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/00_start_back.ani", 430, 210 + 26, "安图恩阻截开始" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/00_start_back.ani", 430 + Offset, 210 + 26, "安图恩阻截开始" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/02_success_back.ani", 430, 210 + 26, "安图恩阻截成功" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/02_success_back.ani", 430 + Offset, 210 + 26, "安图恩阻截成功" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back.ani", 430, 210 + 26, "安图恩阻截失败" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back.ani", 430 + Offset, 210 + 26, "安图恩阻截失败" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/00_start_back_1.ani", 430, 210 + 26, "安图恩灭杀开始" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/00_start_back_1.ani", 430 + Offset, 210 + 26, "安图恩灭杀开始" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/02_success_back_1.ani", 430, 210 + 26, "安图恩灭杀成功" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/02_success_back_1.ani", 430 + Offset, 210 + 26, "安图恩灭杀成功" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back_1.ani", 430, 210 + 26, "安图恩灭杀失败" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/01_fail_back_1.ani", 430 + Offset, 210 + 26, "安图恩灭杀失败" + DrawPlayAniT);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
case 12:
|
case 12:
|
||||||
T_DrawDynamicAni(obj, "common/anton/title/03_warning_back.ani", 0, 210 + 26, "安图恩火山警告" + DrawPlayAniT);
|
T_DrawDynamicAni(obj, "common/anton/title/03_warning_back.ani", 0 + Offset, 210 + 26, "安图恩火山警告" + DrawPlayAniT);
|
||||||
local str = "火山能量即将过载,请立即前往压制!!!";
|
local str = "火山能量即将过载,请立即前往压制!!!";
|
||||||
if (DrawPlayAniMark == 12) str = "震颤的大地已经复活,请立即前往压制!!!"
|
if (DrawPlayAniMark == 12) str = "震颤的大地已经复活,请立即前往压制!!!"
|
||||||
if (Ct >= 350 && Ct <= 1600) L_sq_DrawCode(str, 236 + 158 - LenheartTextClass.GetStringLength(str) / 2, 320, sq_RGBA(255, 50, 50, 250), 0, 1);
|
if (Ct >= 350 && Ct <= 1600) L_sq_DrawCode(str, 236 + Offset + 158 - LenheartTextClass.GetStringLength(str) / 2, 320, sq_RGBA(255, 50, 50, 250), 0, 1);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -800,7 +800,7 @@ class Rindro_AntonFightSituationC extends LenheartNewUI_Windows {
|
||||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||||
MapEventTest(obj);
|
MapEventTest(obj);
|
||||||
if (SelectDgnMarkFlag) {
|
if (SelectDgnMarkFlag) {
|
||||||
L_sq_WA(0x1b46898, 47);
|
R_Mouse.SetType(151);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -810,7 +810,7 @@ class Rindro_AntonFightSituationC extends LenheartNewUI_Windows {
|
||||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||||
if (SelectDgnMarkFlag != 0) {
|
if (SelectDgnMarkFlag != 0) {
|
||||||
SelectDgnMarkFlag = 0;
|
SelectDgnMarkFlag = 0;
|
||||||
L_sq_WA(0x1b46898, 0);
|
R_Mouse.SetType(0);
|
||||||
foreach(d_obj in DgnList) {
|
foreach(d_obj in DgnList) {
|
||||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + d_obj.X, Y + d_obj.Y, 71, 71)) {
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + d_obj.X, Y + d_obj.Y, 71, 71)) {
|
||||||
local T = {
|
local T = {
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ class Rindro_AntonPartyFormation extends LenheartNewUI_Windows {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PartyMarkFlag != -1) {
|
if (PartyMarkFlag != -1) {
|
||||||
L_sq_WA(0x1b46898, 47);
|
R_Mouse.SetType(151);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -114,7 +114,7 @@ class Rindro_AntonPartyFormation extends LenheartNewUI_Windows {
|
||||||
//还原编队的鼠标指针
|
//还原编队的鼠标指针
|
||||||
if (this.PartyMarkFlag != -1) {
|
if (this.PartyMarkFlag != -1) {
|
||||||
this.PartyMarkFlag = -1;
|
this.PartyMarkFlag = -1;
|
||||||
L_sq_WA(0x1b46898, 0);
|
R_Mouse.SetType(0);
|
||||||
}
|
}
|
||||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,14 +86,14 @@ class Rindro_AntonPartyInfoMemberC extends LenheartNewUI_CommonUi {
|
||||||
}
|
}
|
||||||
SendPackEx(T);
|
SendPackEx(T);
|
||||||
win.PartyMarkFlag = -1;
|
win.PartyMarkFlag = -1;
|
||||||
L_sq_WA(0x1b46898, 0);
|
R_Mouse.SetType(0);
|
||||||
win.ResetFocus();
|
win.ResetFocus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//点了其他队伍成员要还原编队状态
|
//点了其他队伍成员要还原编队状态
|
||||||
else {
|
else {
|
||||||
win.PartyMarkFlag = -1;
|
win.PartyMarkFlag = -1;
|
||||||
L_sq_WA(0x1b46898, 0);
|
R_Mouse.SetType(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -363,8 +363,8 @@ class Rindro_Anton_RewardC extends LenheartNewUI_Windows {
|
||||||
}
|
}
|
||||||
//绘制物品边框
|
//绘制物品边框
|
||||||
if (OpenRealXrate >= 0.6) {
|
if (OpenRealXrate >= 0.6) {
|
||||||
local Rarity = AllItemInfoObject[CardInfo.item].Rarity;
|
local Rarity = Rindro_ItemInfoObject[CardInfo.item].Rarity;
|
||||||
local Name = AllItemInfoObject[CardInfo.item].Name;
|
local Name = Rindro_ItemInfoObject[CardInfo.item].Name;
|
||||||
L_sq_DrawImg("interface2/raid/anton/reward/anton_reward.img", 5 + Rarity, X + 156 + (160 * i), Y + 378, 1, sq_RGBA(255, 255, 255, CradAlphaOffset), OpenRealXrate, 1.0);
|
L_sq_DrawImg("interface2/raid/anton/reward/anton_reward.img", 5 + Rarity, X + 156 + (160 * i), Y + 378, 1, sq_RGBA(255, 255, 255, CradAlphaOffset), OpenRealXrate, 1.0);
|
||||||
|
|
||||||
//绘制物品
|
//绘制物品
|
||||||
|
|
@ -459,7 +459,7 @@ class Rindro_Anton_RewardC extends LenheartNewUI_Windows {
|
||||||
//奖励对象
|
//奖励对象
|
||||||
local CardInfo = TeamReward[i];
|
local CardInfo = TeamReward[i];
|
||||||
if (CardInfo.Flag && CardInfo.item != -1) {
|
if (CardInfo.Flag && CardInfo.item != -1) {
|
||||||
local Rarity = AllItemInfoObject[CardInfo.item].Rarity;
|
local Rarity = Rindro_ItemInfoObject[CardInfo.item].Rarity;
|
||||||
//物品出现光
|
//物品出现光
|
||||||
if (!CardInfo.grade) {
|
if (!CardInfo.grade) {
|
||||||
if (Rarity <= 2) { //低于紫色闪紫光
|
if (Rarity <= 2) { //低于紫色闪紫光
|
||||||
|
|
|
||||||
|
|
@ -354,7 +354,7 @@ function Lenheart_AradPass_Fun(obj) {
|
||||||
if (!RootTab.rawin("AradPass_Obj")) {
|
if (!RootTab.rawin("AradPass_Obj")) {
|
||||||
RootTab.rawset("AradPass_Obj", true);
|
RootTab.rawset("AradPass_Obj", true);
|
||||||
local Win = LenheartNewUI_CreateWindow(AradPassC, "阿拉德战令窗口", ((getroottable().Rindro_Scr_Width - 558) / 2).tointeger(), 46, 558, 484, 15);
|
local Win = LenheartNewUI_CreateWindow(AradPassC, "阿拉德战令窗口", ((getroottable().Rindro_Scr_Width - 558) / 2).tointeger(), 46, 558, 484, 15);
|
||||||
EventList_Obj.AddEvent("阿拉德战令", 928, Win,"interface2/hud/information_button/information_button_cn.img");
|
EventList_Obj.AddEvent("阿拉德战令", 928, Win, "interface2/hud/information_button/information_button_cn.img");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -380,6 +380,23 @@ class AradPass_QuestC extends LenheartNewUI_Windows {
|
||||||
DrawTop(obj);
|
DrawTop(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//override
|
||||||
|
//鼠标滚轮事件回调
|
||||||
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||||||
|
|
||||||
|
|
||||||
|
if (Flag) {
|
||||||
|
if (QuestWheelNow > 0) QuestWheelNow--;
|
||||||
|
}
|
||||||
|
if (!Flag) {
|
||||||
|
if (QuestWheelNow< QuestWheelMax - 6) QuestWheelNow++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//调用原生方法
|
||||||
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||||
|
}
|
||||||
|
|
||||||
//逻辑入口
|
//逻辑入口
|
||||||
function Proc(obj) {
|
function Proc(obj) {
|
||||||
LenheartNewUI_Windows.SyncPos(X, Y - 210);
|
LenheartNewUI_Windows.SyncPos(X, Y - 210);
|
||||||
|
|
@ -392,12 +409,6 @@ class AradPass_QuestC extends LenheartNewUI_Windows {
|
||||||
Visible = false;
|
Visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IMouse.IsWheelUp()) {
|
|
||||||
if (QuestWheelNow > 0) QuestWheelNow--;
|
|
||||||
}
|
|
||||||
if (IMouse.IsWheelDown()) {
|
|
||||||
if (QuestWheelNow< QuestWheelMax - 6) QuestWheelNow++;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach(Pos, winobj in QuestItemList[Page]) {
|
foreach(Pos, winobj in QuestItemList[Page]) {
|
||||||
if (Pos >= QuestWheelNow && Pos <= QuestWheelNow + 5) {
|
if (Pos >= QuestWheelNow && Pos <= QuestWheelNow + 5) {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ class LenheartNewUI_CollectionBox_BaseButton extends LenheartNewUI_CommonUi {
|
||||||
Path = null;
|
Path = null;
|
||||||
Idx = null;
|
Idx = null;
|
||||||
SetFlag = null;
|
SetFlag = null;
|
||||||
|
SetIndex = null;
|
||||||
|
|
||||||
|
|
||||||
constructor(X, Y, W, H, Path, Idx) {
|
constructor(X, Y, W, H, Path, Idx) {
|
||||||
|
|
@ -65,7 +66,7 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
// NoWindow = true;
|
// NoWindow = true;
|
||||||
|
|
||||||
//是否可见
|
//是否可见
|
||||||
// Visible = false;
|
Visible = false;
|
||||||
|
|
||||||
//盒子按钮集合
|
//盒子按钮集合
|
||||||
BoxButton = null;
|
BoxButton = null;
|
||||||
|
|
@ -76,16 +77,45 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
//当前页面
|
//当前页面
|
||||||
Page = null;
|
Page = null;
|
||||||
|
|
||||||
//
|
//滚轮偏移
|
||||||
|
ScrollPos = 0;
|
||||||
|
|
||||||
|
//页面滚轮偏移
|
||||||
|
PageScrollPos = 0;
|
||||||
|
|
||||||
|
//悬停的宝珠
|
||||||
|
HoverItem = null;
|
||||||
|
|
||||||
|
//镶嵌成功音效包
|
||||||
|
function AudioCallBack(Chunk) {
|
||||||
|
local Jso = Json.Decode(Chunk);
|
||||||
|
local Type = Jso.Type;
|
||||||
|
local obj = sq_getMyCharacter();
|
||||||
|
|
||||||
|
switch (Type) {
|
||||||
|
case 1:
|
||||||
|
obj.sq_PlaySound("TRADE_OK");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
obj.sq_PlaySound("ICON_DROP_TO_QUICKSLOT");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
obj.sq_PlaySound("GAMBLE_RESULT_GOOD");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//基础配置包
|
//基础配置包
|
||||||
function GetInfoCallBack(Chunk) {
|
function GetInfoCallBack(Chunk) {
|
||||||
Info = Json.Decode(Chunk).info;
|
local Jso = Json.Decode(Chunk);
|
||||||
|
local ZlibStrBuf = Json.Decode(L_sq_Dezlib(Jso.ZipS));
|
||||||
|
Info = ZlibStrBuf.info;
|
||||||
foreach(Key, Aobj in Info) {
|
foreach(Key, Aobj in Info) {
|
||||||
if (!Page) Page = Key;
|
if (!Page) Page = Key;
|
||||||
local StrBuf1 = L_sq_GetStringDrawArray(Aobj.attribute.Atts, 300);
|
local StrBuf1 = L_sq_GetStringDrawArray(Aobj.attS, 300);
|
||||||
Aobj.attribute.AttsS <- StrBuf1[0] + "...";
|
Aobj.AttsS <- StrBuf1[0] + "...";
|
||||||
Aobj.attribute.Atts <- StrBuf1;
|
Aobj.attS <- StrBuf1;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitBoxButton();
|
InitBoxButton();
|
||||||
|
|
@ -98,11 +128,6 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
};
|
};
|
||||||
SendPackEx(T);
|
SendPackEx(T);
|
||||||
}
|
}
|
||||||
//收集箱收集信息
|
|
||||||
function GetCollectInfoCallBack(Chunk) {
|
|
||||||
|
|
||||||
// Info = Json.Decode(Chunk).info;
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||||
Childrens = [];
|
Childrens = [];
|
||||||
|
|
@ -113,9 +138,10 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
|
||||||
Pack_Control.rawset(20077028, GetInfoCallBack.bindenv(this));
|
Pack_Control.rawset(20077028, GetInfoCallBack.bindenv(this));
|
||||||
|
Pack_Control.rawset(20077010, AudioCallBack.bindenv(this));
|
||||||
|
|
||||||
Pack_Control.rawset(20077004, GetCollectInfoCallBack.bindenv(this));
|
|
||||||
GetCollectInfo();
|
GetCollectInfo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//初始化按钮
|
//初始化按钮
|
||||||
|
|
@ -135,12 +161,15 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
//关闭按钮
|
//关闭按钮
|
||||||
local ButtonBuf = LenheartNewUI_CollectionBox_BaseButton(8, 95 + (RealPos * 72), 102, 70, InfoObj.img, 1);
|
local ButtonBuf = LenheartNewUI_CollectionBox_BaseButton(8, 95 + (RealPos * 72), 102, 70, InfoObj.img, 1);
|
||||||
ButtonBuf.SetFlag = Pos;
|
ButtonBuf.SetFlag = Pos;
|
||||||
|
ButtonBuf.SetIndex = RealPos;
|
||||||
ButtonBuf.OnClick = function(ButtonObj) {
|
ButtonBuf.OnClick = function(ButtonObj) {
|
||||||
Page = ButtonObj.SetFlag;
|
Page = ButtonObj.SetFlag;
|
||||||
}.bindenv(this);
|
}.bindenv(this);
|
||||||
ButtonBuf.SetCallBackFunc(function(ButtonObj) {
|
ButtonBuf.SetCallBackFunc(function(ButtonObj) {
|
||||||
|
ButtonObj.Localtion_Y = 95 + ((ButtonObj.SetIndex - ScrollPos) * 72);
|
||||||
});
|
if (ButtonObj.Localtion_Y< 95 || ButtonObj.Localtion_Y > 311) ButtonObj.Localtion_X = -9000;
|
||||||
|
else ButtonObj.Localtion_X = 8;
|
||||||
|
}.bindenv(this));
|
||||||
Childrens.append(ButtonBuf);
|
Childrens.append(ButtonBuf);
|
||||||
RealPos++;
|
RealPos++;
|
||||||
}
|
}
|
||||||
|
|
@ -164,17 +193,43 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
L_sq_DrawImg("interface2/collectbox/collectboxbtn.img", 0, X, Y);
|
L_sq_DrawImg("interface2/collectbox/collectboxbtn.img", 0, X, Y);
|
||||||
//背景
|
//背景
|
||||||
L_sq_DrawImg(Info[Page].img, 0, X + 7, Y + 26);
|
L_sq_DrawImg(Info[Page].img, 0, X + 7, Y + 26);
|
||||||
|
//绘制窗口名称
|
||||||
|
L_sq_DrawCode("我的收集箱", X + 160, Y + 8, sq_RGBA(255, 177, 0, 250), 0, 1);
|
||||||
//绘制收集箱名称
|
//绘制收集箱名称
|
||||||
L_sq_DrawCode(Info[Page].name, X + 208 - LenheartTextClass.GetStringLength(Info[Page].name) / 2, Y + 40, sq_RGBA(255, 177, 0, 250), 0, 1);
|
L_sq_DrawCode(Info[Page].name, X + 208 - LenheartTextClass.GetStringLength(Info[Page].name) / 2, Y + 40, sq_RGBA(255, 177, 0, 250), 0, 1);
|
||||||
//绘制收集箱信息缩略
|
//绘制收集箱信息缩略
|
||||||
L_sq_DrawCode(Info[Page].attribute.AttsS, X + 228 - LenheartTextClass.GetStringLength(Info[Page].attribute.AttsS) / 2, Y + 40 + 20, sq_RGBA(255, 242, 0, 250), 0, 1);
|
L_sq_DrawCode(Info[Page].AttsS, X + 228 - LenheartTextClass.GetStringLength(Info[Page].AttsS) / 2, Y + 40 + 20, sq_RGBA(255, 242, 0, 250), 0, 1);
|
||||||
|
|
||||||
|
|
||||||
|
HoverItem = null;
|
||||||
|
setClip(X + 95, Y + 95, X + 348, Y + 375); //开始裁切
|
||||||
|
//绘制宝珠
|
||||||
|
foreach(pos, value in Info[Page].itemIds) {
|
||||||
|
//绘制格子
|
||||||
|
L_sq_DrawImg(Info[Page].img, 5, X + value.x, Y + value.y + PageScrollPos);
|
||||||
|
//绘制宝珠
|
||||||
|
DrawItemEx(X + value.x + Info[Page].Xp, Y + value.y + Info[Page].Yp + PageScrollPos, value.id, 1);
|
||||||
|
//判断是否拥有
|
||||||
|
if (!value.isTure) {
|
||||||
|
//遮挡
|
||||||
|
L_sq_DrawImg("interface/windowcommon.img", 157, X + value.x + Info[Page].Xp, Y + value.y + Info[Page].Yp + PageScrollPos);
|
||||||
|
L_sq_DrawImg("interface/windowcommon.img", 157, X + value.x + Info[Page].Xp, Y + value.y + Info[Page].Yp + PageScrollPos);
|
||||||
|
L_sq_DrawImg("interface/windowcommon.img", 157, X + value.x + Info[Page].Xp, Y + value.y + Info[Page].Yp + PageScrollPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + value.x + Info[Page].Xp, Y + value.y + Info[Page].Yp + PageScrollPos, 29, 29)) {
|
||||||
|
HoverItem = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
releaseClip(); //裁切结束
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function TopShow(obj) {
|
function TopShow(obj) {
|
||||||
|
if (!Info) return;
|
||||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 86, Y + 53, 272, 15)) {
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 86, Y + 53, 272, 15)) {
|
||||||
local StrArr = Info[Page].attribute.Atts;
|
local StrArr = Info[Page].attS;
|
||||||
local Str = Info[Page].attribute.AttsS;
|
local Str = Info[Page].AttsS;
|
||||||
L_sq_DrawWindow(IMouse.GetXPos() - 140 + LenheartTextClass.GetStringLength(Str) / 2, IMouse.GetYPos() - 36, 0 + LenheartTextClass.GetStringLength(Str), 0 + (14 * StrArr.len()), "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
L_sq_DrawWindow(IMouse.GetXPos() - 140 + LenheartTextClass.GetStringLength(Str) / 2, IMouse.GetYPos() - 36, 0 + LenheartTextClass.GetStringLength(Str), 0 + (14 * StrArr.len()), "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||||
|
|
||||||
local Xpos = LenheartTextClass.GetStringLength(Str) / 2;
|
local Xpos = LenheartTextClass.GetStringLength(Str) / 2;
|
||||||
|
|
@ -184,6 +239,23 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//override
|
||||||
|
function DrawItemInfo() {
|
||||||
|
if (MousePosFlag != 2) return;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Show(obj) {
|
function Show(obj) {
|
||||||
DrawMain(obj);
|
DrawMain(obj);
|
||||||
LenheartNewUI_Windows.Show(obj);
|
LenheartNewUI_Windows.Show(obj);
|
||||||
|
|
@ -192,6 +264,83 @@ class CollectionBoxC extends LenheartNewUI_Windows {
|
||||||
//逻辑入口
|
//逻辑入口
|
||||||
function Proc(obj) {
|
function Proc(obj) {
|
||||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//鼠标位置Flag
|
||||||
|
MousePosFlag = 0;
|
||||||
|
|
||||||
|
//override
|
||||||
|
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||||
|
//调用原生方法
|
||||||
|
LenheartNewUI_Windows.OnMouseProc(Flag, MousePos_X, MousePos_Y);
|
||||||
|
|
||||||
|
MousePos_X -= X;
|
||||||
|
MousePos_Y -= Y;
|
||||||
|
//鼠标在栏目窗口内
|
||||||
|
if (MousePos_X >= 8 && MousePos_Y >= 95 && MousePos_X <= 110 && MousePos_Y <= 375) {
|
||||||
|
MousePosFlag = 1;
|
||||||
|
}
|
||||||
|
//鼠标在宝珠窗口内
|
||||||
|
else if (MousePos_X > 95 && MousePos_Y >= 95 && MousePos_X <= 348 && MousePos_Y <= 375) {
|
||||||
|
MousePosFlag = 2;
|
||||||
|
} else MousePosFlag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//override
|
||||||
|
//鼠标滚轮事件回调
|
||||||
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||||||
|
MousePos_X -= X;
|
||||||
|
MousePos_Y -= Y;
|
||||||
|
|
||||||
|
//左侧栏目的滚动逻辑
|
||||||
|
if (MousePosFlag == 1) {
|
||||||
|
if (Flag) {
|
||||||
|
if (ScrollPos > 0) ScrollPos -= 1;
|
||||||
|
}
|
||||||
|
if (!Flag) {
|
||||||
|
if (ScrollPos<(Info.len() - 4)) ScrollPos += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//左侧栏目的滚动逻辑
|
||||||
|
if (MousePosFlag == 2) {
|
||||||
|
if (Flag) {
|
||||||
|
if (PageScrollPos< 0) PageScrollPos += 47;
|
||||||
|
}
|
||||||
|
if (!Flag) {
|
||||||
|
if (PageScrollPos > (0 - Info[Page].gl)) PageScrollPos -= 47;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//调用原生方法
|
||||||
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//override
|
||||||
|
//鼠标左键弹起回调
|
||||||
|
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||||
|
//调用原生方法
|
||||||
|
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||||
|
|
||||||
|
if (HoverItem) {
|
||||||
|
local RealOp = 20077005;
|
||||||
|
if (HoverItem.isTure) RealOp = 20077009;
|
||||||
|
local T = {
|
||||||
|
op = RealOp,
|
||||||
|
boxId = Info[Page].id,
|
||||||
|
itemId = HoverItem.id
|
||||||
|
}
|
||||||
|
SendPackEx(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function OpenCallBack() {
|
||||||
|
GetCollectInfo();
|
||||||
|
this.Visible = true;
|
||||||
|
ResetFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -201,7 +350,9 @@ function Lenheart_CollectionBox_Fun(obj) {
|
||||||
local RootTab = getroottable();
|
local RootTab = getroottable();
|
||||||
if (!RootTab.rawin("CollectionBox_Obj")) {
|
if (!RootTab.rawin("CollectionBox_Obj")) {
|
||||||
RootTab.rawset("CollectionBox_Obj", true);
|
RootTab.rawset("CollectionBox_Obj", true);
|
||||||
LenheartNewUI_CreateWindow(CollectionBoxC, "收集箱", ((getroottable().Rindro_Scr_Width - 376) / 2).tointeger(), 64, 376, 384, 28);
|
local Winobj = LenheartNewUI_CreateWindow(CollectionBoxC, "收集箱窗口", ((getroottable().Rindro_Scr_Width - 376) / 2).tointeger(), 64, 376, 384, 28);
|
||||||
|
|
||||||
|
EventList_Obj.AddEvent("收集箱", 73, Winobj, "interface2/hud/information_button/information_button_cn.img");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,223 @@
|
||||||
|
/*
|
||||||
|
文件名:HorseGuessing.nut
|
||||||
|
路径:Project/HorseGuessing/HorseGuessing.nut
|
||||||
|
创建日期:2024-09-25 20:30
|
||||||
|
文件用途:骑士马战
|
||||||
|
*/
|
||||||
|
dofile("sqr/Project/HorseGuessing/HorseGuessing_Guide.nut"); //骑士马战指引
|
||||||
|
dofile("sqr/Project/HorseGuessing/HorseGuessing_KnightInfo.nut"); //骑士马战资料
|
||||||
|
class HorseGuessingC extends LenheartNewUI_Windows {
|
||||||
|
//调试模式
|
||||||
|
//DeBugMode = true;
|
||||||
|
|
||||||
|
//不是窗口
|
||||||
|
// NoWindow = true;
|
||||||
|
|
||||||
|
//是否可见
|
||||||
|
// Visible = false;
|
||||||
|
|
||||||
|
//标题栏
|
||||||
|
Title = null;
|
||||||
|
//当前页面
|
||||||
|
Page = 0;
|
||||||
|
|
||||||
|
//页面选择器
|
||||||
|
PageSelectM = 0;
|
||||||
|
//指引页面
|
||||||
|
GuidePage = null;
|
||||||
|
//骑士资料页面
|
||||||
|
KnightInfoPage = null;
|
||||||
|
//过往战绩页面
|
||||||
|
PastRecordPage = null;
|
||||||
|
|
||||||
|
|
||||||
|
//骑手名称
|
||||||
|
RiderName = [
|
||||||
|
"伊撒尔",
|
||||||
|
"理查德",
|
||||||
|
"席恩",
|
||||||
|
"吉尔特",
|
||||||
|
"爱德华",
|
||||||
|
"罗兰",
|
||||||
|
"莱奥",
|
||||||
|
"贝奥武夫",
|
||||||
|
];
|
||||||
|
|
||||||
|
//当前选择骑手
|
||||||
|
NowSelectRider = 0;
|
||||||
|
|
||||||
|
//下注
|
||||||
|
BetItem = 0;
|
||||||
|
|
||||||
|
//剩余可下注数量
|
||||||
|
ResidueCoin = 10000;
|
||||||
|
|
||||||
|
|
||||||
|
//骑手信息
|
||||||
|
RiderInfo = null;
|
||||||
|
|
||||||
|
//获取选手具体信息
|
||||||
|
function GetRiderInfo() {
|
||||||
|
local T = {
|
||||||
|
op = 20055003,
|
||||||
|
code = NowSelectRider,
|
||||||
|
}
|
||||||
|
SendPack(T);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取选手具体信息回调包
|
||||||
|
function GetRiderInfoCallBack(Chunk) {
|
||||||
|
local Jso = Json.Decode(Chunk);
|
||||||
|
RiderInfo = [];
|
||||||
|
for (local i = 0; i< Jso.outcome.len(); i++) {
|
||||||
|
RiderInfo.append(Jso.outcome[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||||
|
Childrens = [];
|
||||||
|
Title = [];
|
||||||
|
RiderInfo = [];
|
||||||
|
//读取配置文件
|
||||||
|
local Config = R_Utils.ReadScriptConfig("etc/rindro/horseguessing/horseguessing.dat", 1024, "utf8");
|
||||||
|
|
||||||
|
RiderName = Config.RiderInfo;
|
||||||
|
BetItem = Config.ItemId;
|
||||||
|
//把big的名字 转成 utf8
|
||||||
|
for (local i = 0; i< RiderName.len(); i++) {
|
||||||
|
RiderName[i] = Sq_ConvertWideChar(RiderName[i], "big5");
|
||||||
|
}
|
||||||
|
|
||||||
|
//注册控件
|
||||||
|
RegisterWidget();
|
||||||
|
|
||||||
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
|
||||||
|
GuidePage = HorseGuessing_GuideC("骑士马战_指引窗口", X + 7, Y + 50, 214, 480, 0);
|
||||||
|
KnightInfoPage = HorseGuessing_KnightInfoC("骑士马战_资料窗口", X + 7, Y + 50, 214, 480, 0);
|
||||||
|
|
||||||
|
//默认构造时切换到0页
|
||||||
|
ChangePage(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ChangePage(ToPage) {
|
||||||
|
|
||||||
|
foreach(ButtonObj in Title) {
|
||||||
|
ButtonObj.State = 0;
|
||||||
|
}
|
||||||
|
Page = ToPage;
|
||||||
|
Title[ToPage].State = 1;
|
||||||
|
|
||||||
|
RemoveChild("骑士马战_指引窗口");
|
||||||
|
RemoveChild("骑士马战_资料窗口");
|
||||||
|
RemoveChild("骑士马战_战绩窗口");
|
||||||
|
|
||||||
|
PageSelectM = ToPage;
|
||||||
|
switch (ToPage) {
|
||||||
|
case 0: {
|
||||||
|
AddChild(GuidePage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1: {
|
||||||
|
AddChild(KnightInfoPage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
AddChild(PastRecordPage);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function RegisterWidget() {
|
||||||
|
//关闭按钮
|
||||||
|
local CloseButton = LenheartNewUI_BaseButton(750, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||||
|
CloseButton.OnClick = function() {
|
||||||
|
this.Visible = false;
|
||||||
|
}.bindenv(this);
|
||||||
|
Childrens.append(CloseButton);
|
||||||
|
|
||||||
|
local Tabbars1 = LenheartNewUI_TabbarsText(12, 27, "指引");
|
||||||
|
Tabbars1.State = 1;
|
||||||
|
AddChild(Tabbars1);
|
||||||
|
Tabbars1.OnClick = function() {
|
||||||
|
ChangePage(0);
|
||||||
|
}.bindenv(this);
|
||||||
|
Title.append(Tabbars1);
|
||||||
|
|
||||||
|
local Tabbars2 = LenheartNewUI_TabbarsText(74, 27, "骑士资料");
|
||||||
|
AddChild(Tabbars2);
|
||||||
|
Tabbars2.OnClick = function() {
|
||||||
|
ChangePage(1);
|
||||||
|
}.bindenv(this);
|
||||||
|
Tabbars2.SetTextOffset(7, 3);
|
||||||
|
Title.append(Tabbars2);
|
||||||
|
|
||||||
|
local Tabbars3 = LenheartNewUI_TabbarsText(136, 27, "过往战绩");
|
||||||
|
AddChild(Tabbars3);
|
||||||
|
Tabbars3.OnClick = function() {
|
||||||
|
ChangePage(2);
|
||||||
|
}.bindenv(this);
|
||||||
|
Tabbars3.SetTextOffset(7, 3);
|
||||||
|
Title.append(Tabbars3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function DrawInfo(obj) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//绘制主界面
|
||||||
|
function DrawMain(obj) {
|
||||||
|
//绘制窗口
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 33, X, Y);
|
||||||
|
//绘制左边底槽窗口
|
||||||
|
L_sq_DrawWindow(X + 2, Y + 46, 210, 435, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||||
|
|
||||||
|
|
||||||
|
//绘制详情页
|
||||||
|
DrawInfo(obj);
|
||||||
|
|
||||||
|
//BackGround
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 0, X + 227, Y + 26);
|
||||||
|
|
||||||
|
// L_sq_DrawCode(L_sq_StringBinById(271069), X + 400, Y + 386, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show(obj) {
|
||||||
|
DrawMain(obj);
|
||||||
|
LenheartNewUI_Windows.Show(obj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//逻辑入口
|
||||||
|
function Proc(obj) {
|
||||||
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||||
|
|
||||||
|
//主动调用子对象窗口的Proc
|
||||||
|
foreach(Object in Childrens) {
|
||||||
|
if (Object instanceof LenheartNewUI_Windows)
|
||||||
|
Object.Proc(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function OpenCallBack() {
|
||||||
|
this.Visible = true;
|
||||||
|
ResetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getroottable().rawdelete("HorseGuessing_Obj");
|
||||||
|
|
||||||
|
function Lenheart_HorseGuessing_Fun(obj) {
|
||||||
|
local RootTab = getroottable();
|
||||||
|
if (!RootTab.rawin("HorseGuessing_Obj")) {
|
||||||
|
RootTab.rawset("HorseGuessing_Obj", true);
|
||||||
|
local Winobj = LenheartNewUI_CreateWindow(HorseGuessingC, "骑士马战窗口", ((getroottable().Rindro_Scr_Width - 772) / 2).tointeger(), 30, 772, 539, 28);
|
||||||
|
|
||||||
|
EventList_Obj.AddEvent("骑士马战", 106, Winobj, "interface2/yosin/eventsystemlist2.img");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getroottable()["LenheartFuncTab"].rawset("HorseGuessingFuncN", Lenheart_HorseGuessing_Fun);
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
文件名:HorseGuessing_Guide.nut
|
||||||
|
路径:Project/HorseGuessing/HorseGuessing_Guide.nut
|
||||||
|
创建日期:2024-09-25 20:50
|
||||||
|
文件用途:骑士马战指引窗口
|
||||||
|
*/
|
||||||
|
class HorseGuessing_GuideC extends LenheartNewUI_Windows {
|
||||||
|
//调试模式
|
||||||
|
// DeBugMode = true;
|
||||||
|
|
||||||
|
//不是窗口
|
||||||
|
// NoWindow = true;
|
||||||
|
|
||||||
|
//是否可见
|
||||||
|
// Visible = false;
|
||||||
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||||
|
Childrens = [];
|
||||||
|
//注册控件
|
||||||
|
RegisterWidget();
|
||||||
|
|
||||||
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
}
|
||||||
|
|
||||||
|
function RegisterWidget() {}
|
||||||
|
|
||||||
|
//绘制主界面
|
||||||
|
function DrawMain(obj) {
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 0, X, Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show(obj) {
|
||||||
|
DrawMain(obj);
|
||||||
|
LenheartNewUI_Windows.Show(obj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//逻辑入口
|
||||||
|
function Proc(obj) {
|
||||||
|
LenheartNewUI_Windows.SyncPos(X - 7, Y - 50);
|
||||||
|
|
||||||
|
if (Parent && Parent.Visible && Parent.PageSelectM == 0) {
|
||||||
|
Visible = true;
|
||||||
|
X = Parent.X + 7;
|
||||||
|
Y = Parent.Y + 50;
|
||||||
|
} else {
|
||||||
|
Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//因为要重载LenheartNewUI_Windows的构造函数
|
||||||
|
function ResetFocus() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getroottable().rawdelete("HorseGuessing_Obj");
|
||||||
|
|
@ -0,0 +1,120 @@
|
||||||
|
/*
|
||||||
|
文件名:HorseGuessing_KnightInfo.nut
|
||||||
|
路径:Project/HorseGuessing/HorseGuessing_KnightInfo.nut
|
||||||
|
创建日期:2024-09-25 21:11
|
||||||
|
文件用途:骑士信息
|
||||||
|
*/
|
||||||
|
class HorseGuessing_KnightInfoC extends LenheartNewUI_Windows {
|
||||||
|
//调试模式
|
||||||
|
// DeBugMode = true;
|
||||||
|
|
||||||
|
//不是窗口
|
||||||
|
// NoWindow = true;
|
||||||
|
|
||||||
|
//是否可见
|
||||||
|
// Visible = false;
|
||||||
|
|
||||||
|
|
||||||
|
//输入框
|
||||||
|
InputObject = null;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||||
|
Childrens = [];
|
||||||
|
//注册控件
|
||||||
|
RegisterWidget();
|
||||||
|
|
||||||
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
}
|
||||||
|
|
||||||
|
function RegisterWidget() {
|
||||||
|
//下注按钮
|
||||||
|
local BetButton = LenheartNewUI_BaseButton(54, 654, 129, 33, "interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 22);
|
||||||
|
BetButton.OnClickSound = "BUTTON_01";
|
||||||
|
BetButton.OnClick = function() {
|
||||||
|
local T = {
|
||||||
|
op = 20055005,
|
||||||
|
code = Parent.NowSelectRider,
|
||||||
|
num = InputObject.str,
|
||||||
|
}
|
||||||
|
SendPackEx(T);
|
||||||
|
}.bindenv(this);
|
||||||
|
Childrens.append(BetButton);
|
||||||
|
|
||||||
|
InputObject = LenheartNewUI_BaseInput(80, 564, 76, 20);
|
||||||
|
AddChild(InputObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//绘制主界面
|
||||||
|
function DrawMain(obj) {
|
||||||
|
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 1, X, Y);
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 50, X + 7, Y + 12);
|
||||||
|
|
||||||
|
//DrawParent.RiderInfo
|
||||||
|
T_DrawDynamicAni(obj, "common/horseguessing/knight" + Parent.NowSelectRider + ".ani", X + 2, Y + 130, "HorseGuessingRiderAnimotion" + Parent.NowSelectRider);
|
||||||
|
T_DrawDynamicAni(obj, "common/horseguessing/knightinfoeffect.ani", X - 1, Y - 9, "HorseGuessingRiderAnimotionEff");
|
||||||
|
|
||||||
|
//绘制名字
|
||||||
|
local RiderNameStr = Parent.RiderName[Parent.NowSelectRider];
|
||||||
|
L_sq_DrawCode(RiderNameStr, X + 111 - (LenheartTextClass.GetStringLength(RiderNameStr) / 2), Y + 116 + 18 + 146 + 3, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
|
||||||
|
//绘制下注道具
|
||||||
|
DrawItemBase(X + 74, Y + 320, Parent.BetItem, 1);
|
||||||
|
|
||||||
|
|
||||||
|
//骑手胜率信息
|
||||||
|
if (Parent.RiderInfo && Parent.RiderInfo.len() >= 5) {
|
||||||
|
L_sq_DrawCode("获胜 : " + Parent.RiderInfo[2] + "次", X + 25 + 5, Y + 56 + 17, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
L_sq_DrawCode(Parent.RiderInfo[0] + "胜" + Parent.RiderInfo[1] + "败", X + 25 + 5, Y + 56 + 17 + 19, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
local WinRate = 0;
|
||||||
|
if (Parent.RiderInfo[0] + Parent.RiderInfo[1] != 0)
|
||||||
|
WinRate = ((Parent.RiderInfo[0].tofloat() / (Parent.RiderInfo[0] + Parent.RiderInfo[1]).tofloat()) * 100.0).tointeger();
|
||||||
|
L_sq_DrawCode("胜率 : " + WinRate + "%", X + 25 + 5, Y + 56 + 17 + 19 + 15, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
|
||||||
|
if (Parent.RiderInfo[3] != 0 && Parent.RiderInfo[4] != 0) {
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", Parent.RiderInfo[3], X + 25 + 5 + 152, Y + 62);
|
||||||
|
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", Parent.RiderInfo[4], X + 25 + 5 + 152, Y + 62 + 36);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//绘制剩余道具数量
|
||||||
|
if (Parent.ResidueCoin != null) {
|
||||||
|
L_sq_DrawCode(Parent.ResidueCoin.tostring(), X + 128, Y + 386, sq_RGBA(255, 255, 255, 250), 0, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show(obj) {
|
||||||
|
DrawMain(obj);
|
||||||
|
LenheartNewUI_Windows.Show(obj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//逻辑入口
|
||||||
|
function Proc(obj) {
|
||||||
|
LenheartNewUI_Windows.SyncPos(X - 7, Y - 210);
|
||||||
|
|
||||||
|
if (Parent && Parent.Visible && Parent.PageSelectM == 1) {
|
||||||
|
Visible = true;
|
||||||
|
X = Parent.X + 7;
|
||||||
|
Y = Parent.Y + 50;
|
||||||
|
} else {
|
||||||
|
Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//判断如果输入的金额大于自身有的金额
|
||||||
|
if (InputObject.str.len() > 0 && InputObject.str.tointeger() > Parent.ResidueCoin) {
|
||||||
|
InputObject.SetStr(Parent.ResidueCoin.tostring());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//因为要重载LenheartNewUI_Windows的构造函数
|
||||||
|
function ResetFocus() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getroottable().rawdelete("HorseGuessing_Obj");
|
||||||
|
|
@ -58,6 +58,15 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||||
//城镇名称
|
//城镇名称
|
||||||
L_sq_WA(0x004CA27C, 850);
|
L_sq_WA(0x004CA27C, 850);
|
||||||
|
|
||||||
|
//城镇过场Tips背景
|
||||||
|
L_sq_WA(0x004580FD, 400 + 133);
|
||||||
|
//城镇过场Tips文本
|
||||||
|
L_sq_WA(0x004581DD, 400 + 133);
|
||||||
|
|
||||||
|
//头顶滚动公告
|
||||||
|
L_sq_WAB(0x11FA640, 0xC3);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//物品栏
|
//物品栏
|
||||||
for (local i = 0; i< 6; i++) {
|
for (local i = 0; i< 6; i++) {
|
||||||
|
|
@ -120,8 +129,8 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||||
L_sq_WA(5006965, -5000); //MP文字标识 Y轴
|
L_sq_WA(5006965, -5000); //MP文字标识 Y轴
|
||||||
|
|
||||||
//BUFF图标 X在C++Hook中处理
|
//BUFF图标 X在C++Hook中处理
|
||||||
L_sq_WAB(0x4c8bf5, 534); //Buff图标Y
|
L_sq_WAB(0x4c8bf5, 542); //Buff图标Y
|
||||||
L_sq_WAB(0x4bf55a, 534); //Buff图标文字标识Y
|
L_sq_WAB(0x4bf55a, 542); //Buff图标文字标识Y
|
||||||
|
|
||||||
//技能变更类型
|
//技能变更类型
|
||||||
local SkillChanageA = L_sq_RA(0x01ADE0CC) + 0x124;
|
local SkillChanageA = L_sq_RA(0x01ADE0CC) + 0x124;
|
||||||
|
|
@ -558,7 +567,18 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||||
//绘制主界面
|
//绘制主界面
|
||||||
function DrawMain(obj) {
|
function DrawMain(obj) {
|
||||||
//绘制背景
|
//绘制背景
|
||||||
L_sq_DrawImg("interface2/hud/hud.img", 0, 0, 526);
|
L_sq_DrawImg("interface2/hud/lenheartaddhud.img", 0, 347, 526);
|
||||||
|
|
||||||
|
//绘制框
|
||||||
|
for (local i = 0; i< 6; i++) {
|
||||||
|
//消耗品
|
||||||
|
L_sq_DrawImg("interface2/hud/hud.img", 200, 134 + (i * 31), 567);
|
||||||
|
//上排技能
|
||||||
|
L_sq_DrawImg("interface2/hud/hud.img", 201, 431 + (i * 31), 531);
|
||||||
|
L_sq_DrawImg("interface2/hud/hud.img", 201, 431 + (i * 31), 562);
|
||||||
|
}
|
||||||
|
//绘制疲劳底框
|
||||||
|
L_sq_DrawImg("interface2/hud/hud.img", 230, 774, 592);
|
||||||
|
|
||||||
//绘制血球蓝球
|
//绘制血球蓝球
|
||||||
DrawBall(obj);
|
DrawBall(obj);
|
||||||
|
|
@ -577,6 +597,7 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||||
|
|
||||||
//绘制活动图标背景槽
|
//绘制活动图标背景槽
|
||||||
DrawEventBackground(obj);
|
DrawEventBackground(obj);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Show(obj) {
|
function Show(obj) {
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,7 @@ function Sq_DrawMiniMapUI(obj) {
|
||||||
getroottable().rawdelete("RepairWorldMap_Obj");
|
getroottable().rawdelete("RepairWorldMap_Obj");
|
||||||
|
|
||||||
function Lenheart_RepairWorldMap_Fun(obj) {
|
function Lenheart_RepairWorldMap_Fun(obj) {
|
||||||
|
return;
|
||||||
local RootTab = getroottable();
|
local RootTab = getroottable();
|
||||||
if (!RootTab.rawin("RepairWorldMap_Obj")) {
|
if (!RootTab.rawin("RepairWorldMap_Obj")) {
|
||||||
RootTab.rawset("RepairWorldMap_Obj", LenheartNewUI_CreateWindow(RepairWorldMapC, "世界地图修补", 230, 0, 30, 30, 0));
|
RootTab.rawset("RepairWorldMap_Obj", LenheartNewUI_CreateWindow(RepairWorldMapC, "世界地图修补", 230, 0, 30, 30, 0));
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,12 @@ class Tuguan_NewC extends LenheartNewUI_Windows {
|
||||||
State = 2;
|
State = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
BoxWindowName = Rindro_ItemInfoObject[BoxId].Name;
|
//读取物品名称
|
||||||
|
local ItemObject = L_sq_GetItem(BoxId);
|
||||||
|
local NamePointer = L_sq_RA(ItemObject + 0x20);
|
||||||
|
local Name = NativePointer(L_sq_I2P(NamePointer)).readUnicodeString();
|
||||||
|
|
||||||
|
BoxWindowName = Name;
|
||||||
Visible = true;
|
Visible = true;
|
||||||
//初始化完成
|
//初始化完成
|
||||||
InitState = true;
|
InitState = true;
|
||||||
|
|
@ -201,7 +206,7 @@ class Tuguan_NewC extends LenheartNewUI_Windows {
|
||||||
local ItemId = RewardObj[i][z]["itemid"];
|
local ItemId = RewardObj[i][z]["itemid"];
|
||||||
local ItemCount = RewardObj[i][z]["num"];
|
local ItemCount = RewardObj[i][z]["num"];
|
||||||
//绘制物品
|
//绘制物品
|
||||||
L_Sq_DrawItem((X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, ItemId, ItemCount, 0, 0, 0);
|
DrawItemEx((X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, ItemId, ItemCount);
|
||||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, 24, 24)) {
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3, Y + 62 + 9 + ((ofs / 4) * 50) + 3, 24, 24)) {
|
||||||
ItemInfoDrawS = {};
|
ItemInfoDrawS = {};
|
||||||
ItemInfoDrawS.X <- (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3;
|
ItemInfoDrawS.X <- (X - 195) + 198 + 30 + 9 + ((ofs % 4) * 86) + (z * 34) + 3;
|
||||||
|
|
|
||||||
|
|
@ -97,5 +97,8 @@
|
||||||
},
|
},
|
||||||
"Project/CollectionBox": {
|
"Project/CollectionBox": {
|
||||||
"description": "收集箱"
|
"description": "收集箱"
|
||||||
|
},
|
||||||
|
"Project/HorseGuessing": {
|
||||||
|
"description": "骑士马战"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue