/* 文件名:TransformEqu.nut 路径:Project/OddsPlugins/TransformEqu.nut 创建日期:2025-01-17 21:03 文件用途:变换装备 */ class TransformEquC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //不是窗口 // NoWindow = true; //是否可见 // Visible = false; //属性记录表 Attributes = null; //播报内容数组 BroadcastContent = null; //是否需要绘制 DrawFlag = false; constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; Attributes = array(7, null); BroadcastContent = {}; //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); RetrieveAndRecordAttributes(1); Pack_Control.rawset(20072602, RetrieveAndRecordAttributes.bindenv(this)); } function RegisterWidget() { // //关闭按钮 // local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276); // CloseButton.OnClick = function() { // this.Visible = false; // }.bindenv(this); // Childrens.append(CloseButton); } //获取并记录属性 function RetrieveAndRecordAttributes(Chunk) { //记录四维 力量 智力 体力 精神 local AttributesBuffer = []; AttributesBuffer.append(L_sq_GetCharacterAttribute(0x2364)); AttributesBuffer.append(L_sq_GetCharacterAttribute(0x2394)); AttributesBuffer.append(L_sq_GetCharacterAttribute(0x237c)); AttributesBuffer.append(L_sq_GetCharacterAttribute(0x23ac)); local ObjectAddress = L_sq_RA(0x1AB7CDC); local Wg = (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E54) * (AttributesBuffer[0].tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1EB4); AttributesBuffer.append(Wg); local Mg = (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E84) * (AttributesBuffer[1].tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1ED8); AttributesBuffer.append(Mg); local Dl = MemoryTool.DecodeMemoryData(ObjectAddress + 0x22C8) + MemoryTool.DecodeMemoryData(ObjectAddress + 0x22F8); AttributesBuffer.append(Dl); for (local i = 0; i< AttributesBuffer.len(); i++) { if (AttributesBuffer[i] != Attributes[i]) { if (Attributes[i] != null) { BroadcastContent.rawset(i, AttributesBuffer[i] - Attributes[i]); DrawFlag = Clock(); } Attributes[i] = AttributesBuffer[i]; } } } //绘制主界面 function DrawMain(obj) { if (DrawFlag) { if (sq_GetCurrentModuleType() == 3) { local Xpos = sq_GetScreenXPos(obj) - 45; local Ypos = sq_GetScreenYPos(obj) - 128; setClip(Xpos, Ypos - 40, Xpos + 150, Ypos + 80); //开始裁切 local Time = Clock() - DrawFlag; local pos = 0; foreach(Index, Value in BroadcastContent) { local RealAtt = ""; if (Index == 0) RealAtt = "力量"; if (Index == 1) RealAtt = "智力"; if (Index == 2) RealAtt = "体力"; if (Index == 3) RealAtt = "精神"; if (Index == 4) RealAtt = "物理攻击力"; if (Index == 5) RealAtt = "魔法攻击力"; if (Index == 6) RealAtt = "独立攻击力"; local Color = [65, 255, 78]; if (Value< 0) Color = [255, 50, 50]; local Ap = 250 - ((BroadcastContent.len() - pos) * Time * 0.05).tointeger(); if (Ap< 0) Ap = 0; L_sq_DrawCode(RealAtt + " " + (Value > 0 ? "+ " : "- ") + (abs(Value)), Xpos, Ypos + (pos * 16) - (Time * 0.05), sq_RGBA(Color[0], Color[1], Color[2], Ap), 0, 1); pos++; } releaseClip(); //裁切结束 } } } function Show(obj) { DrawMain(obj); LenheartNewUI_Windows.Show(obj); } //逻辑入口 function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); } } getroottable().rawdelete("TransformEqu_Obj"); function Lenheart_TransformEqu_Fun(obj) { local RootTab = getroottable(); if (!RootTab.rawin("TransformEqu_Obj")) { RootTab.rawset("TransformEqu_Obj", true); LenheartNewUI_CreateWindow(TransformEquC, "变换装备飘小字", 0, 0, 0, 0, 0); } } getroottable()["LenheartFuncTab"].rawset("TransformEquFuncN", Lenheart_TransformEqu_Fun);