/* 文件名:Rindro_Fiendwar_PlayerInteractive.nut 路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PlayerInteractive.nut 创建日期:2024-07-16 11:02 文件用途:超时空攻坚队玩家交互按钮 */ //角色交互按钮需要传递参数所以重写 class Rindro_FiendwarInteractive_BaseButton extends LenheartNewUI_BaseButton { OnShow = null; constructor(X, Y, W, H, Path, Idx) { LenheartNewUI_BaseButton.constructor(X, Y, W, H, Path, Idx); } //鼠标左键弹起回调 function OnMouseLbUp(MousePos_X, MousePos_Y) { Y--; if (isLBDown && OnClick) { OnClick(); } isLBDown = false; local Each = LenheartNewUI_CreateWindow(Rindro_FiendwarPlayerInteractiveC, "超时空玩家交互", X, Y, 100, 21, 0); Each.Visible = false; } function Show(obj) { //不可用 if (State == 8) { L_sq_DrawImg(Path, Idx + 3, X, Y + 1); } else { //按下 if (isLBDown) { Y++; L_sq_DrawImg(Path, (Idx * 2) + 2, X, Y); } //悬停 else if (isInRect) { L_sq_DrawImg(Path, (Idx * 2) + 1, X, Y); } //普通 else { L_sq_DrawImg(Path, 0, X, Y); } } if (OnShow) OnShow(X, Y); } } //角色交互类 class Rindro_FiendwarPlayerInteractiveC extends LenheartNewUI_Windows { // DeBugMode = true; //信息对象 InfoObj = null; //初始化Flag 初始化以后才显示 InitInfoFlag = false; //有多少个标签 InitIndexFlag = 1; //头像框颜色 HandBoxColor = [ 0xff717272, 0xff7b2a29, 0xff874e0d, 0xff8b8108, 0xff658e2d, 0xff0f5c8a, 0xff27238f, 0xff4e2491, 0xff932586, ] //X Y 裁切开始X Y 裁切结束X Y OffsetArr = [ //男鬼剑士 [56, 112, 220, 222], //女格斗家 [54, 103, 240, 278], //男神枪手 [55, 130, 236, 246], //女魔法师 [57, 88, 234, 291], //男圣职者 [57, 124, 208, 190], //女神枪手 [56, 119, 226, 209], //暗夜使者 [56, 117, 225, 212], //男格斗家 [56, 118, 233, 212], //男魔法师 [54, 103, 236, 276], //黑暗武士 [56, 112, 220, 222], //缔造者 [57, 88, 234, 291], ] constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { Childrens = []; LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); } //初始化信息 function InitInfo() { Childrens = []; //还原标签数量 InitIndexFlag = 1; //还原高度 Height = 21; //还原可见性 Visible = true; //置顶窗口 ResetFocus(); RegisterWidget(); InitInfoFlag = true; } function RegisterWidget() { //是团长才能委任 并且不是我自己 并且我们在同一个攻坚队 if (RinDro_Fiendwar_Obj.IsCaptain && !("IsMyself" in InfoObj) && RinDro_Fiendwar_Obj.MyRaidTeamId == InfoObj.PartyId) { //委任团长按钮 local GiveMasterButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0); GiveMasterButton.OnShow = function(X, Y) { L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 11, X, Y + 2); L_sq_DrawCode("委任团长", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1); } GiveMasterButton.OnClick = function() { }.bindenv(this); AddChild(GiveMasterButton); InitIndexFlag++; Height += 21; } //查看信息按钮 local CheckInfoButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0); CheckInfoButton.OnShow = function(X, Y) { L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 10, X, Y + 2); L_sq_DrawCode("查看信息", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1); } CheckInfoButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); //obj.sq_PlaySound("CLICK_BUTTON1"); L_sq_SendPackType(8); L_sq_SendPackWord(InfoObj.PlayerSession); L_sq_SendPackByte(3); L_sq_SendPack(); getroottable().WindowsShowABFlag <- false; //让原生窗口置顶 }.bindenv(this); AddChild(CheckInfoButton); InitIndexFlag++; Height += 21; if (!("IsMyself" in InfoObj)) { //交易按钮 local TransactionButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0); TransactionButton.OnShow = function(X, Y) { L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 0, X, Y + 2); L_sq_DrawCode("交易", X + 46, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1); } TransactionButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); //obj.sq_PlaySound("CLICK_BUTTON1"); L_sq_SendPackType(10); L_sq_SendPackWord(InfoObj.PlayerSession); L_sq_SendPackByte(1); L_sq_SendPackDWord(22053); L_sq_SendPack(); getroottable().WindowsShowABFlag <- false; //让原生窗口置顶 }.bindenv(this); AddChild(TransactionButton); InitIndexFlag++; Height += 21; if (RinDro_Fiendwar_Obj.IsCaptain && RinDro_Fiendwar_Obj.MyRaidTeamId == InfoObj.PartyId) { //攻坚队员强退按钮 local KickMemberButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 4); KickMemberButton.OnShow = function(X, Y) { L_sq_DrawImg("interface2/popup_menu/popup_icon_warning.img", 3, X, Y + 2); L_sq_DrawCode("攻坚队员强退", X + 24, Y + 5, sq_RGBA(255, 50, 50, 255), 0, 1); } KickMemberButton.OnClick = function() { local obj = sq_GetMyMasterCharacter(); //obj.sq_PlaySound("CLICK_BUTTON1"); local T = { op = 20063021, teamsId = InfoObj.PartyId, charCid = InfoObj.Cid } SendPackEx(T); }.bindenv(this); AddChild(KickMemberButton); InitIndexFlag++; Height += 21; } } } function Show(obj) { if (!InitInfoFlag) return; L_sq_DrawImg("interface2/popup_menu/popup_back.img", 0, X, Y); //绘制角色名 L_sq_DrawCode(InfoObj.Name, X + 61 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 4, sq_RGBA(169, 255, 171, 255), 0, 1); //绘制头像 foreach(AvatarObj in InfoObj.EquVos) { local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] - 40; local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1]; setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切 L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos); releaseClip(); //裁切结束 } LenheartNewUI_Windows.Show(obj); } function Proc(obj) { LenheartNewUI_Windows.SyncPos(X, Y); } }