| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 文件名:CombatRank.nut | 
					
						
							|  |  |  | 路径:Project/CombatRank/CombatRank.nut | 
					
						
							|  |  |  | 创建日期:2024-08-12	20:07 | 
					
						
							|  |  |  | 文件用途:战斗力系统 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CombatRankC extends LenheartNewUI_Windows { | 
					
						
							|  |  |  |     //调试模式 | 
					
						
							|  |  |  |     // DeBugMode = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //默认显示状态需要是关闭 因为要通过收包打开 | 
					
						
							|  |  |  |     Visible = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //排行榜显示的第几页 | 
					
						
							|  |  |  |     Page = 1; | 
					
						
							|  |  |  |     MaxPage = 1; | 
					
						
							|  |  |  |     //当前显示页面的数据对象 | 
					
						
							|  |  |  |     PageInfo = null; | 
					
						
							|  |  |  |     //我的数据 | 
					
						
							|  |  |  |     MyInfo = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //殿堂模特数组 | 
					
						
							|  |  |  |     ShowCharacter = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function GetRankInfo() { | 
					
						
							|  |  |  |         local T = { | 
					
						
							|  |  |  |             op = 20072003, | 
					
						
							|  |  |  |             page = Page | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         SendPackEx(T); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function GetRankInfoCallBack(Chunk) { | 
					
						
							|  |  |  |         PageInfo = null; | 
					
						
							|  |  |  |         local Jso = Json.Decode(Chunk); | 
					
						
							|  |  |  |         PageInfo = Jso.ranking; | 
					
						
							|  |  |  |         MyInfo = PageInfo.pop(); | 
					
						
							|  |  |  |         MyInfo.rank <- Jso.on; | 
					
						
							|  |  |  |         MaxPage = Jso.size; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //如果是在第一页 才会有123名 | 
					
						
							|  |  |  |         if (Page == 1) { | 
					
						
							|  |  |  |             ShowCharacter = array(3); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             for (local i = 0; i< 3; i++) { | 
					
						
							|  |  |  |                 local T = { | 
					
						
							|  |  |  |                     op = 20069001, | 
					
						
							|  |  |  |                     items = PageInfo[i].avaS, | 
					
						
							|  |  |  |                     job = PageInfo[i].job.tointeger(), | 
					
						
							|  |  |  |                     flag = i | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 SendPackEx(T); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //时装 帽子 头部 脸 上衣 下装 鞋子  胸部  腰部  皮肤 光环 | 
					
						
							|  |  |  |     AvatarInfoIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3030, 0x3034]; | 
					
						
							|  |  |  |     creInfoIdx = [0x3068, 0x306C, 0x3070, 0x3074]; | 
					
						
							|  |  |  |     //更换装备事件回调 | 
					
						
							|  |  |  |     function PlayerChanageEquCallBack(Chunk) { | 
					
						
							|  |  |  |         local obj = sq_GetMyMasterCharacter(); | 
					
						
							|  |  |  |         if (!obj) return; | 
					
						
							|  |  |  |         local C_Object = L_sq_RA(0x1ab7cdc); | 
					
						
							|  |  |  |         //记录时装 | 
					
						
							|  |  |  |         local avataritemsbuf = []; | 
					
						
							|  |  |  |         foreach(offset in AvatarInfoIdx) { | 
					
						
							|  |  |  |             local AvatarEquiAddress = L_sq_RA(C_Object + offset); | 
					
						
							|  |  |  |             if (AvatarEquiAddress >= 0x400000) { | 
					
						
							|  |  |  |                 local Ab = []; | 
					
						
							|  |  |  |                 local NormalIndex = L_sq_RA(AvatarEquiAddress + 0x1c); | 
					
						
							|  |  |  |                 local ExIndex = L_sq_RA(AvatarEquiAddress + 0x13E0); | 
					
						
							|  |  |  |                 Ab.append(NormalIndex); | 
					
						
							|  |  |  |                 Ab.append(ExIndex); | 
					
						
							|  |  |  |                 avataritemsbuf.append(Ab); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 local Ab = []; | 
					
						
							|  |  |  |                 Ab.append(0); | 
					
						
							|  |  |  |                 Ab.append(0); | 
					
						
							|  |  |  |                 avataritemsbuf.append(Ab); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         //记录装备 | 
					
						
							|  |  |  |         local equiitemsbuf = []; | 
					
						
							|  |  |  |         local equiupbuf = []; | 
					
						
							|  |  |  |         for (local i = 1; i< 13; ++i) { | 
					
						
							|  |  |  |             //编号 | 
					
						
							|  |  |  |             local Index = L_sq_GetCharacterAttribute(0x1c, i); | 
					
						
							|  |  |  |             //强化 | 
					
						
							|  |  |  |             local Upvalue = L_sq_GetCharacterAttribute(0x1054, i) | 
					
						
							|  |  |  |             //是否有增幅属性 | 
					
						
							|  |  |  |             local IsZf = L_sq_GetCharacterAttribute(0x10A8, i) | 
					
						
							|  |  |  |             //锻造 | 
					
						
							|  |  |  |             local DsUpvalue = L_sq_GetCharacterAttribute(0x10E8, i); | 
					
						
							|  |  |  |             //附魔卡片 | 
					
						
							|  |  |  |             local Enchanting = L_sq_GetCharacterAttribute(0x1084, i); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             equiitemsbuf.append(Index); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             local Info = []; | 
					
						
							|  |  |  |             if (IsZf) { | 
					
						
							|  |  |  |                 Info.append(0); | 
					
						
							|  |  |  |                 Info.append(Upvalue); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 Info.append(Upvalue); | 
					
						
							|  |  |  |                 Info.append(0); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             Info.append(DsUpvalue); | 
					
						
							|  |  |  |             Info.append(Enchanting); | 
					
						
							|  |  |  |             equiupbuf.append(Info); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // print(i); | 
					
						
							|  |  |  |             // print(equiupbuf.len()); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         //记录宠物 | 
					
						
							|  |  |  |         local creitemsbuf = []; | 
					
						
							|  |  |  |         foreach(offset in creInfoIdx) { | 
					
						
							|  |  |  |             local creEquiAddress = L_sq_RA(C_Object + offset); | 
					
						
							|  |  |  |             if (creEquiAddress >= 0x400000) { | 
					
						
							|  |  |  |                 local NormalIndex = L_sq_RA(creEquiAddress + 0x1c); | 
					
						
							|  |  |  |                 creitemsbuf.append(NormalIndex); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 creitemsbuf.append(0); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //记录四维三攻属强i | 
					
						
							|  |  |  |         local Attributes = 0; | 
					
						
							|  |  |  |         Attributes += L_sq_GetCharacterAttribute(0x2364); | 
					
						
							|  |  |  |         Attributes += L_sq_GetCharacterAttribute(0x2394); | 
					
						
							|  |  |  |         Attributes += L_sq_GetCharacterAttribute(0x237c); | 
					
						
							|  |  |  |         Attributes += L_sq_GetCharacterAttribute(0x23ac); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local AttackValue = 0; | 
					
						
							|  |  |  |         AttackValue += L_sq_GetCharacterAttribute(0x1E54); | 
					
						
							|  |  |  |         AttackValue += L_sq_GetCharacterAttribute(0x1E84); | 
					
						
							|  |  |  |         AttackValue += L_sq_GetCharacterAttribute(0x22C8); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local Enhancement = 0; //火冰光暗 大概 | 
					
						
							|  |  |  |         Enhancement += L_sq_GetCharacterAttribute(0x1b54); | 
					
						
							|  |  |  |         Enhancement += L_sq_GetCharacterAttribute(0x1b60); | 
					
						
							|  |  |  |         Enhancement += L_sq_GetCharacterAttribute(0x1b78); | 
					
						
							|  |  |  |         Enhancement += L_sq_GetCharacterAttribute(0x1b6c); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local T = { | 
					
						
							|  |  |  |             op = 20072001, | 
					
						
							|  |  |  |             ava = avataritemsbuf, | 
					
						
							|  |  |  |             equ = equiitemsbuf, | 
					
						
							|  |  |  |             sw = Attributes, | 
					
						
							|  |  |  |             atk = AttackValue, | 
					
						
							|  |  |  |             ele = Enhancement, | 
					
						
							|  |  |  |             cre = creitemsbuf, | 
					
						
							|  |  |  |             job = sq_getJob(obj), | 
					
						
							|  |  |  |             exjob = sq_getGrowType(obj), | 
					
						
							|  |  |  |             name = L_Sq_GetObjectName(obj), | 
					
						
							|  |  |  |             equUp = equiupbuf | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         SendPackEx(T); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ChanageCombat = null; | 
					
						
							|  |  |  |     MyCombat = null; | 
					
						
							|  |  |  |     DrawAniTimeFlag = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function PlayerCombatChanageCallBack(Chunk) { | 
					
						
							|  |  |  |         local Jso = Json.Decode(Chunk); | 
					
						
							|  |  |  |         //战斗力变动 绘制动画 | 
					
						
							|  |  |  |         if (Jso.Combat != 0) { | 
					
						
							|  |  |  |             ChanageCombat = Jso.Combat; | 
					
						
							|  |  |  |             MyCombat = Jso.zdlS; | 
					
						
							|  |  |  |             DrawAniTimeFlag = Clock(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | 
					
						
							|  |  |  |         Childrens = []; | 
					
						
							|  |  |  |         //注册控件 | 
					
						
							|  |  |  |         RegisterWidget(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Pack_Control.rawset(20069002, GetAvatarDrawInfoCallBack.bindenv(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Pack_Control.rawset(20072004, GetRankInfoCallBack.bindenv(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Pack_Control.rawset(20072002, PlayerCombatChanageCallBack.bindenv(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Pack_Control.rawset(20072102, PlayerChanageEquCallBack.bindenv(this)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //上传自身信息 | 
					
						
							|  |  |  |         PlayerChanageEquCallBack(1); | 
					
						
							|  |  |  |         //获取排行榜信息 | 
					
						
							|  |  |  |         GetRankInfo(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function GetAvatarDrawInfoCallBack(Chunk) { | 
					
						
							|  |  |  |         local Jso = Json.Decode(Chunk); | 
					
						
							|  |  |  |         local ZlibStr = Jso.ZipS; | 
					
						
							|  |  |  |         Jso.ZipS = Json.Decode(L_sq_Dezlib(Jso.ZipS)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local DrawAniArr = []; | 
					
						
							|  |  |  |         foreach(DrawObj in Jso.ZipS.MoniPack) { | 
					
						
							|  |  |  |             local FrameArr = []; | 
					
						
							|  |  |  |             foreach(Buf in DrawObj.F) { | 
					
						
							|  |  |  |                 local T = { | 
					
						
							|  |  |  |                     ImgIndex = Buf[0], | 
					
						
							|  |  |  |                     Delay = Buf[1], | 
					
						
							|  |  |  |                     Pos = [Buf[2], Buf[3]] | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 FrameArr.append(T); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             local Ani = Lenheart_Ani(DrawObj.B, FrameArr, [400, 400]); | 
					
						
							|  |  |  |             DrawAniArr.append(Ani); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         ShowCharacter[Jso.ZipS.flag] = DrawAniArr; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     chrobj = null; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function GetAvatarDrawInfo(obj) { | 
					
						
							|  |  |  |         local C_Object = L_Sq_GetObjectAddress(obj); | 
					
						
							|  |  |  |         // 武器 帽子 头部 脸 上衣 下装 鞋子  胸部  腰部  皮肤 光环 | 
					
						
							|  |  |  |         local AvatarIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3030, 0x3034]; | 
					
						
							|  |  |  |         local itemsbuf = []; | 
					
						
							|  |  |  |         foreach(offset in AvatarIdx) { | 
					
						
							|  |  |  |             local AvatarEquiAddress = L_sq_RA(C_Object + offset); | 
					
						
							|  |  |  |             if (AvatarEquiAddress >= 0x400000) { | 
					
						
							|  |  |  |                 local Ab = []; | 
					
						
							|  |  |  |                 local NormalIndex = L_sq_RA(AvatarEquiAddress + 0x1c); | 
					
						
							|  |  |  |                 local ExIndex = L_sq_RA(AvatarEquiAddress + 0x13E0); | 
					
						
							|  |  |  |                 Ab.append(NormalIndex); | 
					
						
							|  |  |  |                 Ab.append(ExIndex); | 
					
						
							|  |  |  |                 itemsbuf.append(Ab); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function RegisterWidget() { | 
					
						
							|  |  |  |         //关闭按钮 | 
					
						
							|  |  |  |         local CloseButton = LenheartNewUI_BaseButton(520, 2, 11, 12, "interface/lenheartwindowcommon.img", 276); | 
					
						
							|  |  |  |         CloseButton.OnClick = function() { | 
					
						
							|  |  |  |             this.Visible = false; | 
					
						
							|  |  |  |         }.bindenv(this); | 
					
						
							|  |  |  |         Childrens.append(CloseButton); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //左按钮 | 
					
						
							|  |  |  |         local LeftButton = LenheartNewUI_BaseButton(236, 500, 12, 9, "interface/lenheartwindowcommon.img", 511); | 
					
						
							|  |  |  |         LeftButton.OnClick = function() { | 
					
						
							|  |  |  |             if (Page > 1) Page--; | 
					
						
							|  |  |  |         }.bindenv(this); | 
					
						
							|  |  |  |         Childrens.append(LeftButton); | 
					
						
							|  |  |  |         //关闭按钮 | 
					
						
							|  |  |  |         local RightButton = LenheartNewUI_BaseButton(304, 500, 12, 9, "interface/lenheartwindowcommon.img", 521); | 
					
						
							|  |  |  |         RightButton.OnClick = function() { | 
					
						
							|  |  |  |             if (Page< MaxPage) Page++; | 
					
						
							|  |  |  |         }.bindenv(this); | 
					
						
							|  |  |  |         Childrens.append(RightButton); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //绘制主界面 | 
					
						
							|  |  |  |     function DrawMain(obj) { | 
					
						
							|  |  |  |         if (!PageInfo) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //窗口 | 
					
						
							|  |  |  |         L_sq_DrawImg("interface/rindro/new_rank.img", 0, X, Y); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //排名图标 | 
					
						
							|  |  |  |         L_sq_DrawImg("interface2/hud/information_button/information_button_cn.img", 136, X + 5, Y + 295); | 
					
						
							|  |  |  |         for (local i = 0; i< PageInfo.len(); i++) { | 
					
						
							|  |  |  |             local StrBuf = (i + 1 + (Page - 1) * 10).tostring(); | 
					
						
							|  |  |  |             L_sq_DrawCode(StrBuf, X + 16 - LenheartTextClass.GetStringLength(StrBuf) / 2, Y + 318 + (i * 16), sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         //职业 | 
					
						
							|  |  |  |         L_sq_DrawCode("职业", X + 58, Y + 299, sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  |         //角色名 | 
					
						
							|  |  |  |         L_sq_DrawCode("角色名", X + 152, Y + 299, sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  |         //公会名 | 
					
						
							|  |  |  |         L_sq_DrawCode("公会名", X + 280, Y + 299, sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  |         //战斗力 | 
					
						
							|  |  |  |         L_sq_DrawCode("战斗力", X + 438, Y + 299, sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //绘制页数 | 
					
						
							|  |  |  |         local PageStr = (Page + "/" + MaxPage); | 
					
						
							|  |  |  |         L_sq_DrawCode(PageStr, X + 276 - LenheartTextClass.GetStringLength(PageStr) / 2, Y + 499, sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach(Index, CharObj in PageInfo) { | 
					
						
							|  |  |  |             //绘制职业 | 
					
						
							|  |  |  |             L_sq_DrawCode(CharObj.jobname, X + 70 - LenheartTextClass.GetStringLength(CharObj.jobname) / 2, Y + 318 + (Index * 16), sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //绘制角色名 | 
					
						
							|  |  |  |             L_sq_DrawCode(CharObj.name, X + 169 - LenheartTextClass.GetStringLength(CharObj.name) / 2, Y + 318 + (Index * 16), sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             local GuildName = "无公会"; | 
					
						
							|  |  |  |             //绘制公会名 | 
					
						
							|  |  |  |             if ("guildname" in CharObj) { | 
					
						
							|  |  |  |                 GuildName = CharObj.guildname; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             L_sq_DrawCode(GuildName, X + 298 - LenheartTextClass.GetStringLength(GuildName) / 2, Y + 318 + (Index * 16), sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //绘制战斗力 | 
					
						
							|  |  |  |             L_sq_DrawCode(CharObj.zdlS, X + 456 - LenheartTextClass.GetStringLength(CharObj.zdlS) / 2, Y + 318 + (Index * 16), sq_RGBA(179, 169, 135, 255), 0, 1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //绘制我自己 | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             local StrBuf = (MyInfo.rank).tostring(); | 
					
						
							|  |  |  |             L_sq_DrawCode(StrBuf, X + 16 - LenheartTextClass.GetStringLength(StrBuf) / 2, Y + 321 + 160, sq_RGBA(229, 180, 83, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //绘制职业 | 
					
						
							|  |  |  |             L_sq_DrawCode(MyInfo.jobname, X + 70 - LenheartTextClass.GetStringLength(MyInfo.jobname) / 2, Y + 321 + 160, sq_RGBA(229, 180, 83, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //绘制角色名 | 
					
						
							|  |  |  |             L_sq_DrawCode(MyInfo.name, X + 169 - LenheartTextClass.GetStringLength(MyInfo.name) / 2, Y + 321 + 160, sq_RGBA(229, 180, 83, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             local GuildName = "无公会"; | 
					
						
							|  |  |  |             //绘制公会名 | 
					
						
							|  |  |  |             if ("guildname" in MyInfo) { | 
					
						
							|  |  |  |                 GuildName = MyInfo.guildname; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             L_sq_DrawCode(GuildName, X + 298 - LenheartTextClass.GetStringLength(GuildName) / 2, Y + 321 + 160, sq_RGBA(229, 180, 83, 255), 0, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //绘制战斗力 | 
					
						
							|  |  |  |             L_sq_DrawCode(MyInfo.zdlS, X + 456 - LenheartTextClass.GetStringLength(MyInfo.zdlS) / 2, Y + 321 + 160, sq_RGBA(229, 180, 83, 255), 0, 1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (ShowCharacter) { | 
					
						
							|  |  |  |             foreach(Index, AniDrawObj in ShowCharacter) { | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |                 try { | 
					
						
							|  |  |  |                     local OffsetX = 270; | 
					
						
							|  |  |  |                     local OffsetY = 268; | 
					
						
							|  |  |  |                     if (Index == 1) { | 
					
						
							|  |  |  |                         OffsetX = 130; | 
					
						
							|  |  |  |                         OffsetY = 268; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     if (Index == 2) { | 
					
						
							|  |  |  |                         OffsetX = 410; | 
					
						
							|  |  |  |                         OffsetY = 268; | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |                     } | 
					
						
							| 
									
										
										
										
											2025-05-27 21:24:22 +08:00
										 |  |  |                     if (AniDrawObj) { | 
					
						
							|  |  |  |                         foreach(AniObj in AniDrawObj) { | 
					
						
							|  |  |  |                             AniObj.X = X + OffsetX; | 
					
						
							|  |  |  |                             AniObj.Y = Y + OffsetY; | 
					
						
							|  |  |  |                             AniObj.Show(Duration); | 
					
						
							|  |  |  |                         } | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } catch (exception) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-16 17:09:36 +08:00
										 |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     AlphaValue = 1.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function DrawImg(Path, Index, XPos, YPos, rate) { | 
					
						
							|  |  |  |         L_sq_DrawImg(Path, Index, XPos, YPos, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), rate, rate); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     NormalNumOffset = [22, 11, 22, 21, 21, 21, 22, 19, 22, 21]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function DrawCombatNormal(Num) { | 
					
						
							|  |  |  |         local XLength = 0; | 
					
						
							|  |  |  |         foreach(ac in Num) { | 
					
						
							|  |  |  |             local Idx = (ac - 48).tointeger(); | 
					
						
							|  |  |  |             XLength += NormalNumOffset[Idx]; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local NumOffset = { | 
					
						
							|  |  |  |             X = ((getroottable().Rindro_Scr_Width - 55) / 2).tointeger(), | 
					
						
							|  |  |  |             Y = 473 | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |         NumOffset.X -= XLength; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local Xoffset = 0; | 
					
						
							|  |  |  |         foreach(index, value in Num) { | 
					
						
							|  |  |  |             local Idx = (value - 48).tointeger(); | 
					
						
							|  |  |  |             DrawImg("interface/rindro/new_ranknum.img", 10 + Idx, NumOffset.X + Xoffset, NumOffset.Y, 1.0); | 
					
						
							|  |  |  |             Xoffset += (NormalNumOffset[Idx]); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function DrawCombatChanage(Num, type) { | 
					
						
							|  |  |  |         DrawImg("interface/rindro/new_rank.img", type ? 4 : 3, ((getroottable().Rindro_Scr_Width - 55) / 2).tointeger() + 60, 478, 0.5); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local NumOffset = { | 
					
						
							|  |  |  |             X = ((getroottable().Rindro_Scr_Width - 55) / 2).tointeger() + 80, | 
					
						
							|  |  |  |             Y = 473 | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local Xoffset = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         local ImgType = 30; | 
					
						
							|  |  |  |         if (type) ImgType = 40; | 
					
						
							|  |  |  |         foreach(index, value in Num) { | 
					
						
							|  |  |  |             local Idx = (value - 48).tointeger(); | 
					
						
							|  |  |  |             DrawImg("interface/rindro/new_ranknum.img", ImgType + Idx, NumOffset.X + Xoffset, NumOffset.Y, 1.0); | 
					
						
							|  |  |  |             Xoffset += (NormalNumOffset[Idx]); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function DrawCombat() { | 
					
						
							|  |  |  |         if (DrawAniTimeFlag) { | 
					
						
							|  |  |  |             local NowTime = Clock(); | 
					
						
							|  |  |  |             if ((NowTime - DrawAniTimeFlag) >= 2000) { | 
					
						
							|  |  |  |                 ChanageCombat = null; | 
					
						
							|  |  |  |                 MyCombat = null; | 
					
						
							|  |  |  |                 DrawAniTimeFlag = null; | 
					
						
							|  |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             local PlayT = (NowTime - DrawAniTimeFlag); | 
					
						
							|  |  |  |             AlphaValue = sq_GetUniformVelocity(300, 30, PlayT, 2000).tofloat() / 100.0; | 
					
						
							|  |  |  |             if (AlphaValue > 1.0) AlphaValue = 1.0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             local IconOffset = { | 
					
						
							|  |  |  |                 X = ((getroottable().Rindro_Scr_Width - 55) / 2).tointeger(), | 
					
						
							|  |  |  |                 Y = 450 | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |             L_sq_SetDrawImgModel(2, 0); | 
					
						
							|  |  |  |             L_sq_DrawImg("interface/rindro/new_rank.img", 2, IconOffset.X, IconOffset.Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 0.5, 0.5); | 
					
						
							|  |  |  |             L_sq_ReleaseDrawImgModel(); | 
					
						
							|  |  |  |             L_sq_DrawImg("interface/rindro/new_rank.img", 1, IconOffset.X + 5, IconOffset.Y + 6, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 0.5, 0.5); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (PlayT <= 300) { | 
					
						
							|  |  |  |                 local Str = (MyCombat[0] - 48).tostring(); | 
					
						
							|  |  |  |                 for (local i = 0; i< MyCombat.len(); i++) { | 
					
						
							|  |  |  |                     if (i != 0) Str += (sq_getRandom(0, 9)); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 DrawCombatNormal(Str); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 DrawCombatNormal(MyCombat); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             DrawCombatChanage(abs(ChanageCombat).tostring(), (ChanageCombat > 0) ? false : true); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function Show(obj) { | 
					
						
							|  |  |  |         DrawMain(obj); | 
					
						
							|  |  |  |         LenheartNewUI_Windows.Show(obj); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (Visible) { | 
					
						
							|  |  |  |             DrawCombat(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //逻辑入口 | 
					
						
							|  |  |  |     function Proc(obj) { | 
					
						
							|  |  |  |         LenheartNewUI_Windows.SyncPos(X, Y); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!Visible) { | 
					
						
							|  |  |  |             DrawCombat(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         MainState = Visible; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     MainState = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function OpenCallBack() { | 
					
						
							|  |  |  |         Visible = true; | 
					
						
							|  |  |  |         ResetFocus(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //上传自身信息 | 
					
						
							|  |  |  |         PlayerChanageEquCallBack(1); | 
					
						
							|  |  |  |         //获取排行榜信息 | 
					
						
							|  |  |  |         GetRankInfo(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | getroottable().rawdelete("CombatRankC_Obj"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function Lenheart_CombatRank_New(obj) { | 
					
						
							|  |  |  |     local RootTab = getroottable(); | 
					
						
							|  |  |  |     if (!RootTab.rawin("CombatRankC_Obj")) { | 
					
						
							|  |  |  |         RootTab.rawset("CombatRankC_Obj", true); | 
					
						
							|  |  |  |         local Winobj = LenheartNewUI_CreateWindow(CombatRankC, "新战力排行榜窗口", ((getroottable().Rindro_Scr_Width - 542) / 2).tointeger(), 28, 542, 515, 28); | 
					
						
							|  |  |  |         EventList_Obj.AddEvent("荣誉殿堂", 136, Winobj, "interface2/hud/information_button/information_button_cn.img"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (getroottable().rawin("LenheartFuncTab")) { | 
					
						
							|  |  |  |     getroottable()["LenheartFuncTab"].rawset("Lenheart_CombatRank_NewFunc", Lenheart_CombatRank_New); | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     local T = {}; | 
					
						
							|  |  |  |     T.rawset("Lenheart_CombatRank_NewFunc", Lenheart_CombatRank_New); | 
					
						
							|  |  |  |     getroottable().rawset("LenheartFuncTab", T); | 
					
						
							|  |  |  | } |