11111
This commit is contained in:
132
Project/OddsPlugins/TransformEqu.nut
Normal file
132
Project/OddsPlugins/TransformEqu.nut
Normal file
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
文件名: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);
|
||||
Reference in New Issue
Block a user