1076 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			1076 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:Fate_Select.nut
 | |
| 路径:Plugins/Fate_Select/Fate_Select.nut
 | |
| 创建日期:2023-06-23	14:51
 | |
| 文件用途:命运的抉择
 | |
| */
 | |
| 
 | |
| //HudPro按钮类
 | |
| class Fate_SelectPro extends BasicsDrawTool //  obj  --  按钮名称  --  X坐标  --  Y坐标  --  Ani调用路径  --  宽度  --  高度
 | |
| {
 | |
|     obj = null; //Obj对象
 | |
|     State = 0; //按钮状态
 | |
|     ClickEnble = false; //点击效果
 | |
|     ButtonDynamic = false; //动态按钮效果
 | |
|     BaseFrame = null;
 | |
| 
 | |
|     CustomClickEnble = false; //自定义点击效果
 | |
|     CustomClickAnifile = null; //自定义点击效果Ani路径
 | |
|     CustomButtonName = null; //自定义点击效果名称
 | |
|     CustomClickFrame = null; //自定义点击效果Ani编号
 | |
|     CustomClickx = null; //自定义点击效果X坐标
 | |
|     CustomClicky = null; //自定义点击效果Y坐标
 | |
| 
 | |
| 
 | |
|     RectEnble = false; //悬停效果
 | |
|     RectButtonName = null; //悬停名称
 | |
|     RectBaseAnifile = null; //悬停Ani路径
 | |
|     RectFrame = null; //非动态按钮的悬停调用Ani编号
 | |
|     Rectx = null; //悬停X坐标
 | |
|     Recty = null; //悬停Y坐标
 | |
| 
 | |
| 
 | |
|     ButtonName = null; //按钮名称
 | |
|     x = null; //X坐标
 | |
|     y = null; //Y坐标
 | |
|     BaseAnifile = null; //调用Ani路径
 | |
|     width = null; //可点击宽度
 | |
|     length = null; //可点击高度
 | |
| 
 | |
|     Mobj = null; //鼠标对象
 | |
|     //构造函数
 | |
|     constructor(gObj, gButtonName, gX, gY, gAnifile, gWidth, gLength, gBaseFrame) {
 | |
|         obj = gObj;
 | |
|         ButtonName = gButtonName;
 | |
|         x = gX;
 | |
|         y = gY;
 | |
|         BaseAnifile = gAnifile;
 | |
|         width = gWidth;
 | |
|         length = gLength;
 | |
|         BaseFrame = gBaseFrame;
 | |
|         if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
 | |
|     }
 | |
|     //绘制按钮
 | |
|     function Show() {
 | |
|         if (ClickEnble) //是否开启点击效果
 | |
|         {
 | |
|             if (isLBDown() && State == 0) //按下左键并且按钮处于弹起状态
 | |
|             {
 | |
|                 State = 1; //按键进入按下状态
 | |
|                 ++y;
 | |
|             }
 | |
|             if (!isLBDown() && State == 1) //按下左键并且按钮处于弹起状态
 | |
|             {
 | |
|                 State = 0; //按键进入弹起状态
 | |
|                 --y;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if (CustomClickEnble) //是否开启自定义点击效果
 | |
|         {
 | |
|             if (isLBDown()) //按下左键并且按钮处于弹起状态
 | |
|             {
 | |
|                 if (!ButtonDynamic) T_DrawStayAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomClickFrame, CustomButtonName);
 | |
|                 else T_DrawDynamicAni(obj, CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if (RectEnble) //开启悬停效果时
 | |
|         {
 | |
|             if ((isInRect() && !isLBDown()) || (isInRect() && !CustomClickEnble)) //如果鼠标悬停的时候  并且没有点击的时候
 | |
|             {
 | |
|                 //IMouse.SetMouseTask(44);
 | |
|                 if (!ButtonDynamic) T_DrawStayAni(obj, RectBaseAnifile, Rectx, Recty, RectFrame, RectButtonName);
 | |
|                 else T_DrawDynamicAni(obj, RectBaseAnifile, Rectx, Recty, RectButtonName);
 | |
|             }
 | |
|         }
 | |
|         if (!isInRect()) //如果鼠标没有悬停的时候
 | |
|         {
 | |
|             //IMouse.SetMouseTask(0);
 | |
|             if (!ButtonDynamic) T_DrawStayAni(obj, BaseAnifile, x, y, BaseFrame, ButtonName);
 | |
|             else T_DrawDynamicAni(obj, BaseAnifile, x, y, ButtonName);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //设置自定义点击效果
 | |
|     function SetCustomClickEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) {
 | |
|         CustomClickEnble = bool; //自定义点击效果
 | |
|         CustomClickAnifile = gAnifile; //自定义点击效果Ani路径
 | |
|         CustomButtonName = gButtonName; //自定义点击效果名称
 | |
|         CustomClickFrame = gFrame; //自定义点击效果Ani编号
 | |
|         CustomClickx = gX; //自定义点击效果X坐标
 | |
|         CustomClicky = gY; //自定义点击效果Y坐标
 | |
|     }
 | |
| 
 | |
|     //设置悬停效果
 | |
|     function SetRectEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) {
 | |
|         RectEnble = bool; //悬停效果
 | |
|         RectButtonName = gButtonName; //悬停名称
 | |
|         RectBaseAnifile = gAnifile; //悬停Ani路径
 | |
|         RectFrame = gFrame; //非动态按钮的悬停调用Ani编号
 | |
|         Rectx = gX; //悬停X坐标
 | |
|         Recty = gY; //悬停Y坐标
 | |
|     }
 | |
| 
 | |
|     //设置动态按钮
 | |
|     function SetClickEnble(bool) {
 | |
|         ButtonDynamic = bool;
 | |
|     }
 | |
| 
 | |
|     //设置点击效果
 | |
|     function SetClickEnble(bool) {
 | |
|         ClickEnble = bool;
 | |
|     }
 | |
| 
 | |
|     //悬停状态
 | |
|     function isInRect() {
 | |
|         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true;
 | |
|         else return false;
 | |
|     }
 | |
|     //左键按下状态
 | |
|     function isLBDown() {
 | |
|         if (isInRect() && Mobj.Lb == 1) return true;
 | |
|         else return false;
 | |
|     }
 | |
|     //左键弹起状态
 | |
|     function isLBUp() {
 | |
|         if (isInRect() && Mobj.Lb == 0) return true;
 | |
|         else return false;
 | |
|     }
 | |
| 
 | |
|     //左键单击状态
 | |
|     function isLBActive() {
 | |
|         if (isInRect() && Mobj.LbEvent) return true;
 | |
|         else return false;
 | |
|     }
 | |
| }
 | |
| 
 | |
| class Fate_SelectWindow extends BasicsDrawTool {
 | |
|     //宽度
 | |
|     Width = null;
 | |
|     //高度
 | |
|     Height = null;
 | |
|     //标题高度
 | |
|     TitleH = null;
 | |
| 
 | |
|     //X坐标
 | |
|     X = null;
 | |
|     B_X = null;
 | |
|     //Y坐标
 | |
|     Y = null;
 | |
|     B_Y = null;
 | |
| 
 | |
|     YMouseSw = true;
 | |
|     DeBugMode = false;
 | |
| 
 | |
|     Mobj = null;
 | |
|     M_Xpos = null;
 | |
|     M_Ypos = null;
 | |
| 
 | |
| 
 | |
|     constructor(gX, gY, gWidth, gHeight, gTitleH) {
 | |
|         //宽度
 | |
|         Width = gWidth;
 | |
|         //高度
 | |
|         Height = gHeight;
 | |
|         //标题高度
 | |
|         TitleH = gTitleH;
 | |
| 
 | |
|         //X坐标
 | |
|         X = gX;
 | |
|         //Y坐标
 | |
|         Y = gY;
 | |
| 
 | |
|         if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
 | |
|     }
 | |
| 
 | |
|     //设定鼠标逻辑
 | |
|     function LockMouse() {
 | |
|         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, Height)) {
 | |
|             IMouse.LockMouseClick();
 | |
|             YMouseSw = false;
 | |
|         } else {
 | |
|             if (YMouseSw == false && sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 0, 0, 800, 600)) {
 | |
|                 IMouse.ReleaseMouseClick();
 | |
|                 YMouseSw = true;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //设定窗口拖动逻辑
 | |
|     function MoveWindow() {
 | |
|         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, TitleH)) {
 | |
| 
 | |
|             if (Mobj.Lb == 1) {
 | |
|                 if (!M_Xpos) M_Xpos = IMouse.GetXPos(); //原始鼠标位置数据
 | |
|                 if (!M_Ypos) M_Ypos = IMouse.GetYPos();
 | |
|                 if (!B_X) B_X = X; //原始窗口位置
 | |
|                 if (!B_Y) B_Y = Y;
 | |
| 
 | |
|                 X = B_X - (M_Xpos - IMouse.GetXPos());
 | |
|                 Y = B_Y - (M_Ypos - IMouse.GetYPos());
 | |
| 
 | |
|             } else if (Mobj.Lb == 0) {
 | |
|                 M_Xpos = null;
 | |
|                 M_Ypos = null;
 | |
|                 B_X = null;
 | |
|                 B_Y = null;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Show(obj) {
 | |
|         if (DeBugMode) sq_DrawBox(X, Y, Width, Height, 0xffffffff);
 | |
| 
 | |
|         //设定鼠标逻辑
 | |
|         LockMouse();
 | |
| 
 | |
|         //设定窗口拖动逻辑
 | |
|         MoveWindow();
 | |
| 
 | |
|     }
 | |
| }
 | |
| 
 | |
| class Fate_Select_SmallPowerCard extends BasicsDrawTool {
 | |
|     X = 0;
 | |
|     Y = 0;
 | |
|     Mobj = null; //鼠标对象
 | |
|     TState = null;
 | |
|     Img = null;
 | |
|     Idx = null;
 | |
|     Str = null;
 | |
|     Name = null;
 | |
| 
 | |
|     Type = null;
 | |
|     SkillIndex = null;
 | |
|     SkillIdx = null;
 | |
|     SkillValue = null;
 | |
| 
 | |
|     constructor(gImg, gIdx, gStr, gName, gX, gY, gType, gSkillIndex, gSkillIdx, gSkillValue) {
 | |
|         this.Img = gImg;
 | |
|         this.Idx = gIdx;
 | |
|         this.Str = gStr;
 | |
|         this.Name = gName;
 | |
| 
 | |
|         this.Type = gType;
 | |
|         this.SkillIndex = gSkillIndex;
 | |
|         this.SkillIdx = gSkillIdx;
 | |
|         this.SkillValue = gSkillValue;
 | |
|         this.X = gX;
 | |
|         this.Y = gY;
 | |
|         if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
 | |
|         TState = 0;
 | |
|     }
 | |
| 
 | |
|     function SetPower(obj) {
 | |
|         switch (Type) {
 | |
|             case 0:
 | |
|                 AddIntData(obj, SkillIndex, SkillIdx, SkillValue);
 | |
|                 break;
 | |
|             case 1:
 | |
|                 AddLevelData(obj, SkillIndex, SkillIdx, SkillValue);
 | |
|                 break;
 | |
|             case 2:
 | |
|                 AddSkillCoolTime(obj, SkillIndex, SkillValue);
 | |
|                 break;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Show(obj) {
 | |
|         local RootTab = getroottable();
 | |
|         if (isInRect()) {
 | |
|             T_DrawStayAni(obj, "common/dungeon/fate_select/powerframe.ani", X - 21, Y - 26, 0, "powerselect.ani7");
 | |
|         }
 | |
| 
 | |
|         //绘制基础框
 | |
|         L_sq_DrawImg("interface2/event/dfo/2021/0323/decisionsuntodestiny/ingameui.img", 6, X - 21, Y - 26);
 | |
| 
 | |
|         //绘制槽图标
 | |
|         L_sq_DrawImg(Img.tolower(), Idx, X + 57, Y + 49);
 | |
| 
 | |
|         //绘制卡片名字
 | |
|         L_sq_DrawCode_Ex(Name, X + 64 - (Name.len() * 2), Y + 106, sq_RGBA(247, 214, 90, 250), 2, 1);
 | |
| 
 | |
|         //绘制当卡牌描述
 | |
|         L_sq_DrawCode_Ex(Str, X + 20, Y + 140, sq_RGBA(150, 255, 30, 250), 0, 1);
 | |
| 
 | |
|         if (TState == 1) {
 | |
|             local ani = T_DrawDynamicAni(obj, "common/dungeon/fate_select/powerselectendframe.ani", X - 41, Y - 26, "fatepowerselectendframe");
 | |
|             if (sq_IsEnd(ani)) {
 | |
|                 sq_Rewind(ani);
 | |
|                 TState = 2;
 | |
|                 RootTab["Fate_SelectCObj"].SelectTiming = 3;
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //高级绘制文字(带换行)
 | |
|     function L_sq_DrawCode_Ex(str, x, y, rgba, mb, jc) {
 | |
|         local strarr = [];
 | |
|         if (str.find("\n") == null) L_sq_DrawCode(str, x, y, rgba, mb, jc);
 | |
|         else {
 | |
|             local Bpos = 0;
 | |
|             while (true) {
 | |
|                 local Npos = str.find("\n", Bpos);
 | |
|                 if (!Npos) {
 | |
|                     local strbuff = str.slice(Bpos, str.len());
 | |
|                     strarr.append(strbuff);
 | |
|                     break;
 | |
|                 }
 | |
|                 local strbuff = str.slice(Bpos, Npos);
 | |
|                 strarr.append(strbuff);
 | |
|                 Bpos = Npos + 1;
 | |
|             }
 | |
|             for (local z = 0; z< strarr.len(); z++) {
 | |
|                 L_sq_DrawCode(strarr[z], x, y + (z * 14), rgba, mb, jc);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     //悬停状态
 | |
|     function isInRect() {
 | |
|         if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, X, Y, 143, 299)) return true;
 | |
|         else return false;
 | |
|     }
 | |
|     //左键按下状态
 | |
|     function isLBDown() {
 | |
|         if (isInRect() && Mobj.Lb == 1) return true;
 | |
|         else return false;
 | |
|     }
 | |
|     //左键弹起状态
 | |
|     function isLBUp() {
 | |
|         if (isInRect() && Mobj.Lb == 0) return true;
 | |
|         else return false;
 | |
|     }
 | |
| 
 | |
|     //左键单击状态
 | |
|     function isLBActive() {
 | |
|         if (isInRect() && Mobj.LbEvent) {
 | |
|             return true;
 | |
|         } else return false;
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| class Fate_SelectC extends BasicsDrawTool {
 | |
|     WindowObj = null; //窗口对象
 | |
|     MainState = false; //主状态
 | |
|     X = 0;
 | |
|     Y = 0;
 | |
| 
 | |
|     //退出副本执行操作判断
 | |
|     ExitIdx = false;
 | |
|     //副本背景
 | |
|     DgnBackground = null;
 | |
|     //波数时间配置
 | |
|     LevelTimeInfo = null;
 | |
|     //BOSS的ID
 | |
|     BOSSId = null;
 | |
|     //当前波数
 | |
|     NowLevel = 0;
 | |
|     //BOSS战
 | |
|     BossFight = false;
 | |
|     //杀死BOSS Flag
 | |
|     BossFightKillFlag = false;
 | |
|     //召唤背景
 | |
|     BackGroundSummon = false;
 | |
|     //时间容器对象
 | |
|     TimeObj = null;
 | |
|     //绘制对象时间
 | |
|     DrawTime = null;
 | |
|     //杀怪可获得能力数量
 | |
|     KillMonsterRewardCount = 15;
 | |
|     //杀怪数量
 | |
|     KillMonsterCount = 0;
 | |
| 
 | |
| 
 | |
|     PowerSelect = null;
 | |
|     SelectTiming = 1;
 | |
| 
 | |
|     //获取基础配置包回调
 | |
|     function GetBaseInfoCallBack(Chunk) {
 | |
|         local Buffer = Json_STL("CheckFate_SelectCObjGetBaseInfoCallBackBuffer");
 | |
|         Buffer.Parse(Chunk, 0, false);
 | |
|         local RootTab = getroottable();
 | |
|         if (RootTab.rawin("Fate_SelectCObj")) {
 | |
|             local Tobj = RootTab["Fate_SelectCObj"];
 | |
|             Tobj.LevelTimeInfo = null;
 | |
|             Tobj.BOSSId = null;
 | |
|             Tobj.LevelTimeInfo = [];
 | |
|             Tobj.BOSSId = {};
 | |
|             for (local i = 0; i< 50; i++) {
 | |
|                 local TimeBuf = Buffer.Get("Time->" + i);
 | |
|                 Tobj.LevelTimeInfo.append(TimeBuf * 1000);
 | |
|                 local BossId = Buffer.Get("BOSSId->" + i);
 | |
|                 Tobj.BOSSId.rawset(BossId, true);
 | |
|             }
 | |
|             Tobj.KillMonsterRewardCount = Buffer.Get("KillMonsterRewardCount");
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //获取基础配置包
 | |
|     function GetBaseInfo() {
 | |
|         local T = {
 | |
|             op = 20023001,
 | |
|         }
 | |
|         SendPack(T);
 | |
|     }
 | |
| 
 | |
|     //进入副本标识包
 | |
|     function StartDgnIdxPack() {
 | |
|         local T = {
 | |
|             op = 20023009,
 | |
|         }
 | |
|         SendPack(T);
 | |
|     }
 | |
| 
 | |
|     //退出副本标识包
 | |
|     function EndDgnIdxPack() {
 | |
|         local T = {
 | |
|             op = 20023011,
 | |
|         }
 | |
|         SendPack(T);
 | |
|     }
 | |
| 
 | |
|     //获取小技能卡牌
 | |
|     function GetSmallPwoerCard(Job, JobGrow) {
 | |
|         local T = {
 | |
|             op = 20023003,
 | |
|             job = Job,
 | |
|             jobGrow = JobGrow,
 | |
|         }
 | |
|         SendPack(T);
 | |
|     }
 | |
| 
 | |
|     //选择小技能卡牌
 | |
|     function SelectSmallPwoerCard(Job, JobGrow) {
 | |
|         local T = {
 | |
|             op = 20023005,
 | |
|             job = Job,
 | |
|             jobGrow = JobGrow,
 | |
|         }
 | |
|         SendPack(T);
 | |
|     }
 | |
| 
 | |
|     //获取小技能卡牌回调
 | |
|     function GetSmallPwoerCardCallBack(Chunk) {
 | |
|         local Buffer = Json_STL("CheckFate_SelectCObjGetBaseInfoCallBackBuffer");
 | |
|         Buffer.Parse(Chunk, 0, false);
 | |
|         local RootTab = getroottable();
 | |
|         if (RootTab.rawin("Fate_SelectCObj")) {
 | |
|             local Tobj = RootTab["Fate_SelectCObj"];
 | |
| 
 | |
|             for (local i = 0; i< 5; i++) {
 | |
|                 local Img = Buffer.Get("SkillPack->" + i + "->Img");
 | |
|                 local Idx = Buffer.Get("SkillPack->" + i + "->Idx");
 | |
|                 local Str = Buffer.Get("SkillPack->" + i + "->Str");
 | |
|                 local Name = Buffer.Get("SkillPack->" + i + "->Name");
 | |
| 
 | |
|                 local Type = Buffer.Get("SkillPack->" + i + "->Type");
 | |
|                 local SkillIndex = Buffer.Get("SkillPack->" + i + "->SkillIndex");
 | |
|                 local SkillIdx = Buffer.Get("SkillPack->" + i + "->SkillIdx");
 | |
|                 local SkillValue = Buffer.Get("SkillPack->" + i + "->SkillValue");
 | |
|                 Tobj.PowerSelect[i] = Fate_Select_SmallPowerCard(Img, Idx, Str, Name, 27 + (i * 150), 160, Type, SkillIndex, SkillIdx, SkillValue);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     constructor() {
 | |
|         //读取基础配置
 | |
|         GetBaseInfo();
 | |
|         Pack_Control.rawset(20023002, GetBaseInfoCallBack);
 | |
|         Pack_Control.rawset(20023004, GetSmallPwoerCardCallBack);
 | |
|         //初始化能力包
 | |
|         PowerSelect = [0, 0, 0, 0, 0];
 | |
| 
 | |
| 
 | |
| 
 | |
|         /*测试类*/
 | |
|         /***********************************************
 | |
|          ****************                ****************
 | |
|          ************************************************/
 | |
|         // for (local w = 0; w < 5; w++) {
 | |
|         //     PowerSelect[w] = Fate_Select_SmallPowerCard("Character/Swordman/Effect/SkillIcon.img", 8, "测试功能描述", "拔刀斩(范围)", 27 + (w * 150), 160, 0, 0, 0, 0);
 | |
|         // }
 | |
|         // LevelTimeInfo = [];
 | |
|         // for (local i = 0; i < 50; i++) {
 | |
|         //     LevelTimeInfo.append(5000);
 | |
|         // }
 | |
|         // BOSSId = {};
 | |
|         // BOSSId.rawset(59028, true);
 | |
|         // BOSSId.rawset(62681, true);
 | |
|         // BOSSId.rawset(64020, true);
 | |
|         // BOSSId.rawset(62721, true);
 | |
|         // BOSSId.rawset(62780, true);
 | |
| 
 | |
|         for (local i = 0; i< 50; i++) {
 | |
|             local TimeObj = TimeSTL("FateTimeObj" + i, 1100);
 | |
|             TimeObj.Delete();
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //绘制能力卡牌
 | |
|     function DrawPwoerCard(obj) {
 | |
|         //当卡牌包存在时绘制
 | |
|         if (PowerSelect[0] != 0) {
 | |
|             //世界静止
 | |
|             //PauseWorld(obj, 2, 100);
 | |
|             //绘制标签界面
 | |
|             T_DrawStayAni(obj, "common/dungeon/fate_select/powerselectmain.ani", 88, 40, 0, "fatepowerselectmain");
 | |
|             //光
 | |
|             T_DrawStayAni(obj, "common/dungeon/fate_select/goldselectframe.ani", 0, 0, 1, "powerselectmainlight");
 | |
|             //绘制能力选择卡牌
 | |
|             local RootTab = getroottable();
 | |
|             for (local i = 0; i< 5; i++) {
 | |
|                 PowerSelect[i].Show(obj);
 | |
|                 //常驻检测
 | |
|                 if (PowerSelect[i].isLBActive() && SelectTiming == 1) {
 | |
|                     SelectTiming = 2;
 | |
|                     PowerSelect[i].TState = 1;
 | |
|                     PowerSelect[i].SetPower(obj);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         //当能力选择后销毁卡牌包
 | |
|         if (SelectTiming == 3) {
 | |
|             PowerSelect = null;
 | |
|             PowerSelect = [0, 0, 0, 0, 0];
 | |
|             SelectTiming = 1;
 | |
|             //选择小技能卡牌
 | |
|             SelectSmallPwoerCard(sq_getJob(obj), sq_getGrowType(obj));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //绘制副本背景
 | |
|     function DrawDgnBackground(obj) {
 | |
|         if (DgnBackground == null) {
 | |
| 
 | |
|             CreatFateSelectPassObject(obj, 0);
 | |
|             DgnBackground = 0;
 | |
|             //进入副本标识包
 | |
|             StartDgnIdxPack();
 | |
|             //进入副本重置Exit标识
 | |
|             ExitIdx = true;
 | |
| 
 | |
|             //第一次获取小技能能力
 | |
|             GetSmallPwoerCard(sq_getJob(obj), sq_getGrowType(obj));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //绘制UI
 | |
|     function DrawFateUI(obj) {
 | |
|         //固定绘制右上角MainUI
 | |
|         {
 | |
|             //绘制UI
 | |
|             T_DrawStayAni(obj, "common/dungeon/fate_select/rightmain.ani", 537, 0, 0, "fate_selectRIGHTmain");
 | |
|             //绘制波数
 | |
|             DrawCustomNum(obj, 759 + ((NowLevel.tostring().len() - 1) * 6), 20, NowLevel, "common/dungeon/fate_select/num/", 1, -16);
 | |
| 
 | |
|             //判断是否BOSS战
 | |
|             if (NowLevel != 0 && (NowLevel % 10) == 9) {
 | |
|                 T_DrawStayAni(obj, "common/dungeon/fate_select/new/boss.ani", 539, 2, 0, "fate_selectBoss战");
 | |
|             } else {
 | |
|                 if (!DrawTime) return;
 | |
|                 local TimeStr = (DrawTime / 10).tostring();
 | |
|                 if (TimeStr.len() == 3) TimeStr = "0" + TimeStr;
 | |
|                 if (TimeStr.len() == 2) TimeStr = "00" + TimeStr;
 | |
|                 if (TimeStr.len() == 1) TimeStr = "000" + TimeStr;
 | |
|                 //绘制时间
 | |
|                 fateDrawCustomTimeNum(obj, 759 - 48, 22, TimeStr, "common/dungeon/fate_select/num2/", 12, -16);
 | |
|             }
 | |
| 
 | |
|             //绘制杀怪数量
 | |
|             DrawCustomNum(obj, 759 - 15, 102, (KillMonsterRewardCount - KillMonsterCount), "common/dungeon/fate_select/num2/", -5, -16);
 | |
|             //获取能力发包并且减少一次杀敌数
 | |
|             if (KillMonsterCount >= KillMonsterRewardCount) {
 | |
|                 KillMonsterCount -= KillMonsterRewardCount;
 | |
|                 //获取小技能能力
 | |
|                 GetSmallPwoerCard(sq_getJob(obj), sq_getGrowType(obj));
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //同步时间
 | |
|     function SyncTime(obj) {
 | |
|         if (NowLevel< 50) {
 | |
|             local Time = LevelTimeInfo[NowLevel];
 | |
|             if (TimeObj) {
 | |
|                 local Nt = TimeObj.Get();
 | |
|                 //时间到 切波数
 | |
|                 if (Nt == Time) {
 | |
|                     TimeObj.Delete();
 | |
|                     TimeObj = null;
 | |
| 
 | |
|                     NowLevel++;
 | |
|                 } else {
 | |
|                     DrawTime = Time - Nt;
 | |
|                 }
 | |
|             } else {
 | |
|                 //更换地图
 | |
|                 if ((NowLevel % 10) == 9 && NowLevel != 0) {
 | |
|                     //开始遭遇BOSS战
 | |
|                     if (!BossFight) {
 | |
|                         //出怪
 | |
|                         sq_SendCreatePassiveObjectPacketPos(obj, 101400 + NowLevel, 0, 0, 0, 0);
 | |
|                         BossFight = true;
 | |
|                     }
 | |
|                     //如果杀死BOSS
 | |
|                     if (BossFightKillFlag) {
 | |
|                         local ani = T_DrawDynamicAni(obj, "common/dungeon/fate_select/cg/124.ani", 400, 300, "命运的抉择过场cg");
 | |
|                         if (sq_GetAnimationFrameIndex(ani) >= 16 && BackGroundSummon == false) //当发光ani黑时
 | |
|                         {
 | |
|                             DestroyFateSelectPassObject(obj, (NowLevel / 9) - 1); //销毁上一个图
 | |
|                             CreatFateSelectPassObject(obj, (NowLevel / 9)); //创建下一个图
 | |
|                             BackGroundSummon = true;
 | |
|                         }
 | |
|                         if (sq_IsEnd(ani)) {
 | |
|                             NowLevel++;
 | |
|                             BossFightKillFlag = false;
 | |
|                             BackGroundSummon = false;
 | |
|                             BossFight = false;
 | |
|                             sq_Rewind(ani);
 | |
|                         }
 | |
|                     }
 | |
|                 } else {
 | |
|                     TimeObj = TimeSTL("FateTimeObj" + NowLevel, Time);
 | |
|                     TimeObj.Start();
 | |
| 
 | |
|                     //出怪
 | |
|                     sq_SendCreatePassiveObjectPacketPos(obj, 101400 + NowLevel, 0, 0, 0, 0);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         if (NowLevel == 50) {
 | |
|             L_sq_GoTown();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //遍历怪物死亡
 | |
|     function SyncMonsterDie(obj) {
 | |
|         local objectManager = obj.getObjectManager();
 | |
|         local CollisionObjectNumber = objectManager.getCollisionObjectNumber();
 | |
|         for (local i = 0; i< CollisionObjectNumber; i += 1) {
 | |
|             local object = objectManager.getCollisionObject(i);
 | |
|             if (object && object.isObjectType(OBJECTTYPE_ACTIVE) && obj.isEnemy(object) && object.isInDamagableState(obj) && object.getTeam() != 0) {
 | |
|                 local activeObj = sq_GetCNRDObjectToActiveObject(object);
 | |
|                 local MonDieSoundIndex = activeObj.getCollisionObjectIndex();
 | |
|                 local UUID = sq_GetUniqueId(activeObj);
 | |
|                 if (activeObj.isDead()) {
 | |
|                     if (!getroottable().rawin("fate_select" + UUID)) {
 | |
|                         if (BOSSId.rawin(MonDieSoundIndex)) {
 | |
|                             KillMonsterCount += 15;
 | |
|                             //BOSS击杀标识
 | |
|                             BossFightKillFlag = true;
 | |
|                         }
 | |
|                         KillMonsterCount++;
 | |
|                         getroottable().rawset("fate_select" + UUID, true);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //副本销毁程序
 | |
|     function DgnExit(obj) {
 | |
|         DgnBackground = null;
 | |
|         KillMonsterCount = 0;
 | |
|         NowLevel = 0;
 | |
|         //退出副本标识包
 | |
|         EndDgnIdxPack();
 | |
|         //销毁技能提升
 | |
|         local RootTab = getroottable();
 | |
|         if (RootTab.rawin("LenheartSkillManager")) {
 | |
|             RootTab.rawdelete("LenheartSkillManager");
 | |
|         }
 | |
|         ExitIdx = false;
 | |
| 
 | |
|         BossFight = false;
 | |
|         //杀死BOSS Flag
 | |
|         BossFightKillFlag = false;
 | |
|         //召唤背景
 | |
|         BackGroundSummon = false;
 | |
|         //时间容器对象
 | |
|         TimeObj = null;
 | |
|         //绘制对象时间
 | |
|         DrawTime = null;
 | |
| 
 | |
|         SelectTiming = 1;
 | |
|     }
 | |
|     //副本逻辑程序
 | |
|     function DgnProc(obj) {
 | |
|         local stage = sq_GetGlobaludpModuleStage();
 | |
|         local dungeon = sq_GetDungeonByStage(stage);
 | |
|         local dungeonIndex = sq_GetDuegonIndex(dungeon);
 | |
|         if (dungeonIndex != 23048) {
 | |
|             if (ExitIdx == true) DgnExit(obj);
 | |
|             return;
 | |
|         } else {
 | |
|             if (sq_GetCurrentModuleType() == 3) {
 | |
|                 //绘制副本背景
 | |
|                 DrawDgnBackground(obj);
 | |
|                 //绘制UI
 | |
|                 DrawFateUI(obj);
 | |
|                 //同步时间
 | |
|                 SyncTime(obj);
 | |
|                 //遍历怪物死亡
 | |
|                 SyncMonsterDie(obj);
 | |
|                 //绘制能力卡牌
 | |
|                 DrawPwoerCard(obj);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //逻辑入口
 | |
|     function Proc(obj) {
 | |
|         if (KeyPressNB.isKeyPress(48, "Fate_SelectCloseKey")) {
 | |
|             MainState = false;
 | |
|         }
 | |
|         DgnProc(obj);
 | |
|     }
 | |
| 
 | |
|     function DrawCustomNum(obj, xPos, yPos, num, str, Interval, OneDeviation) {
 | |
|         local len = (num.tostring()).len();
 | |
|         for (local i = 0; i< len; i++) {
 | |
|             local one = 0;
 | |
|             local DrawNum = (num.tostring()).slice(i, i + 1);
 | |
|             if (i != (len - 1)) one += OneDeviation * abs(i - (len - 1));
 | |
|             local ani = obj.getVar().GetAnimationMap(DrawNum + str, str + DrawNum + ".ani");
 | |
|             sq_AnimationProc(ani);
 | |
|             sq_drawCurrentFrame(ani, xPos + (i * Interval) + one, yPos, true);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function fateDrawCustomTimeNum(obj, xPos, yPos, num, str, Interval, OneDeviation) {
 | |
| 
 | |
|         for (local i = 0; i< 4; i++) {
 | |
|             local Idx = num.slice(0 + i, 1 + i);
 | |
|             local ani = obj.getVar().GetAnimationMap(Idx + str, str + Idx + ".ani");
 | |
|             sq_AnimationProc(ani);
 | |
|             sq_drawCurrentFrame(ani, xPos + ((i - 4) * 14) + ((i / 2) * 18) - 10, yPos, true);
 | |
|         }
 | |
|         T_DrawStayAni(obj, "common/dungeon/fate_select/dian.ani", xPos - 146, yPos - 34, 0, "fatedian");
 | |
|     }
 | |
| 
 | |
| 
 | |
|     function PauseWorld(obj, Type, Time) {
 | |
|         local objectManager = obj.getObjectManager();
 | |
|         for (local i = 0; i< objectManager.getCollisionObjectNumber(); i += 1) {
 | |
|             local object = objectManager.getCollisionObject(i);
 | |
|             sq_SetPause(object, Type, Time);
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function CreatFateSelectPassObject(obj, sc) {
 | |
|         switch (sc) {
 | |
|             case 0:
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102500, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102501, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102502, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102503, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102504, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102505, 0, 0, 0, 0);
 | |
| 
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 1012, 0, 391, 340, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 1013, 0, 538, 340, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 261, 0, 1234, 193, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 261, 0, 1004, 215, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 261, 0, 619, 255, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 248, 0, 607, 583, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 247, 0, 588, 591, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 583, 323, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 261, 0, 280, 202, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 261, 0, 1072, 298, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 479, 335, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 356, 360, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 474, 363, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 614, 341, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 565, 344, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 431, 346, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 322, 366, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 494, 374, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 540, 370, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 292, 0, 1, 228, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 292, 0, 6, 435, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 1012, 0, 1031, 468, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 990, 462, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3004, 0, 1067, 453, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1009, 444, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1133, 481, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 943, 482, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1047, 506, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 221, 0, 157, 575, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 282, 457, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 160, 427, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 263, 390, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 375, 427, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 863, 434, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1025, 447, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 905, 492, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 410, 315, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 72, 422, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 103, 584, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 160, 526, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 657, 259, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 571, 597, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 608, 597, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1060, 538, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1113, 444, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1092, 543, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 1012, 543, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 148, 512, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 228, 549, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 65, 397, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 175, 439, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 3000, 0, 280, 396, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 247, 0, 652, 190, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 248, 0, 217, 164, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 247, 0, 345, 202, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 248, 0, 1014, 199, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 247, 0, 1023, 206, 0);
 | |
|                 break;
 | |
|             case 1:
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102515, 0, 0, -40, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102510, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102511, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102513, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102514, 0, 0, 0, 0);
 | |
| 
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 868, 0, 591, 835, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 502, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 562, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 622, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 802, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 862, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 922, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 1102, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 1162, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006950, 0, 1222, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 869, 0, 1020, 705, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 869, 0, 713, 719, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, 1540, 240, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, 1560, 394, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, 1541, 551, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, -180, 293, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, -7, 360, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109006947, 0, 26, 508, 0);
 | |
|                 break;
 | |
|             case 2:
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102525, 0, 0, -40, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102520, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102521, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102522, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102523, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102524, 0, 0, 80, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102526, 0, 0, 80, 0);
 | |
| 
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10658, 0, 1699, 146, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10681, 0, 7, 284, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 15096, 0, 1582, 526, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10681, 0, 7, 391, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 15095, 0, 1620, 477, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 15095, 0, 1619, 419, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10671, 0, 7, 186, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10672, 0, -39, 511, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10675, 0, 1540, 351, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10671, 0, 189, 573, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10675, 0, 274, 691, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10675, 0, 222, 659, 0);
 | |
|                 break;
 | |
|             case 3:
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102535, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102530, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102531, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102534, 0, 0, 120, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102536, 0, 0, 120, 0);
 | |
| 
 | |
|                 local YP = 120;
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8959, 0, 266, 151 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10232, 0, -46, 582 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10232, 0, 3, 130 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10232, 0, -99, 485 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1072, 153 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1039, 144 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 483, 572 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 503, 592 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 411, 568 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10151, 0, 777, 136 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10151, 0, 673, 137 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10150, 0, 1574, 265 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1526, 195 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1553, 533 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1538, 516 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10150, 0, 1440, 160 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10150, 0, 393, 141 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10151, 0, 139, 154 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 543, 598 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 464, 587 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1511, 211 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1500, 186 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 1528, 546 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10152, 0, 985, 137 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8453, 0, 860, 155 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8453, 0, 1323, 150 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8453, 0, 491, 138 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8453, 0, 538, 153 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 607, 148 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 638, 160 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8960, 0, 1555, 312 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8960, 0, 405, 596 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8960, 0, 1126, 157 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8960, 0, 1163, 146 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10151, 0, 1239, 126 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109002769, 0, 1354, 153 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 109002769, 0, 1543, 298 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8963, 0, 907, 138 + YP, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 8453, 0, 1573, 505 + YP, 0);
 | |
|                 break;
 | |
|             case 4:
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102545, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102540, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102541, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102542, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102543, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 102546, 0, 0, 120, 0);
 | |
| 
 | |
| 
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9390, 0, 0, 260, 100);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9390, 0, 640, 260, 100);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9390, 0, 1280, 260, 100);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 0, 0, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 640, 23, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 1280, 24, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 0, 200, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 640, 200, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 9392, 0, 1280, 200, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10243, 0, 291, 165, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10246, 0, 10, 182, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10243, 0, 780, 159, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10246, 0, 1244, 601, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10247, 0, 681, 170, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10246, 0, 918, 169, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10245, 0, 648, 603, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10246, 0, 1066, 165, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10250, 0, 577, 263, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10250, 0, 1251, 264, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10251, 0, 544, 323, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10244, 0, 331, 619, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10251, 0, 1269, 352, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10248, 0, 441, 608, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10251, 0, 213, 385, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10251, 0, 1250, 546, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10247, 0, 953, 615, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10244, 0, 894, 599, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10248, 0, 1155, 164, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10243, 0, 1528, 141, 0);
 | |
|                 sq_SendCreatePassiveObjectPacketPos(obj, 10244, 0, 1513, 157, 0);
 | |
|                 break;
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //销毁特效
 | |
|     function DestroyPassiveObject(obj, Index) {
 | |
|         local ballCount = obj.getMyPassiveObjectCount(Index);
 | |
|         for (local i = 0; i< ballCount; ++i) {
 | |
|             local magicBall = obj.getMyPassiveObject(Index, i)
 | |
|             if (!magicBall)
 | |
|                 continue;
 | |
|             sq_SendDestroyPacketPassiveObject(magicBall);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function DestroyFateSelectPassObject(obj, sc) {
 | |
|         switch (sc) {
 | |
|             case 0:
 | |
|                 DestroyPassiveObject(obj, 102500);
 | |
|                 DestroyPassiveObject(obj, 102501);
 | |
|                 DestroyPassiveObject(obj, 102502);
 | |
|                 DestroyPassiveObject(obj, 102503);
 | |
|                 DestroyPassiveObject(obj, 102504);
 | |
|                 DestroyPassiveObject(obj, 102505);
 | |
| 
 | |
|                 DestroyPassiveObject(obj, 1012);
 | |
|                 DestroyPassiveObject(obj, 1013);
 | |
|                 DestroyPassiveObject(obj, 261);
 | |
|                 DestroyPassiveObject(obj, 248);
 | |
|                 DestroyPassiveObject(obj, 247);
 | |
|                 DestroyPassiveObject(obj, 3000);
 | |
|                 DestroyPassiveObject(obj, 3004);
 | |
|                 DestroyPassiveObject(obj, 292);
 | |
|                 DestroyPassiveObject(obj, 221);
 | |
|                 break;
 | |
|             case 1:
 | |
|                 DestroyPassiveObject(obj, 102510);
 | |
|                 DestroyPassiveObject(obj, 102511);
 | |
|                 DestroyPassiveObject(obj, 102512);
 | |
|                 DestroyPassiveObject(obj, 102513);
 | |
|                 DestroyPassiveObject(obj, 102514);
 | |
|                 DestroyPassiveObject(obj, 102515);
 | |
| 
 | |
|                 DestroyPassiveObject(obj, 868);
 | |
|                 DestroyPassiveObject(obj, 869);
 | |
|                 DestroyPassiveObject(obj, 109006950);
 | |
|                 DestroyPassiveObject(obj, 109006947);
 | |
|                 break;
 | |
|             case 2:
 | |
|                 DestroyPassiveObject(obj, 102520);
 | |
|                 DestroyPassiveObject(obj, 102521);
 | |
|                 DestroyPassiveObject(obj, 102522);
 | |
|                 DestroyPassiveObject(obj, 102523);
 | |
|                 DestroyPassiveObject(obj, 102524);
 | |
|                 DestroyPassiveObject(obj, 102525);
 | |
|                 DestroyPassiveObject(obj, 102526);
 | |
| 
 | |
|                 DestroyPassiveObject(obj, 10658);
 | |
|                 DestroyPassiveObject(obj, 10681);
 | |
|                 DestroyPassiveObject(obj, 15096);
 | |
|                 DestroyPassiveObject(obj, 10672);
 | |
|                 DestroyPassiveObject(obj, 15095);
 | |
|                 DestroyPassiveObject(obj, 10671);
 | |
|                 DestroyPassiveObject(obj, 10675);
 | |
|                 break;
 | |
|             case 3:
 | |
|                 DestroyPassiveObject(obj, 102530);
 | |
|                 DestroyPassiveObject(obj, 102531);
 | |
|                 DestroyPassiveObject(obj, 102534);
 | |
|                 DestroyPassiveObject(obj, 102535);
 | |
|                 DestroyPassiveObject(obj, 102536);
 | |
| 
 | |
|                 DestroyPassiveObject(obj, 8959);
 | |
|                 DestroyPassiveObject(obj, 10232);
 | |
|                 DestroyPassiveObject(obj, 8963);
 | |
|                 DestroyPassiveObject(obj, 10151);
 | |
|                 DestroyPassiveObject(obj, 10150);
 | |
|                 DestroyPassiveObject(obj, 10152);
 | |
|                 DestroyPassiveObject(obj, 8453);
 | |
|                 DestroyPassiveObject(obj, 8960);
 | |
|                 DestroyPassiveObject(obj, 109002769);
 | |
|                 break;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| function Fate_Select(obj) {
 | |
|     local RootTab = getroottable();
 | |
|     if (!RootTab.rawin("Fate_SelectCObj")) {
 | |
|         local Cobj = Fate_SelectC();
 | |
|         RootTab.rawset("Fate_SelectCObj", Cobj);
 | |
|     } else {
 | |
|         RootTab["Fate_SelectCObj"].Proc(obj);
 | |
|     }
 | |
| } |