1026 lines
37 KiB
Plaintext
1026 lines
37 KiB
Plaintext
|
|
/*
|
||
|
|
文件名:Rindro_LukeFightSituation.nut
|
||
|
|
路径:Plugins/Rindro_Luke/Rindro_LukeFightSituation.nut
|
||
|
|
创建日期:2024-04-10 21:28
|
||
|
|
文件用途:卢克攻坚战况
|
||
|
|
*/
|
||
|
|
//复选框
|
||
|
|
class RinDro_Luke_LenheartNewUI_SwitchButton extends LenheartNewUI_CommonUi {
|
||
|
|
//透明度
|
||
|
|
AlphaValue = 1.0;
|
||
|
|
State = 0;
|
||
|
|
ImgIndex = null;
|
||
|
|
|
||
|
|
constructor(X, Y) {
|
||
|
|
LenheartNewUI_CommonUi.constructor(X, Y, 14, 15);
|
||
|
|
}
|
||
|
|
|
||
|
|
function SyncAlpha(Value) {
|
||
|
|
AlphaValue = Value;
|
||
|
|
}
|
||
|
|
|
||
|
|
function Show(obj) {
|
||
|
|
//不可用
|
||
|
|
if (State == 8) {
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex + 3 : 141, X, Y + 1, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
} else {
|
||
|
|
//悬停
|
||
|
|
if (isLBDown) {
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex + 2 : 140, X, Y + 1, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
}
|
||
|
|
//按下
|
||
|
|
else if (isInRect) {
|
||
|
|
if (State == 0)
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex + 1 : 139, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
if (State == 1)
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex + 2 : 140, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
}
|
||
|
|
//普通
|
||
|
|
else {
|
||
|
|
if (State == 0)
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex : 138, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
if (State == 1)
|
||
|
|
L_sq_DrawImg("interface/lenheartwindowcommon.img", ImgIndex ? ImgIndex + 2 : 140, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||
|
|
|
||
|
|
luke_game_navigation = Rindro_Image("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img");
|
||
|
|
luke_state_full = Rindro_Image("interface2/raid/luke/luke_game_navigation/luke_state_full/luke_state_full.img");
|
||
|
|
newantondungeoninfo = Rindro_Image("hud/newantondungeoninfo.img");
|
||
|
|
newantondungeoninfo2 = Rindro_Image("hud/newantondungeoninfo2.img");
|
||
|
|
|
||
|
|
Visible = false;
|
||
|
|
//调试模式
|
||
|
|
DeBugMode = true;
|
||
|
|
//透明度
|
||
|
|
AlphaValue = 1.0;
|
||
|
|
|
||
|
|
//攻坚战况信息
|
||
|
|
Info = null;
|
||
|
|
//战况消息外部窗口
|
||
|
|
ExternalWindow = null;
|
||
|
|
|
||
|
|
//选择进入地下城指针状态
|
||
|
|
SelectDgnMarkFlag = 0;
|
||
|
|
|
||
|
|
//X Y 裁切开始X Y 裁切结束X Y
|
||
|
|
OffsetArr = [
|
||
|
|
//男鬼剑士
|
||
|
|
[56, 112, 220, 222],
|
||
|
|
//女格斗家
|
||
|
|
[54, 103, 240, 278],
|
||
|
|
//男神枪手
|
||
|
|
[55, 130, 236, 246],
|
||
|
|
//女魔法师
|
||
|
|
[57, 88, 234, 291],
|
||
|
|
//男圣职者
|
||
|
|
[57, 124, 208, 190],
|
||
|
|
//女神枪手
|
||
|
|
[56, 119, 226, 209],
|
||
|
|
//暗夜使者
|
||
|
|
[56, 117, 225, 212],
|
||
|
|
//男格斗家
|
||
|
|
[56, 118, 233, 212],
|
||
|
|
//男魔法师
|
||
|
|
[54, 103, 236, 276],
|
||
|
|
//黑暗武士
|
||
|
|
[56, 112, 220, 222],
|
||
|
|
//缔造者
|
||
|
|
[57, 88, 234, 291],
|
||
|
|
]
|
||
|
|
|
||
|
|
MapIndexTable = null; //判断孵化进入的操作表
|
||
|
|
MapMoveMark = false; //副本中移动的标志
|
||
|
|
HuoShanMonserTable = null; //火山怪物投放表
|
||
|
|
|
||
|
|
//获取攻坚信息
|
||
|
|
function GetInfo() {
|
||
|
|
local T = {
|
||
|
|
op = 20084053,
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
}
|
||
|
|
|
||
|
|
//火山怪物投放包
|
||
|
|
function HuoShanMonsterEvent(Chunk) {
|
||
|
|
local Info = Json.Decode(Chunk);
|
||
|
|
if (sq_GetCurrentModuleType() == 3) {
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj = sq_ObjectToSQRCharacter(obj);
|
||
|
|
obj.sq_SendCreatePassiveObjectPacket(HuoShanMonserTable[Info.FuHuaId], 0, 120, 1, 0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//设置伤害值回调
|
||
|
|
function SetCharacterDamageRate(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
local Rate = Jso.damageMarkup.tofloat() / 100.0;
|
||
|
|
//伤害设置
|
||
|
|
if (getroottable().rawin("LenheartRaidModuleDamageRate")) {
|
||
|
|
getroottable()["LenheartRaidModuleDamageRate"] = Rate;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function setLukeRaidBoss_DamageHp(Chunk) {
|
||
|
|
local Jso = Json.Decode(Chunk);
|
||
|
|
local obj = sq_GetMyMasterCharacter();
|
||
|
|
obj = sq_ObjectToSQRCharacter(obj);
|
||
|
|
local mob = LukeRaid_getMonsterObject(obj, 664670);
|
||
|
|
if (mob) {
|
||
|
|
local mobMaxhp = mob.getHpMax();
|
||
|
|
local mobhp = mob.getHp();
|
||
|
|
local newhp = mobhp - (mobMaxhp.tofloat() * (Jso.ReduceHp.tofloat() / 100.0)).tointeger();
|
||
|
|
mob.setHp(newhp, null, true);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||
|
|
Childrens = [];
|
||
|
|
Pack_Control.rawset(20084402, setLukeRaidBoss_DamageHp.bindenv(this));
|
||
|
|
//初始化判断孵化进入操作表
|
||
|
|
MapIndexTable = {};
|
||
|
|
MapIndexTable.rawset(33100, 7);
|
||
|
|
MapIndexTable.rawset(33103, 8);
|
||
|
|
MapIndexTable.rawset(33119, 9);
|
||
|
|
MapIndexTable.rawset(33116, 10);
|
||
|
|
//火山怪物投放表
|
||
|
|
HuoShanMonserTable = {};
|
||
|
|
HuoShanMonserTable.rawset(1, 202210052);
|
||
|
|
HuoShanMonserTable.rawset(2, 202210053);
|
||
|
|
HuoShanMonserTable.rawset(3, 202210054);
|
||
|
|
HuoShanMonserTable.rawset(4, 202210055);
|
||
|
|
|
||
|
|
Pack_Control.rawset(20084040, HuoShanMonsterEvent.bindenv(this));
|
||
|
|
Pack_Control.rawset(20084030, SetCharacterDamageRate.bindenv(this));
|
||
|
|
|
||
|
|
//注册控件
|
||
|
|
RegisterWidget();
|
||
|
|
|
||
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||
|
|
|
||
|
|
ExternalWindow = Rindro_Luke_FightSituatioExternalC("卢克攻坚战况表外部窗口", getroottable().Rindro_Scr_Width.tointeger() - 103, 8, 103, 22, 0);
|
||
|
|
ExternalWindow.AddParentWin(this);
|
||
|
|
|
||
|
|
GetInfo();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//副本List
|
||
|
|
DgnList = null;
|
||
|
|
//初始化信息
|
||
|
|
function InitInfo(InfoObj) {
|
||
|
|
Info = InfoObj;
|
||
|
|
//取出副本信息
|
||
|
|
InfoObj = InfoObj.dunList;
|
||
|
|
|
||
|
|
if ("DanSheng_Buff" in Info) DanShengBuffObject = Info.DanSheng_Buff; //诞生圣所BUFF对象
|
||
|
|
if ("ManYan_Buff" in Info) ManYanBuffObject = Info.ManYan_Buff; //蔓延圣所BUFF对象
|
||
|
|
if ("YanMie_Buff" in Info) YanMieBuffObject = Info.YanMie_Buff; //湮灭圣所BUFF对象
|
||
|
|
|
||
|
|
DgnList = [];
|
||
|
|
//当前构造时间
|
||
|
|
local Time_C = Clock();
|
||
|
|
|
||
|
|
foreach(DgnObj in InfoObj) {
|
||
|
|
//诞生
|
||
|
|
if (DgnObj.id == 1) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 100;
|
||
|
|
DgnObj.Y <- 226;
|
||
|
|
DgnObj.BloodType <- 3;
|
||
|
|
DgnObj.BloodImg <- 2;
|
||
|
|
DgnObj.NameIdx <- 0;
|
||
|
|
}
|
||
|
|
//湮灭
|
||
|
|
else if (DgnObj.id == 2) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.X <- 448;
|
||
|
|
DgnObj.Y <- 95;
|
||
|
|
DgnObj.BloodType <- 3;
|
||
|
|
DgnObj.BloodImg <- 2;
|
||
|
|
DgnObj.NameIdx <- 1;
|
||
|
|
}
|
||
|
|
//蔓延
|
||
|
|
else if (DgnObj.id == 3) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 448;
|
||
|
|
DgnObj.Y <- 376;
|
||
|
|
DgnObj.BloodType <- 3;
|
||
|
|
DgnObj.BloodImg <- 2;
|
||
|
|
DgnObj.NameIdx <- 2;
|
||
|
|
}
|
||
|
|
//光之入口
|
||
|
|
else if (DgnObj.id == 4) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 170;
|
||
|
|
DgnObj.Y <- 144;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 9;
|
||
|
|
}
|
||
|
|
//暗之入口
|
||
|
|
else if (DgnObj.id == 5) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 170;
|
||
|
|
DgnObj.Y <- 314;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 10;
|
||
|
|
}
|
||
|
|
//光祭坛
|
||
|
|
else if (DgnObj.id == 6) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 310;
|
||
|
|
DgnObj.Y <- 170;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 3;
|
||
|
|
}
|
||
|
|
//暗祭坛
|
||
|
|
else if (DgnObj.id == 7) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 310;
|
||
|
|
DgnObj.Y <- 288;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 4;
|
||
|
|
}
|
||
|
|
//力量
|
||
|
|
else if (DgnObj.id == 8) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 460;
|
||
|
|
DgnObj.Y <- 170;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 5;
|
||
|
|
}
|
||
|
|
//智慧
|
||
|
|
else if (DgnObj.id == 9) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 460;
|
||
|
|
DgnObj.Y <- 288;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 6;
|
||
|
|
}
|
||
|
|
//能源控制
|
||
|
|
else if (DgnObj.id == 10) {
|
||
|
|
DgnObj.BackGroundIdx <- 6;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 385;
|
||
|
|
DgnObj.Y <- 229;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.NameIdx <- 18;
|
||
|
|
DgnObj.type <- 1;
|
||
|
|
}
|
||
|
|
//光圣殿
|
||
|
|
else if (DgnObj.id == 11) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 520;
|
||
|
|
DgnObj.Y <- 84;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 12;
|
||
|
|
}
|
||
|
|
//暗圣殿
|
||
|
|
else if (DgnObj.id == 12) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 520;
|
||
|
|
DgnObj.Y <- 378;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 14;
|
||
|
|
}
|
||
|
|
//光王座
|
||
|
|
else if (DgnObj.id == 13) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 520;
|
||
|
|
DgnObj.Y <- 200;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 16;
|
||
|
|
}
|
||
|
|
//暗王座
|
||
|
|
else if (DgnObj.id == 14) {
|
||
|
|
DgnObj.BackGroundIdx <- 3;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 520;
|
||
|
|
DgnObj.Y <- 200;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.NameIdx <- 16;
|
||
|
|
}
|
||
|
|
//能源储藏
|
||
|
|
else if (DgnObj.id == 15) {
|
||
|
|
DgnObj.BackGroundIdx <- 6;
|
||
|
|
DgnObj.Timer <- Time_C;
|
||
|
|
DgnObj.X <- 385 + 230;
|
||
|
|
DgnObj.Y <- 229;
|
||
|
|
DgnObj.BloodImg <- 3;
|
||
|
|
DgnObj.BloodType <- 1;
|
||
|
|
DgnObj.NameIdx <- 18;
|
||
|
|
DgnObj.type <- 1;
|
||
|
|
}
|
||
|
|
DgnList.append(clone(DgnObj));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
BaseSituationBtn = null;
|
||
|
|
//简易战况表是否开启
|
||
|
|
BaseSituationFlag = 1;
|
||
|
|
|
||
|
|
function RegisterWidget() {
|
||
|
|
//进入地下城
|
||
|
|
local GoDgnButton = LenheartNewUI_BaseButton(578, 519, 95, 29, "hud/newantondungeonbutton.img", 6);
|
||
|
|
GoDgnButton.OnClick = function() {
|
||
|
|
SelectDgnMarkFlag = 1;
|
||
|
|
}.bindenv(this);
|
||
|
|
Childrens.append(GoDgnButton);
|
||
|
|
|
||
|
|
//返回城镇
|
||
|
|
local ReturnTownButton = LenheartNewUI_BaseButton(678, 519, 95, 29, "hud/newantondungeonbutton.img", 9);
|
||
|
|
ReturnTownButton.OnClick = function() {
|
||
|
|
local T = {
|
||
|
|
op = 20084305,
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
}.bindenv(this);
|
||
|
|
Childrens.append(ReturnTownButton);
|
||
|
|
|
||
|
|
//简易战况表复选框
|
||
|
|
BaseSituationBtn = RinDro_Luke_LenheartNewUI_SwitchButton(220, 20);
|
||
|
|
BaseSituationBtn.State = 1;
|
||
|
|
BaseSituationBtn.ImgIndex = 358;
|
||
|
|
BaseSituationBtn.Width = 19;
|
||
|
|
BaseSituationBtn.Height = 19;
|
||
|
|
BaseSituationBtn.OnClick = function() {
|
||
|
|
switch (BaseSituationFlag) {
|
||
|
|
case 0:
|
||
|
|
BaseSituationFlag = 1;
|
||
|
|
break;
|
||
|
|
case 1:
|
||
|
|
BaseSituationFlag = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
BaseSituationBtn.State = BaseSituationFlag;
|
||
|
|
}.bindenv(this);
|
||
|
|
AddChild(BaseSituationBtn);
|
||
|
|
|
||
|
|
// //关闭按钮
|
||
|
|
// local CloseButton = LenheartNewUI_BaseButton(696, 20, 103, 22, "hud/newantondungeonbutton.img", 3);
|
||
|
|
// CloseButton.OnClick = function() {
|
||
|
|
// CloseWindow();
|
||
|
|
// CloseFlag = Clock();
|
||
|
|
// }.bindenv(this);
|
||
|
|
// Childrens.append(CloseButton);
|
||
|
|
}
|
||
|
|
|
||
|
|
function DrawParty() {
|
||
|
|
//绘制待命房间
|
||
|
|
luke_game_navigation.DrawPng(33, X + 20, Y + 488);
|
||
|
|
//绘制我的队伍
|
||
|
|
if (RinDro_Luke_Obj.MyRaidTeam) {
|
||
|
|
local Mt = RinDro_Luke_Obj.MyRaidTeam;
|
||
|
|
if (!Mt) return;
|
||
|
|
local PartyMaster;
|
||
|
|
local PosI = 0;
|
||
|
|
foreach(index, PartyMasterIcon in Mt.MembersList) {
|
||
|
|
if (!("Standby" in PartyMasterIcon.InfoObj) || !PartyMasterIcon.InfoObj.Standby) continue;
|
||
|
|
local XOffset = 0;
|
||
|
|
local YOffset = 9 + (index * 22);
|
||
|
|
|
||
|
|
//绘制队长头像
|
||
|
|
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||
|
|
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[PartyMasterIcon.InfoObj.Job][0] - 17 + ((PosI % 10) * 24);
|
||
|
|
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[PartyMasterIcon.InfoObj.Job][1] + 512 + ((PosI / 10) * 20);
|
||
|
|
setClip(AXpos + OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||
|
|
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||
|
|
releaseClip(); //裁切结束
|
||
|
|
}
|
||
|
|
PosI++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
PartyBackground = [
|
||
|
|
[10, -65, 24, -60, 25, 25],
|
||
|
|
[9, -65, 0, -60, 1, 1],
|
||
|
|
[11, -65, 42, -60, 48, 49],
|
||
|
|
[8, -65, -24, -60, -24, -23],
|
||
|
|
[12, -65, 64, -60, 71, 72],
|
||
|
|
]
|
||
|
|
//绘制副本
|
||
|
|
function DrawDungeon(DgnObj) {
|
||
|
|
|
||
|
|
//普通类型副本
|
||
|
|
if (DgnObj.type == 0) {
|
||
|
|
//绘制血条
|
||
|
|
if ("hp" in DgnObj && "BloodType" in DgnObj) {
|
||
|
|
//已经死亡
|
||
|
|
if (DgnObj.hp == DgnObj.BloodType) {
|
||
|
|
//绘制副本血槽背景
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", DgnObj.BackGroundIdx, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 6, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
} else {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 10, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
//绘制副本血槽背景
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", DgnObj.BackGroundIdx, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 4, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
//得出血条类型需要的img
|
||
|
|
local ImgIdx = DgnObj.BloodImg;
|
||
|
|
//绘制血条
|
||
|
|
DrawImg("hud/newlukedungeonblood.img", ImgIdx - DgnObj.hp, X + DgnObj.X, Y + DgnObj.Y);
|
||
|
|
//绘制副本名称
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/dungeon_name/luke_dungeon_name.img", DgnObj.NameIdx, X + DgnObj.X - 16, Y + DgnObj.Y + 70);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//进度条类型副本
|
||
|
|
else if (DgnObj.type == 1) {
|
||
|
|
//绘制副本血槽背景
|
||
|
|
if ("gr" in DgnObj && DgnObj.gr == 1) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 18, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
} else {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", DgnObj.BackGroundIdx, X + DgnObj.X - 10, Y + DgnObj.Y - 11);
|
||
|
|
}
|
||
|
|
//如果存活
|
||
|
|
if (DgnObj.state == 0) {
|
||
|
|
local Remainder = DgnObj.time - (Clock() - DgnObj.Timer);
|
||
|
|
local Rate = Remainder.tofloat() / DgnObj.maxTime;
|
||
|
|
local Idx = (Rate * 100.0).tointeger();
|
||
|
|
if (Idx< 0) Idx = 0;
|
||
|
|
if (DgnObj.maxTime == 0) Idx = 99;
|
||
|
|
//绘制时间进度条
|
||
|
|
DrawImg("hud/newantondungeonloading3.img", 99 - Idx, X + DgnObj.X - 4, Y + DgnObj.Y - 4);
|
||
|
|
//绘制时间
|
||
|
|
local ttt = (Remainder / 1000.0).tointeger();
|
||
|
|
local TimeStr = ttt.tostring();
|
||
|
|
if (ttt <= 0) TimeStr = "∞";
|
||
|
|
L_sq_DrawCode(TimeStr, X + DgnObj.X + 35 - LenheartTextClass.GetStringLength(TimeStr) / 2, Y + DgnObj.Y + 36, sq_RGBA(255, 255, 255, 255), 0, 1);
|
||
|
|
} else {
|
||
|
|
local Remainder = DgnObj.time - (Clock() - DgnObj.Timer);
|
||
|
|
local Rate = Remainder.tofloat() / DgnObj.maxTime;
|
||
|
|
local Idx = (Rate * 100.0).tointeger();
|
||
|
|
|
||
|
|
//绘制时间进度条
|
||
|
|
L_sq_DrawImg("hud/newantondungeonloading3.img", 99 - Idx, X + DgnObj.X - 4, Y + DgnObj.Y - 4, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
|
||
|
|
//绘制时间
|
||
|
|
local TimeStr = (Remainder / 1000.0).tointeger().tostring();
|
||
|
|
L_sq_DrawCode(TimeStr, X + DgnObj.X + 35 - LenheartTextClass.GetStringLength(TimeStr) / 2, Y + DgnObj.Y + 36, sq_RGBA(255, 85, 0, 255), 0, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if (DgnObj.id == 4) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 101, X + DgnObj.X + 60, Y + DgnObj.Y + 23);
|
||
|
|
} else if (DgnObj.id == 5) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 102, X + DgnObj.X + 60, Y + DgnObj.Y + 18);
|
||
|
|
} else if (DgnObj.id == 6) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 103, X + DgnObj.X + 60, Y + DgnObj.Y + 24);
|
||
|
|
} else if (DgnObj.id == 7) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/luke_game_navigation.img", 104, X + DgnObj.X + 60, Y + DgnObj.Y + 24);
|
||
|
|
} else if (DgnObj.id == 13) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/dungeon_name/luke_dungeon_name.img", 13, X + DgnObj.X - 15, Y + DgnObj.Y + 94);
|
||
|
|
} else if (DgnObj.id == 14) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/dungeon_name/luke_dungeon_name.img", 15, X + DgnObj.X - 15, Y + DgnObj.Y + 94);
|
||
|
|
} else if (DgnObj.id == 15) {
|
||
|
|
DrawImg("interface2/raid/luke/luke_game_navigation/dungeon_name/luke_dungeon_name.img", 17, X + DgnObj.X - 15, Y + DgnObj.Y + 76);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//绘制队伍信息
|
||
|
|
local PartyCount = DgnObj.Party.len();
|
||
|
|
for (local i = 0; i< PartyCount; i++) {
|
||
|
|
local ImgInfo = PartyBackground[i];
|
||
|
|
DrawImg("hud/newantondungeoninfo.img", ImgInfo[0], X + DgnObj.X + ImgInfo[1], Y + DgnObj.Y + ImgInfo[2]);
|
||
|
|
local cid = DgnObj.Party[i][0];
|
||
|
|
local count = DgnObj.Party[i][1] - 1;
|
||
|
|
local CharacV = RinDro_Luke_Obj.Portrait[cid];
|
||
|
|
|
||
|
|
local XOffset = 0;
|
||
|
|
local YOffset = 9;
|
||
|
|
|
||
|
|
//绘制队长头像
|
||
|
|
foreach(AvatarObj in CharacV.EquVos) {
|
||
|
|
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[CharacV.Job][0] + DgnObj.X + ImgInfo[3] - 28;
|
||
|
|
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[CharacV.Job][1] + DgnObj.Y + ImgInfo[4] + 2;
|
||
|
|
setClip(AXpos + OffsetArr[CharacV.Job][2], AYpos + OffsetArr[CharacV.Job][3], AXpos + OffsetArr[CharacV.Job][2] + 22, AYpos + OffsetArr[CharacV.Job][3] + 18); //开始裁切
|
||
|
|
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||
|
|
releaseClip(); //裁切结束
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制队伍人数
|
||
|
|
for (local z = 0; z< count; z++) {
|
||
|
|
DrawImg("hud/newantondungeoninfo.img", 13, X + DgnObj.X + ImgInfo[3] + 40, Y + DgnObj.Y + 4 + ImgInfo[5] + (z * 6));
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制队伍编号
|
||
|
|
DrawImg("hud/newantondungeonpartymark.img", CharacV.TeamId, X + DgnObj.X + ImgInfo[3] - 3, Y + DgnObj.Y + 3 + ImgInfo[4]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
DgnIdTName = {
|
||
|
|
d1 = "诞生之圣所",
|
||
|
|
d2 = "湮灭之圣所",
|
||
|
|
d3 = "蔓延之圣所",
|
||
|
|
d4 = "光明祭坛入口",
|
||
|
|
d5 = "黑暗祭坛入口",
|
||
|
|
d6 = "光明祭坛",
|
||
|
|
d7 = "黑暗祭坛",
|
||
|
|
d8 = "力量祭坛",
|
||
|
|
d9 = "智慧祭坛",
|
||
|
|
d10 = "能源控制室",
|
||
|
|
d11 = "光之圣殿",
|
||
|
|
d12 = "暗之圣殿",
|
||
|
|
d13 = "机械王座: 光",
|
||
|
|
d14 = "机械王座: 暗",
|
||
|
|
d15 = "能源储藏室",
|
||
|
|
}
|
||
|
|
|
||
|
|
//高级绘制文字(带换行)
|
||
|
|
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 DrawSimpleSituation() {
|
||
|
|
if (!BaseSituationFlag || !DgnList) return;
|
||
|
|
local X = 0;
|
||
|
|
|
||
|
|
//绘制背景
|
||
|
|
foreach(Index, d_obj in DgnList) {
|
||
|
|
local Obj_X = 0;
|
||
|
|
local Obj_Y = 0 + (Index * 35);
|
||
|
|
|
||
|
|
local ImgIdX = 80;
|
||
|
|
//TODO 长文字到时候用81
|
||
|
|
DrawImg("hud/newantondungeoninfo2.img", ImgIdX, X + Obj_X, Y + 300 + Obj_Y);
|
||
|
|
}
|
||
|
|
//绘制上层
|
||
|
|
foreach(Index, d_obj in DgnList) {
|
||
|
|
local Obj_X = 0;
|
||
|
|
local Obj_Y = 0 + (Index * 35);
|
||
|
|
|
||
|
|
//绘制队伍底槽
|
||
|
|
for (local i = 0; i< 4; i++) {
|
||
|
|
DrawImg("hud/partytype.img", 22, X + 2 + Obj_X + (i * 24), Y + 300 + Obj_Y + 20);
|
||
|
|
}
|
||
|
|
foreach(pos, pobj in d_obj.Party) {
|
||
|
|
local cid = pobj[0];
|
||
|
|
local CharacV = RinDro_Luke_Obj.Portrait[cid];
|
||
|
|
//绘制队伍编号
|
||
|
|
DrawImg("hud/partytype.img", 1 + CharacV.TeamId, X + 2 + Obj_X + (pos * 24), Y + 300 + Obj_Y + 20);
|
||
|
|
}
|
||
|
|
|
||
|
|
local DgnName = DgnIdTName["d" + d_obj.id];
|
||
|
|
local Yoffset = 16;
|
||
|
|
//TODO 长文字到时候改偏移
|
||
|
|
local RGBA = sq_RGBA(255, 177, 0, 250);
|
||
|
|
if (d_obj.id != 5) RGBA = sq_RGBA(255, 255, 255, 255);
|
||
|
|
//绘制名字
|
||
|
|
L_sq_DrawCode_Ex(DgnName, X + 102, Y + 305 + Obj_Y + Yoffset, RGBA, 0, 1);
|
||
|
|
|
||
|
|
//绘制血槽背景
|
||
|
|
DrawImg("hud/newantondungeoninfo2.img", 82, X + Obj_X + 2, Y + 300 + Obj_Y + 2);
|
||
|
|
local BloodIdx = 83;
|
||
|
|
//TODO 不一样的血条到时候改血条
|
||
|
|
|
||
|
|
local Rate = (88.0 - 88.0 * (d_obj.hp.tofloat() / d_obj.BloodType.tofloat())).tointeger();
|
||
|
|
if (d_obj.type == 1) {
|
||
|
|
local Remainder = d_obj.time - (Clock() - d_obj.Timer);
|
||
|
|
local RateBuf = Remainder.tofloat() / d_obj.maxTime;
|
||
|
|
Rate = (RateBuf * 88.0).tointeger();
|
||
|
|
} else if (d_obj.type == 2) {
|
||
|
|
Rate = 88;
|
||
|
|
} else if (d_obj.type == 3) {
|
||
|
|
Rate = 88;
|
||
|
|
}
|
||
|
|
//绘制生命值
|
||
|
|
setClip(X + Obj_X + 6, Y + 300 + Obj_Y + 6, X + Obj_X + 6 + Rate, Y + 300 + Obj_Y + 6 + 9); //开始裁切
|
||
|
|
DrawImg("hud/newantondungeoninfo2.img", BloodIdx, X + Obj_X + 6, Y + 300 + Obj_Y + 6);
|
||
|
|
releaseClip(); //裁切结束
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {
|
||
|
|
//绘制背景框
|
||
|
|
luke_game_navigation.DrawPng(2, X, Y - 18);
|
||
|
|
//绘制背景图
|
||
|
|
luke_state_full.DrawPng(RinDro_Luke_Obj.MyRaidState == 3 ? 1 : 0, X, Y - 18);
|
||
|
|
//绘制简易战况表
|
||
|
|
newantondungeoninfo2.DrawPng(62, X + 220, Y + 19);
|
||
|
|
|
||
|
|
//绘制待命房间
|
||
|
|
DrawParty();
|
||
|
|
//绘制小队移动
|
||
|
|
newantondungeoninfo.DrawPng(14, X + 570, Y + 488);
|
||
|
|
|
||
|
|
if (DgnList) {
|
||
|
|
foreach(d_obj in DgnList) {
|
||
|
|
DrawDungeon(d_obj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//绘制主界面复活币剩余
|
||
|
|
newantondungeoninfo2.DrawPng(85, X + 45 + 350, Y + 488);
|
||
|
|
|
||
|
|
|
||
|
|
//绘制主界面复活币剩余
|
||
|
|
local CoinCount = (RinDro_Luke_Obj.FightConfig.rebornNum - Info.ResurrectionNum).tostring();
|
||
|
|
for (local i = 0; i< 2; i++) {
|
||
|
|
if (CoinCount.len() >= (i + 1))
|
||
|
|
DrawImg("hud/newantonrewardtime.img", CoinCount.slice(0 + i, 1 + i).tointeger(), X + 45 + 75 + (i * 18) + 350, Y + 515);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function DrawImg(Path, Index, XPos, YPos) {
|
||
|
|
L_sq_DrawImg(Path, Index, XPos, YPos, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function Show(obj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
LenheartNewUI_Windows.Show(obj);
|
||
|
|
|
||
|
|
//结束时间
|
||
|
|
if (RinDro_Luke_Obj.EndTime) {
|
||
|
|
DrawFightTime(obj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//攻坚时间
|
||
|
|
function DrawFightTime(obj) {
|
||
|
|
local X = ((getroottable().Rindro_Scr_Width - 146 - 103 - 550)).tointeger()
|
||
|
|
L_sq_DrawImg("hud/newantondungeoninfo.img", 1, X + 542, Y);
|
||
|
|
L_sq_DrawImg("hud/newantondungeoninfo.img", 2, X + 542 + 38, Y + 2);
|
||
|
|
if (RinDro_Luke_Obj.EndTime != null) {
|
||
|
|
if (RinDro_Luke_Obj.EndTime< 0) RinDro_Luke_Obj.EndTime = 0;
|
||
|
|
local RealTime = RinDro_Luke_Obj.EndTime - (Clock() - RinDro_Luke_Obj.PackCurT);
|
||
|
|
|
||
|
|
local seconds = RealTime / 1000;
|
||
|
|
local hours = seconds / 3600;
|
||
|
|
local minutes = seconds / 60;
|
||
|
|
|
||
|
|
seconds %= 60;
|
||
|
|
hours = format("%02d", hours);
|
||
|
|
seconds = format("%02d", seconds).slice(-2);
|
||
|
|
minutes = format("%02d", minutes).slice(-2);
|
||
|
|
|
||
|
|
local X1 = 551;
|
||
|
|
local X2 = X1 + 18;
|
||
|
|
|
||
|
|
local Offset = 0;
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", hours.slice(0, 1).tointeger(), X + X1 + Offset, Y + 28);
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", hours.slice(1).tointeger(), X + X2 + Offset, Y + 28);
|
||
|
|
Offset += 46;
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", minutes.slice(0, 1).tointeger(), X + X1 + Offset, Y + 28);
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", minutes.slice(1).tointeger(), X + X2 + Offset, Y + 28);
|
||
|
|
Offset += 46;
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", seconds.slice(0, 1).tointeger(), X + X1 + Offset, Y + 28);
|
||
|
|
L_sq_DrawImg("hud/newantondungeonnum.img", seconds.slice(1).tointeger(), X + X2 + Offset, Y + 28);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
//判断是否可重合
|
||
|
|
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 T = {
|
||
|
|
op = 20084303,
|
||
|
|
DunId = MapIndexTable[MapIndex]
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
MapMoveMark = true;
|
||
|
|
} else if (Mark == false) MapMoveMark = false;
|
||
|
|
} else {
|
||
|
|
MapMoveMark = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
FightLogicTimer = Clock();
|
||
|
|
MapVar = null; //地图暂存器
|
||
|
|
|
||
|
|
DanShengBuffObject = null; //诞生圣所BUFF对象
|
||
|
|
ManYanBuffObject = null; //蔓延圣所BUFF对象
|
||
|
|
YanMieBuffObject = null; //湮灭圣所BUFF对象
|
||
|
|
|
||
|
|
//获取BUFF对应的OBJ编号
|
||
|
|
function GETBUFFOBJINDEX(num) {
|
||
|
|
switch (num) {
|
||
|
|
case 0:
|
||
|
|
return 537170;
|
||
|
|
case 1:
|
||
|
|
return 537190;
|
||
|
|
case 2:
|
||
|
|
return 537210;
|
||
|
|
case 4:
|
||
|
|
return 537270;
|
||
|
|
case 6:
|
||
|
|
return 537300;
|
||
|
|
case 8:
|
||
|
|
return 537240;
|
||
|
|
case 10:
|
||
|
|
return 537330;
|
||
|
|
case 11:
|
||
|
|
return 537360;
|
||
|
|
case 12:
|
||
|
|
return 537370;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function LukeRaid_getMonsterObject(obj, idNeed) {
|
||
|
|
if (!obj)
|
||
|
|
return null;
|
||
|
|
local objectManager = obj.getObjectManager();
|
||
|
|
if (objectManager == null)
|
||
|
|
return null;
|
||
|
|
for (local i = 0; i< objectManager.getCollisionObjectNumber(); i += 1) {
|
||
|
|
local object = objectManager.getCollisionObject(i);
|
||
|
|
|
||
|
|
if (object && object.isObjectType(OBJECTTYPE_MONSTER)) {
|
||
|
|
local object2 = sq_GetCNRDObjectToCollisionObject(object);
|
||
|
|
local id = object2.getCollisionObjectIndex(object2);
|
||
|
|
if (id == idNeed) {
|
||
|
|
return object2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
function getLukeRaid_QuattuorManusMK2ChangeLayer(obj) {
|
||
|
|
local mob = LukeRaid_getMonsterObject(obj, 560650);
|
||
|
|
if (mob)
|
||
|
|
sq_ChangeDrawLayer(mob, ENUM_DRAWLAYER_MIDDLEBACK);
|
||
|
|
}
|
||
|
|
|
||
|
|
//卢克BUFF obj 机制
|
||
|
|
function MachineLukeBuffPassObject(obj) {
|
||
|
|
obj = sq_GetCNRDObjectToSQRCharacter(obj);
|
||
|
|
local stage = sq_GetGlobaludpModuleStage();
|
||
|
|
local dungeon = sq_GetDungeonByStage(stage);
|
||
|
|
local dungeonIndex = sq_GetDuegonIndex(dungeon);
|
||
|
|
local MapIndex = sq_GetMapIndex(stage);
|
||
|
|
if (MapIndex != -1) {
|
||
|
|
if (!MapVar || MapVar != MapIndex) {
|
||
|
|
//同步地图暂存器
|
||
|
|
MapVar = MapIndex;
|
||
|
|
//诞生之圣所
|
||
|
|
if (dungeonIndex == 15154 || dungeonIndex == 15155 || dungeonIndex == 15156) {
|
||
|
|
local objindex = GETBUFFOBJINDEX(DanShengBuffObject[0]);
|
||
|
|
obj.sq_SendCreatePassiveObjectPacket(objindex, 0, 120, 1, 0);
|
||
|
|
}
|
||
|
|
//湮灭之圣所
|
||
|
|
if (dungeonIndex == 15157 || dungeonIndex == 15158 || dungeonIndex == 15159) {
|
||
|
|
local objindex = GETBUFFOBJINDEX(YanMieBuffObject[0]);
|
||
|
|
obj.sq_SendCreatePassiveObjectPacket(objindex, 0, 120, 1, 0);
|
||
|
|
}
|
||
|
|
//蔓延之圣所
|
||
|
|
if (dungeonIndex == 15160 || dungeonIndex == 15161 || dungeonIndex == 15162) {
|
||
|
|
local objindex = GETBUFFOBJINDEX(ManYanBuffObject[0]);
|
||
|
|
obj.sq_SendCreatePassiveObjectPacket(objindex, 0, 120, 1, 0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
local T = Clock() - FightLogicTimer;
|
||
|
|
if (T >= 500) {
|
||
|
|
FightLogicTimer = Clock();
|
||
|
|
getLukeRaid_QuattuorManusMK2ChangeLayer(obj);
|
||
|
|
|
||
|
|
//遍历对象管理器并执行操作
|
||
|
|
local objectManager = obj.getObjectManager();
|
||
|
|
if (!objectManager) {
|
||
|
|
_20084401_Flag = false;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
local CollisionObjectNumber = objectManager.getCollisionObjectNumber();
|
||
|
|
for (local i = 0; i< CollisionObjectNumber; i += 1) {
|
||
|
|
local object = objectManager.getCollisionObject(i);
|
||
|
|
local ObjectIndex = object.getCollisionObjectIndex();
|
||
|
|
if (ObjectIndex == 202303004) {
|
||
|
|
if (!_20084401_Flag) {
|
||
|
|
_20084401_Flag = true;
|
||
|
|
local T = {
|
||
|
|
op = 20084401
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
_20084401_Flag = false;
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||
|
|
MapEventTest(obj);
|
||
|
|
if (SelectDgnMarkFlag) {
|
||
|
|
R_Mouse.SetType(151);
|
||
|
|
}
|
||
|
|
|
||
|
|
//卢克BUFFObj 机制
|
||
|
|
MachineLukeBuffPassObject(obj);
|
||
|
|
}
|
||
|
|
|
||
|
|
//鼠标左键弹起回调
|
||
|
|
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||
|
|
if (SelectDgnMarkFlag != 0) {
|
||
|
|
SelectDgnMarkFlag = 0;
|
||
|
|
R_Mouse.SetType(0);
|
||
|
|
foreach(d_obj in DgnList) {
|
||
|
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + d_obj.X, Y + d_obj.Y, 71, 71)) {
|
||
|
|
local T = {
|
||
|
|
op = 20084301,
|
||
|
|
DunId = d_obj.id
|
||
|
|
}
|
||
|
|
SendPackEx(T);
|
||
|
|
//关闭攻坚战况表窗口
|
||
|
|
CloseWindow();
|
||
|
|
//关闭攻坚队窗口
|
||
|
|
RinDro_Luke_Obj.PartyWindow_Object.CloseWindow();
|
||
|
|
//关闭攻坚队大厅窗口
|
||
|
|
RinDro_Luke_Obj.PartyHallWindow_Object.CloseWindow();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
MainButton = null;
|
||
|
|
CloseMainButton = null;
|
||
|
|
CloseFlag = false;
|
||
|
|
//顶层绘制
|
||
|
|
function TopDraw(obj) {
|
||
|
|
//界面未打开
|
||
|
|
if (!this.Visible) {
|
||
|
|
//在甲板
|
||
|
|
if (RinDro_Luke_Obj.BaseConfig && "channel_index" in RinDro_Luke_Obj.BaseConfig && RinDro_Luke_Obj.BaseConfig.channel_index.find("19") && "town_index" in RinDro_Luke_Obj.BaseConfig && L_sq_GetTownIndex() == RinDro_Luke_Obj.BaseConfig.town_index && (RinDro_Luke_Obj.MyRaidState == 1 || RinDro_Luke_Obj.MyRaidState == 3) && !CloseFlag) {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if (CloseFlag) {
|
||
|
|
if (Clock() - CloseFlag >= 10)
|
||
|
|
CloseFlag = false;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
class Rindro_Luke_FightSituatioExternalC extends LenheartNewUI_Windows {
|
||
|
|
//调试模式
|
||
|
|
// DeBugMode = true;
|
||
|
|
|
||
|
|
//不是窗口
|
||
|
|
NoWindow = true;
|
||
|
|
|
||
|
|
//操作窗口
|
||
|
|
Window = null;
|
||
|
|
|
||
|
|
//是否可见
|
||
|
|
// Visible = false;
|
||
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||
|
|
Childrens = [];
|
||
|
|
//注册控件
|
||
|
|
RegisterWidget();
|
||
|
|
|
||
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||
|
|
}
|
||
|
|
|
||
|
|
function RegisterWidget() {
|
||
|
|
//开启按钮
|
||
|
|
local CloseButton = LenheartNewUI_BaseButton(0, 0, 103, 22, "hud/newantondungeonbutton.img", 0);
|
||
|
|
CloseButton.OnClick = function() {
|
||
|
|
if (!Window.Visible) {
|
||
|
|
Window.Visible = true;
|
||
|
|
Window.ResetFocus();
|
||
|
|
Window.GetInfo();
|
||
|
|
} else {
|
||
|
|
Window.CloseWindow();
|
||
|
|
}
|
||
|
|
}.bindenv(this);
|
||
|
|
CloseButton.SetCallBackFunc(function(button) {
|
||
|
|
if (!Window.Visible) {
|
||
|
|
button.Idx = 0;
|
||
|
|
} else {
|
||
|
|
button.Idx = 3;
|
||
|
|
}
|
||
|
|
}.bindenv(this));
|
||
|
|
Childrens.append(CloseButton);
|
||
|
|
}
|
||
|
|
|
||
|
|
function AddParentWin(Win) {
|
||
|
|
Window = Win;
|
||
|
|
}
|
||
|
|
|
||
|
|
//绘制主界面
|
||
|
|
function DrawMain(obj) {}
|
||
|
|
|
||
|
|
function Show(obj) {
|
||
|
|
DrawMain(obj);
|
||
|
|
LenheartNewUI_Windows.Show(obj);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function TopShow(obj) {
|
||
|
|
//结束时间
|
||
|
|
if (RinDro_Luke_Obj.EndTime) {
|
||
|
|
Window.DrawFightTime(obj);
|
||
|
|
|
||
|
|
}
|
||
|
|
Window.DrawSimpleSituation();
|
||
|
|
}
|
||
|
|
|
||
|
|
//逻辑入口
|
||
|
|
function Proc(obj) {
|
||
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||
|
|
|
||
|
|
//在甲板
|
||
|
|
if (RinDro_Luke_Obj.BaseConfig && "channel_index" in RinDro_Luke_Obj.BaseConfig && RinDro_Luke_Obj.BaseConfig.channel_index.find("19") && "town_index" in RinDro_Luke_Obj.BaseConfig && L_sq_GetTownIndex() == RinDro_Luke_Obj.BaseConfig.town_index && (RinDro_Luke_Obj.MyRaidState == 1 || RinDro_Luke_Obj.MyRaidState == 3)) {
|
||
|
|
Visible = true;
|
||
|
|
} else {
|
||
|
|
Visible = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
getroottable().rawdelete("RinDro_Luke_Obj");
|