/* 文件名:AradPass.nut 路径:Plugins/AradPass/AradPass.nut 创建日期:2023-10-18 08:38 文件用途: */ class AradPassC extends BasicsDrawTool { WindowObj = null; //窗口对象 MainState = false; //主状态 X = 124; Y = 34; Page = 0; Title = null; QuestTitle = null; QuestPage = 0; BaseInfo = null; Mobj = null; //每日任务数组 DailyTasks = null; //重复任务数组 RepeatingTasks = null; //赛季任务数组 SeasonTasks = null; //标签提示 TabSuccessTips = null; //等级按钮 LevelButton = null; LevelPage = 0; //战令等级 MyPassLevel = 2; //ItemInfo ItemInfoObject = null; ItemInfoDrawS = null; RewardInfoObject = null; RewardInfoEffTimer = null; RewardSuccessTips = null; function GetBaseInfo() { local T = { op = 20059001 } SendPack(T); local T2 = { op = 20059005 } SendPack(T2); } function GetBaseInfoCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); foreach(Value in Jso.itemInfo) { if (Value.Name2.len() == 0) Value.Name2 = "Yosin-Team"; ItemInfoObject[Value.Id] <- Value; } } function GetBaseInfoCallBack2(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); BaseInfo = {}; BaseInfo = clone(Jso); LevelPage = ((BaseInfo.Exp / 1000) + 1) / 10; } QuestSuccessTips = null; function GetPlayerQuestCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); local Jso = Json.Decode(Chunk); DailyTasks = Jso.task[0]; RepeatingTasks = Jso.task[1]; SeasonTasks = Jso.task[2]; QuestSuccessTips = [0, 0, 0]; TabSuccessTips[1] = 0; foreach(Pos, Value in Jso.task) { foreach(QuestObject in Value) { if (QuestObject.SuccessState == 0) { if (QuestObject.NowSuccessCount >= QuestObject.MaxSuccessCount) { QuestSuccessTips[Pos] = 1; TabSuccessTips[1] = 1; break; } } } } } function GetPlayerReward() { local T = { op = 20059003 } SendPack(T); } function GetPlayerQuest() { local T = { op = 20059031 } SendPack(T); } function GetPlayerRewardCallBack(Chunk) { // Sout("收到包 : \n %L", Chunk); //还原奖励领取提示数组 RewardSuccessTips = [0, 0, 0, 0, 0]; TabSuccessTips[0] = 0; RewardInfoObject = {}; local Jso = Json.Decode(Chunk); foreach(Pos, Value in Jso.reward) { RewardInfoObject.rawset(Pos, Value); if ((Pos)<(BaseInfo.Exp / 1000 + 1)) { //判断是否有未领取的道具绘制感叹号要用 local Page = (Pos / 10); if (RewardSuccessTips[Page] == 0) { if (Value.isOrdinary == 0) { RewardSuccessTips[Page] = 1; TabSuccessTips[0] = 1; } if (BaseInfo.isVip) { if (Value.isadditional == 0) { RewardSuccessTips[Page] = 1; TabSuccessTips[0] = 1; } } } } } } //发包成功 function SendSuccessAradPass(a2, a3, a4) { local T = { op = 20059023, id = a2, count = a4, } SendPack(T); } function RegisterQuestSu() { L_CompleteTaskTable.rawset("AradPass", SendSuccessAradPass.bindenv(this)); } constructor() { if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"]; //注册完成任务回调 RegisterQuestSu(); ItemInfoObject = {}; //标签完成提示 TabSuccessTips = [0, 0, 0]; Pack_Control.rawset(20059002, GetBaseInfoCallBack.bindenv(this)); Pack_Control.rawset(20059006, GetBaseInfoCallBack2.bindenv(this)); Pack_Control.rawset(20059004, GetPlayerRewardCallBack.bindenv(this)); Pack_Control.rawset(20059032, GetPlayerQuestCallBack.bindenv(this)); GetBaseInfo(); GetPlayerReward(); GetPlayerQuest(); RewardInfoEffTimer = Clock(); RewardSuccessTips = [0, 0, 0, 0, 0]; } //绘制等级数字 function DrawNumber(num, ...) { num = num.tostring(); local x = X + 38; local y = Y + 110; if (num.len() == 2) x = X + 28; for (local i = 0; i< num.len(); i++) { local n = num.slice(i, i + 1); n = n.tointeger(); local Img = "interface2/ui/aradpass/chn/aradpassnum.img"; if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img"; L_sq_DrawImg(Img, n, x + (i * 18), y); } } //绘制等级数字 function DrawSmallNumber(num, bx) { num = num.tostring(); local x = X + 38 + bx; local y = Y + 250; if (num.len() == 2) x = X + 33 + bx; for (local i = 0; i< num.len(); i++) { local n = num.slice(i, i + 1); n = n.tointeger(); local Img = "interface2/ui/aradpass/chn/aradpassnum.img"; if (BaseInfo.isVip) Img = "interface2/ui/aradpass/chn/aradpassnumy.img"; L_sq_DrawImg(Img, n, x + (i * 9), y, 0, sq_RGBA(255, 255, 255, 255), 0.5, 0.5); } } //绘制道具带道具信息 function DrawItemEx(X, Y, Id, Count) { L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0); if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) { ItemInfoDrawS = {}; ItemInfoDrawS.X <- X; ItemInfoDrawS.Y <- Y; ItemInfoDrawS.ItemId <- Id; } } //绘制道具相信信息 ItemObject = null; function DrawItemInfo(obj) { if (ItemInfoDrawS) { if (!ItemObject) { local ItemId = ItemInfoDrawS.ItemId; if (ItemInfoObject.rawin(ItemId)) { ItemObject = ItemInfoClass(ItemInfoObject[ItemId]); } } ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength); } else { ItemObject = null; } } function DrawRewardItem(obj) { local Idx = LevelPage * 10; for (local i = 0; i< 10; i++) { //奖励下标 local RealPos = Idx + i; if (RealPos in RewardInfoObject) { local RewardObject = RewardInfoObject[RealPos]; //普通道具 if ("itemid" in RewardObject) { //普通底 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 21, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61); DrawItemEx(X + 64 + (i * 47), Y + 296, RewardObject.itemid, RewardObject.num); //已领取 if (RewardObject.isOrdinary) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 23, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61); } //未领取 else if (!RewardObject.isOrdinary) { //快达到等级 if ((RealPos + 1) == MyPassLevel + 1) { } //已达到等级 else if ((RealPos + 1) <= MyPassLevel) { local A = 60; if (RewardInfoEffTimer) { if (Clock() - RewardInfoEffTimer <= 1000) { A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000); } if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) { A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000); } if (Clock() - RewardInfoEffTimer > 2000) { RewardInfoEffTimer = Clock(); } } L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 29, X + 7 + 45 + (i * 47), Y + 50 + 162 + 58, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0); L_sq_ReleaseDrawImgModel(); if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 50 + 162 + 58, 44, 74)) { if (Mobj.LbEvent) { local T = { op = 20059007, Type = 0, lv = RealPos + 1, } SendPack(T); } } } //未达到等级 else { //普通底Eff 未领取 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 61); } } } //是不是VIP local IsVip = BaseInfo.isVip; //进阶道具 if ("additionalItemId" in RewardObject && "additionalItemId2" in RewardObject) { //普通底 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 26, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); DrawItemEx(X + 64 + (i * 47), Y + 356, RewardObject.additionalItemId, RewardObject.additionalNum); DrawItemEx(X + 64 + (i * 47), Y + 390, RewardObject.additionalItemId2, RewardObject.additionalNum2); if (RewardObject.isadditional) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 28, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } else { if (!IsVip) { //普通底 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 32, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } else { //快达到等级 if ((RealPos + 1) == MyPassLevel + 1) { } //已达到等级 else if ((RealPos + 1) <= MyPassLevel) { local A = 60; if (RewardInfoEffTimer) { if (Clock() - RewardInfoEffTimer <= 1000) { A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000); } if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) { A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000); } if (Clock() - RewardInfoEffTimer > 2000) { RewardInfoEffTimer = Clock(); } } L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 30, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0); L_sq_ReleaseDrawImgModel(); if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 44, 74)) { if (Mobj.LbEvent) { local T = { op = 20059007, Type = 1, lv = RealPos + 1, } SendPack(T); } } } //未达到等级 else { //普通底Eff 未领取 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } } } } else { //普通底 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 25, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); DrawItemEx(X + 64 + (i * 47), Y + 373, RewardObject.additionalItemId, RewardObject.additionalNum); if (RewardObject.isadditional) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 27, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } else { if (!IsVip) { //普通底 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 31, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } else { //快达到等级 if ((RealPos + 1) == MyPassLevel + 1) { } //已达到等级 else if ((RealPos + 1) <= MyPassLevel) { local A = 60; if (RewardInfoEffTimer) { if (Clock() - RewardInfoEffTimer <= 1000) { A = sq_GetUniformVelocity(60, 255, Clock() - RewardInfoEffTimer, 1000); } if (Clock() - RewardInfoEffTimer <= 2000 && Clock() - RewardInfoEffTimer > 1000) { A = sq_GetUniformVelocity(255, 60, Clock() - RewardInfoEffTimer - 1000, 1000); } if (Clock() - RewardInfoEffTimer > 2000) { RewardInfoEffTimer = Clock(); } } L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 30, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0); L_sq_ReleaseDrawImgModel(); if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 7 + 45 + (i * 47), Y + 45 + 162 + 138, 44, 74)) { if (Mobj.LbEvent) { local T = { op = 20059007, Type = 1, lv = RealPos + 1, } SendPack(T); } } } //未达到等级 else { //普通底Eff 未领取 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 33, X + 11 + 45 + (i * 47), Y + 50 + 162 + 138); } } } } } } if (MyPassLevel >= LevelPage * 10) { //是不是VIP local IsVip = BaseInfo.isVip; local MyExp; local Rate; if (MyPassLevel == LevelPage * 10) { MyExp = (BaseInfo.Exp + 1000.0) % 10000.0; Rate = MyExp.tofloat() / 10000.0; } else if (MyPassLevel<(LevelPage + 1) * 10) { MyExp = BaseInfo.Exp % 10000.0 + 1000.0; Rate = MyExp.tofloat() / 10000.0; } else { Rate = 100.0; } local ImgIndex = 34; if (IsVip) ImgIndex = 35; if (Rate <= 0) Rate = 0.01; setClip(X + 11 + 45, Y, X + 11 + 45 + (470 * Rate).tointeger(), Y + 264 + 4); //开始裁切 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", ImgIndex, X + 11 + 45, Y + 264); releaseClip(); //裁切结束 L_sq_SetDrawImgModel(2, 0); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", ImgIndex + 2, X + 11 + 34 + (470 * Rate).tointeger(), Y + 255); L_sq_ReleaseDrawImgModel(); } } //绘制主界面 function DrawMain(obj) { if (!BaseInfo) return; //Item信息框一般为211的宽度 L_sq_DrawWindow(X, Y + 10, 540, 420, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); L_sq_DrawWindow(X + 6, Y + 45, 528, 384, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); // L_sq_DrawWindow(X + 5, Y + 28, 530, 390, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); //绘制背景框标题栏 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassmain.img", 0, X + 1, Y); //构造标题栏 if (!Title) { Title = []; for (local i = 0; i< 3; i++) { local Str = "奖励"; if (i == 1) Str = "任务"; if (i == 2) Str = "社交"; local ButtonBuf = LenheartTabbarsText(X, Y, Str); if (i == 0) ButtonBuf.State = 1; Title.append(ButtonBuf); } } else { foreach(Pos, Value in Title) { Value.SyncPos(X + 12 + (Pos * 62), Y + 27); Value.Show(); //如果有可领取实践 还要画上感叹号标记 if (Value.isLBActive()) { foreach(Pp, Vv in Title) { if (Pp != Pos) Vv.State = 0; Page = Pos; } } //绘制完成事件的感叹号 if (TabSuccessTips[Pos] == 1) { L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 58 + (Pos * 62), Y + 31, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8); } } } //绘制主题栏 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 0, X + 11, Y + 50); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass_banner.img", 0, X + 11, Y + 50); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 3, X + 547 - 252, Y + 207 - 47); //绘制等级与经验值 MyPassLevel = BaseInfo.Exp / 1000 + 1; DrawNumber(MyPassLevel); local jystr = (BaseInfo.Exp % 1000) + " / " + 1000; L_sq_DrawCode(jystr, X + 11 + 50 - LenheartTextClass.GetStringLength(jystr) / 2, Y + 50 + 20 + 80, sq_RGBA(179, 169, 135, 255), 0, 1); if (BaseInfo.isVip) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 6, X + 11 + 22, Y + 50 + 24); } //绘制战令名 L_sq_DrawImg("interface2/ui/aradpass/chn/aradpassl.img", 0, X + 11 + 91, Y + 50 + 20); //绘制时装套装名 local szstr = BaseInfo.Apn; L_sq_DrawCode(szstr, X + 500 - LenheartTextClass.GetStringLength(szstr) / 2, Y + 192, sq_RGBA(179, 169, 135, 255), 0, 1); //绘制结束时间 L_sq_DrawCode("距离结束还有" + BaseInfo.EndTime + "天", X + 11 + 91, Y + 50 + 20 + 31, sq_RGBA(134, 120, 79, 255), 0, 1); //绘制激活按钮 if (!(BaseInfo.isVip)) { local ActivationButton = LenheartButtonText(X + 11 + 91, Y + 50 + 20 + 31 + 20, 22, "激 活"); ActivationButton.SetFrame(null, 323); ActivationButton.SetTextOffset(6, 1); ActivationButton.Show(); if (ActivationButton.isLBActive()) { local T = { op = 20059013 } SendPack(T); } } //绘制主要奖励框 for (local i = 0; i< 5; i++) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 4, X + 11 + 91 + (36 * i), Y + 31 + 124); DrawItemEx(X + 11 + 95 + (36 * i), Y + 33 + 124, BaseInfo.showItemIds[i], 1); } //绘制奖励页 if (Page == 0) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 1, X + 11, Y + 50 + 162); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 2, X + 11, Y + 50 + 162 + 214); L_sq_DrawCode("区", X + 11 + 14, Y + 50 + 162 + 14, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("间", X + 11 + 14, Y + 50 + 162 + 14 + 19, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("免", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("费", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("追", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19 + 54, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("加", X + 11 + 14, Y + 50 + 162 + 14 + 19 + 47 + 19 + 54 + 19, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 19, X + 11, Y + 240); // local SuccessButton = LenheartBaseButtonText(X + 60, Y + 215, 88, 25, "interface2/ui/aradpass/chn/aradpass.img", 15, "1 - 10"); // local SuccessButton = LenheartTabbarsText(X + 60, Y + 215, "1 - 10", 88, 25); // SuccessButton.SetFrame("interface2/ui/aradpass/chn/aradpass.img", 15); // SuccessButton.SetTextOffset(30, 5); // SuccessButton.Show(); //构造等级按钮 if (!LevelButton) { LevelButton = []; for (local i = 0; i< 5; i++) { local Str = "1 - 10"; if (i == 1) Str = "11 - 20"; if (i == 2) Str = "21 - 30"; if (i == 3) Str = "31 - 40"; if (i == 4) Str = "41 - 50"; local ButtonBuf = LenheartTabbarsText(X + 11 + 50 + (i * 93), Y + 215, Str, 88, 25); ButtonBuf.SetFrame("interface2/ui/aradpass/chn/aradpass.img", 15); ButtonBuf.SetTextOffset(50 - LenheartTextClass.GetStringLength(Str) / 2, 6); if (i == 0) ButtonBuf.State = 1; LevelButton.append(ButtonBuf); } } else { foreach(Pos, Value in LevelButton) { Value.SyncPos(X + 11 + 50 + (Pos * 93), Y + 215); Value.Show(); if (Pos == LevelPage) Value.State = 1; else Value.State = 0; //如果有可领取实践 还要画上感叹号标记 if (Value.isLBActive()) { LevelPage = Pos; } if (Value.State == 1) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 18, X + 11 + 50 + (Pos * 93), Y + 215); } //绘制是否可领取奖励的感叹号 if (RewardSuccessTips[Pos] == 1) { L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 125 + (Pos * 93), Y + 224, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8); } } } for (local i = 0; i< 10; i++) { DrawSmallNumber(i + 1 + (LevelPage * 10), 124 - 91 + (i * 47)); } DrawRewardItem(obj); L_sq_DrawImg("interface/Lenheartwindowcommon.img", 504, X + 24, Y + 438, 0, sq_RGBA(255, 255, 255, 250), 0.8, 0.8); L_sq_DrawImg("interface/Lenheartwindowcommon.img", 504, X + 24, Y + 460, 0, sq_RGBA(255, 255, 255, 250), 0.8, 0.8); L_sq_DrawCode("获得的物品将发放至物品栏。", X + 44, Y + 438, sq_RGBA(179, 169, 135, 150), 1, 1); L_sq_DrawCode("未使用的奖励道具将在本季通行券结束时删除。", X + 44, Y + 460, sq_RGBA(179, 169, 135, 150), 1, 1); //绘制领取全部奖励按钮 local ClaimAllButton = LenheartButtonText(X + 460, Y + 440, 22, "全部领取"); // ClaimAllButton.SetFrame(null, 323); ClaimAllButton.SetTextOffset(-3, 1); ClaimAllButton.Show(); if (ClaimAllButton.isLBActive()) { local T = { op = 20059009 } SendPack(T); } } //绘制任务页 if (Page == 1) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 43, X + 11, Y + 50 + 162); L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 38, X + 13, Y + 50 + 184); //构造标题栏 if (!QuestTitle) { QuestTitle = []; for (local i = 0; i< 3; i++) { local Str = "每日任务"; if (i == 1) Str = "重复任务"; if (i == 2) Str = "赛季任务"; local ButtonBuf = LenheartTabbarsText(X, Y, Str); if (i == 0) ButtonBuf.State = 1; ButtonBuf.SetTextOffset(8, 3); QuestTitle.append(ButtonBuf); } } else { foreach(Pos, Value in QuestTitle) { Value.SyncPos(X + 12 + (Pos * 62), Y + 213); Value.Show(); //如果有可领取实践 还要画上感叹号标记 if (Value.isLBActive()) { foreach(Pp, Vv in QuestTitle) { if (Pp != Pos) Vv.State = 0; } QuestPage = Pos; } if (QuestSuccessTips && QuestSuccessTips.len() == 3) { //绘制是否可领取奖励的感叹号 if (QuestSuccessTips[Pos] == 1) { L_sq_DrawImg("interface/Lenheartwindowcommon.img", 301, X + 64 + (Pos * 62), Y + 216, 0, sq_RGBA(255, 255, 255, 210), 0.8, 0.8); } } } } L_sq_DrawCode("任务内容", X + 120, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("完成次数", X + 288, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("经验值", X + 388, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode("状态", X + 492, Y + 7 + 231, sq_RGBA(179, 169, 135, 255), 1, 1); local QuestTasks = null; //每日 if (QuestPage == 0) { //每日任务数组 QuestTasks = DailyTasks; } //重复 else if (QuestPage == 1) { //重复任务数组 QuestTasks = RepeatingTasks; } //赛季 else { //赛季任务数组 QuestTasks = SeasonTasks; } if (QuestTasks) { QuestWheelMax = QuestTasks.len(); local SuccessCount = 0; local Incomplete = 0; foreach(Pos, Value in QuestTasks) { local OffsetPos = Pos - QuestWheelNow - SuccessCount; if (Pos >= QuestWheelNow && Pos <= QuestWheelNow + 5) { if (Value.SuccessState == 0) { Incomplete++; L_sq_DrawCode(Value.QuestExplain, X + 20, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1); local SuccessStr = Value.NowSuccessCount + " / " + Value.MaxSuccessCount; L_sq_DrawCode(SuccessStr, X + 320 - LenheartTextClass.GetStringLength(SuccessStr) / 2, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1); L_sq_DrawCode(Value.Experience.tostring(), X + 404 - LenheartTextClass.GetStringLength(Value.Experience.tostring()) / 2, Y + 50 + 162 + 53 + (OffsetPos * 30) + (OffsetPos), sq_RGBA(179, 169, 135, 255), 1, 1); //绘制完成按钮 local SuccessButton = LenheartButtonText(X + 472, Y + 261 + (OffsetPos * 30) + (OffsetPos), 10, "完成"); SuccessButton.SetTextOffset(3, 1); if (Value.NowSuccessCount >= Value.MaxSuccessCount) { if (SuccessButton.isLBActive()) { Value.op <- 20059033; SendPack(Value); } } else { SuccessButton.State = 8; } SuccessButton.Show(); } else { SuccessCount++; } } } local SuccessPos = 0; foreach(Pos, Value in QuestTasks) { local SuccessOffsetPos = SuccessPos - QuestWheelNow + Incomplete; if (Value.SuccessState == 1) { SuccessPos++; L_sq_DrawCode(Value.QuestExplain, X + 20, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1); local SuccessStr = Value.NowSuccessCount + " / " + Value.MaxSuccessCount; L_sq_DrawCode(SuccessStr, X + 320 - LenheartTextClass.GetStringLength(SuccessStr) / 2, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1); L_sq_DrawCode(Value.Experience.tostring(), X + 404 - LenheartTextClass.GetStringLength(Value.Experience.tostring()) / 2, Y + 50 + 162 + 53 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), sq_RGBA(179, 169, 135, 150), 1, 1); //绘制完成按钮 local SuccessButton = LenheartButtonText(X + 472, Y + 261 + (SuccessOffsetPos * 30) + (SuccessOffsetPos), 10, "已完成"); SuccessButton.SetTextOffset(-2, 1); SuccessButton.State = 8; SuccessButton.Show(); // L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 41, X + 14, Y + 50 + 160 + 50 + (SuccessOffsetPos * 30) + (SuccessOffsetPos)); } } } if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 25, Y + 456, 16, 16)) { L_sq_DrawImg("interface/lenheartwindowcommon.img", 240, X + 25, Y + 456); QuestTips = true; } else { L_sq_DrawImg("interface/lenheartwindowcommon.img", 239, X + 25, Y + 456); QuestTips = false; } // 周获取的经验 local MaxExp = BaseInfo.ExpLimitMax; local NowExp = BaseInfo.ExpLimit; L_sq_DrawCode("每周重复任务经验获取上限 " + NowExp + "/" + MaxExp, X + 40 + 7, Y + 7 + 451, sq_RGBA(179, 169, 135, 255), 1, 1); local ReceiveExpButton = LenheartButtonText(X + 464, Y + 7 + 446, 22, "全部领取"); ReceiveExpButton.SetTextOffset(-2, 1); ReceiveExpButton.Show(); if (ReceiveExpButton.isLBActive()) { local T = { op = 20059035 } SendPack(T); } } //绘制助力页 if (Page == 2) { L_sq_DrawImg("interface2/ui/aradpass/chn/aradpass.img", 42, X + 11, Y + 50 + 162); L_sq_DrawCode("助力奖励", X + 11 + 115, Y + 50 + 162 + 7, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("[发起助力]说明", X + 11 + 372, Y + 50 + 162 + 7, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("获得助力 : " + BaseInfo.helpNum + " 次", X + 11 + 96, Y + 50 + 162 + 111, sq_RGBA(124, 110, 82, 255), 1, 0); //助力按钮 local UpButton = LenheartButtonText(X + 11 + 115 + 20, Y + 50 + 162 + 7 + 48, 4, "发起助力"); if (BaseInfo.help == 1) { UpButton.State = 8; } UpButton.SetTextOffset(-12, 1); UpButton.Show(); if (UpButton.isLBActive()) { local T = { op = 20059011, Type = 0, } SendPack(T); } { L_sq_DrawCode("社交功能将于每日凌晨6点重置。", X + 11 + 322, Y + 50 + 162 + 77, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("点击[发起助力]按钮时,立即获得通行", X + 11 + 308, Y + 50 + 162 + 77 + 20, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("券经验值。", X + 11 + 380, Y + 50 + 162 + 77 + 40, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("获得助力次数将根据服务器玩家的发起", X + 11 + 300, Y + 50 + 162 + 77 + 60, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("助力次数而更新。", X + 11 + 364, Y + 50 + 162 + 77 + 80, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("每10秒可以点击刷新按钮更新信息。", X + 11 + 310, Y + 50 + 162 + 77 + 100, sq_RGBA(124, 110, 82, 255), 1, 0); } L_sq_DrawCode("5次", X + 11 + 48, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("10次", X + 11 + 132, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0); L_sq_DrawCode("20次", X + 11 + 216, Y + 50 + 162 + 148, sq_RGBA(124, 110, 82, 255), 1, 0); //刷新按钮 local RefreshButton = LenheartTabbars(X + 11 + 256, Y + 50 + 162 + 108, 19, 19); RefreshButton.SetFrame(null, 445); RefreshButton.Show(); if (RefreshButton.isLBActive()) {} local SuccBtnArr = [BaseInfo.help5, BaseInfo.help10, BaseInfo.help20]; //完成按钮 foreach(Pos, Kf in SuccBtnArr) { local ButtonBuf = LenheartButtonText(X + 11 + 27 + (Pos * 85), Y + 50 + 162 + 206, 4, "完成"); local RealP = Pos; if (RealP == 0) RealP = 5; if (RealP == 1) RealP = 10; if (RealP == 2) RealP = 20; if (Kf == 1 || RealP > BaseInfo.helpNum) ButtonBuf.State = 8; // ButtonBuf.SetFrame(null, 323); ButtonBuf.SetTextOffset(0, 1); ButtonBuf.Show(); if (ButtonBuf.isLBActive()) { local T = { op = 20059011, Type = RealP, } SendPack(T); } } //TODO 临时绘制道具 2022110703 //绘制道具 L_Sq_DrawItem(X + 103, Y + 262, 1232, BaseInfo.helpExp, 0, 0, 0); L_Sq_DrawItem(X + 11 + 43, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp5, 0, 0, 0); L_Sq_DrawItem(X + 11 + 128, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp10, 0, 0, 0); L_Sq_DrawItem(X + 11 + 213, Y + 50 + 162 + 167, 1232, BaseInfo.helpExp20, 0, 0, 0); } } QuestTips = false; QuestWheelNow = 0; QuestWheelMax = 0; //悬浮层 function DrawSuspensionLayer(obj) { //任务提示 if (QuestTips) { L_sq_DrawWindow(X + 40, Y + 350, 224, 100, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); local QuestTipsStr = "每周可以通过完成重复任务获得的最大经验值。\n达到每周经验获取上限后,无法进行重复任务。\n通过每日任务以及赛季任务获得的经验值,不受每周经验获取上限的限制。\n每周星期四将初始化每周经验获取量。\n每周四凌晨6点初始化重复任务的进度,并删除未领取的重复任务经验值。"; local QuestTipsArray = L_sq_GetStringDrawArray(QuestTipsStr, 251); foreach(Pos, va in QuestTipsArray) { // Sout("文本内容嗯: %L", va); L_sq_DrawCode(va, X + 40 + 7, Y + 7 + 350 + (Pos * 16), 0xFFFFFFFF, 1, 1); } } } //开启界面回调 function OpenClassCallBack() { L_NewWindows("Lenheart", 170, 0x65535); local W = sq_GetPopupWindowMainCotrol(170); W.SetVisible(false); W.SetEnable(false); GetBaseInfo(); GetPlayerReward(); GetPlayerQuest(); } //绘制入口 function Draw(obj) { if (MainState) { if (WindowObj) { ItemInfoDrawS = null; DrawMain(obj); DrawSuspensionLayer(obj); DrawItemInfo(obj); WindowObj.Show(obj); X = WindowObj.X; Y = WindowObj.Y; } else { WindowObj = LenheartWindow(X, Y, 558, 470, 15); //坐标 大小 标题栏高度 // WindowObj.DeBugMode = true; } } else { if (WindowObj && WindowObj.YMouseSw == false) { IMouse.ReleaseMouseClick(); WindowObj.YMouseSw = true; WindowObj = null; } } } //逻辑入口 function Proc(obj) { if (IMouse.IsWheelUp()) { if (QuestWheelNow > 0) QuestWheelNow--; if (LevelPage > 0) LevelPage--; } if (IMouse.IsWheelDown()) { if (QuestWheelNow< QuestWheelMax - 6) QuestWheelNow++; if (LevelPage< 4) LevelPage++; } if (KeyPressNB.isKeyPress(48, "AradPassCloseKey")) { MainState = false; } } } function AradPass(obj) { local RootTab = getroottable(); if (!RootTab.rawin("AradPassCObj")) { local Cobj = AradPassC(); RootTab.rawset("AradPassCObj", Cobj); EventIcon("阿拉德探险记", 43, 43, Cobj); } else { RootTab["AradPassCObj"].Proc(obj); RootTab["AradPassCObj"].Draw(obj); } } if (getroottable().rawin("LenheartFuncTab")) { getroottable()["LenheartFuncTab"].rawset("AradPassFunc", AradPass); } else { local T = {}; T.rawset("AradPassFunc", AradPass); getroottable().rawset("LenheartFuncTab", T); }