/* 文件名:CollectBooks.nut 路径:Plugins/CollectBooks/CollectBooks.nut 创建日期:2023-07-22 18:33 文件用途: */ //HudPro按钮类 class CollectBooksPro extends BasicsDrawTool // obj -- 按钮名称 -- X坐标 -- Y坐标 -- Ani调用路径 -- 宽度 -- 高度 { obj = null; //Obj对象 State = 0; //按钮状态 ClickEnble = false; //点击效果 ButtonDynamic = false; //动态按钮效果 BaseFrame = null; CustomClickEnble = false; //自定义点击效果 CustomClickAnifile = null; //自定义点击效果Ani路径 CustomButtonName = null; //自定义点击效果名称 CustomClickFrame = null; //自定义点击效果Ani编号 CustomClickx = null; //自定义点击效果X坐标 CustomClicky = null; //自定义点击效果Y坐标 RectEnble = false; //悬停效果 RectButtonName = null; //悬停名称 RectBaseAnifile = null; //悬停Ani路径 RectFrame = null; //非动态按钮的悬停调用Ani编号 Rectx = null; //悬停X坐标 Recty = null; //悬停Y坐标 ButtonName = null; //按钮名称 x = null; //X坐标 y = null; //Y坐标 BaseAnifile = null; //调用Ani路径 width = null; //可点击宽度 length = null; //可点击高度 Mobj = null; //鼠标对象 //构造函数 constructor(gButtonName, gX, gY, gAnifile, gWidth, gLength, gBaseFrame) { ButtonName = gButtonName; x = gX; y = gY; BaseAnifile = gAnifile; width = gWidth; length = gLength; BaseFrame = gBaseFrame; if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; } //绘制按钮 function Show() { if (ClickEnble) //是否开启点击效果 { if (isLBDown() && State == 0) //按下左键并且按钮处于弹起状态 { State = 1; //按键进入按下状态 ++y; } if (!isLBDown() && State == 1) //按下左键并且按钮处于弹起状态 { State = 0; //按键进入弹起状态 --y; } } if (CustomClickEnble) //是否开启自定义点击效果 { if (isLBDown()) //按下左键并且按钮处于弹起状态 { if (!ButtonDynamic) L_sq_DrawImg(CustomClickAnifile, CustomClickFrame, CustomClickx, CustomClicky); else T_DrawDynamicAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName); } } if (RectEnble) //开启悬停效果时 { if ((isInRect() && !isLBDown()) || (isInRect() && !CustomClickEnble)) //如果鼠标悬停的时候 并且没有点击的时候 { //IMouse.SetMouseTask(44); if (!ButtonDynamic) L_sq_DrawImg(RectBaseAnifile, RectFrame, Rectx, Recty); else T_DrawDynamicAni(obj, RectBaseAnifile, Rectx, Recty, RectButtonName); } } if (!isInRect()) //如果鼠标没有悬停的时候 { //IMouse.SetMouseTask(0); if (!ButtonDynamic) L_sq_DrawImg(BaseAnifile, BaseFrame, x, y); else T_DrawDynamicAni(obj, BaseAnifile, x, y, ButtonName); } } //设置自定义点击效果 function SetCustomClickEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) { CustomClickEnble = bool; //自定义点击效果 CustomClickAnifile = gAnifile; //自定义点击效果Ani路径 CustomButtonName = gButtonName; //自定义点击效果名称 CustomClickFrame = gFrame; //自定义点击效果Ani编号 CustomClickx = gX; //自定义点击效果X坐标 CustomClicky = gY; //自定义点击效果Y坐标 } //设置悬停效果 function SetRectEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) { RectEnble = bool; //悬停效果 RectButtonName = gButtonName; //悬停名称 RectBaseAnifile = gAnifile; //悬停Ani路径 RectFrame = gFrame; //非动态按钮的悬停调用Ani编号 Rectx = gX; //悬停X坐标 Recty = gY; //悬停Y坐标 } //设置动态按钮 function SetClickEnble(bool) { ButtonDynamic = bool; } //设置点击效果 function SetClickEnble(bool) { ClickEnble = bool; } //悬停状态 function isInRect() { if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true; else return false; } //左键按下状态 function isLBDown() { if (isInRect() && Mobj.Lb == 1) return true; else return false; } //左键弹起状态 function isLBUp() { if (isInRect() && Mobj.Lb == 0) return true; else return false; } //左键单击状态 function isLBActive() { if (isInRect() && Mobj.LbEvent) return true; else return false; } } //TabTextButtonPro按钮类 class CollectTabTextButtonPro extends BasicsDrawTool // obj -- 按钮名称 -- X坐标 -- Y坐标 -- Ani调用路径 -- 宽度 -- 高度 { obj = null; //Obj对象 State = 0; //按钮状态 ClickEnble = false; //点击效果 ButtonDynamic = false; //动态按钮效果 SwitchState = false; //复选框是否选中 str = null; strx = null; stry = null; CustomClickEnble = false; //自定义点击效果 CustomClickAnifile = null; //自定义点击效果Ani路径 CustomButtonName = null; //自定义点击效果名称 CustomClickFrame = null; //自定义点击效果Ani编号 CustomClickx = null; //自定义点击效果X坐标 CustomClicky = null; //自定义点击效果Y坐标 RectEnble = false; //悬停效果 RectButtonName = null; //悬停名称 RectBaseAnifile = null; //悬停Ani路径 RectFrame = null; //非动态按钮的悬停调用Ani编号 Rectx = null; //悬停X坐标 Recty = null; //悬停Y坐标 ButtonName = null; //按钮名称 x = null; //X坐标 y = null; //Y坐标 BaseAnifile = null; //调用Ani路径 BaseAnifileFrame = null; //调用的Ani帧数 width = null; //可点击宽度 length = null; //可点击高度 Mobj = null; //鼠标对象 //构造函数 constructor(gObj, gButtonName, gX, gY, gAnifile, gBaseAnifileFrame, gWidth, gLength, gstr, gstrx, gstry) { obj = gObj; ButtonName = gButtonName; x = gX; y = gY; BaseAnifile = gAnifile; BaseAnifileFrame = gBaseAnifileFrame; width = gWidth; length = gLength; str = gstr; strx = gstrx; stry = gstry; if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; } //绘制按钮 function Show() { if (ClickEnble) //是否开启点击效果 { if (isLBDown() && State == 0) //按下左键并且按钮处于弹起状态 { State = 1; //按键进入按下状态 //++y; } if (!isLBDown() && State == 1) //按下左键并且按钮处于弹起状态 { State = 0; //按键进入弹起状态 //--y; } } if (CustomClickEnble) //是否开启自定义点击效果 { if (isLBDown() && SwitchState == false) //按下左键并且按钮处于弹起状态 { if (!ButtonDynamic) L_sq_DrawImg(CustomClickAnifile, CustomClickFrame, CustomClickx, CustomClicky); else T_DrawDynamicAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName); L_sq_DrawCode(str, CustomClickx + strx, CustomClicky + stry, sq_RGBA(255, 255, 184, 250), 1, 1); } } if (RectEnble && SwitchState == false) //开启悬停效果时 { if ((isInRect()) || (isInRect() && !CustomClickEnble)) //如果鼠标悬停的时候 并且没有点击的时候 { //IMouse.SetMouseTask(44); if (!ButtonDynamic) L_sq_DrawImg(RectBaseAnifile, RectFrame, Rectx, Recty); else T_DrawDynamicAni(obj, RectBaseAnifile, Rectx, Recty, RectButtonName); L_sq_DrawCode(str, CustomClickx + strx, CustomClicky + stry, sq_RGBA(255, 255, 184, 250), 1, 1); } } if (!isInRect() && !SwitchState) //如果鼠标没有悬停的时候 { //IMouse.SetMouseTask(0); if (!ButtonDynamic) L_sq_DrawImg(BaseAnifile, BaseAnifileFrame, x, y); else T_DrawDynamicAni(obj, BaseAnifile, x, y, ButtonName); L_sq_DrawCode(str, CustomClickx + strx, CustomClicky + stry, sq_RGBA(221, 197, 147, 250), 1, 1); } if (SwitchState) { if (!ButtonDynamic) L_sq_DrawImg(CustomClickAnifile, CustomClickFrame, CustomClickx, CustomClicky); else T_DrawDynamicAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName); L_sq_DrawCode(str, CustomClickx + strx, CustomClicky + stry, sq_RGBA(255, 255, 184, 250), 1, 1); } } //设置自定义点击效果 function SetCustomClickEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) { CustomClickEnble = bool; //自定义点击效果 CustomClickAnifile = gAnifile; //自定义点击效果Ani路径 CustomButtonName = gButtonName; //自定义点击效果名称 CustomClickFrame = gFrame; //自定义点击效果Ani编号 CustomClickx = gX; //自定义点击效果X坐标 CustomClicky = gY; //自定义点击效果Y坐标 } //设置悬停效果 function SetRectEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) { RectEnble = bool; //悬停效果 RectButtonName = gButtonName; //悬停名称 RectBaseAnifile = gAnifile; //悬停Ani路径 RectFrame = gFrame; //非动态按钮的悬停调用Ani编号 Rectx = gX; //悬停X坐标 Recty = gY; //悬停Y坐标 } //设置动态按钮 function SetClickEnble(bool) { ButtonDynamic = bool; } //设置点击效果 function SetClickEnble(bool) { ClickEnble = bool; } //悬停状态 function isInRect() { if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true; else return false; } //左键按下状态 function isLBDown() { if (isInRect() && Mobj.Lb == 1) return true; else return false; } //左键弹起状态 function isLBUp() { if (isInRect() && Mobj.Lb == 0) return true; else return false; } //左键单击状态 function isLBActive() { if (isInRect() && Mobj.LbEvent) return true; else return false; } } class CollectBooksWindow extends BasicsDrawTool { //宽度 Width = null; //高度 Height = null; //标题高度 TitleH = null; //X坐标 X = null; B_X = null; //Y坐标 Y = null; B_Y = null; YMouseSw = true; DeBugMode = false; Mobj = null; M_Xpos = null; M_Ypos = null; constructor(gX, gY, gWidth, gHeight, gTitleH) { //宽度 Width = gWidth; //高度 Height = gHeight; //标题高度 TitleH = gTitleH; //X坐标 X = gX; //Y坐标 Y = gY; if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; } //设定鼠标逻辑 function LockMouse() { if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, Height)) { IMouse.LockMouseClick(); YMouseSw = false; } else { if (YMouseSw == false && sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 0, 0, 800, 600)) { IMouse.ReleaseMouseClick(); YMouseSw = true; } } } //设定窗口拖动逻辑 function MoveWindow() { if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, TitleH)) { if (Mobj.Lb == 1) { if (!M_Xpos) M_Xpos = IMouse.GetXPos(); //原始鼠标位置数据 if (!M_Ypos) M_Ypos = IMouse.GetYPos(); if (!B_X) B_X = X; //原始窗口位置 if (!B_Y) B_Y = Y; X = B_X - (M_Xpos - IMouse.GetXPos()); Y = B_Y - (M_Ypos - IMouse.GetYPos()); } else if (Mobj.Lb == 0) { M_Xpos = null; M_Ypos = null; B_X = null; B_Y = null; } } } function Show(obj) { if (DeBugMode) sq_DrawBox(X, Y, Width, Height, 0xffffffff); //设定鼠标逻辑 LockMouse(); //设定窗口拖动逻辑 MoveWindow(); } } class CollectBooksLineC extends BasicsDrawTool { TabName = [ "力量 +", "体力 +", "智力 +", "精神 +", "独立攻击力 +", "物理攻击力 +", "魔法攻击力 +", "物理防御 +", "魔法防御 +", "移动速度 +", "攻击速度 +", "释放速度 +", "物理暴击 +", "魔法暴击 +", "命中率 +", "光属性强化 +", "暗属性强化 +", "水属性强化 +", "火属性强化 +", "全属性强化 +", "冷却时间 -", "技能攻击力 + " ] Name = null; ItemArr = null; Completion = null; AttributeArr = null; WarringMessage = false; constructor(gName, gItemArr, gAttributeArr) { Name = gName; ItemArr = gItemArr; AttributeArr = gAttributeArr; Completion = true; foreach(v in gItemArr) { if (!v.IsHave) Completion = false; } } //高级绘制文字(带换行) function L_sq_DrawCode_Ex(str, x, y, rgba, mb, jc, hl) { local strarr = []; if (str.find("\n") == null) L_sq_DrawCode(str, x, y, rgba, mb, jc); else { local Bpos = 0; while (true) { local Npos = str.find("\n", Bpos); if (!Npos) { local strbuff = str.slice(Bpos, str.len()); strarr.append(strbuff); break; } local strbuff = str.slice(Bpos, Npos); strarr.append(strbuff); Bpos = Npos + 1; } for (local z = 0; z < strarr.len(); z++) { L_sq_DrawCode(strarr[z], x, y + (z * 14), rgba, mb, jc); } } } //绘制装备 function DrawItem(X, Y) { //12个的时候597 //单个长36 local Spacing = (597 - (ItemArr.len() * 36)) / (ItemArr.len() - 1); for (local i = 0; i < ItemArr.len(); i++) { L_sq_DrawImg("interface2/yosin/shoujitujian.img", 7, X + 6 + (i * Spacing + (i * 36)), Y + 27); L_Sq_DrawItem(X + 9 + (i * Spacing + (i * 36)), Y + 30, ItemArr[i].Id, 1, 0, 0, 0); if (!ItemArr[i].IsHave) { L_sq_DrawImg("interface2/yosin/shoujitujian.img", 6, X + 9 + (i * Spacing + (i * 36)), Y + 30); L_sq_DrawImg("interface2/yosin/shoujitujian.img", 6, X + 9 + (i * Spacing + (i * 36)), Y + 30); L_sq_DrawImg("interface2/yosin/shoujitujian.img", 6, X + 9 + (i * Spacing + (i * 36)), Y + 30); // L_sq_DrawImg("interface2/yosin/shoujitujian.img", 6, X + 9 + (i * Spacing + (i * 36)), Y + 30); } } } //绘制属性信息 function DrawAttribute(X, Y) { local JumpRealLine = 0; local StrColor = sq_RGBA(174, 174, 174, 250); if (Completion) StrColor = sq_RGBA(255, 177, 0, 250) L_sq_DrawImg("interface2/yosin/shoujitujian.img", 10, X + 320, Y + 100 + 34); for (local i = 0; i < AttributeArr.len(); i++) { //空属性 跳过绘制并且-1行 if (AttributeArr[i] == 0) { JumpRealLine++; continue; } L_sq_DrawImg("interface2/yosin/shoujitujian.img", 11, X + 320, Y + 100 + 34 + 11 + ((i - JumpRealLine) * 14)); L_sq_DrawCode(TabName[i] + " " + AttributeArr[i], X + 330, Y + 100 + 34 + 11 + ((i - JumpRealLine) * 14), StrColor, 1, 1); } L_sq_DrawImg("interface2/yosin/shoujitujian.img", 12, X + 320, Y + 100 + 34 + 11 + ((AttributeArr.len() - JumpRealLine) * 14)); } //绘制收集信息 function DrawCompletionInfo(X, Y) { if (Completion) L_sq_DrawImg("interface2/yosin/shoujitujian.img", 9, X + 628, Y + 34); else L_sq_DrawImg("interface2/yosin/shoujitujian.img", 8, X + 628, Y + 34); } function Show(X, Y) { //绘制主界面 L_sq_DrawImg("interface2/yosin/shoujitujian.img", 5, X, Y); //绘制列数名字 L_sq_DrawCode(Name, X + 5, Y + 6, sq_RGBA(255, 177, 0, 250), 1, 1); //绘制装备 DrawItem(X, Y); //绘制收集信息 DrawCompletionInfo(X, Y); //绘制警告信息 if (WarringMessage) L_sq_DrawCode("警告! 此操作可能会导致您失去不想失去的装备,确认无误后再次点击镶嵌.", X + 215, Y + 6, sq_RGBA(225, 6, 2 250), 1, 1); //绘制镶嵌按钮 local Button = CollectBooksPro("收集图鉴镶嵌", X + 620, Y + 2, "interface2/yosin/shoujitujian.img", 56, 23, 13); Button.SetRectEnble(true, "收集图鉴镶嵌", X + 620, Y + 2, "interface2/yosin/shoujitujian.img", 14); Button.SetCustomClickEnble(true, "收集图鉴镶嵌", X + 620, Y + 2, "interface2/yosin/shoujitujian.img", 15); Button.Show(); local DownOffset = 0; if (Button.isLBDown()) DownOffset = 1; L_sq_DrawCode("镶 嵌", X + 631, Y + 7 + DownOffset, sq_RGBA(230, 200, 155, 250), 1, 1); if (Button.isLBActive()) { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("CLICK_BUTTON2"); if (!WarringMessage) WarringMessage = true; else { local Arrbuf = []; local Xbuf = []; local Ybuf = []; local Spacing = (597 - (ItemArr.len() * 36)) / (ItemArr.len() - 1); foreach(pos, v in ItemArr) { if (!v.IsHave) { Arrbuf.append(v.Id); Xbuf.append(X + 9 + (pos * Spacing + (pos * 36))); Ybuf.append(Y + 30); } } if (Arrbuf.len() > 0) { local T = { op = 20026077, equtab = Arrbuf, equxtab = Xbuf, equytab = Ybuf, Page = getroottable()["CollectBooksCObj"].NowPage, } SendPack(T); } WarringMessage = false; } } } function ShowStr(X, Y) { //悬停属性信息 if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 628, Y + 34, 77, 21)) { DrawAttribute(X, Y - 180); } } } class CollectBooksC extends BasicsDrawTool { Myop = 20026000; WindowObj = null; //窗口对象 MainState = false; //主状态 X = 34; Y = 42; //他人模式 OtherState = false; BookButton = null; AbtiButton = null; BookButtonState = true; AbtiButtonState = false; NowPage = 1; MaxPage = 1; //页面标题 PageTitle = null; //收集行对象 CollectBooksLineBuf = null; CollectLineObject = null; CollectLineNameObject = null; CollectLineAttributeObject = null; CollectAttributeObject = null; //附加BUFF判断 DgnAddBuff = false; //镶嵌回调动画 MosaicAnimotionArr = null; TabName = [ "力量 +", "体力 +", "智力 +", "精神 +", "独立攻击力 +", "物理攻击力 +", "魔法攻击力 +", "物理防御 +", "魔法防御 +", "移动速度 +", "攻击速度 +", "释放速度 +", "物理暴击 +", "魔法暴击 +", "命中率 +", "光属性强化 +", "暗属性强化 +", "水属性强化 +", "火属性强化 +", "全属性强化 +", "冷却时间 -", "技能攻击力 + " ] //镶嵌动画回调 function MosaicAnimotionCallBack(Chunk) { // Sout("收到的包: %L", Chunk); local Buffer = Json_STL("CollectBooksCObjGetInfoCallBackBuffer"); Buffer.Parse(Chunk, 0, false); local RootTab = getroottable(); if (RootTab.rawin("CollectBooksCObj")) { local Tobj = RootTab["CollectBooksCObj"]; Tobj.MosaicAnimotionArr = []; for (local i = 0; i < 15; i++) { local X = Buffer.Get("Ani->" + i + "->x") if (!X) break; local Y = Buffer.Get("Ani->" + i + "->y") local T = { Ax = X, Ay = Y, } Tobj.MosaicAnimotionArr.append(T); } } local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("DANJIN_GAMBLE_CLASS_A"); } //获取收集信息回调 function GetCollectInfoCallBack(Chunk) { local Buffer = Json_STL("CollectBooksCObjGetInfoCallBackBuffer"); Buffer.Parse(Chunk, 0, false); local RootTab = getroottable(); if (RootTab.rawin("CollectBooksCObj")) { local Tobj = RootTab["CollectBooksCObj"]; Tobj.PageTitle = { Name = Buffer.Get("PageTitleName"), X = Buffer.Get("PageTitleX"), Y = Buffer.Get("PageTitleY"), }; Tobj.CollectLineObject = []; Tobj.CollectLineNameObject = []; Tobj.CollectLineAttributeObject = []; Tobj.CollectBooksLineBuf = [0, 0, 0, 0]; Tobj.MaxPage = Buffer.Get("MaxPage"); local Count = Buffer.Get("CollectLineCount"); for (local i = 0; i < Count; i++) { local AbArr = []; for (local q = 0; q < 22; q++) { local AttributeBuffer = Buffer.Get("CollectLineAttribute->" + i + "->buff->" + q); AbArr.append(AttributeBuffer); } Tobj.CollectLineAttributeObject.append(AbArr); local EquArr = []; for (local w = 0; w < 12; w++) { local gName = Buffer.Get("CollectLineDrawS->" + i + "->collectLineDrawList->" + w + "->ItemName"); if (!gName) break; local gId = Buffer.Get("CollectLineDrawS->" + i + "->collectLineDrawList->" + w + "->ItemId"); local gIsHave = Buffer.Get("CollectLineDrawS->" + i + "->collectLineDrawList->" + w + "->ItemIsHave"); local T = { Name = gName, Id = gId, IsHave = gIsHave, }; EquArr.append(T); } Tobj.CollectLineObject.append(EquArr); local gLineName = Buffer.Get("CollectLineDrawS->" + i + "->LineName"); Tobj.CollectLineNameObject.append(gLineName); } } } //获取收集信息 function GetCollectInfo() { local T = { op = Myop + 1, Page = NowPage, }; SendPack(T); } //获取他人收集属性信息 function CheckOtherPlayerCollectBooksInfo(gname) { local T = { op = 20026000 + 7, name = gname } local str = Json.Encode(T); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); } //获取他人总属性回调 function GetOtherPlayerAttributeInfoCallBack(Chunk) { local Buffer = Json_STL("CollectBooksCObjGetAttributeInfoCallBackBuffer"); Buffer.Parse(Chunk, 0, false); local RootTab = getroottable(); if (RootTab.rawin("CollectBooksCObj")) { local Tobj = RootTab["CollectBooksCObj"]; Tobj.CollectAttributeObject = []; for (local i = 0; i < 22; i++) { Tobj.CollectAttributeObject.append(Buffer.Get("buffs->" + i)); } Tobj.BookButtonState = false; Tobj.AbtiButtonState = true; Tobj.MainState = true; Tobj.OtherState = true; L_NewWindows("Lenheart", 170, 0x65535); local W = sq_GetPopupWindowMainCotrol(170); W.SetVisible(false); W.SetEnable(false); } } //获取总属性回调 function GetAttributeInfoCallBack(Chunk) { local Buffer = Json_STL("CollectBooksCObjGetAttributeInfoCallBackBuffer"); Buffer.Parse(Chunk, 0, false); local RootTab = getroottable(); if (RootTab.rawin("CollectBooksCObj")) { local Tobj = RootTab["CollectBooksCObj"]; Tobj.CollectAttributeObject = []; for (local i = 0; i < 22; i++) { Tobj.CollectAttributeObject.append(Buffer.Get("buffs->" + i)); } } } //获取总属性 function GetAttributeInfo() { local T = { op = Myop + 5, }; SendPack(T); } constructor() { CollectBooksLineBuf = [0, 0, 0, 0]; //注册获取收集信息回调 Pack_Control.rawset(Myop + 2, GetCollectInfoCallBack); Pack_Control.rawset(Myop + 6, GetAttributeInfoCallBack); Pack_Control.rawset(Myop + 8, GetOtherPlayerAttributeInfoCallBack); Pack_Control.rawset(Myop + 104, MosaicAnimotionCallBack); //获取收集信息 GetCollectInfo(); //获取属性信息 GetAttributeInfo(); } //绘制主界面 function DrawMain(obj) { //绘制主界面 L_sq_DrawImg("interface2/yosin/shoujitujian.img", 0, X, Y); BookButton = CollectTabTextButtonPro(obj, "收集图鉴收集", X + 5, Y + 10, "interface2/yosin/shoujitujian.img", 1, 70, 20, "收集概览", 10, 5); BookButton.SwitchState = BookButtonState; BookButton.SetRectEnble(true, "a收集图鉴收集", X + 5, Y + 10, "interface2/yosin/shoujitujian.img", 2); BookButton.SetCustomClickEnble(true, "a收集图鉴收集", X + 5, Y + 9, "interface2/yosin/shoujitujian.img", 3); //收集页 BookButton.Show(); if (BookButton.isLBActive() && !OtherState) { obj.sq_PlaySound("CLICK_BUTTON2"); BookButtonState = true; AbtiButtonState = false; } AbtiButton = CollectTabTextButtonPro(obj, "收集图鉴属性", X + 75, Y + 10, "interface2/yosin/shoujitujian.img", 1, 70, 20, "属性概览", 10, 5); AbtiButton.SwitchState = AbtiButtonState; AbtiButton.SetRectEnble(true, "a收集图鉴属性", X + 75, Y + 10, "interface2/yosin/shoujitujian.img", 2); AbtiButton.SetCustomClickEnble(true, "a收集图鉴属性", X + 75, Y + 10, "interface2/yosin/shoujitujian.img", 3); //收集页 AbtiButton.Show(); if (AbtiButton.isLBActive() && !OtherState) { obj.sq_PlaySound("CLICK_BUTTON2"); BookButtonState = false; AbtiButtonState = true; } //绘制分页线 L_sq_DrawImg("interface2/yosin/shoujitujian.img", 4, X + 3, Y + 30); //属性显示页 if (AbtiButtonState && CollectAttributeObject) { for (local r = 0; r < 22; r++) { L_sq_DrawCode(TabName[r] + " " + CollectAttributeObject[r], X + 20 + ((r / 10) * 170), Y + 64 + ((r % 10) * 17), sq_RGBA(255, 255, 255, 250), 1, 1); } } //收集概览显示页 if (BookButtonState && PageTitle && CollectLineObject) { L_sq_DrawCode(PageTitle.Name, X + PageTitle.X, Y + PageTitle.Y, sq_RGBA(184, 249, 114, 250), 2, 1); for (local i = 0; i < CollectLineObject.len(); i++) { if (CollectBooksLineBuf[i] == 0) CollectBooksLineBuf[i] = CollectBooksLineC(CollectLineNameObject[i], CollectLineObject[i], CollectLineAttributeObject[i]); CollectBooksLineBuf[i].Show(X + 14, Y + 60 + (i * 80)); //L_sq_DrawImg("interface2/yosin/shoujitujian.img", 5, X + 14, Y + 60 + (i * 80)); } local LeftButton = CollectBooksPro("收集图鉴左翻页", X + 310, Y + 370, "interface2/yosin/shoujitujian.img", 23, 23, 16); LeftButton.SetRectEnble(true, "收集图鉴左翻页", X + 310, Y + 370 - 2, "interface2/yosin/shoujitujian.img", 17); LeftButton.SetCustomClickEnble(true, "收集图鉴左翻页", X + 310, Y + 370 - 1, "interface2/yosin/shoujitujian.img", 18); LeftButton.Show(); if (LeftButton.isLBActive()) { obj.sq_PlaySound("CLICK_BUTTON2"); if (NowPage > 1) NowPage--; local T = { op = Myop + 1, Page = NowPage, }; SendPack(T); } L_sq_DrawCode(NowPage + " / " + MaxPage, X + 350, Y + 374, sq_RGBA(230, 200, 155, 250), 1, 1); local RightButton = CollectBooksPro("收集图鉴右翻页", X + 390, Y + 370, "interface2/yosin/shoujitujian.img", 23, 23, 19); RightButton.SetRectEnble(true, "收集图鉴右翻页", X + 390, Y + 370 - 2, "interface2/yosin/shoujitujian.img", 20); RightButton.SetCustomClickEnble(true, "收集图鉴右翻页", X + 390, Y + 370 - 1, "interface2/yosin/shoujitujian.img", 21); RightButton.Show(); if (RightButton.isLBActive()) { obj.sq_PlaySound("CLICK_BUTTON2"); if (NowPage < MaxPage) NowPage++; local T = { op = Myop + 1, Page = NowPage, }; SendPack(T); } for (local w = 0; w < 4; w++) { if (CollectBooksLineBuf[w] != 0) CollectBooksLineBuf[w].ShowStr(X + 14, Y + 60 + (w * 80)); } //如果镶嵌动画存在 if (MosaicAnimotionArr) { local AnimotionLen = MosaicAnimotionArr.len(); for (local ai = 0; ai < AnimotionLen; ai++) { local ani = T_DrawDynamicAni(obj, "common/collectbooks/iconslot_01.ani", MosaicAnimotionArr[ai].Ax, MosaicAnimotionArr[ai].Ay, "CollectBooksAnimotions" + ai); if (sq_IsEnd(ani)) { sq_Rewind(ani); if (ai == AnimotionLen - 1) { MosaicAnimotionArr = null; GetCollectInfo(); } } } } } } //附加属性 function AddAb(obj) { if (sq_GetCurrentModuleType() == 3) { if (!CollectAttributeObject) return; if (DgnAddBuff == false) { DgnAddBuff = true; local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "appendage/collectbooks/collectbooks.nut", true); CNSquirrelAppendage.sq_Append(appendage, obj, obj); local change_appendage = appendage.sq_getChangeStatus("Yosin_collectbooksDgnBuff"); if (!change_appendage) { change_appendage = appendage.sq_AddChangeStatusAppendageID(obj, obj, 0, 0, false, 0, 0); } if (change_appendage) { change_appendage.clearParameter(); //print(WearSlotM.Item.TabName[0]); foreach(Key, Value in CollectAttributeObject) { if (Key == 0) change_appendage.addParameter(0, false, Value.tofloat()); else if (Key == 1) change_appendage.addParameter(3, false, Value.tofloat()); else if (Key == 2) change_appendage.addParameter(2, false, Value.tofloat()); else if (Key == 3) change_appendage.addParameter(1, false, Value.tofloat()); else if (Key == 4) change_appendage.addParameter(53, false, Value.tofloat()); else if (Key == 5) change_appendage.addParameter(4, false, Value.tofloat()); else if (Key == 6) change_appendage.addParameter(31, false, Value.tofloat()); else if (Key == 7) change_appendage.addParameter(5, false, Value.tofloat()); else if (Key == 8) change_appendage.addParameter(32, false, Value.tofloat()); else if (Key == 9) change_appendage.addParameter(11, false, Value.tofloat()); else if (Key == 10) change_appendage.addParameter(10, false, Value.tofloat()); else if (Key == 11) change_appendage.addParameter(12, false, Value.tofloat()); else if (Key == 12) change_appendage.addParameter(15, false, Value.tofloat() / 10.0); else if (Key == 13) change_appendage.addParameter(16, false, Value.tofloat() / 10.0); else if (Key == 14) change_appendage.addParameter(33, false, 0 - (Value.tofloat() / 10.0)); else if (Key == 15) change_appendage.addParameter(45, false, Value.tofloat()); else if (Key == 16) change_appendage.addParameter(44, false, Value.tofloat()); else if (Key == 17) change_appendage.addParameter(43, false, Value.tofloat()); else if (Key == 18) change_appendage.addParameter(42, false, Value.tofloat()); else if (Key == 19) change_appendage.addParameter(46, false, Value.tofloat()); else if (Key == 20) { local sss = 0 - ((Value.tofloat() / 100.00)); change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, false, sss); } else if (Key == 21) { if (getroottable().rawin("LenheartCurrentModuleDamageRate")) { getroottable().rawset("LenheartCurrentModuleDamageRate", getroottable()["LenheartCurrentModuleDamageRate"] + Value); } else { getroottable().rawset("LenheartCurrentModuleDamageRate", Value); } } } } } } else { DgnAddBuff = false; } } //开启界面回调 function OpenClassCallBack() { local obj = sq_GetMyMasterCharacter(); obj.sq_PlaySound("CLICK_BUTTON1"); L_NewWindows("Lenheart", 170, 0x65535); local W = sq_GetPopupWindowMainCotrol(170); W.SetVisible(false); W.SetEnable(false); //获取收集信息 GetCollectInfo(); //获取属性信息 GetAttributeInfo(); } //绘制入口 function Draw(obj) { if (MainState) { if (WindowObj) { DrawMain(obj); WindowObj.Show(obj); X = WindowObj.X; Y = WindowObj.Y; } else { WindowObj = CollectBooksWindow(X, Y, 721, 399, 10); //坐标 大小 标题栏高度 //WindowObj.DeBugMode = true; } } else { if (WindowObj && WindowObj.YMouseSw == false) { IMouse.ReleaseMouseClick(); WindowObj.YMouseSw = true; WindowObj = null; } } } //逻辑入口 function Proc(obj) { AddAb(obj); if (obj.isDead()) DgnAddBuff = false; if (KeyPressNB.isKeyPress(48, "CollectBooksCloseKey")) { MainState = false; OtherState = false; } } } function CollectBooks(obj) { local RootTab = getroottable(); if (!RootTab.rawin("CollectBooksCObj")) { local Cobj = CollectBooksC(); RootTab.rawset("CollectBooksCObj", Cobj); EventIcon("收集图鉴", 121, 121, Cobj); PlayerEachIcon("查看收集信息", Cobj.CheckOtherPlayerCollectBooksInfo); } else { RootTab["CollectBooksCObj"].Proc(obj); RootTab["CollectBooksCObj"].Draw(obj); } } if (getroottable().rawin("LenheartFuncTab")) { getroottable()["LenheartFuncTab"].rawset("CollectBooksFunc", CollectBooks); } else { local T = {}; T.rawset("CollectBooksFunc", CollectBooks); getroottable().rawset("LenheartFuncTab", T); }