/* 文件名:HellExLogic.nut 路径:Project/HellExLogic/HellExLogic.nut 创建日期:2024-08-09 11:11 文件用途: */ class HellExLogicC extends LenheartNewUI_Windows { //调试模式 // DeBugMode = true; //不是窗口 NoWindow = true; //是否可见 Visible = true; //被击数 HitCount = 0; //总被击次数 MaxHitCount = 50; //深渊派对难度 Difficulty = 1; //难度文字数组 DifficultyStr = ["未开启深渊", "非常困难", "困难"]; //深渊状态 0进行 1成功 2失败 HellState = 0; function OpenWindowCallBack(Chunk) { local Jso = Json.Decode(Chunk); MaxHitCount = Jso.HitCounts; Difficulty = Jso.Diff; HitCount = 0; HellState = 0; Visible = true; ResetFocus(); } function HitSucCallBack(Chunk) { local obj = sq_getMyCharacter(); obj = sq_GetCNRDObjectToActiveObject(obj); sq_SendCreatePassiveObjectPacket(obj, 85905, 100, 0, 0, 0, obj.getDirection()); try { onHellDungeonHitCountMax(obj, Difficulty); } catch (exception) { } } function HellFail(Chunk) { HellState = 2; } constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; //注册控件 RegisterWidget(); LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); //开启界面回包 Pack_Control.rawset(20069006, OpenWindowCallBack.bindenv(this)); //击打次数到了 Pack_Control.rawset(20069004, HitSucCallBack.bindenv(this)); //深渊派对失败 Pack_Control.rawset(20069008, HellFail.bindenv(this)); getroottable().sq_SendHitConfirmPacket <- HitLogic.bindenv(this); } function RegisterWidget() { //关闭按钮 local CloseButton = LenheartNewUI_BaseButton(278, 8, 11, 12, "interface/windowcommon.img", 276); CloseButton.OnClick = function() { this.Visible = false; }.bindenv(this); Childrens.append(CloseButton); } //HitLogic function HitLogic() { if (HellState == 2) return; local T = { op = 20069003 } SendPackEx(T); HitCount++; } //绘制主界面 function DrawMain(obj) { //Item信息框一般为211的宽度 L_sq_DrawWindow(X, Y, 260, 80, "interface/windowcommon.img", 204, 4, 14, 4, 14); L_sq_DrawCode("封印之门的进展情况", X + 82, Y + 12, sq_RGBA(230, 200, 155, 250), 1, 1); L_sq_DrawCode("- 被击数", X + 6, Y + 40, sq_RGBA(230, 200, 155, 250), 1, 1); L_sq_DrawCode("- 深渊派对难度:", X + 6, Y + 58, sq_RGBA(230, 200, 155, 250), 1, 1); local Color = sq_RGBA(230, 200, 155, 250); if (HitCount >= MaxHitCount) Color = sq_RGBA(255, 50, 50, 250); local HitStr = HitCount + "/" + MaxHitCount; L_sq_DrawCode(HitStr, X + 254 - LenheartTextClass.GetStringLength(HitStr), Y + 40, Color, 1, 1); L_sq_DrawCode(DifficultyStr[Difficulty], X + 254 - LenheartTextClass.GetStringLength(DifficultyStr[Difficulty]), Y + 58, sq_RGBA(255, 50, 50, 250), 1, 1); if (HellState == 2) { } } function Show(obj) { DrawMain(obj); LenheartNewUI_Windows.Show(obj); } //逻辑入口 function Proc(obj) { //如果不在副本中 if (sq_GetCurrentModuleType() == 1) { if (Visible) CloseWindow(); } LenheartNewUI_Windows.SyncPos(X, Y); } } getroottable().rawdelete("HellExLogic_Obj"); function Lenheart_HellExLogic_Fun(obj) { local RootTab = getroottable(); if (!RootTab.rawin("HellExLogic_Obj")) { RootTab.rawset("HellExLogic_Obj", true); LenheartNewUI_CreateWindow(HellExLogicC, "深渊派对特殊逻辑窗口", ((getroottable().Rindro_Scr_Width - 261)).tointeger(), 64, 260, 80, 80); } } getroottable()["LenheartFuncTab"].rawset("HellExLogicFuncN", Lenheart_HellExLogic_Fun);