| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 文件名:Shapeshifting.nut | 
					
						
							|  |  |  | 路径:Project/Shapeshifting/Shapeshifting.nut | 
					
						
							|  |  |  | 创建日期:2024-08-24	23:53 | 
					
						
							|  |  |  | 文件用途:时装变身 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | class ShapeshiftingC extends LenheartNewUI_Windows { | 
					
						
							|  |  |  |     //调试模式 | 
					
						
							|  |  |  |     // DeBugMode = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //不是窗口 | 
					
						
							|  |  |  |     NoWindow = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //是否可见 | 
					
						
							|  |  |  |     // Visible = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //信息 | 
					
						
							|  |  |  |     Info = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //服务器装备配置 | 
					
						
							|  |  |  |     SeverEquInfo = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ShapeMonsterId = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //初始化时间 | 
					
						
							|  |  |  |     Timer = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |     //是否已经变身 | 
					
						
							|  |  |  |     IsShapeshifting = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |     //收到信息包 | 
					
						
							|  |  |  |     function GetInfoCallBack(Chunk) { | 
					
						
							|  |  |  |         if (!this) return; | 
					
						
							|  |  |  |         local Jso = Json.Decode(Chunk); | 
					
						
							|  |  |  |         SeverEquInfo = Jso.info; | 
					
						
							|  |  |  |         X = Jso.btnX; | 
					
						
							|  |  |  |         Y = Jso.btnY; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | 
					
						
							|  |  |  |         Childrens = []; | 
					
						
							|  |  |  |         Timer = Clock(); | 
					
						
							|  |  |  |         //注册控件 | 
					
						
							|  |  |  |         RegisterWidget(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //信息包 | 
					
						
							|  |  |  |         Pack_Control.rawset(20074002, GetInfoCallBack.bindenv(this)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function RegisterWidget() { | 
					
						
							|  |  |  |         //关闭按钮 | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |         local OpenButton = LenheartNewUI_BaseButton(0, 0, 28, 28, "interface2/yosin/bianshen.img", 0); | 
					
						
							|  |  |  |         OpenButton.OnClick = function() { | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |             if (ShapeMonsterId) { | 
					
						
							|  |  |  |                 L_sq_SendPackType(214); | 
					
						
							|  |  |  |                 L_sq_SendPackByte(2); | 
					
						
							|  |  |  |                 L_sq_SendPackWord(ShapeMonsterId); | 
					
						
							|  |  |  |                 L_sq_SendPack(); | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |                 IsShapeshifting = true; | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |             } | 
					
						
							|  |  |  |         }.bindenv(this); | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |         OpenButton.SetCallBackFunc(function(Button) { | 
					
						
							|  |  |  |             if (!IsShapeshifting) { | 
					
						
							|  |  |  |                 Button.Localtion_X = 0; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 Button.Localtion_X = -90000; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }.bindenv(this)) | 
					
						
							|  |  |  |         Childrens.append(OpenButton); | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |         //关闭按钮 | 
					
						
							|  |  |  |         local CloseButton = LenheartNewUI_BaseButton(0, 0, 28, 28, "interface2/yosin/bianshen.img", 4); | 
					
						
							|  |  |  |         CloseButton.OnClick = function() { | 
					
						
							|  |  |  |             if (ShapeMonsterId) { | 
					
						
							|  |  |  |                 L_sq_SendPackType(215); | 
					
						
							|  |  |  |                 L_sq_SendPack(); | 
					
						
							|  |  |  |                 IsShapeshifting = false; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }.bindenv(this); | 
					
						
							|  |  |  |         CloseButton.SetCallBackFunc(function(Button) { | 
					
						
							|  |  |  |             if (!IsShapeshifting) { | 
					
						
							|  |  |  |                 Button.Localtion_X = -90000; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 Button.Localtion_X = 0; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }.bindenv(this)) | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |         Childrens.append(CloseButton); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //绘制主界面 | 
					
						
							|  |  |  |     function DrawMain(obj) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function Show(obj) { | 
					
						
							|  |  |  |         DrawMain(obj); | 
					
						
							|  |  |  |         LenheartNewUI_Windows.Show(obj); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function CheckPlayerInfoToSeverShapeInfo() { | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |         if (!SeverEquInfo) return; | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |         local Toubu = L_sq_GetCharacterAttribute(0x1C, 14); | 
					
						
							|  |  |  |         local Maozi = L_sq_GetCharacterAttribute(0x1C, 13); | 
					
						
							|  |  |  |         local Lianbu = L_sq_GetCharacterAttribute(0x1C, 15); | 
					
						
							|  |  |  |         local Guanghuan = L_sq_GetCharacterAttribute(0x1C, 22); | 
					
						
							|  |  |  |         local Xiongbu = L_sq_GetCharacterAttribute(0x1C, 19); | 
					
						
							|  |  |  |         local Shangyi = L_sq_GetCharacterAttribute(0x1C, 16); | 
					
						
							|  |  |  |         local Pifu = L_sq_GetCharacterAttribute(0x1C, 21); | 
					
						
							|  |  |  |         local Yaobu = L_sq_GetCharacterAttribute(0x1C, 20); | 
					
						
							|  |  |  |         local Xiazhuang = L_sq_GetCharacterAttribute(0x1C, 17); | 
					
						
							|  |  |  |         local Xie = L_sq_GetCharacterAttribute(0x1C, 18); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach(v in SeverEquInfo) { | 
					
						
							|  |  |  |             if (v.Toubu != Toubu && v.Toubu != 0) continue; | 
					
						
							|  |  |  |             if (v.Maozi != Maozi && v.Maozi != 0) continue; | 
					
						
							|  |  |  |             if (v.Lianbu != Lianbu && v.Lianbu != 0) continue; | 
					
						
							|  |  |  |             if (v.Guanghuan != Guanghuan && v.Guanghuan != 0) continue; | 
					
						
							|  |  |  |             if (v.Xiongbu != Xiongbu && v.Xiongbu != 0) continue; | 
					
						
							|  |  |  |             if (v.Shangyi != Shangyi && v.Shangyi != 0) continue; | 
					
						
							|  |  |  |             if (v.Pifu != Pifu && v.Pifu != 0) continue; | 
					
						
							|  |  |  |             if (v.Yaobu != Yaobu && v.Yaobu != 0) continue; | 
					
						
							|  |  |  |             if (v.Xiazhuang != Xiazhuang && v.Xiazhuang != 0) continue; | 
					
						
							|  |  |  |             if (v.Xie != Xie && v.Xie != 0) continue; | 
					
						
							|  |  |  |             ShapeMonsterId = v.MonsterId; | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ShapeMonsterId = null; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //逻辑入口 | 
					
						
							|  |  |  |     function Proc(obj) { | 
					
						
							|  |  |  |         LenheartNewUI_Windows.SyncPos(X, Y); | 
					
						
							|  |  |  |         //每五秒获取一次本地数据信息 | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |         if (Clock() - Timer >= 1000) { | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |             CheckPlayerInfoToSeverShapeInfo(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if ("RepairWorldMap_Obj" in getroottable()) { | 
					
						
							|  |  |  |             if (RepairWorldMap_Obj.OpenState || sq_GetCurrentModuleType() != 1) { | 
					
						
							|  |  |  |                 Visible = false; | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 if (!ShapeMonsterId) { | 
					
						
							|  |  |  |                     Visible = false; | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     Visible = true; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | getroottable().rawdelete("Shapeshifting_Obj"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function Lenheart_Shapeshifting_Fun(obj) { | 
					
						
							|  |  |  |     local RootTab = getroottable(); | 
					
						
							|  |  |  |     if (!RootTab.rawin("Shapeshifting_Obj")) { | 
					
						
							|  |  |  |         RootTab.rawset("Shapeshifting_Obj", true); | 
					
						
							|  |  |  |         LenheartNewUI_CreateWindow(ShapeshiftingC, "时装变身窗口", 430, 500, 28, 28, 0); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | getroottable()["LenheartFuncTab"].rawset("ShapeshiftingFuncN", Lenheart_Shapeshifting_Fun); |