140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名: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); |