/* 文件名:antondungeoninfo.nut 路径:Plugins/Anton/antondungeoninfo.nut 创建日期:2022-09-13 15:21 文件用途:安图恩攻坚中 信息 */ class AntonDungeonInfoControl_C extends BasicsDrawTool { X = 0; Y = 0; State = -1; //安图恩攻坚状态 PageState = 0; //攻坚信息面板展开状态 MouseTask = 0; //鼠标类型事件 OpenMainButtonObject = null; //展开攻坚信息按钮 FightMaxTime = null; //剩余时间最大值 FightTimer = null; //剩余时间计时器 PartyMove_SelectDungeon_Button = null; //小队移动选择地下城按钮 PartyMove_ReturnTown_Button = null; //PartyMove_ReturnTown_Button ReturnTwonFlag = 0; //返回城镇的flag DrawStartAniMark = false; //开始攻坚动画Mark //1阶段对象 HeiWuObject = null; //黑雾之源对象 JianPaoObject = null; //舰炮防御战对象 JianPaoTimer = null; //舰炮时间容器对象 ZhenChan_A_Object = null; //震颤A对象 ZhenChan_A_Timer = null; //震颤A时间容器对象 ZhenChan_B_Object = null; //震颤B对象 ZhenChan_B_Timer = null; //震颤B时间容器对象 QingTian_A_Object = null; //擎天A对象 QingTian_B_Object = null; //擎天B对象 //2阶段对象 NengLiangObject = null; //能源阻截站对象 HuoShanObject = null; //黑色火山对象 FuHua1_Object = null; //孵化1对象 FuHua1_Timer = null; //孵化1时间容器对象 FuHua2_Object = null; //孵化2对象 FuHua2_Timer = null; //孵化2时间容器对象 FuHua3_Object = null; //孵化3对象 FuHua3_Timer = null; //孵化3时间容器对象 FuHua4_Object = null; //孵化4对象 FuHua4_Timer = null; //孵化4时间容器对象 XinZang_Object = null; //心脏对象 MapIndexTable = null; //判断孵化进入的操作表 MapMoveMark = false; //副本中移动的标志 HuoShanMonserTable = null; //火山怪物投放表 Reward_Object = null; //奖励包 AllReward_Object = null; //全体奖励包 Reward_Timer_Object = null; //奖励包时间对象 Reward_Info = null; //通过时间和复活币使用量 //安图恩攻坚信息包 function ReadAntonDungeonInfoPack(chunk) { Sout("\n\n收到安图恩攻坚信息包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("AntonDungeonInfoJson"); //自动判断清空 local JsonObj = Json_STL("AntonDungeonInfoJson"); RootTab.rawset("AntonDungeonInfoJson", JsonObj); RootTab["AntonDungeonInfoJson"].Parse(chunk, 0, false); //告诉副本类开始计时 if (RootTab.rawin("ANTONDUNGEONINFOCONTROL")) { local Cobj = RootTab["ANTONDUNGEONINFOCONTROL"]; Cobj.FightMaxTime = JsonObj.Get("JiShiQi->GongJian_End_ShiJian"); if (Cobj.FightTimer) { Cobj.FightTimer.Delete(); } //时间倒计时开始 Cobj.FightTimer = TimeSTL("FightTimer", Cobj.FightMaxTime); Cobj.FightTimer.Reset(); Cobj.FightTimer.Start(); //同步攻坚状态 Cobj.State = JsonObj.Get("Party_State") - 1; //一阶段收包机制 if (Cobj.State == 0) { //黑雾之源收包 { Cobj.HeiWuObject = null; if (JsonObj.Get("HeiWu_State") != false) { //得到副本剩余生命 local gClearNumber = 4 - JsonObj.Get("HeiWu_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("HeiWu_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("HeiWu_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("HeiWu_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("HeiWu_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("HeiWu_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.HeiWuObject = { Name = "heiwu", NameImg = 0, X = 78, Y = 330, BloodType = 4, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 0, }; } else { Cobj.HeiWuObject = { Name = "heiwu", X = 78, Y = 330, ClearNumber = 0, }; } } } //舰炮防御战收包 { Cobj.JianPaoObject = null; if (JsonObj.Get("JianPao_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("JianPao_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("JianPao_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("JianPao_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("JianPao_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("JianPao_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("JianPao_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果舰炮时间容器存在则先删除他 if (Cobj.JianPaoTimer) Cobj.JianPaoTimer.Delete(); Cobj.JianPaoTimer = null; Cobj.JianPaoTimer = TimeSTL("JianPaoTimer", JsonObj.Get("JiShiQi->JianPao_BaoZhaShiJian")); Cobj.JianPaoTimer.Start(); Cobj.JianPaoObject = { Name = "jianpao", NameImg = 1, X = 334, Y = 200, BloodType = 1, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 3, Reload = 1, Timer = Cobj.JianPaoTimer, TimeMax = JsonObj.Get("JiShiQi->JianPaoBaoZha_Zong"), TimeOffset = JsonObj.Get("JiShiQi->JianPao_BaoZhaShiJian"), }; } else { //如果舰炮时间容器存在则先删除他 if (Cobj.JianPaoTimer) Cobj.JianPaoTimer.Delete(); Cobj.JianPaoTimer = null; Cobj.JianPaoTimer = TimeSTL("JianPaoTimer", JsonObj.Get("JiShiQi->JianPao_FuHuoShiJian")); Cobj.JianPaoTimer.Start(); Cobj.JianPaoObject = { Name = "jianpao", X = 334, Y = 200, ClearNumber = 0, Reload = 1, Timer = Cobj.JianPaoTimer, TimeMax = JsonObj.Get("JiShiQi->JianPaoFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->JianPao_FuHuoShiJian"), }; } } } //震颤A收包 { Cobj.ZhenChan_A_Object = null; if (JsonObj.Get("ZhenChan_A_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("ZhenChan_A_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("ZhenChan_A_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("ZhenChan_A_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("ZhenChan_A_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("ZhenChan_A_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("ZhenChan_A_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果震颤A时间容器存在则先删除他 if (Cobj.ZhenChan_A_Timer) Cobj.ZhenChan_A_Timer.Delete(); Cobj.ZhenChan_A_Timer = null; Cobj.ZhenChan_A_Timer = TimeSTL("ZhenChan_A_Timer", JsonObj.Get("JiShiQi->ZhenChan_A_BaoZhaShiJian")); Cobj.ZhenChan_A_Timer.Start(); Cobj.ZhenChan_A_Object = { Name = "zhenchan_A", NameImg = 4, X = 234, Y = 330, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, DungeonUID = 1, Timer = Cobj.ZhenChan_A_Timer, TimeMax = JsonObj.Get("JiShiQi->ZhenChanBaoZha_Zong"), TimeOffset = JsonObj.Get("JiShiQi->ZhenChan_A_BaoZhaShiJian"), }; } else { //如果震颤A时间容器存在则先删除他 if (Cobj.ZhenChan_A_Timer) Cobj.ZhenChan_A_Timer.Delete(); Cobj.ZhenChan_A_Timer = null; Cobj.ZhenChan_A_Timer = TimeSTL("ZhenChan_A_Timer", JsonObj.Get("JiShiQi->ZhenChan_A_FuHuoShiJian")); Cobj.ZhenChan_A_Timer.Start(); Cobj.ZhenChan_A_Object = { Name = "zhenchan_a", X = 234, Y = 330, ClearNumber = 0, Reload = 1, Timer = Cobj.ZhenChan_A_Timer, TimeMax = JsonObj.Get("JiShiQi->ZhenChanFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->ZhenChan_A_FuHuoShiJian"), }; } } } //震颤B收包 { Cobj.ZhenChan_B_Object = null; if (JsonObj.Get("ZhenChan_B_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("ZhenChan_B_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("ZhenChan_B_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("ZhenChan_B_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("ZhenChan_B_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("ZhenChan_B_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("ZhenChan_B_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果震颤B时间容器存在则先删除他 if (Cobj.ZhenChan_B_Timer) Cobj.ZhenChan_B_Timer.Delete(); Cobj.ZhenChan_B_Timer = null; Cobj.ZhenChan_B_Timer = TimeSTL("ZhenChan_B_Timer", JsonObj.Get("JiShiQi->ZhenChan_B_BaoZhaShiJian")); Cobj.ZhenChan_B_Timer.Start(); Cobj.ZhenChan_B_Object = { Name = "zhenchan_B", NameImg = 5, X = 450, Y = 330, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, DungeonUID = 11, Timer = Cobj.ZhenChan_B_Timer, TimeMax = JsonObj.Get("JiShiQi->ZhenChanBaoZha_Zong"), TimeOffset = JsonObj.Get("JiShiQi->ZhenChan_B_BaoZhaShiJian"), }; } else { //如果震颤B时间容器存在则先删除他 if (Cobj.ZhenChan_B_Timer) Cobj.ZhenChan_B_Timer.Delete(); Cobj.ZhenChan_B_Timer = null; Cobj.ZhenChan_B_Timer = TimeSTL("ZhenChan_B_Timer", JsonObj.Get("JiShiQi->ZhenChan_B_FuHuoShiJian")); Cobj.ZhenChan_B_Timer.Start(); Cobj.ZhenChan_B_Object = { Name = "zhenchan_B", X = 450, Y = 330, ClearNumber = 0, Reload = 1, Timer = Cobj.ZhenChan_B_Timer, TimeMax = JsonObj.Get("JiShiQi->ZhenChanFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->ZhenChan_B_FuHuoShiJian"), }; } } } //擎天A收包 { Cobj.QingTian_A_Object = null; if (JsonObj.Get("QingTian_A_State") != false) { //得到副本剩余生命 local gClearNumber = 2 - JsonObj.Get("QingTian_A_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("QingTian_A_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("QingTian_A_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("QingTian_A_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("QingTian_A_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("QingTian_A_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.QingTian_A_Object = { Name = "qingtian_A", NameImg = 2, X = 224, Y = 430, BloodType = 2, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 2, }; } else { Cobj.QingTian_A_Object = { Name = "qingtian_a", X = 224, Y = 430, ClearNumber = 0, }; } } } //擎天B收包 { Cobj.QingTian_B_Object = null; if (JsonObj.Get("QingTian_B_State") != false) { //得到副本剩余生命 local gClearNumber = 2 - JsonObj.Get("QingTian_B_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("QingTian_B_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("QingTian_B_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("QingTian_B_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("QingTian_B_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("QingTian_B_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.QingTian_B_Object = { Name = "qingtian_B", NameImg = 3, X = 470, Y = 430, BloodType = 2, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 21, }; } else { Cobj.QingTian_B_Object = { Name = "qingtian_b", X = 470, Y = 430, ClearNumber = 0, }; } } } } //二阶段收包机制 if (Cobj.State == 3) { { Cobj.HeiWuObject = null; //黑雾之源对象 Cobj.JianPaoObject = null; //舰炮防御战对象 if (Cobj.JianPaoTimer) { Cobj.JianPaoTimer.Delete(); Cobj.JianPaoTimer = null; //舰炮时间容器对象 } Cobj.ZhenChan_A_Object = null; //震颤A对象 if (Cobj.ZhenChan_A_Timer) { Cobj.ZhenChan_A_Timer.Delete(); Cobj.ZhenChan_A_Timer = null; //震颤A时间容器对象 } Cobj.ZhenChan_B_Object = null; //震颤B对象 if (Cobj.ZhenChan_B_Timer) { Cobj.ZhenChan_B_Timer.Delete(); Cobj.ZhenChan_B_Timer = null; //震颤B时间容器对象 } Cobj.QingTian_A_Object = null; //擎天A对象 Cobj.QingTian_B_Object = null; //擎天B对象 } //能源阻截站收包 { Cobj.NengLiangObject = null; if (JsonObj.Get("NengLiang_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("NengLiang_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("NengLiang_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("NengLiang_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("NengLiang_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("NengLiang_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("NengLiang_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.NengLiangObject = { Name = "nengliang", NameImg = 7, X = 340, Y = 230, BloodType = 1, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 4, Ani = 17, }; } else { Cobj.NengLiangObject = { Name = "nengliang", X = 340, Y = 230, ClearNumber = 0, }; } } } //黑色火山收包 { Cobj.HuoShanObject = null; if (JsonObj.Get("HuoShan_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("HuoShan_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("HuoShan_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("HuoShan_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("HuoShan_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("HuoShan_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("HuoShan_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.HuoShanObject = { Name = "huoshan", NameImg = 6, X = 336, Y = 145, BloodType = 99, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 5, Zhangai = 0, Ani = 16, NengLiang = JsonObj.Get("HuoShan_NengLiang"), }; } else { Cobj.HuoShanObject = { Name = "huoshan", X = 336, Y = 145, ClearNumber = 0, Zhangai = 0, }; } } } //孵化1收包 { Cobj.FuHua1_Object = null; if (JsonObj.Get("FuHua1_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("FuHua1_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("FuHua1_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("FuHua1_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("FuHua1_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("FuHua1_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("FuHua1_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果孵化1时间容器存在则先删除他 if (Cobj.FuHua1_Timer) Cobj.FuHua1_Timer.Delete(); Cobj.FuHua1_Timer = null; Cobj.FuHua1_Timer = TimeSTL("FuHua1_Timer", JsonObj.Get("JiShiQi->FuHua1_TouSonShiJian")); Cobj.FuHua1_Timer.Start(); Cobj.FuHua1_Object = { Name = "FuHua1", NameImg = 9, X = 110, Y = 340, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, Timer = Cobj.FuHua1_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaTouSong_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua1_TouSonShiJian"), }; } else { //如果孵化1时间容器存在则先删除他 if (Cobj.FuHua1_Timer) Cobj.FuHua1_Timer.Delete(); Cobj.FuHua1_Timer = null; Cobj.FuHua1_Timer = TimeSTL("FuHua1_Timer", JsonObj.Get("JiShiQi->FuHua1_FuHuoShiJian")); Cobj.FuHua1_Timer.Start(); Cobj.FuHua1_Object = { Name = "FuHua1", X = 110, Y = 340, ClearNumber = 0, Reload = 1, Timer = Cobj.FuHua1_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua1_FuHuoShiJian"), }; } } } //孵化2收包 { Cobj.FuHua2_Object = null; if (JsonObj.Get("FuHua2_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("FuHua2_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("FuHua2_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("FuHua2_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("FuHua2_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("FuHua2_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("FuHua2_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果孵化2时间容器存在则先删除他 if (Cobj.FuHua2_Timer) Cobj.FuHua2_Timer.Delete(); Cobj.FuHua2_Timer = null; Cobj.FuHua2_Timer = TimeSTL("FuHua2_Timer", JsonObj.Get("JiShiQi->FuHua2_TouSonShiJian")); Cobj.FuHua2_Timer.Start(); Cobj.FuHua2_Object = { Name = "FuHua2", NameImg = 10, X = 240, Y = 340, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, Timer = Cobj.FuHua2_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaTouSong_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua2_TouSonShiJian"), }; } else { //如果孵化2时间容器存在则先删除他 if (Cobj.FuHua2_Timer) Cobj.FuHua2_Timer.Delete(); Cobj.FuHua2_Timer = null; Cobj.FuHua2_Timer = TimeSTL("FuHua2_Timer", JsonObj.Get("JiShiQi->FuHua2_FuHuoShiJian")); Cobj.FuHua2_Timer.Start(); Cobj.FuHua2_Object = { Name = "FuHua2", X = 240, Y = 340, ClearNumber = 0, Reload = 1, Timer = Cobj.FuHua2_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua2_FuHuoShiJian"), }; } } } //孵化3收包 { Cobj.FuHua3_Object = null; if (JsonObj.Get("FuHua3_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("FuHua3_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("FuHua3_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("FuHua3_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("FuHua3_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("FuHua3_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("FuHua3_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果孵化3时间容器存在则先删除他 if (Cobj.FuHua3_Timer) Cobj.FuHua3_Timer.Delete(); Cobj.FuHua3_Timer = null; Cobj.FuHua3_Timer = TimeSTL("FuHua3_Timer", JsonObj.Get("JiShiQi->FuHua3_TouSonShiJian")); Cobj.FuHua3_Timer.Start(); Cobj.FuHua3_Object = { Name = "FuHua3", NameImg = 11, X = 470, Y = 340, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, Timer = Cobj.FuHua3_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaTouSong_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua3_TouSonShiJian"), }; } else { //如果孵化3时间容器存在则先删除他 if (Cobj.FuHua3_Timer) Cobj.FuHua3_Timer.Delete(); Cobj.FuHua3_Timer = null; Cobj.FuHua3_Timer = TimeSTL("FuHua3_Timer", JsonObj.Get("JiShiQi->FuHua3_FuHuoShiJian")); Cobj.FuHua3_Timer.Start(); Cobj.FuHua3_Object = { Name = "FuHua3", X = 470, Y = 340, ClearNumber = 0, Reload = 1, Timer = Cobj.FuHua3_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua3_FuHuoShiJian"), }; } } } //孵化4收包 { Cobj.FuHua4_Object = null; if (JsonObj.Get("FuHua4_State") != false) { //得到副本剩余生命 local gClearNumber = 1 - JsonObj.Get("FuHua4_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("FuHua4_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("FuHua4_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("FuHua4_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("FuHua4_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("FuHua4_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } //如果孵化4时间容器存在则先删除他 if (Cobj.FuHua4_Timer) Cobj.FuHua4_Timer.Delete(); Cobj.FuHua4_Timer = null; Cobj.FuHua4_Timer = TimeSTL("FuHua4_Timer", JsonObj.Get("JiShiQi->FuHua4_TouSonShiJian")); Cobj.FuHua4_Timer.Start(); Cobj.FuHua4_Object = { Name = "FuHua4", NameImg = 12, X = 600, Y = 340, BloodType = 1, ClearNumber = gClearNumber, Reload = 1, Party = gParty, Timer = Cobj.FuHua4_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaTouSong_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua4_TouSonShiJian"), }; } else { //如果孵化4时间容器存在则先删除他 if (Cobj.FuHua4_Timer) Cobj.FuHua4_Timer.Delete(); Cobj.FuHua4_Timer = null; Cobj.FuHua4_Timer = TimeSTL("FuHua4_Timer", JsonObj.Get("JiShiQi->FuHua4_FuHuoShiJian")); Cobj.FuHua4_Timer.Start(); Cobj.FuHua4_Object = { Name = "FuHua4", X = 600, Y = 340, ClearNumber = 0, Reload = 1, Timer = Cobj.FuHua4_Timer, TimeMax = JsonObj.Get("JiShiQi->FuHuaFuHuo_Zong"), TimeOffset = JsonObj.Get("JiShiQi->FuHua4_FuHuoShiJian"), }; } } } //心脏收包 { Cobj.XinZang_Object = null; if (JsonObj.Get("XinZang_State") != false) { //得到副本剩余生命 local gClearNumber = 5 - JsonObj.Get("XinZang_State"); //如果副本还没有死亡 if (gClearNumber != 0) { local gParty = []; local Size = JsonObj.Get("XinZang_Party->size"); for (local i = 0; i < Size; i++) { local PartyInfo = []; PartyInfo.append(JsonObj.Get("XinZang_Party->TeamInfoVos->" + i + "->PartyID")); PartyInfo.append(JsonObj.Get("XinZang_Party->TeamInfoVos->" + i + "->PlayerJob")); PartyInfo.append(JsonObj.Get("XinZang_Party->TeamInfoVos->" + i + "->PlayerJobEx")); PartyInfo.append(JsonObj.Get("XinZang_Party->TeamInfoVos->" + i + "->size")); gParty.append(PartyInfo); } Cobj.XinZang_Object = { Name = "xinzang", NameImg = 8, X = 336, Y = 300, BloodType = 5, ClearNumber = gClearNumber, Party = gParty, DungeonUID = 12010, //Ani = 16, NengLiang = JsonObj.Get("XinZang_NengLiang"), }; } else { Cobj.XinZang_Object = { Name = "xinzang", X = 336, Y = 145, ClearNumber = 0, }; } } } //感染收包 local Ganran = JsonObj.Get("GanRanId"); if (Ganran) { switch (Ganran) { case 1: Cobj.FuHua1_Object.rawset("GanRan", 1); break; case 2: Cobj.FuHua2_Object.rawset("GanRan", 1); break; case 3: Cobj.FuHua3_Object.rawset("GanRan", 1); break; case 4: Cobj.FuHua4_Object.rawset("GanRan", 1); break; } } } } } //收取奖励包 function ReadReward(chunk) { Sout("\n\n收到奖励包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("ReadRewardJson"); //自动判断清空 local JsonObj = Json_STL("ReadRewardJsonBuffer"); RootTab.rawset("ReadRewardJson", JsonObj); RootTab["ReadRewardJson"].Parse(chunk, 0, false); if (RootTab.rawin("ANTONDUNGEONINFOCONTROL")) { local Cobj = RootTab["ANTONDUNGEONINFOCONTROL"]; Cobj.Reward_Object = null; local ArrBuffer = []; for (local i = 0; i < 4; i++) { if (JsonObj.Get("Items->" + i + "->IsGolden") == false) continue; local TabBuffer = { SetFlagAniIndex = JsonObj.Get("Items->" + i + "->IsGolden"), PlayerJob = JsonObj.Get("Items->" + i + "->PlayerJob"), PlayerJobEx = JsonObj.Get("Items->" + i + "->PlayerJobEx"), Name = JsonObj.Get("Items->" + i + "->Name"), ItemGrade = JsonObj.Get("Items->" + i + "->Grade"), ItemId = JsonObj.Get("Items->" + i + "->Item"), ItemCount = JsonObj.Get("Items->" + i + "->Num"), ItemName = JsonObj.Get("Items->" + i + "->ItemName"), ItemColor = JsonObj.Get("Items->" + i + "->ItemColour"), } ArrBuffer.append(TabBuffer); } Cobj.Reward_Object = ArrBuffer; Cobj.State = JsonObj.Get("State"); local AllArrBuffer = []; for (local i = 0; i < 20; i++) { if (JsonObj.Get("Items2->" + i + "->IsGolden") == false) continue; local TabBuffer = { SetFlagAniIndex = JsonObj.Get("Items2->" + i + "->IsGolden"), PlayerJob = JsonObj.Get("Items2->" + i + "->PlayerJob"), PlayerJobEx = JsonObj.Get("Items2->" + i + "->PlayerJobEx"), Name = JsonObj.Get("Items2->" + i + "->Name"), ItemGrade = JsonObj.Get("Items2->" + i + "->Grade"), ItemId = JsonObj.Get("Items2->" + i + "->Item"), ItemCount = JsonObj.Get("Items2->" + i + "->Num"), ItemName = JsonObj.Get("Items2->" + i + "->ItemName"), ItemColor = JsonObj.Get("Items2->" + i + "->ItemColour"), } AllArrBuffer.append(TabBuffer); } Cobj.AllReward_Object = AllArrBuffer; Cobj.Reward_Timer_Object = TimeSTL("Anton_Reward_Timer_Object", 10000); Cobj.Reward_Timer_Object.Delete(); Cobj.Reward_Timer_Object = null; Cobj.Reward_Timer_Object = TimeSTL("Anton_Reward_Timer_Object", 10000); Cobj.Reward_Timer_Object.Start(); Cobj.Reward_Info = [ JsonObj.Get("SuccessTime"), JsonObj.Get("DeathNum"), ]; } } //攻坚开始传送玩家进区域 1阶段开始 function StartMovePlayer(chunk) { Sout("\n\n收到攻坚开始传送玩家进区域包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("MovePlayerJson"); //自动判断清空 local JsonObj = Json_STL("MovePlayerJsonBuffer"); RootTab.rawset("MovePlayerJson", JsonObj); RootTab["MovePlayerJson"].Parse(chunk, 0, false); local TownIndex = RootTab["MovePlayerJson"].Get("TownIndex"); local ReIndex = RootTab["MovePlayerJson"].Get("ReIndex"); L_sq_MoveTown(TownIndex, ReIndex, 200, 200); //告诉副本类开始攻坚一阶段了 if (RootTab.rawin("ANTONDUNGEONINFOCONTROL")) { RootTab["ANTONDUNGEONINFOCONTROL"].State = 0; RootTab["ANTONDUNGEONINFOCONTROL"].DrawStartAniMark = true; } } //攻坚二阶段开始事件 function StartTwoR(chunk) { Sout("\n\n收到攻坚2阶段开始包 :\n %L", chunk) local RootTab = getroottable(); if (RootTab.rawin("ANTONDUNGEONINFOCONTROL")) { RootTab["ANTONDUNGEONINFOCONTROL"].DrawStartAniMark = true; } } //退出攻坚队传送玩家进区域 function ExitMovePlayer(chunk) { Sout("\n\n收到退出攻坚队传送玩家进区域包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("MovePlayerJson"); //自动判断清空 local JsonObj = Json_STL("MovePlayerJsonBuffer"); RootTab.rawset("MovePlayerJson", JsonObj); RootTab["MovePlayerJson"].Parse(chunk, 0, false); local TownIndex = RootTab["MovePlayerJson"].Get("TownIndex"); local ReIndex = RootTab["MovePlayerJson"].Get("ReIndex"); L_sq_MoveTown(TownIndex, ReIndex, 1036, 335); } //队长进入副本事件 function PartyMSelectDungeon(chunk) { Sout("\n\n收到队长进入副本事件包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("PartyMSelectDungeonJson"); //自动判断清空 local JsonObj = Json_STL("PartyMSelectDungeonJsonBuffer"); RootTab.rawset("PartyMSelectDungeonJson", JsonObj); RootTab["PartyMSelectDungeonJson"].Parse(chunk, 0, false); local DungeonTID = RootTab["PartyMSelectDungeonJson"].Get("DungeonTID"); L_sq_GoDungeon(DungeonTID); } //队长返回城镇事件 function PartyMReturnTown(chunk) { Sout("\n\n收到队长返回城镇事件包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("PartyMReturnTownJson"); //自动判断清空 local JsonObj = Json_STL("PartyMReturnTownJsonBuffer"); RootTab.rawset("PartyMReturnTownJson", JsonObj); RootTab["PartyMReturnTownJson"].Parse(chunk, 0, false); if (RootTab.rawin("ANTONDUNGEONINFOCONTROL")) { local Cobj = RootTab["ANTONDUNGEONINFOCONTROL"]; if (sq_GetCurrentModuleType() == 3) { local AntonBackTown = Json_STL("AntonBackTown"); AntonBackTown.Put("op", 1059); local str = AntonBackTown.GetString(); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); AntonBackTown.Delete(); } else { Cobj.ReturnTwonFlag = 1; } } } //火山怪物投放包 function HuoShanMonsterEvent(chunk) { Sout("\n\n收到火山投放怪物事件包 :\n %L", chunk) local RootTab = getroottable(); BasicsDrawTool.InitClass("PartyMReturnTownJson"); //自动判断清空 local JsonObj = Json_STL("PartyMReturnTownJsonBuffer"); RootTab.rawset("PartyMReturnTownJson", JsonObj); RootTab["PartyMReturnTownJson"].Parse(chunk, 0, false); local Cobj = RootTab["ANTONDUNGEONINFOCONTROL"]; if (sq_GetCurrentModuleType() == 3) { local obj = sq_GetMyMasterCharacter(); obj = sq_ObjectToSQRCharacter(obj); //print(Cobj.HuoShanMonserTable[JsonObj.Get("FuHuaId")]); obj.sq_SendCreatePassiveObjectPacket(Cobj.HuoShanMonserTable[JsonObj.Get("FuHuaId")], 0, 120, 1, 0); } } constructor() { //读取安图恩攻坚信息包 Pack_Control.rawset(1052, ReadAntonDungeonInfoPack); //攻坚开始传送玩家事件 Pack_Control.rawset(1044, StartMovePlayer); //攻坚二阶段开始事件 Pack_Control.rawset(1046, StartTwoR); //退出攻坚队传送玩家事件 Pack_Control.rawset(1038, ExitMovePlayer); //队长进入副本事件 Pack_Control.rawset(1054, PartyMSelectDungeon); //队长返回城镇事件 Pack_Control.rawset(1056, PartyMReturnTown); //收取奖励包 Pack_Control.rawset(1072, ReadReward); //收取火山怪物投放包 Pack_Control.rawset(1082, HuoShanMonsterEvent); //初始化判断孵化进入操作表 MapIndexTable = {}; MapIndexTable.rawset(33100, 1); MapIndexTable.rawset(33103, 2); MapIndexTable.rawset(33119, 3); MapIndexTable.rawset(33116, 4); //火山怪物投放表 HuoShanMonserTable = {}; HuoShanMonserTable.rawset(1, 202210052); HuoShanMonserTable.rawset(2, 202210053); HuoShanMonserTable.rawset(3, 202210054); HuoShanMonserTable.rawset(4, 202210055); } //绘制攻坚剩余时间 function DrawTime(obj) { //如果还没收到配置包的时候直接返回 if (!FightMaxTime) return; T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", X + 528, Y + 23, 1, "安图恩剩余攻坚时间主界面"); T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", X + 566, Y + 25, 2, "安图恩剩余攻坚时间文字"); //计算剩余时间并绘制 local Time = (FightMaxTime - FightTimer.Get()); local Hours = (Time / 3600000).tostring(); if (Hours.len() < 2) Hours = "0" + Hours; if (Hours.len() > 2) Hours = Hours.slice(Hours.len() - 2, Hours.len()); local minutes = (Time / 60000).tostring(); if (minutes.len() < 2) minutes = "0" + minutes; if (minutes.len() > 2) minutes = minutes.slice(minutes.len() - 2, minutes.len()); local seconds = (Time / 1000 % 60).tostring(); if (seconds.len() < 2) seconds = "0" + seconds; if (seconds.len() > 2) seconds = seconds.slice(seconds.len() - 2, seconds.len()); for (local i = 0; i < 2; i++) { T_DrawStayAni(obj, "common/anton/new/newopendungeonnum.ani", X + 538 + (i * 18), Y + 51, Hours.slice(0 + i, 1 + i).tointeger(), "安图恩剩余攻坚时间时" + i); T_DrawStayAni(obj, "common/anton/new/newopendungeonnum.ani", X + 584 + (i * 18), Y + 51, minutes.slice(0 + i, 1 + i).tointeger(), "安图恩剩余攻坚时间分" + i); T_DrawStayAni(obj, "common/anton/new/newopendungeonnum.ani", X + 628 + (i * 18), Y + 51, seconds.slice(0 + i, 1 + i).tointeger(), "安图恩剩余攻坚时间分" + i); } //Sout("时: %L 分: %L 秒: %L",Hours,minutes,seconds); } //绘制展开攻坚信息按钮 function DrawMainButton(obj) { //如果展开按钮不存在 if (!OpenMainButtonObject) { OpenMainButtonObject = AntonButtonPro(obj, "AntonDungeonOpenMainButtonObject", 690, 35, "common/anton/new/newopendungeoninfobutton.ani", 103, 22, 0); OpenMainButtonObject.SetRectEnble(true, "AntonDungeonOpenMainButtonObjectr", 690, 35, "common/anton/new/newopendungeoninfobutton.ani", 1); OpenMainButtonObject.SetCustomClickEnble(true, "AntonDungeonOpenMainButtonObjectc", 690, 35, "common/anton/new/newopendungeoninfobutton.ani", 2); } //未点击 窗口也未打开 if (!sq_GetPopupWindowMainCotrol(267)) { OpenMainButtonObject.Show(); if (OpenMainButtonObject.isLBActive()) { PageState = 1; L_NewWindows("Lenheart", 267, 0x65535); local RootTab = getroottable(); RootTab["ANTONTOWNMAINCONTROLLIST"].NowSelectTeamFunc = null; //把功能选择页关掉 RootTab["ANTONTOWNMAINCONTROLLIST"].NowSelectTeam = null; //把功能选择页关掉 RootTab["ANTONTEAMMAINBUTTON"].State = 0; RootTab["ANTONTEAMMAINBUTTON"].WindowSwitch = false; } } if (PageState == 1 && !sq_GetPopupWindowMainCotrol(267)) { PageState = 0; } } //绘制副本对象 function DrawDungeonObjInfo(obj, DgnObj) { //如果副本已经死亡 if (DgnObj.ClearNumber == 0) { //绘制副本血槽背景 local Bkani = 6; if (DgnObj.rawin("Reload")) Bkani = 15; if (DgnObj.rawin("Ani")) Bkani = DgnObj.Ani; /* if (DgnObj.rawin("GanRan")) { Bkani = 18; T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X + 1, DgnObj.Y + 1, 19, "安图恩攻坚战况副本血槽背景感染外框"); } */ T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X, DgnObj.Y, Bkani, "D安图恩攻坚战况副本血槽背景" + DgnObj.Name); //绘制副本血槽名称背景 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X + 42, DgnObj.Y - 16, 5, "D安图恩攻坚战况副本血槽名称背景" + DgnObj.Name); //绘制副本血槽名称 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X + 42, DgnObj.Y - 16, 7, "D安图恩攻坚战况副本血槽名称" + DgnObj.Name); //判断是否需要绘制复活时间 if (DgnObj.rawin("Timer")) { local TimeMax = (DgnObj.TimeMax / 1000); local Time = ((DgnObj.Timer.Get() + (DgnObj.TimeMax - DgnObj.TimeOffset)) / 1000); local TimeStr = (TimeMax - Time).tostring(); L_Code_STL(TimeStr, DgnObj.X + 34 - (TimeStr.len() * 2), DgnObj.Y + 28, 0xffffffff, 1); //绘制复活时间进度条 local TimeHun = ((Time.tofloat() / TimeMax.tofloat()) * 100.0).tointeger(); T_DrawStayAni(obj, "common/anton/new/newantonloading2.ani", DgnObj.X, DgnObj.Y, TimeHun, "安图恩攻坚战况副本复活时间进度条" + TimeHun); } } //如果还没死亡 else { //绘制副本血槽背景 local Bkani = 4; if (DgnObj.rawin("Reload")) Bkani = 15; if (DgnObj.rawin("Ani")) Bkani = DgnObj.Ani; //绘制感染 if (DgnObj.rawin("GanRan")) { Bkani = 18; T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X + 1, DgnObj.Y + 1, 19, "安图恩攻坚战况副本血槽背景感染外框"); } T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X, DgnObj.Y, Bkani, "安图恩攻坚战况副本血槽背景" + DgnObj.Name); //绘制副本血槽名称背景 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X + 42, DgnObj.Y - 16, 5, "安图恩攻坚战况副本血槽名称背景" + DgnObj.Name); //绘制副本血槽名称 T_DrawStayAni(obj, "common/anton/new/newopendungeonname.ani", DgnObj.X + 42, DgnObj.Y - 16, DgnObj.NameImg, "安图恩攻坚战况副本血槽名称" + DgnObj.Name); //绘制副本血量 //火山单独绘制 if (DgnObj.BloodType == 99) { local NengLiangstr = DgnObj.NengLiang.tostring(); if (NengLiangstr.len() == 1) NengLiangstr = "00" + NengLiangstr; if (NengLiangstr.len() == 2) NengLiangstr = "0" + NengLiangstr; for (local i = 0; i < 3; i++) { local index = NengLiangstr.slice(0 + i, 1 + i).tointeger(); T_DrawStayAni(obj, "common/anton/new/newnum.ani", DgnObj.X + 23 + (i * 8), DgnObj.Y + 40, index "安图恩剩余火山能量" + i + index); } local NengLiang = abs(DgnObj.NengLiang - 100) T_DrawStayAni(obj, "common/anton/new/newantonloading3.ani", DgnObj.X, DgnObj.Y, NengLiang, "安图恩攻坚战况副本火山血" + NengLiang); } //别的副本绘制 马勒戈壁写烦起来了 瞎比乱写了 架构去他妈 else { T_DrawStayAni(obj, "common/anton/new/newopendungeonblood/" + DgnObj.BloodType + "_" + DgnObj.ClearNumber + ".ani", DgnObj.X, DgnObj.Y, 0, "安图恩攻坚战况副本血" + DgnObj.BloodType + "_" + DgnObj.ClearNumber); } //判断是否需要绘制爆炸时间 if (DgnObj.rawin("Timer")) { local TimeMax = (DgnObj.TimeMax / 1000); local Time = ((DgnObj.Timer.Get() + (DgnObj.TimeMax - DgnObj.TimeOffset)) / 1000); local TimeStr = (TimeMax - Time).tostring(); L_Code_STL(TimeStr, DgnObj.X + 34 - (TimeStr.len() * 2), DgnObj.Y + 28, 0xffffffff, 1); //绘制爆炸时间进度条 local TimeHun = ((Time.tofloat() / TimeMax.tofloat()) * 100.0).tointeger(); T_DrawStayAni(obj, "common/anton/new/newantonloading2.ani", DgnObj.X, DgnObj.Y, TimeHun, "安图恩攻坚战况副本爆炸时间进度条" + TimeHun); } //绘制队伍 for (local i = 0; i < DgnObj.Party.len(); i++) { //绘制底框 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X - 66, DgnObj.Y - 20 + (i * 22), 8 + i, "安图恩攻坚战况队伍底框" + i); //绘制队伍编号 注意:因为这个傻逼图TM的不对称 要单独 判断位置 local Offset = 0; if (i == 1 || i == 2) Offset = 1; if (i == 3) Offset = 6; if (i == 4) Offset = 7; T_DrawStayAni(obj, "common/anton/new/newopendungeonpartymark.ani", DgnObj.X - 63, DgnObj.Y - 17 + (i * 22) + Offset, DgnObj.Party[i][0], "安图恩攻坚战况队伍编号" + DgnObj.Party[0]); //绘制队伍人数 for (local z = 0; z < DgnObj.Party[i][3] - 1; z++) { T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", DgnObj.X - 27 + (z * 7), DgnObj.Y - 14 + (i * 22) + Offset, 13, "安图恩攻坚战况队伍人数"); } //绘制队长头像TM的这个傻逼东西又偏了 在+1 if (Offset == 6 || Offset == 7) ++Offset; T_DrawStayAniRate(obj, "common/anton/face/" + DgnObj.Party[i][1] + "/" + (DgnObj.Party[i][2] % 16) + ".ani", DgnObj.X - 44, DgnObj.Y - 16 + (i * 22) + Offset, 0, "缩小安图恩头像编号" + DgnObj.Party[i][1] + DgnObj.Party[i][2], 0.50); } } if (MouseTask == 1 && sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, DgnObj.X, DgnObj.Y, 71, 71) && IMouse.isButtonUpEvent()) { if (!DgnObj.rawin("DungeonUID")) return; obj.sq_PlaySound("CLICK_BUTTON1"); local AntonSelectDungeon = Json_STL("AntonSelectDungeon"); AntonSelectDungeon.Put("op", 1051); AntonSelectDungeon.Put("DungeonUID", DgnObj.DungeonUID); local str = AntonSelectDungeon.GetString(); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); AntonSelectDungeon.Delete(); MouseTask = 2; } } //绘制小队移动类 function DrawPartyMoveClss(obj) { local ThisX = X + 540; local ThisY = Y + 508; T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", ThisX, ThisY, 14, "安图恩攻坚战况主界面小队移动背景"); //如果 小队移动选择地下城按钮 未初始化时 初始化 if (PartyMove_SelectDungeon_Button == null) { PartyMove_SelectDungeon_Button = AntonButtonPro(obj, "AntonPartyMove_SelectDungeon_Button", ThisX + 7, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 95, 29, 6); PartyMove_SelectDungeon_Button.SetRectEnble(true, "AntonPartyMove_SelectDungeon_Buttonr", ThisX + 7, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 7); PartyMove_SelectDungeon_Button.SetCustomClickEnble(true, "AntonPartyMove_SelectDungeon_Buttonc", ThisX + 7, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 8); } PartyMove_SelectDungeon_Button.Show(); if (PartyMove_SelectDungeon_Button.isLBActive()) { obj.sq_PlaySound("CLICK_BUTTON1"); MouseTask = 1; } //如果 小队移动返回城镇按钮 未初始化时 初始化 if (PartyMove_ReturnTown_Button == null) { PartyMove_ReturnTown_Button = AntonButtonPro(obj, "AntonPartyMove_ReturnTown_Button", ThisX + 108, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 95, 29, 9); PartyMove_ReturnTown_Button.SetRectEnble(true, "AntonPartyPartyMove_ReturnTown_Buttonr", ThisX + 108, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 10); PartyMove_ReturnTown_Button.SetCustomClickEnble(true, "AntonPartyPartyMove_ReturnTown_Buttonc", ThisX + 108, ThisY + 30, "common/anton/new/newopendungeoninfobutton.ani", 11); } PartyMove_ReturnTown_Button.Show(); if (PartyMove_ReturnTown_Button.isLBActive()) { obj.sq_PlaySound("CLICK_BUTTON1"); //不在城镇里点击返回城镇按钮才会发包 if (sq_GetCurrentModuleType() != 1) { local TryAntonBackTown = Json_STL("TryAntonBackTown"); TryAntonBackTown.Put("op", 1053); local str = TryAntonBackTown.GetString(); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); TryAntonBackTown.Delete(); } } } //绘制开始攻坚动画 function DrawStartAni(obj, Type) { if(Type == 0)Type = 1; else if(Type == 3)Type = 2; if (DrawStartAniMark == true) { local anieff = BasicsDrawTool.T_DrawDynamicAni(obj, "common/anton/new/starteff.ani", 250, 210, "开始攻坚标题背景eff"); local ani1 = BasicsDrawTool.T_DrawDynamicAni(obj, "common/anton/new/start" + Type + ".ani", 250, 210 + 26, "开始攻坚标题背景1"); if (sq_GetAnimationFrameIndex(ani1) >= 28) { sq_Rewind(anieff); sq_Rewind(ani1); DrawStartAniMark = false; } } } //绘制攻坚队攻坚信息 function DrawAntonPartyInfo(obj) { //绘制主界面背景 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", X, Y + 20, 0, "安图恩攻坚战况主界面背景"); //绘制主界面背景乌龟 T_DrawStayAni(obj, "common/anton/new/newopendungeoninfo.ani", X + 25, Y + 70, 3, "安图恩攻坚战况主界面背景乌龟"); //绘制主界面小队移动类 DrawPartyMoveClss(obj); //1阶段 if (State == 0) { //黑雾之源对象绘制 if (HeiWuObject) DrawDungeonObjInfo(obj, HeiWuObject); //震颤A对象绘制 if (ZhenChan_A_Object) DrawDungeonObjInfo(obj, ZhenChan_A_Object); //震颤B对象绘制 if (ZhenChan_B_Object) DrawDungeonObjInfo(obj, ZhenChan_B_Object); //擎天A对象绘制 if (QingTian_A_Object) DrawDungeonObjInfo(obj, QingTian_A_Object); //擎天B对象绘制 if (QingTian_B_Object) DrawDungeonObjInfo(obj, QingTian_B_Object); //舰炮防御战对象绘制 if (JianPaoObject) DrawDungeonObjInfo(obj, JianPaoObject); } //2阶段 if (State == 3) { //能源阻截站对象绘制 if (NengLiangObject) DrawDungeonObjInfo(obj, NengLiangObject); //黑色火山对象绘制 if (HuoShanObject) DrawDungeonObjInfo(obj, HuoShanObject); //孵化1对象绘制 if (FuHua1_Object) DrawDungeonObjInfo(obj, FuHua1_Object); //孵化2对象绘制 if (FuHua2_Object) DrawDungeonObjInfo(obj, FuHua2_Object); //孵化3对象绘制 if (FuHua3_Object) DrawDungeonObjInfo(obj, FuHua3_Object); //孵化4对象绘制 if (FuHua4_Object) DrawDungeonObjInfo(obj, FuHua4_Object); //心脏对象绘制 if (XinZang_Object) DrawDungeonObjInfo(obj, XinZang_Object); } } //设置鼠标事件类型 function SetMouseTesk() { //有活动设置 if (MouseTask == 1) IMouse.SetMouseTask(47); //点击就还原 if (IMouse.GetRButton() == 2 && MouseTask == 1) MouseTask = 2; //还原以后在解锁 if (MouseTask == 2) { IMouse.SetMouseTask(0); MouseTask = 0; } } //判断是否可重合 function PosEvent(Pos, MPos) { local Offset = abs(Pos - MPos); if (Offset < 10) return true; else return false; } //判断自身地图相关事件 function MapEventTest(obj) { if (sq_GetCurrentModuleType() != 3) return; local stage = sq_GetGlobaludpModuleStage(); local MapIndex = sq_GetMapIndex(stage); if (MapIndexTable.rawin(MapIndex)) { local X = obj.getXPos(); local Y = obj.getYPos(); local Mark = false; if (MapIndex == 33103 && PosEvent(X, 737) && PosEvent(Y, 354)) Mark = true; if (MapIndex == 33100 && PosEvent(X, 369) && PosEvent(Y, 387)) Mark = true; if (MapIndex == 33116 && PosEvent(X, 365) && PosEvent(Y, 374)) Mark = true; if (MapIndex == 33119 && PosEvent(X, 838) && PosEvent(Y, 424)) Mark = true; if (Mark == true && MapMoveMark == false) { local AntonFHMoveDungeon = Json_STL("AntonFHMoveDungeon"); AntonFHMoveDungeon.Put("op", 1057); AntonFHMoveDungeon.Put("DungeonUID", MapIndexTable[MapIndex]); local str = AntonFHMoveDungeon.GetString(); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); AntonFHMoveDungeon.Delete(); MapMoveMark = true; } else if (Mark == false) MapMoveMark = false; } else { MapMoveMark = false; } } //绘制透明度静态图片 function Anton_DrawStayAniAlpha(obj, aniFileName, x, y, index, aniname, Alpha) { local SelectAni = obj.getVar().GetAnimationMap(aniname, aniFileName); sq_DrawSpecificFrameEffect_SIMPLE(SelectAni, x, y, index, sq_RGB(255, 255, 255), sq_ALPHA(Alpha), false); return SelectAni; } //绘制翻牌奖励 function DrawReward(obj, Time, Reward_Object, AllReward_Object, Reward_Info) { local PassTime = Reward_Info[0]; local Coin = Reward_Info[1]; //绘制背景图 Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X, Y, 0, "安图恩翻牌主界面背景", 230); //绘制阶段状态 local Reani = 1; if(State == 4)Reani = 24; Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 300, Y + 40, Reani, "安图恩翻牌阶段状态", 250); //绘制成功标志 local Rate = sq_GetAccel(400, 100, Time, 500, false); T_DrawStayAniRate(obj, "common/anton/new/newreward.ani", X + 323, Y + 110, 2, "安图恩翻牌成功标志1", Rate.tofloat() / 100.0); //绘制通关信息条划出 if (Time >= 500) { local Xpos; if (Time < 3000) Xpos = sq_GetAccel(675, 0, Time - 500, 300, false); if (Time >= 3000) Xpos = sq_GetAccel(0, -675, Time - 3000, 300, false); Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 115 + Xpos, Y + 200, 3, "安图恩翻牌阶段状态", 250); } //绘制时间 if (Time >= 800) { local Xpos; if (Time < 3000) Xpos = sq_GetAccel(675, 0, Time - 800, 300, false); if (Time >= 3000) Xpos = sq_GetAccel(0, -675, Time - 3000, 300, false); //计算剩余时间并绘制 local Hours = (PassTime / 3600000).tostring(); if (Hours.len() < 2) Hours = "0" + Hours; if (Hours.len() > 2) Hours = Hours.slice(Hours.len() - 2, Hours.len()); local minutes = (PassTime / 60000).tostring(); if (minutes.len() < 2) minutes = "0" + minutes; if (minutes.len() > 2) minutes = minutes.slice(minutes.len() - 2, minutes.len()); local seconds = (PassTime / 1000 % 60).tostring(); if (seconds.len() < 2) seconds = "0" + seconds; if (seconds.len() > 2) seconds = seconds.slice(seconds.len() - 2, seconds.len()); for (local i = 0; i < 2; i++) { T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 538 - 300 + (i * 18), Y + 51 + 164, Hours.slice(0 + i, 1 + i).tointeger(), "安图恩奖励部分时间时" + i); T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 600 - 300 + (i * 18), Y + 51 + 164, minutes.slice(0 + i, 1 + i).tointeger(), "安图恩奖励部分时间分" + i); T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 660 - 300 + (i * 18), Y + 51 + 164, seconds.slice(0 + i, 1 + i).tointeger(), "安图恩奖励部分时间分" + i); } T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 284, Y + 51 + 164, 10, "安图恩奖励部分时间时点"); T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 348, Y + 51 + 164, 10, "安图恩奖励部分时间时点"); for (local z = 0; z < Coin.tostring().len(); z++) { T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + Xpos + 520 + (z * 18), Y + 51 + 164, Coin.tostring().slice(0 + z, 1 + z).tointeger(), "安图恩奖励部分时间复活币" + z); } //T_DrawStayAni(obj, "common/anton/new/newtime.ani", X + 348 , Y + 51 + 164, 10, "安图恩奖励部分时间时点"); } local CradTab = Reward_Object; //绘制卡牌 if (Time >= 1300) { local Alpha; if (Time < 3000) Alpha = sq_GetAccel(0, 250, Time - 1300, 700, false); if (Time >= 3000) Alpha = sq_GetAccel(250, 0, Time - 3000, 700, false); for (local i = 0; i < 4; i++) { local BackGroundAniIndex = 11; if (i >= CradTab.len()) { //绘制卡牌背景图 Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 94 + (153 * i), Y + 380, BackGroundAniIndex, "安图恩翻牌卡片界面背景", Alpha); Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 160 + (153 * i), Y + 416, 19, "安图恩翻牌无卡片背景", Alpha); Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 160 + (153 * i), Y + 416, 20, "安图恩翻牌无卡片背景Eff", Alpha); continue; } if (CradTab[i].SetFlagAniIndex == 1) BackGroundAniIndex = 21; //绘制卡牌背景图 Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 94 + (153 * i), Y + 380, BackGroundAniIndex, "安图恩翻牌卡片界面背景", Alpha); //绘制角色标记 local SetFlagAniIndex = 9; SetFlagAniIndex += CradTab[i].SetFlagAniIndex; Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + 97 + (153 * i), Y + 330, SetFlagAniIndex, "安图恩翻牌卡片界面人物框" + SetFlagAniIndex, Alpha); //绘制角色头像 Anton_DrawStayAniAlpha(obj, "common/anton/face/" + CradTab[i].PlayerJob + "/" + (CradTab[i].PlayerJobEx % 16) + ".ani", X + 102 + (153 * i), Y + 334, 0, "翻牌安图恩头像编号" + CradTab[i].PlayerJob + CradTab[i].PlayerJobEx, Alpha); if (Time >= 2000) { //绘制角色名字 if (Time < 3000) L_Code_STL(CradTab[i].Name, X + 145 + (153 * i), Y + 342, 0xFFffffff, 1); //绘制道具边框 if (Time < 3000) T_DrawStayAni(obj, "common/anton/new/newreward.ani", X + 153 + (153 * i), Y + 412, CradTab[i].ItemGrade + 12, "安图恩翻牌卡片道具边框" + CradTab[i].ItemGrade); //绘制道具 if (Time < 3000) L_Sq_DrawItem(X + 156 + (153 * i), Y + 415, CradTab[i].ItemId, CradTab[i].ItemCount, 0, 0, 0); //绘制道具名字 if (Time < 3000) L_Code_STL(CradTab[i].ItemName, X + 167 + (153 * i) - BasicsDrawTool.GetOffserFromLen(CradTab[i].ItemName, 1.5), Y + 450, 0xffffffff, 1); } } } local AllCradTab = AllReward_Object; //绘制所有人卡牌 if (Time >= 3700) { local Xoffset = -80; local Yoffset = -200; local Alpha; Alpha = sq_GetAccel(0, 250, Time - 3700, 700, false); for (local i = 0; i < 20; i++) { local BackGroundAniIndex = 11; if (i >= AllCradTab.len()) { //绘制卡牌背景图 Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + Xoffset + 94 + (155 * (i % 5)), Y + Yoffset + 380 + (100 * (i / 5)), BackGroundAniIndex, "安图恩翻牌卡片界面背景", Alpha); Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + Xoffset + 160 + (155 * (i % 5)), Y + Yoffset + 416 + (100 * (i / 5)), 19, "安图恩翻牌无卡片背景", Alpha); Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + Xoffset + 160 + (155 * (i % 5)), Y + Yoffset + 416 + (100 * (i / 5)), 20, "安图恩翻牌无卡片背景Eff", Alpha); continue; } if (AllCradTab[i].SetFlagAniIndex == 1) BackGroundAniIndex = 21; //绘制卡牌背景图 Anton_DrawStayAniAlpha(obj, "common/anton/new/newreward.ani", X + Xoffset + 94 + (155 * (i % 5)), Y + Yoffset + 380 + (100 * (i / 5)), BackGroundAniIndex, "安图恩翻牌卡片界面背景", Alpha); //绘制角色头像 Anton_DrawStayAniAlpha(obj, "common/anton/face/" + AllCradTab[i].PlayerJob + "/" + (AllCradTab[i].PlayerJobEx % 16) + ".ani", X + Xoffset + 102 + (155 * (i % 5)), Y + Yoffset + 388 + (100 * (i / 5)), 0, "翻牌安图恩头像编号" + AllCradTab[i].PlayerJob + AllCradTab[i].PlayerJobEx, Alpha); if (Time >= 4400) { //绘制角色名字 L_Code_STL(AllCradTab[i].Name, X + Xoffset + 137 + (155 * (i % 5)), Y + Yoffset + 394 + (100 * (i / 5)), 0xFF9bc8e6, 1); //绘制道具边框 T_DrawStayAni(obj, "common/anton/new/newreward.ani", X + Xoffset + 153 + (155 * (i % 5)), Y + Yoffset + 417 + (100 * (i / 5)), AllCradTab[i].ItemGrade + 12, "安图恩翻牌卡片道具边框" + AllCradTab[i].ItemGrade); //绘制道具 L_Sq_DrawItem(X + Xoffset + 156 + (155 * (i % 5)), Y + Yoffset + 420 + (100 * (i / 5)), AllCradTab[i].ItemId, AllCradTab[i].ItemCount, 0, 0, 0); //绘制道具名字 L_Code_STL(AllCradTab[i].ItemName, X + Xoffset + 167 + (155 * (i % 5)) - BasicsDrawTool.GetOffserFromLen(AllCradTab[i].ItemName, 1.5), Y + Yoffset + 455 + (100 * (i / 5)), 0xffffffff, 1); } } } } function Run(obj) { if (State < 0) return; DrawStartAni(obj, State); //如果被人已经通关了那么寻找时间返回城镇 if (ReturnTwonFlag == 1 && sq_GetCurrentModuleType() == 3 && obj.getState() != 0) { local AntonFlagBackTown = Json_STL("AntonFlagBackTownJson"); AntonFlagBackTown.Put("op", 1067); local str = AntonFlagBackTown.GetString(); L_sq_SendPackType(130); L_sq_SendPackWChar(str); L_sq_SendPack(); AntonFlagBackTown.Delete(); ReturnTwonFlag = 0; } //设置鼠标类型事件 SetMouseTesk(); //判断自身地图相关事件 MapEventTest(obj); //绘制展开攻坚信息按钮 DrawMainButton(obj); //绘制攻坚剩余时间 if (PageState == 0 && (State == 0 || State == 3)) { DrawStartAni(obj, State); DrawTime(obj); } //如果是翻牌奖励阶段 没有打开主窗口 if (State == 1 || State == 4) { if (!sq_GetPopupWindowMainCotrol(267)) { L_NewWindows("Lenheart", 267, 0x65535); PageState = 1; } } } function Draw(obj) { //如果页面被打开 绘制攻坚队攻坚信息 if (PageState == 1 && (State == 0 || State == 3)) DrawAntonPartyInfo(obj); //绘制攻坚剩余时间 if (State == 0 || State == 3) DrawTime(obj); if (State == 1 || State == 4) DrawReward(obj, Reward_Timer_Object.Get(), Reward_Object, AllReward_Object, Reward_Info); DrawStartAni(obj, State); } } local RootTab = getroottable(); RootTab.rawdelete("ANTONDUNGEONINFOCONTROL"); function AntonDungeonInfoControlFunc(obj) { local RootTab = getroottable(); if (RootTab.rawin("ANTONDUNGEONINFOCONTROL") == false) { local ANTONDUNGEONINFOCONTROLOBJ = AntonDungeonInfoControl_C(); RootTab.rawset("ANTONDUNGEONINFOCONTROL", ANTONDUNGEONINFOCONTROLOBJ); } RootTab["ANTONDUNGEONINFOCONTROL"].Run(obj); }