From b336d61914262a44e496bd75bdb686234e73a1bc Mon Sep 17 00:00:00 2001 From: Lenheart <947330670@qq.com> Date: Wed, 16 Jul 2025 15:21:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E5=8A=9B=E6=8E=92=E8=A1=8C=E6=A6=9C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=B7=B1=E6=88=98=E5=8A=9B=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=92=8C=E8=BF=94=E5=9B=9E=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/TH_CombatRank/TH_CombatRank.nut | 149 +++++++++++++++++++----- 1 file changed, 123 insertions(+), 26 deletions(-) diff --git a/Project/TH_CombatRank/TH_CombatRank.nut b/Project/TH_CombatRank/TH_CombatRank.nut index edde536..cc050c6 100644 --- a/Project/TH_CombatRank/TH_CombatRank.nut +++ b/Project/TH_CombatRank/TH_CombatRank.nut @@ -28,14 +28,16 @@ class TH_CombatRankC extends LenheartNewUI_Windows { CombatInfoList = null; //个人奖励集合 PersonReward = null; - //个人排行人物 - CharacShow = null; //查看中的详细个人信息 LookingInfo = null; + //我的战力 + MyCombat = null; + //公会奖励集合 GuildReward = null; GuildFlagData = null; + GuildFlagImgMap = null; //公会战力集合 GuildInfoList = null; @@ -82,28 +84,30 @@ class TH_CombatRankC extends LenheartNewUI_Windows { local Jso = Json.Decode(Chunk); GuildReward = Jso["config"]; GuildFlagData = {}; + GuildFlagImgMap = {}; foreach(object in Jso["config2"]) { GuildFlagData.rawset(object.guildId, [object.img, object.imgid]); } }.bindenv(this)); - //查询个人战力排行榜包 RegisterPack(20096004, function(Chunk) { local Jso = Json.Decode(Chunk); local ranking = Jso.ranking; CombatInfoList = []; - CharacShow = []; foreach(Pos, Info in ranking) { - local CharacDraw = Rindro_Draw_Character(Info.job.tointeger(), Info.avaS, "rest.ani", null) - CharacShow.append(CharacDraw); - + //补全默认公会 if (!Info.rawin("guildname")) Info.guildname <- "无公会"; + //构造显示对象 local Buf = TH_CombatRankC_Item(this, Pos, Info, 0); - Buf.CharacShow = CharacDraw; CombatInfoList.append(Buf); } + + //构造我自己 + if(!Jso.my.rawin("guildname")) Jso.my.guildname <- "无公会"; + MyCombat = TH_CombatRankC_Item(this, 900, Jso.my, 0); + MyCombat.Idx = Jso.on - 1; }.bindenv(this)); RegisterPack(20096006, function(Chunk) { @@ -120,10 +124,18 @@ class TH_CombatRankC extends LenheartNewUI_Windows { CheckGuildCombatPower(); UploadYourOwnCombatPower(); + + } - function RegisterWidget() { + //返回按钮 + local ReturnButton = LenheartNewUI_BaseButton(506, 6, 11, 12, "interface/lenheartwindowcommon.img", 540); + ReturnButton.OnClick = function() { + LookingInfo = null; + }.bindenv(this); + Childrens.append(ReturnButton); + //关闭按钮 local CloseButton = LenheartNewUI_BaseButton(521, 2, 11, 12, "interface/lenheartwindowcommon.img", 276); CloseButton.OnClick = function() { @@ -139,7 +151,9 @@ class TH_CombatRankC extends LenheartNewUI_Windows { FuncTabbar1.OnClick = function() { TitleButtonList[1].State = 0; TitleButtonList[0].State = 1; + TitleButtonList[2].State = 0; Page = 0; + LookingInfo = null; ScrollBar.Reset(); }.bindenv(this); TitleButtonList.append(FuncTabbar1); @@ -150,11 +164,26 @@ class TH_CombatRankC extends LenheartNewUI_Windows { FuncTabbar2.OnClick = function() { TitleButtonList[0].State = 0; TitleButtonList[1].State = 1; + TitleButtonList[2].State = 0; Page = 1; + LookingInfo = null; ScrollBar.Reset(); }.bindenv(this); TitleButtonList.append(FuncTabbar2); + local FuncTabbar3 = LenheartNewUI_TabbarsText(476, 23, "我的战力"); + FuncTabbar3.SetTextOffset(8, 4); + AddChild(FuncTabbar3); + FuncTabbar3.OnClick = function() { + TitleButtonList[0].State = 0; + TitleButtonList[1].State = 0; + TitleButtonList[2].State = 1; + Page = 0; + LookingInfo = MyCombat; + ScrollBar.Reset(); + }.bindenv(this); + TitleButtonList.append(FuncTabbar3); + ScrollBar = Yosin_ScrollBar(530, 315, 198, 50); ScrollBar.SetParent(this); ScrollBar.SetStep(20 / 100.0); @@ -190,9 +219,11 @@ class TH_CombatRankC extends LenheartNewUI_Windows { releaseClip(); //裁切结束 //绘制前三名 - if (CharacShow) { + if (CombatInfoList) { for (local i = 0; i< 3; i++) { - local CharacObj = CharacShow[i]; + //如果不足3个 + if (i >= CombatInfoList.len()) break; + local OffsetX = 270; local OffsetY = 268; if (i == 1) { @@ -203,7 +234,7 @@ class TH_CombatRankC extends LenheartNewUI_Windows { OffsetX = 410; OffsetY = 268; } - if (!LookingInfo || i != LookingInfo.Idx) CharacObj.Draw(X + OffsetX, Y + OffsetY); + if(!LookingInfo || LookingInfo.Idx != i)CombatInfoList[i].ShowCharacter(X + OffsetX, Y + OffsetY); } } @@ -213,28 +244,32 @@ class TH_CombatRankC extends LenheartNewUI_Windows { Img["information_button_cn"].DrawPng(136, X + 5, Y + 295); T_DrawDynamicAni(obj, "ui/selectcharacter/animation/selectcharactereffect.ani", X + 15, Y + 50, "桃花战斗力角色背景光环"); Img["main"].DrawPng(8, X + 30, Y + 160); - LookingInfo.CharacShow.Draw(X + 80, Y + 248); + // LookingInfo.CharacShow.Draw(X + 80, Y + 248); + LookingInfo.ShowCharacter(X + 80, Y + 248); + local YPosBuffer = Y - 5; + //排名 + L_sq_DrawCode("排名: " + (LookingInfo.Idx + 1), X + 150, YPosBuffer + 60, sq_RGBA(230, 200, 155, 255), 0, 1); //角色名 - L_sq_DrawCode("角色名: " + LookingInfo.Info.name, X + 150, Y + 60, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("角色名: " + LookingInfo.Info.name, X + 150, YPosBuffer + 78, sq_RGBA(230, 200, 155, 255), 0, 1); //职业 - L_sq_DrawCode("角色职业: " + LookingInfo.Info.jobname, X + 150, Y + 78, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("角色职业: " + LookingInfo.Info.jobname, X + 150, YPosBuffer+ 96, sq_RGBA(230, 200, 155, 255), 0, 1); //等级 - L_sq_DrawCode("角色等级: " + LookingInfo.Info.level, X + 150, Y + 96, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("角色等级: " + LookingInfo.Info.level, X + 150, YPosBuffer + 114, sq_RGBA(230, 200, 155, 255), 0, 1); //公会名 - L_sq_DrawCode("所属公会: " + LookingInfo.Info.guildname, X + 150, Y + 114, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("所属公会: " + LookingInfo.Info.guildname, X + 150, YPosBuffer + 132, sq_RGBA(230, 200, 155, 255), 0, 1); //是否在线 - L_sq_DrawCode("当前状态: " + (LookingInfo.Info.isOnline ? "在线" : "离线"), X + 150, Y + 132, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("当前状态: " + (LookingInfo.Info.isOnline ? "在线" : "离线"), X + 150, YPosBuffer + 150, sq_RGBA(230, 200, 155, 255), 0, 1); //战斗力 - L_sq_DrawCode("战斗力: " + LookingInfo.Info.zdlS, X + 150, Y + 150, sq_RGBA(230, 200, 155, 255), 0, 1); - L_sq_DrawCode("-- 基础战斗力: " + LookingInfo.Info.jczdlS, X + 150, Y + 168, sq_RGBA(179, 169, 135, 255), 0, 1); - L_sq_DrawCode(" 四维: " + LookingInfo.Info.swzldS, X + 150, Y + 186, sq_RGBA(179, 169, 135, 255), 0, 1); - L_sq_DrawCode(" 三攻: " + LookingInfo.Info.sgzldS, X + 150, Y + 204, sq_RGBA(179, 169, 135, 255), 0, 1); - L_sq_DrawCode(" 属强: " + LookingInfo.Info.sqzldS, X + 150, Y + 222, sq_RGBA(179, 169, 135, 255), 0, 1); - L_sq_DrawCode(" 其他: " + LookingInfo.Info.qtzldS, X + 150, Y + 240, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode("战斗力: " + LookingInfo.Info.zdlS, X + 150, YPosBuffer+ 168, sq_RGBA(230, 200, 155, 255), 0, 1); + L_sq_DrawCode("-- 基础战斗力: " + LookingInfo.Info.jczdlS, X + 150, YPosBuffer + 186, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode(" 四维: " + LookingInfo.Info.swzldS, X + 150, YPosBuffer + 204, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode(" 三攻: " + LookingInfo.Info.sgzldS, X + 150, YPosBuffer + 222, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode(" 属强: " + LookingInfo.Info.sqzldS, X + 150, YPosBuffer + 240, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode(" 其他: " + LookingInfo.Info.qtzldS, X + 150, YPosBuffer + 258, sq_RGBA(179, 169, 135, 255), 0, 1); - L_sq_DrawCode("-- 魂石战斗力: " + LookingInfo.Info.fstS, X + 150, Y + 258, sq_RGBA(179, 169, 135, 255), 0, 1); + L_sq_DrawCode("-- 魂石战斗力: " + LookingInfo.Info.fstS, X + 150, YPosBuffer + 276, sq_RGBA(179, 169, 135, 255), 0, 1); } } @@ -256,6 +291,35 @@ class TH_CombatRankC extends LenheartNewUI_Windows { } } releaseClip(); //裁切结束 + + if (GuildInfoList) { + for (local i = 0; i< 3; i++) { + if (GuildInfoList.len() <= i) break; + + local OffsetX = 270; + local OffsetY = 268; + if (i == 1) { + OffsetX = 130; + OffsetY = 268; + } + if (i == 2) { + OffsetX = 410; + OffsetY = 268; + } + + local Object = GuildInfoList[i]; + local GuildId = Object.Info.guildId; + if (GuildFlagData.rawin(GuildId)) { + local Info = GuildFlagData[GuildId]; + if (!GuildFlagImgMap.rawin(Info[0])) { + GuildFlagImgMap[Info[0]] <- Rindro_Image(Info[0]); + } + GuildFlagImgMap[Info[0]].DrawPng(0, X + OffsetX, Y + OffsetY); + } else { + Img["main"].DrawPng(3, X + OffsetX, Y + OffsetY); + } + } + } } } @@ -317,10 +381,12 @@ class TH_CombatRankC extends LenheartNewUI_Windows { //上传自身战斗力 //时装 帽子 头部 脸 上衣 下装 鞋子 胸部 腰部 皮肤 光环 + // AvatarInfoIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3034]; AvatarInfoIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3030, 0x3034]; creInfoIdx = [0x3068, 0x306C, 0x3070, 0x3074]; function UploadYourOwnCombatPower() { + if (sq_GetCurrentModuleType() != 1) return; local obj = sq_GetMyMasterCharacter(); if (!obj) return; local C_Object = L_sq_RA(0x1ab7cdc); @@ -334,6 +400,20 @@ class TH_CombatRankC extends LenheartNewUI_Windows { local ExIndex = L_sq_RA(AvatarEquiAddress + 0x13E0); Ab.append(NormalIndex); Ab.append(ExIndex); + //皮肤默认给默认皮肤 这里先注释 + // if (offset == 0x3030) { + // if (sq_getJob(obj) == 0) Ab = [42200, 0]; + // else if (sq_getJob(obj) == 1) Ab = [46200, 0]; + // else if (sq_getJob(obj) == 2) Ab = [50200, 0]; + // else if (sq_getJob(obj) == 3) Ab = [54200, 0]; + // else if (sq_getJob(obj) == 4) Ab = [58200, 0]; + // else if (sq_getJob(obj) == 5) Ab = [1680000, 0]; + // else if (sq_getJob(obj) == 6) Ab = [1800000, 0]; + // else if (sq_getJob(obj) == 7) Ab = [29205, 0]; + // else if (sq_getJob(obj) == 8) Ab = [2150000, 0]; + // else if (sq_getJob(obj) == 9) Ab = [42200, 0]; + // else if (sq_getJob(obj) == 10) Ab = [2190081, 0]; + // } avataritemsbuf.append(Ab); } else { local Ab = []; @@ -473,6 +553,7 @@ class TH_CombatRankC_Item { this.Type = Type; } + function Show(X, Y) { if (Idx< 3) { @@ -530,6 +611,22 @@ class TH_CombatRankC_Item { } } + function ShowCharacter(X, Y) { + //没有正在查看的对象的时候才绘制人物 + // if (!Parent.LookingInfo) { + if(!CharacShow)StructureCharacAni(); + CharacShow.Draw(X, Y); + // } + } + + function StructureCharacAni() { + local AvaList = []; + foreach(Ava in Info.avaS) { + if (Ava != 0) AvaList.append(Ava); + } + CharacShow = Rindro_Draw_Character(Info.job.tointeger(), AvaList, "rest.ani", null); + } + function OnMouseLbDown(X, Y) { if (this.Type == 0) { if (Y <= (Parent.Y + 316 + 196) && Y >= (Parent.Y + 316)) { @@ -537,4 +634,4 @@ class TH_CombatRankC_Item { } } } -} \ No newline at end of file +}