1135 lines
47 KiB
Plaintext
1135 lines
47 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;
|
|
case 3:
|
|
RecoveryHPMP(obj);
|
|
break;
|
|
case 4:
|
|
AddBaseAb(obj);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function AddBaseAb(obj) {
|
|
local RootTab = getroottable();
|
|
|
|
RootTab["Fate_SelectCObj"].BasePwoer[SkillIdx] += SkillValue;
|
|
RootTab["Fate_SelectCObj"].AddBaseAb(obj);
|
|
}
|
|
|
|
function RecoveryHPMP(obj) {
|
|
switch (SkillIdx) {
|
|
case 0:
|
|
obj.setHp(obj.getHp() + (obj.getHpMax() * (SkillValue.tofloat() / 100.0)).tointeger(), null, true);
|
|
break;
|
|
case 1:
|
|
obj.sendSetMpPacket(obj.getMp() + (obj.getMpMax() * (SkillValue.tofloat() / 100.0)).tointeger());
|
|
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;
|
|
//四维
|
|
BasePwoer = null;
|
|
|
|
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];
|
|
BasePwoer = [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 AddBaseAb(obj) {
|
|
|
|
if (CNSquirrelAppendage.sq_IsAppendAppendage(obj, "appendage/ap_fateselect.nut")) {
|
|
CNSquirrelAppendage.sq_RemoveAppendage(obj, "appendage/ap_fateselect.nut");
|
|
}
|
|
|
|
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "appendage/ap_fateselect.nut", true);
|
|
CNSquirrelAppendage.sq_Append(appendage, obj, obj);
|
|
local change_appendage = appendage.sq_getChangeStatus("fateselectbasepower");
|
|
if (!change_appendage) {
|
|
change_appendage = appendage.sq_AddChangeStatusAppendageID(obj, obj, 0,
|
|
CHANGE_STATUS_TYPE_COOLTIME_DECLINE,
|
|
false, 0, 254);
|
|
}
|
|
if (change_appendage) {
|
|
change_appendage.clearParameter();
|
|
change_appendage.addParameter(0, false, BasePwoer[0].tofloat()); //力量
|
|
change_appendage.addParameter(3, false, BasePwoer[2].tofloat()); //体力
|
|
change_appendage.addParameter(2, false, BasePwoer[3].tofloat()); //精神
|
|
change_appendage.addParameter(1, false, BasePwoer[1].tofloat()); //智力
|
|
}
|
|
|
|
}
|
|
//绘制能力卡牌
|
|
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() || KeyPressNB.isKeyPress((32 + i), "Fate_SelectQu" + (32 + i))) && 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;
|
|
local T = {
|
|
op = 20023013,
|
|
BOSSId = NowLevel,
|
|
}
|
|
SendPack(T);
|
|
}
|
|
if (sq_IsEnd(ani)) {
|
|
NowLevel++;
|
|
BossFightKillFlag = false;
|
|
BackGroundSummon = false;
|
|
BossFight = false;
|
|
sq_Rewind(ani);
|
|
}
|
|
}
|
|
} else {
|
|
TimeObj = TimeSTL("FateTimeObj" + NowLevel, Time);
|
|
TimeObj.Start();
|
|
local chrobj = sq_CreateCharacter(1, 4);
|
|
//出怪
|
|
sq_SendCreatePassiveObjectPacketPos(chrobj, 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;
|
|
|
|
BasePwoer = [0, 0, 0, 0];
|
|
}
|
|
//副本逻辑程序
|
|
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);
|
|
}
|
|
} |