Sqr/Plugins/AradPass/AradPass.nut

969 lines
39 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
文件名: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);
}