11111
691
Project/Achievement/Achievement.nut
Normal file
@@ -0,0 +1,691 @@
|
||||
/*
|
||||
文件名:Achievement.nut
|
||||
路径:Project/Achievement/Achievement.nut
|
||||
创建日期:2025-02-23 08:37
|
||||
文件用途:成就系统
|
||||
*/
|
||||
|
||||
|
||||
class Yosin_DragButton extends LenheartNewUI_CommonUi {
|
||||
State = 0;
|
||||
BaseIdx = 29;
|
||||
DHeight = null; // 改为高度
|
||||
Path = "interface/lenheartwindowcommon.img";
|
||||
Idx = 172;
|
||||
FillHeight = 2; // 改为填充高度
|
||||
FirstHeight = 7; // 改为首节高度
|
||||
Width = 9; // 固定宽度,垂直按钮宽度通常是固定的
|
||||
Visible = true;
|
||||
DeBugMode = false;
|
||||
|
||||
BasePos = null;
|
||||
MoveFlag = false;
|
||||
//鼠标相对位置
|
||||
M_Xpos = null;
|
||||
M_Ypos = null;
|
||||
B_X = null;
|
||||
B_Y = null;
|
||||
Move_Value = 0;
|
||||
Max_Move_Value = 0;
|
||||
|
||||
CurrentMovePosY = 0;
|
||||
|
||||
constructor(X, Y, H) {
|
||||
this.DHeight = H;
|
||||
LenheartNewUI_CommonUi.constructor(X, Y, Width, H + 7 * 2); // 宽度固定,高度动态
|
||||
|
||||
BasePos = {
|
||||
x = X,
|
||||
y = Y
|
||||
}
|
||||
}
|
||||
|
||||
function SetFrame(gPath, gIdx) {
|
||||
if (gPath) Path = gPath;
|
||||
Idx = gIdx;
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//不可用
|
||||
if (State == 8) {
|
||||
L_sq_Draw3Image_Vertical(X + 1, Y, this.DHeight, Path, Idx + 9, FillHeight, FirstHeight);
|
||||
} else {
|
||||
//按下
|
||||
if (isLBDown) {
|
||||
L_sq_Draw3Image_Vertical(X, Y + 1, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
|
||||
}
|
||||
//悬停
|
||||
else if (isInRect) {
|
||||
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
|
||||
}
|
||||
//普通
|
||||
else {
|
||||
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx, FillHeight, FirstHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
LenheartNewUI_CommonUi.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
|
||||
if (isInRect) {
|
||||
MoveFlag = true;
|
||||
M_Xpos = MousePos_X; //原始鼠标位置数据
|
||||
M_Ypos = MousePos_Y;
|
||||
B_X = X; //原始窗口位置
|
||||
B_Y = Y;
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标事件回调
|
||||
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||
LenheartNewUI_CommonUi.OnMouseProc(Flag, MousePos_X, MousePos_Y);
|
||||
|
||||
//移动
|
||||
if (MoveFlag) {
|
||||
Move_Value = MousePos_Y - M_Ypos + CurrentMovePosY;
|
||||
print(Move_Value);
|
||||
if ( Move_Value <= (Max_Move_Value - Height + BasePos.y)) {
|
||||
Y = (Move_Value);
|
||||
Localtion_Y = (BasePos.y + Move_Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
LenheartNewUI_CommonUi.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
MoveFlag = false;
|
||||
CurrentMovePosY = Move_Value; //记录当前移动位置
|
||||
}
|
||||
|
||||
//设置最大移动值
|
||||
function SetMaxMoveValue(Value) {
|
||||
Max_Move_Value = Value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// class Yosin_DragButton extends LenheartNewUI_CommonUi {
|
||||
// //路径
|
||||
// Path = "";
|
||||
// //索引
|
||||
// Idx = 0;
|
||||
// //方向
|
||||
// Direction = false;
|
||||
|
||||
// //按钮
|
||||
// Button = null;
|
||||
|
||||
// //变动位置回调函数
|
||||
// OnChange = null;
|
||||
|
||||
// //鼠标相对位置
|
||||
// M_Xpos = null;
|
||||
// M_Ypos = null;
|
||||
// //未移动时的初始坐标
|
||||
// BasePos = null;
|
||||
// //移动Flag
|
||||
// MoveFlag = false;
|
||||
// //最大移动值
|
||||
// Max_Move_Value = 0;
|
||||
// //移动值
|
||||
// Move_Value = 0;
|
||||
// //侦测值
|
||||
// Detect_Value = 0;
|
||||
|
||||
// B_X = null;
|
||||
// B_Y = null;
|
||||
|
||||
// Visible = true;
|
||||
// DeBugMode = false;
|
||||
|
||||
// constructor(X, Y, S_H, H) {
|
||||
// Childrens = [];
|
||||
// this.Path = Path;
|
||||
// this.Idx = Idx;
|
||||
// LenheartNewUI_CommonUi.constructor(X, Y, 9, H);
|
||||
|
||||
// Button = LenheartNewUI_VerticalButton(X, Y, S_H);
|
||||
// Button.SetFrame("interface/lenheartwindowcommon.img", 184);
|
||||
// AddChild(Button);
|
||||
|
||||
|
||||
// BasePos = {
|
||||
// x = X,
|
||||
// y = Y
|
||||
// }
|
||||
// }
|
||||
|
||||
// //生成DT
|
||||
// function GenerateDt() {
|
||||
// try {
|
||||
// local CurT = L_Getmicroseconds();
|
||||
// Duration = (CurT - DurationFlag);
|
||||
// DurationFlag = CurT;
|
||||
// } catch (exception) {
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
// function DeBug(obj) {
|
||||
// sq_DrawBox(X, Y, Width, Height, 0xffffffff);
|
||||
// }
|
||||
|
||||
// function Show(obj) {
|
||||
// LenheartNewUI_Windows.Show(obj);
|
||||
// }
|
||||
|
||||
// //同步坐标
|
||||
// function SyncPos(X, Y) {
|
||||
// this.X = X;
|
||||
// this.Y = Y;
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.SyncPos(X, Y);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// //鼠标事件回调
|
||||
// function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseProc(Flag, MousePos_X, MousePos_Y);
|
||||
|
||||
// if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Parent.X + Button.Localtion_X , Parent.Y + Button.Localtion_Y, Width, Height)){
|
||||
// isInRect = true;
|
||||
// }
|
||||
// else isInRect = false;
|
||||
|
||||
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseProc(Flag, MousePos_X, MousePos_Y);
|
||||
// }
|
||||
// //移动
|
||||
// if (MoveFlag) {
|
||||
// //左键拖动
|
||||
// if (Direction) {
|
||||
// Move_Value = B_X + (MousePos_X - M_Xpos);
|
||||
// if (!(Move_Value >= (0 + BasePos.x) && Move_Value <= (Max_Move_Value - Width + BasePos.x))) {
|
||||
// X = Move_Value;
|
||||
// // DragLogic((Move_Value - Localtion_X).tofloat() / (Max_Move_Value - Width + BasePos.x - Localtion_X).tofloat());
|
||||
// }
|
||||
// } else {
|
||||
// Move_Value = B_Y + (MousePos_Y - M_Ypos);
|
||||
// if (Move_Value >= (0 + BasePos.y) && Move_Value <= (Max_Move_Value - Height + BasePos.y)) {
|
||||
// Y = (Move_Value);
|
||||
// Button.Localtion_Y = (Move_Value);
|
||||
// // DragLogic((Move_Value - Localtion_Y).tofloat() / (Max_Move_Value - Height + BasePos.y - Localtion_Y).tofloat());
|
||||
// }
|
||||
// }
|
||||
|
||||
// SyncPos(X, Y);
|
||||
// }
|
||||
// }
|
||||
// //鼠标左键按下回调
|
||||
// function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
// }
|
||||
|
||||
// if (isInRect) {
|
||||
// MoveFlag = true;
|
||||
// M_Xpos = MousePos_X; //原始鼠标位置数据
|
||||
// M_Ypos = MousePos_Y;
|
||||
// B_X = X; //原始窗口位置
|
||||
// B_Y = Y;
|
||||
// }
|
||||
// }
|
||||
// //鼠标左键弹起回调
|
||||
// function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
// }
|
||||
|
||||
// MoveFlag = false;
|
||||
// }
|
||||
// //鼠标右键按下回调
|
||||
// function OnMouseRbDown(MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseRbDown(MousePos_X, MousePos_Y);
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseRbDown(MousePos_X, MousePos_Y);
|
||||
// }
|
||||
// }
|
||||
// //鼠标右键弹起回调
|
||||
// function OnMouseRbUp(MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseRbUp(MousePos_X, MousePos_Y);
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseRbUp(MousePos_X, MousePos_Y);
|
||||
// }
|
||||
// }
|
||||
// //鼠标滚轮时间回调
|
||||
// function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||||
// LenheartNewUI_CommonUi.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||
// foreach(Window in Childrens) {
|
||||
// Window.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||
// }
|
||||
// }
|
||||
|
||||
// //设置最大移动值
|
||||
// function SetMaxMoveValue(Value) {
|
||||
// Max_Move_Value = Value;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
class AchievementC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
// Visible = false;
|
||||
|
||||
EtcInfo = null;
|
||||
|
||||
WindowImg = Rindro_Image("achievement/main.img");
|
||||
WindowBackGroundImg = Rindro_Image("achievement/mainbackground.img");
|
||||
|
||||
ButtonInfo = null;
|
||||
Info = null;
|
||||
Data = null;
|
||||
|
||||
IsOther = false;
|
||||
OtherName = null;
|
||||
|
||||
Page = 1;
|
||||
|
||||
//滚轮值
|
||||
ScrollValue = 0;
|
||||
ScrollValueMax = 500;
|
||||
|
||||
EventWindow = null;
|
||||
|
||||
//查询成就回包
|
||||
function OnQueryAchievementBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
if (Jso.rawin("click")) {
|
||||
IsOther = true;
|
||||
} else IsOther = false;
|
||||
Data = {};
|
||||
foreach(ValueObject in Jso.Achievement) {
|
||||
Data.rawset(ValueObject.id, ValueObject);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function OnQueryAchievementBack2(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
EventWindow = EventList_Obj.AddEvent("AchievementEvent1", 682, null);
|
||||
EventWindow.MainButton.ShowName = Jso.VipInfo;
|
||||
}
|
||||
|
||||
function OnQueryAchievementBack3(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
|
||||
EventWindow.MainButton.OnClick = function(B_obj) {
|
||||
local T = {
|
||||
op = 20091601,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
}
|
||||
|
||||
//查询成就
|
||||
function QueryAchievement() {
|
||||
local T = {
|
||||
op = 20091001,
|
||||
cjid = Page,
|
||||
cid2 = OtherName ? OtherName : "-1"
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
InitButtonConfig();
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
Pack_Control.rawset(20091002, OnQueryAchievementBack.bindenv(this));
|
||||
Pack_Control.rawset(20092002, OnQueryAchievementBack2.bindenv(this));
|
||||
Pack_Control.rawset(20091010, OnQueryAchievementBack3.bindenv(this));
|
||||
|
||||
InitConfig();
|
||||
InitAchievement();
|
||||
QueryAchievement();
|
||||
|
||||
|
||||
|
||||
EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
|
||||
EventWindow.MainButton.OnClick = function(B_obj) {
|
||||
local T = {
|
||||
op = 20091601,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
}
|
||||
|
||||
function InitAchievement() {
|
||||
Childrens = [];
|
||||
ScrollValueMax = 0;
|
||||
RegisterWidget();
|
||||
|
||||
|
||||
if (Info.len() > Page) {
|
||||
//绘制成就
|
||||
foreach(InfoObj in Info[Page]) {
|
||||
if (InfoObj.Pos.y - 320 > ScrollValueMax) ScrollValueMax = InfoObj.Pos.y - 320;
|
||||
DrawAItem(InfoObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function InitButtonConfig() {
|
||||
local AchieData = R_Utils.GetScriptFileReader("etc/th_plugin/control.etc");
|
||||
if (AchieData) {
|
||||
local DataArr = [];
|
||||
if (AchieData.Size >= 7) {
|
||||
//创建Blob对象
|
||||
local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
|
||||
local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
|
||||
//以5为单步从第二位开始遍历字节
|
||||
local i = 2;
|
||||
while (true) {
|
||||
if (i< AchieData.Size && AchieData.Size - i >= 5) {
|
||||
local str = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
//城镇编号
|
||||
if (str == "[info]") {
|
||||
local Data = {};
|
||||
while (true) {
|
||||
local Ret = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
if (Ret == "[/info]") {
|
||||
DataArr.append(Data);
|
||||
break;
|
||||
}
|
||||
if (Ret == "[icon]") {
|
||||
Data.Icon <- {};
|
||||
Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
|
||||
i += 5;
|
||||
Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[pos]") {
|
||||
Data.Pos <- {};
|
||||
Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[size]") {
|
||||
Data.Size <- {};
|
||||
Data.Size.x <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
Data.Size.y <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else break;
|
||||
}
|
||||
}
|
||||
ButtonInfo = DataArr;
|
||||
}
|
||||
}
|
||||
|
||||
function InitConfig() {
|
||||
Info = [];
|
||||
local PageLst = R_Utils.GetLstArr("etc/th_plugin/info.lst", "etc/");
|
||||
foreach(Index, Path in PageLst) {
|
||||
local AchieData = R_Utils.GetScriptFileReader(Path);
|
||||
if (AchieData) {
|
||||
local DataArr = {};
|
||||
if (AchieData.Size >= 7) {
|
||||
//创建Blob对象
|
||||
local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
|
||||
local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
|
||||
//以5为单步从第二位开始遍历字节
|
||||
local i = 2;
|
||||
while (true) {
|
||||
if (i< AchieData.Size && AchieData.Size - i >= 5) {
|
||||
local str = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
//城镇编号
|
||||
if (str == "[info]") {
|
||||
local Data = {};
|
||||
while (true) {
|
||||
local Ret = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
if (Ret == "[/info]") {
|
||||
DataArr.rawset(Data.Id, Data);
|
||||
break;
|
||||
}
|
||||
if (Ret == "[id]") {
|
||||
Data.Id <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[icon]") {
|
||||
Data.Icon <- {};
|
||||
Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
|
||||
i += 5;
|
||||
Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[pos]") {
|
||||
Data.Pos <- {};
|
||||
Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[size]") {
|
||||
Data.Size <- {};
|
||||
Data.Size.x <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
Data.Size.y <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
}
|
||||
if (Ret == "[str]") {
|
||||
Data.Str <- [];
|
||||
while (true) {
|
||||
local strbuffer = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
strbuffer = Sq_ConvertWideChar(strbuffer, "big5")
|
||||
if (strbuffer == "[/str]") break;
|
||||
Data.Str.append(strbuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else break;
|
||||
}
|
||||
}
|
||||
Info.append(DataArr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function RegisterWidget() {
|
||||
//类型按钮
|
||||
for (local i = 0; i< ButtonInfo.len(); i++) {
|
||||
local Config = ButtonInfo[i];
|
||||
local TypeButton = LenheartNewUI_BaseButton(Config.Pos.x, Config.Pos.y, Config.Size.x, Config.Size.y, Config.Icon.Path, Config.Icon.Idx);
|
||||
TypeButton.Data = i;
|
||||
TypeButton.OnClickEx = function(Button) {
|
||||
Page = Button.Data;
|
||||
InitAchievement();
|
||||
QueryAchievement();
|
||||
}.bindenv(this);
|
||||
Childrens.append(TypeButton);
|
||||
}
|
||||
|
||||
|
||||
// local TestButton = Yosin_DragButton(50, 120, 10);
|
||||
// TestButton.SetFrame("interface/lenheartwindowcommon.img", 184);
|
||||
// TestButton.SetMaxMoveValue(400);
|
||||
// AddChild(TestButton);
|
||||
// Childrens.append(TestButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
WindowBackGroundImg.DrawPng(0 + Page, X, Y);
|
||||
WindowImg.DrawPng(19, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1]); //关闭按钮图标
|
||||
}
|
||||
|
||||
function DrawInfo() {
|
||||
if (Info.len() > Page) {
|
||||
//绘制成就
|
||||
foreach(InfoObj in Info[Page]) {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + InfoObj.Pos.x, Y + InfoObj.Pos.y - ScrollValue, InfoObj.Size.x, InfoObj.Size.y)) {
|
||||
|
||||
for (local i = 0; i< InfoObj.Str.len(); i += 2) {
|
||||
local OffsetRate = InfoObj.Str.len() / 2;
|
||||
local StrBuffer = format(InfoObj.Str[i], Data[InfoObj.Id].num);
|
||||
local StrBuffer2 = InfoObj.Str[i + 1];
|
||||
|
||||
L_sq_DrawWindow(IMouse.GetXPos() + 32, IMouse.GetYPos() + 60 - (OffsetRate * 44) + (i / 2 * 44), 144, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawCode(StrBuffer, IMouse.GetXPos() + 42, IMouse.GetYPos() + 70 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
|
||||
L_sq_DrawCode(StrBuffer2, IMouse.GetXPos() + 42, IMouse.GetYPos() + 88 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
releaseClip(); //裁切结束
|
||||
DrawInfo();
|
||||
}
|
||||
|
||||
function DrawAItem(InfoObj) {
|
||||
local Button = LenheartNewUI_BaseButton(InfoObj.Pos.x, InfoObj.Pos.y, InfoObj.Size.x, InfoObj.Size.y, InfoObj.Icon.Path, InfoObj.Icon.Idx);
|
||||
Button.Data = InfoObj;
|
||||
Button.SetCallBackFunc(function(Button) {
|
||||
local InfoObj = Button.Data;
|
||||
Button.Localtion_X = InfoObj.Pos.x;
|
||||
Button.Localtion_Y = InfoObj.Pos.y - ScrollValue;
|
||||
}.bindenv(this));
|
||||
Button.OnClickEx = function(Button) {
|
||||
if (IsOther) return;
|
||||
local T = {
|
||||
op = 20091005,
|
||||
cjid = Page,
|
||||
id = Button.Data.Id
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
Childrens.append(Button);
|
||||
}
|
||||
|
||||
RegisFlag = false;
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
|
||||
|
||||
local RootTab = getroottable();
|
||||
if (RootTab.rawin("L_PlayerEach_Obj") && RegisFlag == false) {
|
||||
RegisFlag = true;
|
||||
RootTab["L_PlayerEach_Obj"].AddEachForCommon("查看收集信息", function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 58;
|
||||
ApplyEngagementButton.Str = "查看收集信息";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
if (L_Sq_GetPlayerEachName().len() <= 0 || L_Sq_GetPlayerEachName() == L_Sq_GetObjectName(sq_GetMyMasterCharacter())) {
|
||||
|
||||
} else {
|
||||
OtherName = L_Sq_GetPlayerEachName();
|
||||
Visible = true;
|
||||
InitAchievement();
|
||||
QueryAchievement();
|
||||
}
|
||||
Button.Parent.CloseAllEach();
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//override
|
||||
//鼠标滚轮事件回调
|
||||
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||||
|
||||
|
||||
if (Flag) {
|
||||
if (ScrollValue > 0) ScrollValue -= 35;
|
||||
}
|
||||
if (!Flag) {
|
||||
if (ScrollValue< ScrollValueMax) ScrollValue += 35;
|
||||
}
|
||||
|
||||
//调用原生方法
|
||||
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
//override
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1], EtcInfo.closebutton_pos[2], EtcInfo.closebutton_pos[3])) {
|
||||
CloseWindow();
|
||||
}
|
||||
|
||||
LenheartNewUI_Windows.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
function OpenCallBack() {
|
||||
Visible = true;
|
||||
IsOther = false;
|
||||
OtherName = null;
|
||||
InitAchievement();
|
||||
QueryAchievement();
|
||||
}
|
||||
}
|
||||
|
||||
L_Windows_List <- [];
|
||||
getroottable().rawdelete("LenheartPluginsInitFlag");
|
||||
getroottable().rawdelete("EventList_Obj")
|
||||
getroottable().rawdelete("Achievement_Obj");
|
||||
|
||||
function Lenheart_Achievement_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("Achievement_Obj")) {
|
||||
RootTab.rawset("Achievement_Obj", true);
|
||||
|
||||
local Info = Rindro_Script.GetFileData("etc/th_plugin/etc.etc", function(DataTable, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Str = Data.Get();
|
||||
if (Str == "[window pos]") {
|
||||
DataTable.window_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
|
||||
} else if (Str == "[clicp pos]") {
|
||||
DataTable.clicp_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
|
||||
} else if (Str == "[closebutton pos]") {
|
||||
DataTable.closebutton_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
|
||||
}
|
||||
}
|
||||
}.bindenv(this));
|
||||
local window_Info = Info.window_pos;
|
||||
|
||||
local Win = LenheartNewUI_CreateWindow(AchievementC, "成就系统窗口", window_Info[0], window_Info[1], window_Info[2], window_Info[3], window_Info[4]);
|
||||
Win.EtcInfo = Info;
|
||||
EventList_Obj.AddEvent("成就系统", 118, Win);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("AchievementFuncN", Lenheart_Achievement_Fun);
|
||||
@@ -6,19 +6,6 @@
|
||||
*/
|
||||
|
||||
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_CreateParty.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_FightSituation.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Noti.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Party.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyApplyJoin.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyFormation.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyHall.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyInfo.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PartyMemberInfo.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_PlayerInteractive.nut");
|
||||
dofile("sqr/Project/Anton/Rindro_Anton_Reward.nut");
|
||||
|
||||
|
||||
//安图恩核心数据类
|
||||
class RinDro_Anton extends Rindro_BaseToolClass {
|
||||
//基础配置
|
||||
@@ -98,7 +85,7 @@ class RinDro_Anton extends Rindro_BaseToolClass {
|
||||
} else {
|
||||
//在安图恩区域的 要转移回普通城镇
|
||||
if (L_sq_GetTownIndex() == BaseConfig.town_index) {
|
||||
L_sq_MoveTown(1, 1, 474, 249);
|
||||
L_sq_MoveTown(getroottable().rawin("RindroRaidNormalTown") ? getroottable().RindroRaidNormalTown : 2, getroottable().rawin("RindroRaidNormalArea") ? getroottable().RindroRaidNormalArea : 1, 474, 249);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,7 +145,7 @@ class RinDro_Anton extends Rindro_BaseToolClass {
|
||||
}
|
||||
//构造CID对应的装备数组方便绘制
|
||||
Portrait.rawset(MemberObj.CID, {
|
||||
EquVos = clone(MemberObj.equVos),
|
||||
EquVos = Rindro_Draw_Character(MemberObj.PlayerJob, MemberObj.equVos, "rest.ani", null),
|
||||
Job = MemberObj.PlayerJob,
|
||||
TeamId = MemberObj.characNum,
|
||||
Name = MemberObj.PlayerName,
|
||||
@@ -172,7 +159,7 @@ class RinDro_Anton extends Rindro_BaseToolClass {
|
||||
JobName = MemberObj.PlayerGrowTypeJob, //职业名
|
||||
Job = MemberObj.PlayerJob, //职业编号
|
||||
StkHasFlag = MemberObj.isPrepare, //是否拥有攻坚材料
|
||||
EquVos = MemberObj.equVos, //装备List 用于显示头像
|
||||
EquVos = Rindro_Draw_Character(MemberObj.PlayerJob, MemberObj.equVos, "rest.ani", null), //装备List 用于显示头像
|
||||
Captain = MemberObj.CaptainBool, //是否为攻坚队队长
|
||||
Cid = MemberObj.CID, //Cid
|
||||
OnlineState = MemberObj.onLineStart, //在线状态
|
||||
|
||||
@@ -401,13 +401,9 @@ class Rindro_AntonFightSituationC extends LenheartNewUI_Windows {
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X + 26 + ((PosI % 10) * 24);
|
||||
local AYpos = Y + 513 + ((PosI / 10) * 20);
|
||||
PartyMasterIcon.InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
PosI++;
|
||||
}
|
||||
}
|
||||
@@ -550,14 +546,12 @@ class Rindro_AntonFightSituationC extends LenheartNewUI_Windows {
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X + DgnObj.X + ImgInfo[3] + 16;
|
||||
local AYpos = Y + DgnObj.Y + ImgInfo[4] + 2;
|
||||
CharacV.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
|
||||
//绘制队伍人数
|
||||
for (local z = 0; z< count; z++) {
|
||||
|
||||
@@ -87,18 +87,16 @@ class Rindro_Anton_NotiC extends LenheartNewUI_Windows {
|
||||
|
||||
if (Ct >= 200) {
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[PartyMasterIcon.InfoObj.Job][0] - 9 + 150;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[PartyMasterIcon.InfoObj.Job][1] + 184;
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X - 9 + 150 + 44;
|
||||
local AYpos = Y + 184 + 2;
|
||||
PartyMasterIcon.InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
}
|
||||
}
|
||||
|
||||
//绘制消息
|
||||
if (Ct >= 200) L_sq_DrawCode(Msg, X + 270 + LenheartTextClass.GetStringLength(Name), Y + 190, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
if (Ct >= 2000) Msg = null;
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
|
||||
@@ -47,7 +47,6 @@ class Rindro_AntonPartyC extends LenheartNewUI_CommonUi {
|
||||
|
||||
//绘制队伍编号
|
||||
L_sq_DrawCode(TeamObj.TeamId, X + 22 - LenheartTextClass.GetStringLength(TeamObj.TeamId) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制队长头像
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 55, X + 52, Y + 7);
|
||||
try {
|
||||
local channel_index = FiendwarTotal.GetInstance().BaseConfig.channel_index;
|
||||
|
||||
@@ -205,13 +205,10 @@ class Rindro_AntonApplyJoinC extends LenheartNewUI_Windows {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 14, X + 8, Y + 40);
|
||||
//绘制角色头像
|
||||
if (AvatarArr) {
|
||||
foreach(AvatarObj in AvatarArr) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[Job][0] - 8;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[Job][1] + 40;
|
||||
setClip(AXpos + OffsetArr[Job][2], AYpos + OffsetArr[Job][3], AXpos + OffsetArr[Job][2] + 22, AYpos + OffsetArr[Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
//绘制队长头像
|
||||
local AXpos = X + 42 - 8;
|
||||
local AYpos = Y + 1 + 40;
|
||||
AvatarArr.DrawFace(AXpos, AYpos);
|
||||
}
|
||||
//绘制角色等级
|
||||
L_sq_DrawCode(Level, X + 78 - LenheartTextClass.GetStringLength(Level) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
@@ -268,7 +268,7 @@ class Rindro_Anton_PartyHallC extends LenheartNewUI_Windows {
|
||||
//计算页数
|
||||
local PageStr = Page + 1 + " / " + ((PartyList.len() / PageMaxCount) + 1);
|
||||
//绘制当前页数
|
||||
L_sq_DrawCode(PageStr, X + 166 + LenheartTextClass.GetStringLength(PageStr) / 2, Y + 402, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(PageStr, X + 196 - LenheartTextClass.GetStringLength(PageStr) / 2, Y + 402, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
}
|
||||
|
||||
//重置所有选中
|
||||
|
||||
@@ -45,7 +45,7 @@ class Rindro_AntonPartyInfoC extends LenheartNewUI_Windows {
|
||||
Fatigue = Jso.charac.PlayFatigue,
|
||||
Combat = Jso.charac.ZL,
|
||||
ClearanceCount = Jso.charac.ClearanceCount,
|
||||
AvatarArr = Jso.charac.equVos,
|
||||
AvatarArr = Rindro_Draw_Character(Jso.charac.PlayerJob, Jso.charac.equVos, "rest.ani", null),
|
||||
PlayerSession = Jso.charac.PlayerSession
|
||||
}
|
||||
//没人
|
||||
@@ -159,7 +159,7 @@ class Rindro_AntonPartyInfoC extends LenheartNewUI_Windows {
|
||||
}.bindenv(this);
|
||||
JoinPartyButton.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam && !RinDro_Anton_Obj.MyRaidTeamId)
|
||||
window.X = 10;
|
||||
window.X = X + 10;
|
||||
else window.X = 90000;
|
||||
}.bindenv(this));
|
||||
AddChild(JoinPartyButton);
|
||||
|
||||
@@ -135,13 +135,9 @@ class Rindro_AntonPartyInfoMemberC extends LenheartNewUI_CommonUi {
|
||||
|
||||
sq_DrawBox(X + 42, Y + 1, 22, 18, HandBoxColor[InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0];
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local AXpos = X + 42;
|
||||
local AYpos = Y + 1;
|
||||
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
if (InfoObj.Captain) L_sq_DrawImg("hud/rindroanton.img", 18, X + 42, Y + 1);
|
||||
|
||||
|
||||
@@ -370,12 +370,9 @@ class Rindro_Anton_RewardC extends LenheartNewUI_Windows {
|
||||
L_sq_DrawImg("interface2/raid/anton/reward/anton_reward.img", 5 + Rarity, X + 156 + (160 * i), Y + 378, 1, sq_RGBA(255, 255, 255, CradAlphaOffset), OpenRealXrate, 1.0);
|
||||
|
||||
//绘制物品
|
||||
if (OpenRealXrate >= 1.0 && i == 3) {
|
||||
if (OpenRealXrate >= 1.0) {
|
||||
DrawItemBase(X + 159 + (160 * i), Y + 380, CardInfo.item, CardInfo.num);
|
||||
L_sq_DrawCode(Name, X + 174 + (160 * i) - LenheartTextClass.GetStringLength(Name) / 2, Y + 416, ItemNameColor[Rarity], 0, 1);
|
||||
// if (ActFlag == 5) {
|
||||
// ActFlag = 6;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@@ -506,14 +503,11 @@ class Rindro_Anton_RewardC extends LenheartNewUI_Windows {
|
||||
function DrawProfile(Cid, gx, gy, CodeXOffset) {
|
||||
if (RinDro_Anton_Obj.Portrait.rawin(Cid)) {
|
||||
local InfoObj = RinDro_Anton_Obj.Portrait[Cid];
|
||||
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] + gx - 110;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1] + gy - 5;
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local AXpos = X + gx - 110 + 42;
|
||||
local AYpos = Y + gy - 5 + 1;
|
||||
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
L_sq_DrawCode(InfoObj.Name, gx + CodeXOffset - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, gy, 0xff00b1ff, 0, 1);
|
||||
} else {
|
||||
|
||||
BIN
Project/Anton/img/0.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
Project/Anton/img/1.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
Project/Anton/img/10.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
Project/Anton/img/11.png
Normal file
|
After Width: | Height: | Size: 886 KiB |
BIN
Project/Anton/img/12.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
Project/Anton/img/13.png
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
Project/Anton/img/2.png
Normal file
|
After Width: | Height: | Size: 402 KiB |
BIN
Project/Anton/img/3.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
BIN
Project/Anton/img/4.png
Normal file
|
After Width: | Height: | Size: 341 KiB |
BIN
Project/Anton/img/5.png
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
Project/Anton/img/6.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
Project/Anton/img/7.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Project/Anton/img/8.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
Project/Anton/img/9.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
@@ -135,14 +135,14 @@ class AradPass_QuestC extends LenheartNewUI_Windows {
|
||||
ExpLimit = Jso.ExpLimit;
|
||||
|
||||
QuestSuccessTips = [0, 0, 0];
|
||||
if (Parent) Parent.TabSuccessTips[1] = 0;
|
||||
if (Parent && Parent.TabSuccessTips) Parent.TabSuccessTips[1] = 0;
|
||||
|
||||
foreach(Pos, Value in Jso.task) {
|
||||
foreach(QuestObject in Value) {
|
||||
if (QuestObject.SuccessState == 0) {
|
||||
if (QuestObject.NowSuccessCount >= QuestObject.MaxSuccessCount) {
|
||||
QuestSuccessTips[Pos] = 1;
|
||||
Parent.TabSuccessTips[1] = 1;
|
||||
if (Parent && Parent.TabSuccessTips)Parent.TabSuccessTips[1] = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Project/AradPass/img/0.png
Normal file
|
After Width: | Height: | Size: 610 KiB |
BIN
Project/AradPass/img/1.png
Normal file
|
After Width: | Height: | Size: 610 KiB |
BIN
Project/AradPass/img/2.png
Normal file
|
After Width: | Height: | Size: 571 KiB |
BIN
Project/AradPass/img/3.png
Normal file
|
After Width: | Height: | Size: 599 KiB |
BIN
Project/AradPass/vid/0.mp4
Normal file
BIN
Project/AradPass/vid/2.mp4
Normal file
BIN
Project/CollectionBox/img/0.png
Normal file
|
After Width: | Height: | Size: 405 KiB |
@@ -338,22 +338,26 @@ class CombatRankC extends LenheartNewUI_Windows {
|
||||
|
||||
if (ShowCharacter) {
|
||||
foreach(Index, AniDrawObj in ShowCharacter) {
|
||||
local OffsetX = 270;
|
||||
local OffsetY = 268;
|
||||
if (Index == 1) {
|
||||
OffsetX = 130;
|
||||
OffsetY = 268;
|
||||
}
|
||||
if (Index == 2) {
|
||||
OffsetX = 410;
|
||||
OffsetY = 268;
|
||||
}
|
||||
if (AniDrawObj) {
|
||||
foreach(AniObj in AniDrawObj) {
|
||||
AniObj.X = X + OffsetX;
|
||||
AniObj.Y = Y + OffsetY;
|
||||
AniObj.Show(Duration);
|
||||
try {
|
||||
local OffsetX = 270;
|
||||
local OffsetY = 268;
|
||||
if (Index == 1) {
|
||||
OffsetX = 130;
|
||||
OffsetY = 268;
|
||||
}
|
||||
if (Index == 2) {
|
||||
OffsetX = 410;
|
||||
OffsetY = 268;
|
||||
}
|
||||
if (AniDrawObj) {
|
||||
foreach(AniObj in AniDrawObj) {
|
||||
AniObj.X = X + OffsetX;
|
||||
AniObj.Y = Y + OffsetY;
|
||||
AniObj.Show(Duration);
|
||||
}
|
||||
}
|
||||
} catch (exception) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Project/CombatRank/img/0.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
Project/CombatRank/img/1.png
Normal file
|
After Width: | Height: | Size: 479 KiB |
@@ -4,48 +4,7 @@
|
||||
创建日期:2024-08-31 10:32
|
||||
文件用途:秒伤统计
|
||||
*/
|
||||
//大数字
|
||||
class longlong {
|
||||
Value = null;
|
||||
//构造函数 不管是不是string类型都要转成string类型
|
||||
constructor(StrValue) {
|
||||
Value = StrValue.tostring();
|
||||
}
|
||||
|
||||
function _add(other) {
|
||||
return longlong(L_sq_LongLongOperation(this.Value, other.Value, "+"));
|
||||
}
|
||||
|
||||
function _sub(other) {
|
||||
return longlong(L_sq_LongLongOperation(this.Value, other.Value, "-"));
|
||||
}
|
||||
|
||||
function _mul(other) {
|
||||
return longlong(L_sq_LongLongOperation(this.Value, other.Value, "*"));
|
||||
}
|
||||
|
||||
function _div(other) {
|
||||
return L_sq_LongLongOperation(this.Value, other.Value, "/");
|
||||
}
|
||||
|
||||
function _unm() {
|
||||
return longlong(L_sq_LongLongOperation(longlong("0"), this.Value, "-"));
|
||||
}
|
||||
|
||||
function _modulo(other) {
|
||||
return longlong(L_sq_LongLongOperation(this.Value, other.Value, "%"));
|
||||
}
|
||||
|
||||
function GetFormat(FType) {
|
||||
local Buf = L_sq_LongLongOperation(this.Value, FType, "format");
|
||||
if (Buf.len()< 2) return Buf + ".0";
|
||||
local Value = Buf.slice(0, -1);
|
||||
local Unit = Buf.slice(-1);
|
||||
local RetStr = format(FType + Unit, Value.tofloat());
|
||||
return RetStr;
|
||||
}
|
||||
|
||||
}
|
||||
class DamagePerSecondC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
@@ -93,27 +52,6 @@ class DamagePerSecondC extends LenheartNewUI_Windows {
|
||||
Childrens = [];
|
||||
DamagePerSecondList = {};
|
||||
|
||||
// DamagePerSecondList.rawset(0, {
|
||||
// Name = "测试1",
|
||||
// Damage = longlong("3002132000321100000")
|
||||
// });
|
||||
// DamagePerSecondList.rawset(1, {
|
||||
// Name = "测试2",
|
||||
// Damage = longlong("2002313000012310000")
|
||||
// });
|
||||
// DamagePerSecondList.rawset(2, {
|
||||
// Name = "测试3",
|
||||
// Damage = longlong("10000012121300000")
|
||||
// });
|
||||
// DamagePerSecondList.rawset(3, {
|
||||
// Name = "测试4",
|
||||
// Damage = longlong("1500012313000000")
|
||||
// });
|
||||
|
||||
// foreach(Oii in DamagePerSecondList) {
|
||||
// TotalDamage += Oii.Damage;
|
||||
// }
|
||||
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
|
||||
BIN
Project/DamagePerSecond/img/0.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
Project/DamagePerSecond/img/1.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
182
Project/EventShop/EventShop.nut
Normal file
@@ -0,0 +1,182 @@
|
||||
/*
|
||||
文件名:EventShop.nut
|
||||
路径:Project/EventShop/EventShop.nut
|
||||
创建日期:2025-01-11 13:59
|
||||
文件用途:活动商店
|
||||
*/
|
||||
class EventShopC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
//商品列表
|
||||
GoodsList = null;
|
||||
//当前商店归属NPC
|
||||
NPC_Index = -1;
|
||||
//活动币数量
|
||||
ActivityCoin = 99999;
|
||||
|
||||
WindowImg = Rindro_Image("eventshop/main.img");
|
||||
|
||||
//配置包
|
||||
function BaseConfig(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
//注册NPC功能
|
||||
RegisterNpc(Jso.npc);
|
||||
foreach(npc_id in Jso.npc) {
|
||||
RegisterNpc(npc_id);
|
||||
}
|
||||
}
|
||||
|
||||
//请求商品列表
|
||||
function RequestGoodsList(Index) {
|
||||
local T = {
|
||||
op = 20088001,
|
||||
npc = Index
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
//请求商品列表回调
|
||||
function RequestGoodsListCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
GoodsList = Jso.itemShops;
|
||||
ActivityCoin = Jso.count;
|
||||
NPC_Index = Jso.npc;
|
||||
//初始化商店
|
||||
InitGoodsList();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20088004, BaseConfig.bindenv(this));
|
||||
Pack_Control.rawset(20088002, RequestGoodsListCallBack.bindenv(this));
|
||||
|
||||
RequestGoodsList(2);
|
||||
}
|
||||
|
||||
function RegisterNpc(id) {
|
||||
local EachManager = getroottable()["L_Each_Obj"];
|
||||
//先清空注册
|
||||
EachManager.RemoveEachForNpc(id);
|
||||
|
||||
EachManager.AddEachForNpc(id, function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 7;
|
||||
ApplyEngagementButton.Str = "活动商店";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
Button.Parent.CloseAllEach();
|
||||
Button.Parent.CloseWindow();
|
||||
RequestGoodsList(Button.Parent.NPC_Index);
|
||||
Visible = true;
|
||||
ResetFocus();
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
//初始化商店
|
||||
function InitGoodsList() {
|
||||
|
||||
}
|
||||
|
||||
//绘制项目
|
||||
function DrawItemCur(Object, XPos, Ypos) {
|
||||
DrawItemBase(XPos, Ypos, Object.itemId, Object.num);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, XPos, Ypos, 24, 24)) {
|
||||
WindowImg.DrawPng(1, XPos, Ypos);
|
||||
L_sq_DrawCode("所需活动币: " + Object.reItemNum, X + 26, Y + 288, sq_RGBA(189, 159, 126, 255), 0, 1);
|
||||
if (MouseClickFlag) {
|
||||
local T = {
|
||||
op = 20088005,
|
||||
npc = NPC_Index,
|
||||
itemId = Object.itemId,
|
||||
itemNum = 1
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
} else {
|
||||
// if (Info.vis) {
|
||||
// //关闭道具信息窗口
|
||||
// L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||
// Info.vis = false;
|
||||
// DrawItemCurObject = null;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
MouseClickFlag = false;
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
MouseClickFlag = true;
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (!GoodsList) return;
|
||||
WindowImg.DrawPng(0, X + 0, Y + 0);
|
||||
|
||||
foreach(Pos, Object in GoodsList) {
|
||||
DrawItemCur(Object, X + 24 + ((Pos % 7) * 30), Y + 64 + ((Pos / 7) * 30));
|
||||
}
|
||||
|
||||
//绘制活动币数量
|
||||
L_sq_DrawCode(ActivityCoin.tostring(), X + 188 - LenheartTextClass.GetStringLength(ActivityCoin.tostring()) / 2, Y + 288, sq_RGBA(189, 159, 126, 255), 0, 1);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + 124, Y + 284, 21, 21)) {
|
||||
L_sq_DrawWindow(X + 40, Y - 100 + 350, 224, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
local QuestTipsStr = "拥有的活动币数量,活动币可在游戏中获得,请留意有以内的各种玩法!";
|
||||
local QuestTipsArray = L_sq_GetStringDrawArray(QuestTipsStr, 251);
|
||||
foreach(Pos, va in QuestTipsArray) {
|
||||
// Sout("文本内容嗯: %L", va);
|
||||
L_sq_DrawCode(va, X + 40 + 7, Y - 100 + 7 + 350 + (Pos * 16), 0xFFFFFFFF, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
MouseClickFlag = false;
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("EventShop_Obj");
|
||||
|
||||
function Lenheart_EventShop_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("EventShop_Obj")) {
|
||||
RootTab.rawset("EventShop_Obj", true);
|
||||
LenheartNewUI_CreateWindow(EventShopC, "活动商店窗口", 60, 120, 260, 318, 32);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("EventShopFuncN", Lenheart_EventShop_Fun);
|
||||
190
Project/Fiendwar copy/FiendFightLogic.nut
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
文件名:FiendFightLogic.nut
|
||||
路径:Plugins/Fiendwar/FiendFightLogic.nut
|
||||
创建日期:2024-05-27 19:18
|
||||
文件用途:超时空战斗逻辑
|
||||
*/
|
||||
class FiendFightLogicC {
|
||||
//进入BOSS房间发包告诉服务端的Flag
|
||||
IsBossActiveMsgPackFlag = false;
|
||||
|
||||
constructor() {
|
||||
|
||||
//注册回调包
|
||||
Pack_Control.rawset(20063030, SetCharacterDamageRate.bindenv(this));
|
||||
Pack_Control.rawset(20063600, CreatePassiveObjectById.bindenv(this));
|
||||
Pack_Control.rawset(20063602, GetBossHp.bindenv(this));
|
||||
Pack_Control.rawset(20063604, SetBossHp.bindenv(this));
|
||||
Pack_Control.rawset(20063608, CheckMonsterIsV.bindenv(this));
|
||||
}
|
||||
|
||||
//检测怪物是否存在
|
||||
function CheckMonsterIsV(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Idx = Jso.id;
|
||||
local ObjectBuf = GetObjectByIndex(Idx);
|
||||
if (!ObjectBuf) {
|
||||
local T = {
|
||||
op = 20063609,
|
||||
id = Idx
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
}
|
||||
}
|
||||
|
||||
//设置BOSS生命值
|
||||
function SetBossHp(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local BossObject = GetObjectByIndex(210994);
|
||||
|
||||
//没找到BOSS
|
||||
if (!BossObject) {
|
||||
local T = {
|
||||
op = 20063605,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
} else {
|
||||
BossObject.setHp(Jso.hp, null, true);
|
||||
}
|
||||
|
||||
}
|
||||
//获取BOSS生命值
|
||||
function GetBossHp(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local BossObject = GetObjectByIndex(210994);
|
||||
local curthp = -1;
|
||||
local rmaxhp = -1;
|
||||
//找到BOSS
|
||||
if (BossObject) {
|
||||
curthp = BossObject.getHp();
|
||||
rmaxhp = BossObject.getHpMax();
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = 20063603,
|
||||
hp = curthp,
|
||||
maxhp = rmaxhp
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
}
|
||||
|
||||
//设置伤害值回调
|
||||
function SetCharacterDamageRate(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Rate = Jso.damageMarkup.tofloat() / 100.0;
|
||||
//超时空伤害设置
|
||||
if (getroottable().rawin("LenheartFiendModuleDamageRate")) {
|
||||
getroottable()["LenheartFiendModuleDamageRate"] = Rate;
|
||||
}
|
||||
}
|
||||
|
||||
//召唤PassiveObject回调
|
||||
function CreatePassiveObjectById(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local ObjectId = Jso.id;
|
||||
local ZPos = Jso.z;
|
||||
|
||||
//确保在BOSS房间才召唤免得游戏崩溃
|
||||
if (IsBossActiveMsgPackFlag) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_GetCNRDObjectToActiveObject(obj);
|
||||
// obj.sq_SendCreatePassiveObjectPacket(ObjectId, 0, 99999990, 0, ZPos);
|
||||
// sq_SendCreatePassiveObjectPacketFromPassivePos(obj, ObjectId, 0, 99999990, 0, ZPos);
|
||||
sq_SendCreatePassiveObjectPacket(obj, ObjectId, 0, 99999990, 0, ZPos, obj.getDirection());
|
||||
local Jso = {
|
||||
op = 20063601,
|
||||
id = ObjectId,
|
||||
z = ZPos
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//获取指定对象
|
||||
function GetObjectByIndex(Idx) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_GetCNRDObjectToActiveObject(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)) {
|
||||
local activeObj = sq_GetCNRDObjectToActiveObject(object);
|
||||
local MonsterIndex = activeObj.getCollisionObjectIndex();
|
||||
if (MonsterIndex == Idx) {
|
||||
return activeObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//获取地图ID
|
||||
function GetMapIndex() {
|
||||
local stage = sq_GetGlobaludpModuleStage();
|
||||
local MapIndex = sq_GetMapIndex(stage);
|
||||
return MapIndex;
|
||||
}
|
||||
|
||||
//检测是否在超时空BOSS图
|
||||
function CheckBossIsActive() {
|
||||
//如果在副本中
|
||||
if (sq_GetCurrentModuleType() == 3) {
|
||||
//在BOSS地图
|
||||
if (GetMapIndex() == 24151) {
|
||||
if (!IsBossActiveMsgPackFlag) {
|
||||
IsBossActiveMsgPackFlag = true;
|
||||
local Jso = {
|
||||
op = 20063801
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
//退出副本以后设置flag 还原
|
||||
else {
|
||||
IsBossActiveMsgPackFlag = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//怪物死亡回调包
|
||||
function MonsterDieCallBack(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);
|
||||
if (activeObj.isDead()) {
|
||||
local MonsterIndex = activeObj.getCollisionObjectIndex();
|
||||
if (MonsterIndex >= 210994 && MonsterIndex <= 210999) {
|
||||
local Jso = {
|
||||
op = 20063503,
|
||||
monster_id = MonsterIndex
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Proc(obj) {
|
||||
|
||||
//如果进入BOSS房间需要告诉服务端
|
||||
CheckBossIsActive();
|
||||
|
||||
//如果在和BOSS干架 要检测所有怪物的死亡
|
||||
if (IsBossActiveMsgPackFlag) {
|
||||
//怪物死亡检测
|
||||
MonsterDieCallBack(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
328
Project/Fiendwar copy/FiendReward.nut
Normal file
@@ -0,0 +1,328 @@
|
||||
/*
|
||||
文件名:FiendReward.nut
|
||||
路径:Plugins/Fiendwar/FiendReward.nut
|
||||
创建日期:2024-05-13 10:03
|
||||
文件用途:超时空奖励
|
||||
*/
|
||||
class FiendRewardC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
DeBugMode = true;
|
||||
//默认显示状态需要是关闭 因为要通过收包打开
|
||||
Visible = false;
|
||||
|
||||
//奖励信息
|
||||
RewardInfo = null;
|
||||
//奖励动画开始时间
|
||||
AniStartFlag = null;
|
||||
|
||||
//收到奖励包
|
||||
function RewardCallBack(Chunk) {
|
||||
// Sout("收到请求加入包 : \n\n\n %L", Chunk);
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RewardInfo = Jso;
|
||||
Visible = true;
|
||||
AniStartFlag = Clock();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20063026, RewardCallBack.bindenv(this));
|
||||
|
||||
local T = {
|
||||
op = 20063061,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
AniName_Flag = 0;
|
||||
AniActFlag = 0;
|
||||
Ani_Title = null;
|
||||
Ani_Time = null;
|
||||
Ani_Time2 = null;
|
||||
Ani_Card_1 = null;
|
||||
Ani_Card_2 = null;
|
||||
Ani_Card_Open_1 = null;
|
||||
Ani_Card_Open_2 = null;
|
||||
AniTimeStartFlag = 0;
|
||||
AniRewardMyStartFlag = 0;
|
||||
Ani_Card_All_1 = null;
|
||||
Ani_Card_All_Open = null;
|
||||
Ani_Card_All_Open_Gold = null;
|
||||
AniRewardReloadFlag = 0;
|
||||
AlphaValue = 0.0;
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (AniStartFlag) {
|
||||
local ExiTime = Clock() - AniStartFlag;
|
||||
|
||||
//绘制背景
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 0, X + 0, Y + 0, 1, sq_RGBA(255, 255, 255, 150), 1.0, 1.0);
|
||||
|
||||
//标题一阶段
|
||||
Ani_Title = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_title_00.ani", X + 188, Y + 30, "超时空奖励标题1" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Title)) {
|
||||
if (AniActFlag == 0) AniActFlag = 1;
|
||||
}
|
||||
//时间二阶段
|
||||
if (AniActFlag >= 1) {
|
||||
Ani_Time = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_time.ani", X + 55, Y + 120, "超时空奖励标题2" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Time)) {
|
||||
if (AniActFlag == 1) AniActFlag = 2;
|
||||
}
|
||||
}
|
||||
//时间三阶段
|
||||
if (AniActFlag >= 2) {
|
||||
Ani_Time2 = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_rank_00.ani", X + 570, Y + 90, "超时空奖励标题3" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Time2)) {
|
||||
//记录一下时间
|
||||
if (AniActFlag == 2) {
|
||||
AniTimeStartFlag = Clock();
|
||||
AniActFlag = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
//时间四阶段
|
||||
if (AniActFlag >= 3) {
|
||||
local al = sq_GetUniformVelocity(0, 100, Clock() - AniTimeStartFlag, 1500);
|
||||
AlphaValue = al.tofloat() / 100.0;
|
||||
|
||||
local RealTime = RewardInfo.time;
|
||||
local seconds = RealTime / 10;
|
||||
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 Offset = -6;
|
||||
DrawImg("hud/fiendwartime.img", hours.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", hours.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139);
|
||||
Offset += 60;
|
||||
DrawImg("hud/fiendwartime.img", minutes.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", minutes.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139);
|
||||
Offset += 60;
|
||||
DrawImg("hud/fiendwartime.img", seconds.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", seconds.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
|
||||
Offset += 160;
|
||||
local DieCount = RewardInfo.deathsNum;
|
||||
local DrawDieStr = format("%02d", DieCount);
|
||||
DrawImg("hud/fiendwartime.img", DrawDieStr.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", DrawDieStr.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
|
||||
if (al >= 100) {
|
||||
if (AniActFlag == 3) {
|
||||
AniActFlag = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌一阶段
|
||||
if (AniActFlag == 4) {
|
||||
Ani_Card_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_01.ani", X + 0, Y + 30, "超时空奖励个人第一张卡牌" + AniName_Flag);
|
||||
Ani_Card_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_02.ani", X + 0, Y + 30, "超时空奖励个人第二张卡牌" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_1) && sq_IsEnd(Ani_Card_2)) {
|
||||
if (AniActFlag == 4) AniActFlag = 5;
|
||||
}
|
||||
}
|
||||
//卡牌二阶段
|
||||
if (AniActFlag == 5) {
|
||||
Ani_Card_Open_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 218, Y + 280, "超时空奖励个人第一张卡牌打开" + AniName_Flag);
|
||||
Ani_Card_Open_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 406, Y + 280, "超时空奖励个人第二张卡牌打开" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_Open_1) && sq_IsEnd(Ani_Card_Open_2)) {
|
||||
if (AniActFlag == 5) {
|
||||
AniRewardMyStartFlag = Clock();
|
||||
AniActFlag = 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌三阶段
|
||||
if (AniActFlag == 6) {
|
||||
local BackGroundFlag = 0;
|
||||
if (RewardInfo.rewards[0].item == -1) BackGroundFlag = 1;
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 218, Y + 280);
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 406, Y + 280);
|
||||
|
||||
DrawItemEx(X + 290, Y + 342, RewardInfo.rewards[0].item, RewardInfo.rewards[0].num, RewardInfo.pid, 0, -10);
|
||||
DrawItemEx(X + 478, Y + 342, RewardInfo.rewards[0].item2, RewardInfo.rewards[0].num2, RewardInfo.pid, 0, -10);
|
||||
|
||||
if ((Clock() - AniRewardMyStartFlag) >= 1500) {
|
||||
AniActFlag = 7;
|
||||
}
|
||||
}
|
||||
//卡牌四阶段
|
||||
if (AniActFlag == 7) {
|
||||
Ani_Card_All_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_00.ani", X + 0, Y + 0, "二阶段翻牌未翻开" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_All_1)) {
|
||||
if (AniActFlag == 7) {
|
||||
Ani_Card_All_Open = array(8);
|
||||
Ani_Card_All_Open_Gold = array(8);
|
||||
AniActFlag = 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌五阶段
|
||||
if (AniActFlag == 8) {
|
||||
for (local i = 0; i< 8; i++) {
|
||||
Ani_Card_All_Open[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开" + "i" + AniName_Flag);
|
||||
|
||||
if (i<(RewardInfo.rewards2.len() - 1) && RewardInfo.rewards2[i][0].grade == 1) {
|
||||
Ani_Card_All_Open_Gold[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/gold_nomal.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开金牌" + "i" + AniName_Flag);
|
||||
}
|
||||
}
|
||||
if (sq_IsEnd(Ani_Card_All_Open[7])) {
|
||||
if (AniActFlag == 8) {
|
||||
AniActFlag = 9;
|
||||
AniRewardReloadFlag = Clock();
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌六阶段
|
||||
if (AniActFlag == 9) {
|
||||
for (local i = 0; i< 8; i++) {
|
||||
DrawRewardCard(i);
|
||||
}
|
||||
//重置
|
||||
if (Clock() - AniRewardReloadFlag >= 2000) {
|
||||
AniActFlag = 0;
|
||||
Ani_Title = null;
|
||||
Ani_Time = null;
|
||||
Ani_Time2 = null;
|
||||
Ani_Card_1 = null;
|
||||
Ani_Card_2 = null;
|
||||
Ani_Card_Open_1 = null;
|
||||
Ani_Card_Open_2 = null;
|
||||
AniTimeStartFlag = 0;
|
||||
AniRewardMyStartFlag = 0;
|
||||
Ani_Card_All_1 = null;
|
||||
Ani_Card_All_Open = null;
|
||||
Ani_Card_All_Open_Gold = null;
|
||||
AniRewardReloadFlag = 0;
|
||||
AlphaValue = 0.0;
|
||||
RewardInfo = null;
|
||||
AniStartFlag = null;
|
||||
AniName_Flag += 1;
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function DrawRewardCard(Index) {
|
||||
if (Index > (RewardInfo.rewards2.len() - 1)) {
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 24, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
return;
|
||||
}
|
||||
local Info = RewardInfo.rewards2[Index][0];
|
||||
local BackGroundFlag = 0;
|
||||
if (Info.count == 0) {
|
||||
BackGroundFlag = 1;
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10);
|
||||
}
|
||||
if (Info.count == 1) {
|
||||
if (Info.grade == 1)(BackGroundFlag = -5)
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10);
|
||||
} else if (Info.count == 2) {
|
||||
if (Info.grade == 1)(BackGroundFlag = -5)
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 - 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 999999, 0);
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 + 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item2, Info.num2, Index, -20, -10);
|
||||
}
|
||||
}
|
||||
|
||||
ItemInfoDrawS = null;
|
||||
//绘制道具相信信息
|
||||
ItemObject = null;
|
||||
|
||||
//绘制道具带道具信息
|
||||
function DrawItemEx(X, Y, Id, Count, Pid, Flag, Flag2) {
|
||||
try {
|
||||
if (Flag != 999999) {
|
||||
local PartyMasterIcon = FiendwarTotal.GetInstance().MyTeam.MembersList[Pid];
|
||||
|
||||
local XOffset = -77 + Flag;
|
||||
local YOffset = -31 + Flag2;
|
||||
sq_DrawBox(X + 30 + XOffset, Y + 1 + YOffset, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12;
|
||||
local AYpos = AvatarObj.D[1] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + YOffset;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
//绘制名字
|
||||
L_sq_DrawCode(DrawName, X + XOffset + 100 - LenheartTextClass.GetStringLength(DrawName) / 2, Y + YOffset + 4, sq_RGBA(247, 214, 90, 250), 0, 1);
|
||||
}
|
||||
|
||||
if (Id != -1) {
|
||||
local Rarity = AllItemInfoObject[Id].Rarity;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 5 + Rarity, X - 3, Y - 3);
|
||||
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||
ItemInfoDrawS = {};
|
||||
ItemInfoDrawS.X <- X;
|
||||
ItemInfoDrawS.Y <- Y;
|
||||
ItemInfoDrawS.ItemId <- Id;
|
||||
}
|
||||
}
|
||||
} catch (exception) {
|
||||
|
||||
}
|
||||
}
|
||||
//绘制悬停
|
||||
function DrawItemInfoF(obj) {
|
||||
if (ItemInfoDrawS) {
|
||||
if (!ItemObject) {
|
||||
local ItemId = ItemInfoDrawS.ItemId;
|
||||
if (AllItemInfoObject.rawin(ItemId)) {
|
||||
ItemObject = ItemInfoClass(AllItemInfoObject[ItemId]);
|
||||
}
|
||||
}
|
||||
ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength);
|
||||
} else {
|
||||
ItemObject = null;
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
ItemInfoDrawS = null;
|
||||
DrawMain(obj);
|
||||
// DrawItemInfoF(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
188
Project/Fiendwar copy/Fiendwar.nut
Normal file
@@ -0,0 +1,188 @@
|
||||
/*
|
||||
文件名:Fiendwar.nut
|
||||
路径:Project/Fiendwar/Fiendwar.nut
|
||||
创建日期:2024-11-16 20:19
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHall.nut"); //大厅
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHallParty.nut"); //大厅的队伍
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarPartyInfo.nut"); //攻坚队具体信息窗口
|
||||
dofile("sqr/Project/Fiendwar/FiendwarPartyMemberInfo.nut"); //攻坚队具体信息中的队员信息UI
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarPlayerInteractive.nut"); //攻坚队玩家交互
|
||||
dofile("sqr/Project/Fiendwar/FiendwarPartyFormation.nut"); //攻坚队具体信息中的编队
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHallCreateParty.nut");
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHallApplyJoin.nut");
|
||||
|
||||
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarFightSituation.nut"); //战况表
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHallGoBossDgn.nut"); //前往BOSS框
|
||||
|
||||
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendwarNoti.nut"); //超时空信息分发
|
||||
dofile("sqr/Project/Fiendwar/FiendReward.nut"); //超时空奖励
|
||||
dofile("sqr/Project/Fiendwar/FiendFightLogic.nut"); //战斗逻辑
|
||||
|
||||
class FiendwarTotal extends Rindro_BaseToolClass {
|
||||
//基础配置
|
||||
BaseConfig = null;
|
||||
/*
|
||||
town_index 城镇编号
|
||||
channel_index 频道编号
|
||||
*/
|
||||
//我的客户端cid
|
||||
MyCid = null;
|
||||
//我的攻坚队ID
|
||||
MyPartyId = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//我的队伍
|
||||
MyTeam = null;
|
||||
//开始攻坚动画
|
||||
StartAniFlag = false;
|
||||
//攻坚结束时间
|
||||
EndTime = null;
|
||||
PackCurT = null;
|
||||
|
||||
|
||||
//全局获取对象方法
|
||||
function GetInstance() {
|
||||
if (getroottable().rawin("FiendwarCObj"))
|
||||
return getroottable()["FiendwarCObj"];
|
||||
else {
|
||||
local RootTab = getroottable();
|
||||
local Cobj = FiendwarTotal();
|
||||
RootTab.rawset("FiendwarCObj", Cobj);
|
||||
Cobj.InitWindow();
|
||||
return Cobj;
|
||||
}
|
||||
}
|
||||
|
||||
//请求基础信息配置
|
||||
function GetFiendwarBase() {
|
||||
local T = {
|
||||
op = 20063501,
|
||||
}
|
||||
SendPack(T);
|
||||
}
|
||||
//请求掉线配置信息
|
||||
function GetFiendwarDown() {
|
||||
local T = {
|
||||
op = 20063063,
|
||||
}
|
||||
SendPack(T);
|
||||
}
|
||||
|
||||
//基础信息配置
|
||||
function FiendwarBase(Chunk) {
|
||||
BaseConfig = Json.Decode(Chunk);
|
||||
FiendwarChannelTownLogicCallBack();
|
||||
}
|
||||
|
||||
//团本专属频道上线城镇移动包
|
||||
function FiendwarChannelTownLogicCallBack() {
|
||||
if (BaseConfig.channel_index.find("20")) {
|
||||
if (L_sq_GetTownIndex() != BaseConfig.town_index) {
|
||||
L_sq_MoveTown(BaseConfig.town_index, 0, 474, 249);
|
||||
}
|
||||
} else {
|
||||
//在超时空区域的 要转移回普通城镇
|
||||
if (L_sq_GetTownIndex() == BaseConfig.town_index) {
|
||||
L_sq_MoveTown(1, 1, 474, 249);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//开团Flag包
|
||||
function StartFight(Chunk) {
|
||||
FiendwarTotal.GetInstance().StartAniFlag = true;
|
||||
}
|
||||
|
||||
|
||||
FiendwarHallC_Window = null;
|
||||
FiendwarFightSituationSwitchC_Window = null;
|
||||
FiendwarNotiC_Window = null;
|
||||
FiendRewardC_Window = null;
|
||||
FiendFightLogicC_Object = null;
|
||||
constructor() {
|
||||
//获取基础配置回调包
|
||||
Pack_Control.rawset(20063502, FiendwarBase.bindenv(this));
|
||||
Pack_Control.rawset(20063028, StartFight.bindenv(this));
|
||||
|
||||
//第一次上线要重新请求一下位置信息
|
||||
GetFiendwarBase();
|
||||
//请求掉线配置信息
|
||||
GetFiendwarDown();
|
||||
|
||||
|
||||
}
|
||||
|
||||
//初始化窗口
|
||||
function InitWindow() {
|
||||
FiendwarHallC_Window = LenheartNewUI_CreateWindow(FiendwarHallC, "超时空攻坚队伍列表", 320, 40, 478, 434, 18);
|
||||
FiendwarFightSituationSwitchC_Window = LenheartNewUI_CreateWindow(FiendwarFightSituationSwitchC, "超时空战况表开关", 770, 9, 30, 30, 0);
|
||||
FiendwarNotiC_Window = LenheartNewUI_CreateWindow(FiendwarNotiC, "超时空攻坚队伍消息分发", 0, 0, 0, 0, 0);
|
||||
FiendRewardC_Window = LenheartNewUI_CreateWindow(FiendRewardC, "超时空奖励界面", 0, 0, 800, 600, 0);
|
||||
|
||||
FiendFightLogicC_Object = FiendFightLogicC();
|
||||
}
|
||||
|
||||
function ClearInfo() {
|
||||
//我的客户端cid
|
||||
MyCid = null;
|
||||
//我的攻坚队ID
|
||||
MyPartyId = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//我的队伍
|
||||
MyTeam = null;
|
||||
//开始攻坚动画
|
||||
StartAniFlag = false;
|
||||
//攻坚结束时间
|
||||
EndTime = null;
|
||||
PackCurT = null;
|
||||
}
|
||||
|
||||
function Proc(obj) {
|
||||
|
||||
//开始攻坚动画
|
||||
if (FiendwarTotal.GetInstance().StartAniFlag) {
|
||||
local Ani = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/common/title/start_back.ani", 400, 260, "超时空开始攻坚Ani1");
|
||||
if (sq_IsEnd(Ani)) {
|
||||
FiendwarTotal.GetInstance().StartAniFlag = false;
|
||||
sq_Rewind(Ani);
|
||||
}
|
||||
}
|
||||
|
||||
if (FiendFightLogicC_Object) FiendFightLogicC_Object.Proc(obj);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getroottable().rawdelete("FiendwarCObj");
|
||||
|
||||
function LenheartFiendwar(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("FiendwarCObj")) {
|
||||
local Cobj = FiendwarTotal();
|
||||
RootTab.rawset("FiendwarCObj", Cobj);
|
||||
Cobj.InitWindow();
|
||||
} else {
|
||||
RootTab["FiendwarCObj"].Proc(obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (getroottable().rawin("LenheartTopFuncTab")) {
|
||||
getroottable()["LenheartTopFuncTab"].rawset("LenheartFiendwarFunc", LenheartFiendwar);
|
||||
} else {
|
||||
local T = {};
|
||||
T.rawset("LenheartFiendwarFunc", LenheartFiendwar);
|
||||
getroottable().rawset("LenheartTopFuncTab", T);
|
||||
}
|
||||
696
Project/Fiendwar copy/FiendwarFightSituation.nut
Normal file
@@ -0,0 +1,696 @@
|
||||
/*
|
||||
文件名:FiendwarFightSituation.nut
|
||||
路径:Plugins/Fiendwar/FiendwarFightSituation.nut
|
||||
创建日期:2024-04-10 21:28
|
||||
文件用途:超时空攻坚战况
|
||||
*/
|
||||
|
||||
//复选框
|
||||
class Fiendwar_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 Fiendwar_LenheartNewUI_ProgressIndicator extends LenheartNewUI_CommonUi {
|
||||
//透明度
|
||||
AlphaValue = 1.0;
|
||||
//宽
|
||||
DWidth = null;
|
||||
//控制者
|
||||
Controller = 0;
|
||||
//回调函数
|
||||
OnChangeControl = null;
|
||||
//球的偏移 因为除不尽 所以这个最好单独写
|
||||
BXposOffset = 0;
|
||||
|
||||
constructor(X, Y, W, H) {
|
||||
this.DWidth = W;
|
||||
LenheartNewUI_CommonUi.constructor(X, Y, W, H);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//绘制左
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 19, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
|
||||
local OffserIndex = 0;
|
||||
//绘制中
|
||||
for (local i = 0; i< this.DWidth; i++) {
|
||||
if (i > (Controller * this.DWidth).tointeger())
|
||||
OffserIndex = 0;
|
||||
else OffserIndex = 1;
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 21 + OffserIndex, X + 8 + i, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
}
|
||||
//绘制右
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 20, X + 8 + this.DWidth, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
|
||||
// local BXposOffset = 0;
|
||||
// if (BaseX && EndX) BXposOffset = EndX - BaseX;
|
||||
//绘制球
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 23, X + BXposOffset + 1, Y + 1, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
}
|
||||
|
||||
//按下时的基准X
|
||||
BaseX = null;
|
||||
EndX = null;
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + BXposOffset + 1, Y + 1, 15, 14)) {
|
||||
isLBDown = true;
|
||||
if (!BaseX) BaseX = MousePos_X;
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标事件回调
|
||||
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||
if (isLBDown && Flag == 1) {
|
||||
if (MousePos_X > (X + DWidth + 8))
|
||||
MousePos_X = (X + DWidth + 8);
|
||||
else if (MousePos_X<(X + 8))
|
||||
MousePos_X = (X + 8);
|
||||
EndX = MousePos_X;
|
||||
if (BaseX && EndX) {
|
||||
BXposOffset = EndX - BaseX;
|
||||
Controller = BXposOffset.tofloat() / DWidth.tofloat();
|
||||
AlphaValue = Controller;
|
||||
if (AlphaValue< 0.4) AlphaValue = 0.4;
|
||||
if (OnChangeControl) OnChangeControl(Controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
isLBDown = false;
|
||||
}
|
||||
}
|
||||
|
||||
class FiendwarFightSituationC extends LenheartNewUI_Windows {
|
||||
|
||||
Visible = false;
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
//透明度
|
||||
AlphaValue = 1.0;
|
||||
//简易战况表复选框
|
||||
BaseSituationBtn = null;
|
||||
//简易战况表是否开启
|
||||
BaseSituationFlag = 0;
|
||||
|
||||
//雷达是否存在
|
||||
RadarFlag = true;
|
||||
//turret2
|
||||
turret2 = true;
|
||||
|
||||
MonsterFace = {
|
||||
m20413 = 1,
|
||||
m20412 = 3,
|
||||
m20411 = 4,
|
||||
m20415 = 15,
|
||||
m20408 = 9,
|
||||
m20409 = 8,
|
||||
m20405 = 5,
|
||||
m20404 = 6,
|
||||
m20406 = 12,
|
||||
m20401 = 13,
|
||||
m20402 = 10,
|
||||
m20403 = 11,
|
||||
};
|
||||
|
||||
SlotPos = [
|
||||
[50, 479],
|
||||
[50, 374],
|
||||
[50, 270],
|
||||
[140, 167],
|
||||
[186, 89],
|
||||
[275, 36],
|
||||
[275, 141],
|
||||
[411, 11],
|
||||
[365, 88],
|
||||
[455, 141],
|
||||
[545, 36],
|
||||
|
||||
[141, 427],
|
||||
[185, 348],
|
||||
[185, 245],
|
||||
[321, 271],
|
||||
[411, 219],
|
||||
[546, 245],
|
||||
[591, 166],
|
||||
|
||||
[141, 530],
|
||||
[276, 505],
|
||||
[320, 375],
|
||||
[410, 478],
|
||||
[546, 504],
|
||||
[456, 401],
|
||||
[681, 478],
|
||||
[545, 348],
|
||||
[680, 374],
|
||||
[725, 244],
|
||||
|
||||
[690, 53],
|
||||
[727, 129],
|
||||
]
|
||||
|
||||
|
||||
Info = null;
|
||||
PackCurT = null;
|
||||
EndTime = null;
|
||||
|
||||
function InfoCallBack(Chunk) {
|
||||
// print(Chunk);
|
||||
local Jso = Json.Decode(Chunk);
|
||||
Info = Jso.fightInfo.platVos;
|
||||
EndTime = Jso.fightInfo.endTime;
|
||||
RadarFlag = Jso.fightInfo.radar;
|
||||
turret2 = Jso.fightInfo.turret2;
|
||||
FiendwarTotal.GetInstance().EndTime = Jso.fightInfo.endTime;
|
||||
local Pt = Clock();
|
||||
PackCurT = Pt;
|
||||
FiendwarTotal.GetInstance().PackCurT = Pt;
|
||||
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarPartyInfoC, "超时空我的队伍窗口", 430, 15, 354, 290, 18);
|
||||
Win.CloseWindow();
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarHallC, "超时空攻坚队伍列表", 320, 40, 478, 434, 18);
|
||||
Win.CloseWindow();
|
||||
}
|
||||
|
||||
//收到进入BOSS请求包
|
||||
function GoBossCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarHallGoBossDgnC, "超时空攻坚进入罗什", 273, 225, 270, 120, 19);
|
||||
Win.Visible = true;
|
||||
Win.Dark = Jso.boss1;
|
||||
Win.Light = Jso.boss2;
|
||||
Win.RegisterWidget();
|
||||
}
|
||||
|
||||
PlayerGiveUpTime = null;
|
||||
PlayerGiveUpFlagTime = null;
|
||||
//放弃副本包
|
||||
function PlayerGiveUpCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
PlayerGiveUpTime = Jso.endTime;
|
||||
PlayerGiveUpFlagTime = Clock();
|
||||
}
|
||||
|
||||
function GetInfo() {
|
||||
local T = {
|
||||
op = 20063053,
|
||||
// teamsId = FiendwarTotal.GetInstance().MyPartyId
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20063016, InfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063022, GoBossCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063024, PlayerGiveUpCallBack.bindenv(this));
|
||||
|
||||
GetInfo();
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(770, 0, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
CloseButton.OnClick = function() {
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarFightSituationSwitchC, "超时空战况表开关", 770, 9, 30, 30, 0);
|
||||
Win.ResetFocus();
|
||||
this.Visible = false;
|
||||
}.bindenv(this);
|
||||
Childrens.append(CloseButton);
|
||||
|
||||
local PIButton = Fiendwar_LenheartNewUI_ProgressIndicator(264, 11, 80, 10);
|
||||
PIButton.Controller = 1.0;
|
||||
PIButton.BaseX = 273;
|
||||
PIButton.EndX = 352;
|
||||
PIButton.BXposOffset = 79;
|
||||
PIButton.OnChangeControl = function(Controller) {
|
||||
AlphaValue = Controller;
|
||||
if (AlphaValue< 0.4) AlphaValue = 0.4;
|
||||
}.bindenv(this);
|
||||
Childrens.append(PIButton);
|
||||
|
||||
|
||||
//简易战况表复选框
|
||||
BaseSituationBtn = Fiendwar_LenheartNewUI_SwitchButton(198, 9);
|
||||
BaseSituationBtn.State = 0;
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//绘制简易动态Ani // obj -- ani路径 -- X -- Y -- ani名字
|
||||
function T_DrawDynamicAni(obj, aniFileName, x, y, aniname, Alpha) {
|
||||
local ani = obj.getVar().GetAnimationMap(aniname, aniFileName);
|
||||
ani.setRGBA(255, 255, 255, Alpha);
|
||||
sq_AnimationProc(ani);
|
||||
sq_drawCurrentFrame(ani, x, y, true);
|
||||
return ani;
|
||||
}
|
||||
|
||||
function DrawParty() {
|
||||
//绘制我的队伍
|
||||
if (FiendwarTotal.GetInstance().MyTeam) {
|
||||
local Mt = FiendwarTotal.GetInstance().MyTeam;
|
||||
if (!Mt) return;
|
||||
local PartyMaster;
|
||||
foreach(index, PartyMasterIcon in Mt.MembersList) {
|
||||
local XOffset = 0;
|
||||
local YOffset = 9 + (index * 22);
|
||||
|
||||
DrawImg("interface2/fiendwar_kr/navigation/partyseatnumber.img", 0, X + XOffset + 10, Y + YOffset);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/partyseatnumber.img", PartyMasterIcon.InfoObj.TeamId, X + XOffset + 10, Y + YOffset + 1);
|
||||
|
||||
sq_DrawBox(X + 30 + XOffset, Y + 1 + YOffset, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12;
|
||||
local AYpos = AvatarObj.D[1] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + YOffset;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local RgbaValue = sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger());
|
||||
if (PartyMasterIcon.InfoObj.Captain) RgbaValue = sq_RGBA(247, 214, 90, (250 * AlphaValue).tointeger());
|
||||
if (PartyMasterIcon.InfoObj.Captain) DrawImg("hud/fiendwarl.img", 18, X + 42 + XOffset, Y + 1 + YOffset);
|
||||
|
||||
local DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
if (PlayerGiveUpTime && PlayerGiveUpTime[index]) {
|
||||
local STime = ((PlayerGiveUpTime[index] - (Clock() - PlayerGiveUpFlagTime)) / 1000);
|
||||
DrawName = "复活时间: " + STime.tostring() + "秒";
|
||||
if (STime <= 0) DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
}
|
||||
//绘制名字
|
||||
L_sq_DrawCode(DrawName, X + XOffset + 58, Y + YOffset + 4, RgbaValue, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//绘制背景框
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 0, X + 7, Y);
|
||||
//绘制建议进度表文字
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 71, X + 130, Y + 10);
|
||||
|
||||
//绘制透明度文字
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 72, X + 220, Y + 10);
|
||||
|
||||
|
||||
|
||||
DrawParty();
|
||||
|
||||
|
||||
|
||||
//Boss底层特效
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/boss_effect.ani", X + 720, Y + 110, "超时空战况表背景图BOSS区域", (250 * AlphaValue).tointeger());
|
||||
|
||||
//下路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linebottom.ani", X + 7, Y, "超时空战况表背景图下路特效B");
|
||||
//中路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linemiddle.ani", X + 7, Y, "超时空战况表背景图中路特效B");
|
||||
//上路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linetop.ani", X + 7, Y, "超时空战况表背景图上路特效B");
|
||||
|
||||
//绘制地图
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 64, X + 7, Y + 1);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (Info) {
|
||||
foreach(Index, Value in Info) {
|
||||
if (Value.id != -1) {
|
||||
//裁切比例
|
||||
local SliceRate = 0;
|
||||
if (Value.e && Value.s) {
|
||||
SliceRate = (Value.e.tofloat() - (Clock().tofloat() - PackCurT.tofloat())) / Value.s.tofloat();
|
||||
}
|
||||
//BOSS暗
|
||||
if (Value.id == 28) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 60, X - 68 + SlotPos[Value.id][0], Y - 56 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//BOSS光
|
||||
else if (Value.id == 29) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 61, X - 68 + SlotPos[Value.id][0], Y - 56 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//兵营
|
||||
else if (Value.id == 10 || Value.id == 17 || Value.id == 27) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 5 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
//复活
|
||||
if (!Value.m) {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 55, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
//生成小怪
|
||||
else {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 54, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//前哨
|
||||
else if (Value.id == 7 || Value.id == 15 || Value.id == 24) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 4 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 54, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
} else if (Value.id == 6 || Value.id == 23) {
|
||||
//雷达
|
||||
if (Value.id == 6) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 2 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//炮塔
|
||||
else if (Value.id == 23) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 3 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//基地和出发点一定有框
|
||||
if (Value.id == 0 || Value.id == 1 || Value.id == 11 || Value.id == 18) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
//基地两边都画
|
||||
if (Value.id == 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X - 30 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X + 33 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
}
|
||||
} else {
|
||||
//有怪物
|
||||
if (Value.m || Value.n) {
|
||||
if (Value.m) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 27, X + 36 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
//如果不是这些 那就是移动怪 并且活着
|
||||
if (Value.id != 10 && Value.id != 17 && Value.id != 27 && Value.id != 28 && Value.id != 29 && Value.id != 7 && Value.id != 15 && Value.id != 24 && Value.id != 6 && Value.id != 23 && !Value.n) {
|
||||
//没人打
|
||||
if (Value.u.len()< 1) {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 56, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(52, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
//战斗中
|
||||
else {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 53, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(49, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (Value.n) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 59, X + 36 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
}
|
||||
DrawImg("interface2/fiendwar_kr/navigation/monsterface.img", 14, X + 37 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 98, X + 38 + SlotPos[Value.id][0], Y + 37 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
|
||||
//如果有玩家
|
||||
if (Value.u.len() >= 1) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X - 30 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
|
||||
//说明有战斗
|
||||
if (Value.m) {
|
||||
//战斗特效
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/hexagon_ef_red.ani", X - 32 + SlotPos[Value.id][0], Y - 25 + SlotPos[Value.id][1], "超时空战况表战斗方格", (250 * AlphaValue).tointeger());
|
||||
} else {
|
||||
//TODO 这里判断有没有商人 没有商人画绿色 有画黄色
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/hexagon_ef_green.ani", X - 32 + SlotPos[Value.id][0], Y - 25 + SlotPos[Value.id][1], "超时空战况表安全方格", (250 * AlphaValue).tointeger());
|
||||
}
|
||||
//绘制队伍编号
|
||||
foreach(index, pos in Value.u) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 28 + pos, X - 24 + SlotPos[Value.id][0], Y + (index * 11) + 2 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//雷达死完要绘制怪物头像
|
||||
if (!RadarFlag) {
|
||||
if (Value.m || Value.n) {
|
||||
local ImgIndex = 0;
|
||||
if (Value.m && MonsterFace.rawin("m" + Value.m)) ImgIndex = MonsterFace["m" + Value.m];
|
||||
DrawImg("interface2/fiendwar_kr/navigation/monsterface.img", ImgIndex, X + 37 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DrawFightTime(obj);
|
||||
}
|
||||
|
||||
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 DrawProgress(Index, SliceRate, X, Y) {
|
||||
if (!turret2) return;
|
||||
if (RadarFlag) SliceRate = 1.0;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 48, X, Y);
|
||||
setClip(X, Y, X + (SliceRate * 61.0).tointeger(), Y + 3); //开始裁切
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", Index, X, Y);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//攻坚时间
|
||||
function DrawFightTime(obj) {
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 47, X + 576, Y - 9);
|
||||
if (EndTime) {
|
||||
local RealTime = EndTime - (Clock() - 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 Offset = 0;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
MainButton = null;
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
//在基地
|
||||
if (L_sq_GetRegionIndex() == 2) DrawParty();
|
||||
|
||||
if (getroottable().rawin("FiendwarTotal") && FiendwarTotal.GetInstance().EndTime) {
|
||||
DrawFightTime(obj);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 13, X + 770, Y);
|
||||
}
|
||||
|
||||
// //界面未打开
|
||||
// if (!this.Visible) {
|
||||
// //在甲板
|
||||
// if (FiendwarTotal.GetInstance().BaseConfig && FiendwarTotal.GetInstance().BaseConfig.channel_index.find("20") && L_sq_GetTownIndex() == FiendwarTotal.GetInstance().BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) {
|
||||
// if (!MainButton) {
|
||||
// MainButton = LenheartBaseButton(X + 770, Y, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
// } else {
|
||||
// MainButton.Show();
|
||||
// if (MainButton.isLBActive()) {
|
||||
// this.Visible = true;
|
||||
// GetInfo();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
文件名:FiendwarHallCreateParty.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHallCreateParty.nut
|
||||
创建日期:2024-03-18 13:20
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
|
||||
class FiendwarFightSituationSwitchC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不要窗口模式
|
||||
NoWindow = true;
|
||||
|
||||
function GetInfo() {
|
||||
local T = {
|
||||
op = 20063053,
|
||||
// teamsId = FiendwarTotal.GetInstance().MyPartyId
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(0, 0, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
CloseButton.OnClick = function() {
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarFightSituationC, "超时空攻坚战况表", 0, 8, 800, 600, 0);
|
||||
Win.Visible = true;
|
||||
Win.ResetFocus();
|
||||
GetInfo();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (FiendwarTotal.GetInstance().EndTime)
|
||||
DrawFightTime(obj);
|
||||
}
|
||||
|
||||
//攻坚时间
|
||||
function DrawFightTime(obj) {
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 47, X + 576, Y - 9);
|
||||
if (FiendwarTotal.GetInstance().EndTime) {
|
||||
local RealTime = FiendwarTotal.GetInstance().EndTime - (Clock() - FiendwarTotal.GetInstance().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 Offset = 0;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function CloseWindow() {
|
||||
// print(1233);
|
||||
// local Win = LenheartNewUI_CreateWindow(FiendwarFightSituationSwitchC, "超时空战况表开关", 770, 9, 30, 30, 0);
|
||||
// Win.Visible = true;
|
||||
// Win.ResetFocus();
|
||||
// LenheartNewUI_Windows.CloseWindow();
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
if (!FiendwarTotal.GetInstance().EndTime) {
|
||||
Visible = false;
|
||||
} else {
|
||||
Visible = true;
|
||||
}
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
LenheartNewUI_CreateWindow(FiendwarFightSituationC, "超时空攻坚战况表", 0, 8, 800, 600, 0);
|
||||
406
Project/Fiendwar copy/FiendwarHall.nut
Normal file
@@ -0,0 +1,406 @@
|
||||
/*
|
||||
文件名:FiendwarHall.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHall.nut
|
||||
创建日期:2024-03-11 12:54
|
||||
文件用途:超时空之战大厅
|
||||
*/
|
||||
class FiendwarHallC extends LenheartNewUI_Windows {
|
||||
|
||||
// DeBugMode = true;
|
||||
|
||||
WindowObj = null; //窗口对象
|
||||
MainState = false; //主状态
|
||||
X = 320;
|
||||
Y = 40;
|
||||
//默认显示状态需要是关闭 因为要通过按钮打开
|
||||
Visible = false;
|
||||
//攻坚队List
|
||||
PartyList = null;
|
||||
|
||||
|
||||
function GetInstance() {
|
||||
return getroottable()["FiendwarHallCObj"];
|
||||
}
|
||||
|
||||
//获取所有队伍回调包
|
||||
function GetAllTeamCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
//清除原来的List PartyList可以直接清除 但是Childrens中的窗口需要调用底层方法清除队伍类
|
||||
PartyList = [];
|
||||
// this.RemoveChilds(FiendwarHallPartyC);
|
||||
//遍历包构造攻坚队UI对象
|
||||
foreach(TeamsSimple in Jso.TeamSimList) {
|
||||
local T = {
|
||||
TeamId = TeamsSimple.TeamId.tostring(),
|
||||
TeamName = TeamsSimple.TeamName,
|
||||
TeamPlayerCount = TeamsSimple.TeamPlayerCount,
|
||||
State = TeamsSimple.State
|
||||
}
|
||||
local TeamBuf = FiendwarHallPartyC(T);
|
||||
AddChild(TeamBuf);
|
||||
PartyList.append(TeamBuf);
|
||||
}
|
||||
//收到刷新队伍列表包时需要将队伍窗口关闭
|
||||
if ("Close" in Jso) LenheartNewUI_DestoryWindow("超时空我的队伍窗口");
|
||||
// RemoveChilds(FiendwarHallPartyC, false);
|
||||
}
|
||||
|
||||
//获取攻坚队信息回调
|
||||
function GetTeamInfoCallBack(Chunk) {
|
||||
// Sout("收到包 : \n %L", Chunk);
|
||||
|
||||
local Jso = Json.Decode(Chunk);
|
||||
LenheartNewUI_DestoryWindow("超时空我的队伍窗口");
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarPartyInfoC, "超时空我的队伍窗口", 430, 15, 354, 290, 18);
|
||||
FiendwarTotal.GetInstance().MyTeam = Win;
|
||||
Win.Visible = false;
|
||||
|
||||
if (!("Close" in Jso)) {
|
||||
//开启队伍窗口显示
|
||||
Win.Visible = true;
|
||||
//设置置顶
|
||||
Win.ResetFocus();
|
||||
}
|
||||
//清空成员对象集合
|
||||
Win.MembersList = [];
|
||||
//清空是否为我的队伍状态
|
||||
Win.IsMyTeam = false;
|
||||
//清空是否为队长状态
|
||||
Win.IsCaptain = false;
|
||||
//赋值队伍名称
|
||||
Win.TeamName = Jso.team.TeamName;
|
||||
//赋值队伍ID
|
||||
Win.TeamID = Jso.team.TeamId;
|
||||
//遍历Team包 用于构造队伍窗口中的每一位成员
|
||||
foreach(_index, MemberObj in Jso.team.characNum) {
|
||||
//说明我在这个攻坚队里
|
||||
if (Jso.cid == MemberObj.CID) {
|
||||
Win.IsMyTeam = true;
|
||||
|
||||
local Fo = FiendwarTotal.GetInstance();
|
||||
//向全局类存入我的攻坚队伍ID
|
||||
Fo.MyPartyId = Jso.team.TeamId;
|
||||
//存入我的CID
|
||||
Fo.MyCid = Jso.cid;
|
||||
//说明是队长
|
||||
if (Jso.cid == Jso.team.captainCid) {
|
||||
Win.IsCaptain = true;
|
||||
//存入我是攻坚队队长
|
||||
Fo.IsCaptain = true;
|
||||
}
|
||||
}
|
||||
local T = {
|
||||
PartyId = Jso.team.TeamId, //攻坚队ID
|
||||
TeamId = MemberObj.characNum + 1, //小队编号
|
||||
Level = MemberObj.PlayerLevel.tostring(), //等级
|
||||
Name = MemberObj.PlayerName, //名字
|
||||
JobName = MemberObj.PlayerGrowTypeJob, //职业名
|
||||
Job = MemberObj.PlayerJob, //职业编号
|
||||
StkHasFlag = MemberObj.isPrepare, //是否拥有攻坚材料
|
||||
EquVos = MemberObj.equVos, //装备List 用于显示头像
|
||||
Captain = MemberObj.CaptainBool, //是否为攻坚队队长
|
||||
Cid = MemberObj.CID, //Cid
|
||||
OnlineState = MemberObj.onLineStart, //在线状态
|
||||
ExitTime = MemberObj.exitTime, //离队时间
|
||||
PlayerSession = MemberObj.PlayerSession, //玩家在世界中的Session 用于进行原生用户操作
|
||||
ClearanceCount = MemberObj.ClearanceCount, //通关次数
|
||||
ClearanceCountMax = Jso.ClearanceCountMax, //总通关次数
|
||||
}
|
||||
//通过类构造并添加队伍成员UI对象
|
||||
local TeamBuf = FiendwarPartyInfoMemberC(T);
|
||||
Win.AddChild(TeamBuf);
|
||||
Win.MembersList.append(TeamBuf);
|
||||
}
|
||||
|
||||
//刷新界面
|
||||
Win.RegisterWidget();
|
||||
//刷新自己的界面
|
||||
RegisterWidget();
|
||||
}
|
||||
//获取所有队伍
|
||||
function GetAllTeamCall() {
|
||||
local Jso = {
|
||||
op = 20063011
|
||||
}
|
||||
SendPack(Jso);
|
||||
}
|
||||
//退出队伍回调
|
||||
function ExitPartyCallBack(Chunk) {
|
||||
LenheartNewUI_DestoryWindow("超时空我的队伍窗口");
|
||||
FiendwarTotal.GetInstance().ClearInfo();
|
||||
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarHallC, "超时空攻坚队伍列表", 320, 40, 478, 434, 18);
|
||||
Win.CloseWindow();
|
||||
RegisterWidget();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
PartyList = [];
|
||||
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
//注册回调包
|
||||
Pack_Control.rawset(20063002, GetAllTeamCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063004, GetTeamInfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063008, ExitPartyCallBack.bindenv(this));
|
||||
|
||||
GetAllTeamCall();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
OnlyPreparingBtn = null;
|
||||
OnlyPreparingFlag = 1;
|
||||
InputObject = null;
|
||||
|
||||
function RegisterWidget() {
|
||||
RemoveChilds(FiendwarHallPartyC, false);
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(457, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
//我的频道复选框
|
||||
local MyChannelBtn = LenheartNewUI_SwitchButtonText(16, 30, "我的频道");
|
||||
MyChannelBtn.State = 1;
|
||||
MyChannelBtn.ImgIndex = 358;
|
||||
MyChannelBtn.SetTextPos(12, 2);
|
||||
MyChannelBtn.Width = 76;
|
||||
MyChannelBtn.Height = 16;
|
||||
AddChild(MyChannelBtn);
|
||||
|
||||
//只查看招募中的攻坚队
|
||||
OnlyPreparingBtn = LenheartNewUI_SwitchButtonText(110, 30, "只查看招募中的攻坚队");
|
||||
OnlyPreparingBtn.ImgIndex = 358;
|
||||
OnlyPreparingBtn.SetTextPos(12, 2);
|
||||
OnlyPreparingBtn.Width = 76;
|
||||
OnlyPreparingBtn.Height = 16;
|
||||
OnlyPreparingBtn.OnClick = function() {
|
||||
switch (OnlyPreparingFlag) {
|
||||
case 0:
|
||||
OnlyPreparingFlag = 1;
|
||||
break;
|
||||
case 1:
|
||||
OnlyPreparingFlag = 0;
|
||||
break;
|
||||
}
|
||||
OnlyPreparingBtn.State = OnlyPreparingFlag;
|
||||
}.bindenv(this);
|
||||
AddChild(OnlyPreparingBtn);
|
||||
|
||||
//搜索队伍输入框
|
||||
InputObject = LenheartNewUI_BaseInput(260, 31, 80, 20);
|
||||
AddChild(InputObject);
|
||||
|
||||
//搜索按钮
|
||||
local FindButton = LenheartNewUI_ButtonText(348, 28, 5, "搜索");
|
||||
FindButton.SetTextOffset(0, 1);
|
||||
FindButton.OnClick = function() {
|
||||
if (InputObject.str.len() > 0) {
|
||||
|
||||
}
|
||||
}.bindenv(this);
|
||||
AddChild(FindButton);
|
||||
|
||||
//重置按钮
|
||||
local ResetButton = LenheartNewUI_ButtonText(408, 28, 5, "重置");
|
||||
ResetButton.SetTextOffset(0, 1);
|
||||
ResetButton.OnClick = function() {
|
||||
InputObject.str = "";
|
||||
}.bindenv(this);
|
||||
AddChild(ResetButton);
|
||||
|
||||
//编号按钮
|
||||
local ModelButton = LenheartNewUI_ButtonText(9, 56, -18, "编号");
|
||||
ModelButton.Idx = 163;
|
||||
ModelButton.DWidth = -8;
|
||||
ModelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ModelButton);
|
||||
|
||||
//状态按钮
|
||||
local StateButton = LenheartNewUI_ButtonText(51, 56, -18, "状态");
|
||||
StateButton.Idx = 163;
|
||||
StateButton.DWidth = -8;
|
||||
StateButton.SetTextOffset(-9, 1);
|
||||
AddChild(StateButton);
|
||||
|
||||
//频道按钮
|
||||
local ChannelButton = LenheartNewUI_ButtonText(93, 56, -18, "频道");
|
||||
ChannelButton.Idx = 163;
|
||||
ChannelButton.DWidth = -8;
|
||||
ChannelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ChannelButton);
|
||||
|
||||
//攻坚队名称按钮
|
||||
local PartyNameButton = LenheartNewUI_ButtonText(135, 56, 100, "攻坚队名称");
|
||||
PartyNameButton.Idx = 163;
|
||||
PartyNameButton.DWidth = 223;
|
||||
PartyNameButton.FillWidth = 1;
|
||||
PartyNameButton.FirstWidth = 21;
|
||||
PartyNameButton.SetTextOffset(26, 1);
|
||||
AddChild(PartyNameButton);
|
||||
|
||||
//阶段按钮
|
||||
local StageButton = LenheartNewUI_ButtonText(289, 56, 52, "阶段");
|
||||
StageButton.Idx = 163;
|
||||
StageButton.DWidth = 140;
|
||||
StageButton.FillWidth = 1;
|
||||
StageButton.FirstWidth = 21;
|
||||
StageButton.SetTextOffset(26, 1);
|
||||
AddChild(StageButton);
|
||||
|
||||
//队员数量按钮
|
||||
local TeammembersButton = LenheartNewUI_ButtonText(402, 56, 50, "队员数量");
|
||||
TeammembersButton.Idx = 163;
|
||||
TeammembersButton.FillWidth = 1;
|
||||
TeammembersButton.FirstWidth = 21;
|
||||
TeammembersButton.DWidth = 47;
|
||||
TeammembersButton.SetTextOffset(-8, 1);
|
||||
AddChild(TeammembersButton);
|
||||
|
||||
//创建攻坚队按钮
|
||||
local CreateOrMyPartyStr = "创建攻坚队";
|
||||
if (FiendwarTotal.GetInstance().MyPartyId) CreateOrMyPartyStr = "我的攻坚队";
|
||||
local MyPartyButton = LenheartNewUI_ButtonText(15, 395, 30, CreateOrMyPartyStr);
|
||||
MyPartyButton.SetTextOffset(-6, 1);
|
||||
MyPartyButton.OnClick = function() {
|
||||
if (FiendwarTotal.GetInstance().MyPartyId) {
|
||||
//发送查看攻坚队具体信息包
|
||||
local T = {
|
||||
op = 20063013,
|
||||
teamsId = FiendwarTotal.GetInstance().MyPartyId
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
} else {
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarHallCreatePartyC, "超时空创建队伍窗口", 290, 220, 284, 154, 18);
|
||||
Win.Visible = true;
|
||||
Win.ResetFocus();
|
||||
}
|
||||
}.bindenv(this);
|
||||
AddChild(MyPartyButton);
|
||||
|
||||
//左翻页按钮
|
||||
local LeftButton = LenheartNewUI_BaseButton(160, 400, 15, 15, "interface/lenheartwindowcommon.img", 34);
|
||||
LeftButton.OnClick = function() {
|
||||
if (Page > 0) Page--;
|
||||
}.bindenv(this);
|
||||
AddChild(LeftButton);
|
||||
|
||||
//右翻页按钮
|
||||
local RightButton = LenheartNewUI_BaseButton(220, 400, 15, 15, "interface/lenheartwindowcommon.img", 38);
|
||||
RightButton.OnClick = function() {
|
||||
if (Page<(((PartyList.len() / PageMaxCount)))) Page++;
|
||||
}.bindenv(this);
|
||||
AddChild(RightButton);
|
||||
|
||||
//进入待机按钮
|
||||
local FQButton = LenheartNewUI_ButtonText(300, 394, 20, "进入待机");
|
||||
FQButton.SetTextOffset(-5, 2);
|
||||
FQButton.State = 8;
|
||||
AddChild(FQButton);
|
||||
|
||||
//刷新按钮
|
||||
local RefreshButton = LenheartNewUI_BaseButton(410, 395, 25, 25, "interface/lenheartwindowcommon.img", 366);
|
||||
RefreshButton.OnClick = function() {
|
||||
GetAllTeamCall();
|
||||
}.bindenv(this);
|
||||
AddChild(RefreshButton);
|
||||
|
||||
//设置按钮
|
||||
local SettingButton = LenheartNewUI_BaseButton(440, 394, 15, 15, "interface/lenheartwindowcommon.img", 362);
|
||||
SettingButton.State = 8;
|
||||
AddChild(SettingButton);
|
||||
}
|
||||
|
||||
|
||||
function DrawMainBackGround(obj) {
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 10, 540 * 0.85, 420 * 0.9, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
L_sq_DrawWindow(X + 6, Y + 19, 528 * 0.85, 47, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
//绘制背景框标题栏
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 3, X + 1, Y);
|
||||
|
||||
L_sq_DrawCode("寻找攻坚队", X + 217, Y + 3, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
//绘制队伍List
|
||||
DrawPartyList(obj);
|
||||
|
||||
L_sq_DrawWindow(X + 6, Y + 382, 528 * 0.85, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
//计算页数
|
||||
local PageStr = Page + 1 + " / " + ((PartyList.len() / PageMaxCount) + 1);
|
||||
//绘制当前页数
|
||||
L_sq_DrawCode(PageStr, X + 166 + LenheartTextClass.GetStringLength(PageStr) / 2, Y + 402, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
}
|
||||
|
||||
|
||||
Page = 0;
|
||||
PageMaxCount = 13;
|
||||
//绘制队伍信息
|
||||
function DrawPartyList(obj) {
|
||||
if (PartyList.len() <= 0) return;
|
||||
//先遍历一遍全部挪走
|
||||
foreach(Index, TeamObj in PartyList) {
|
||||
TeamObj.SyncPos(9999, 9999);
|
||||
}
|
||||
//在遍历需要显示的同步坐标
|
||||
foreach(Index, TeamObj in PartyList.slice((((Page) * PageMaxCount) > 0) ? ((Page) * PageMaxCount) : 0, ((Page + 1) * PageMaxCount) > PartyList.len() ? PartyList.len() : ((Page + 1) * PageMaxCount))) {
|
||||
TeamObj.SyncPos(X, Y + 2 + (Index % PageMaxCount) * 23);
|
||||
// TeamObj.Show();
|
||||
}
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
DrawMainBackGround(obj);
|
||||
}
|
||||
|
||||
//绘制入口
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
|
||||
MainButton = null;
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
//界面未打开
|
||||
if (!this.Visible && L_sq_RA(0x1A5FB4C, "0x14+0x28+")< 2) {
|
||||
//在甲板
|
||||
if (FiendwarTotal.GetInstance().BaseConfig && FiendwarTotal.GetInstance().BaseConfig.channel_index.find("20") && L_sq_GetTownIndex() == FiendwarTotal.GetInstance().BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) {
|
||||
local PaW = sq_GetPopupWindowMainCotrol(6);
|
||||
if (PaW) {
|
||||
L_sq_UseSkill(DIK_ESCAPE);
|
||||
this.Visible = true;
|
||||
GetAllTeamCall();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
//鼠标滚轮时间回调
|
||||
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
||||
|
||||
switch (Flag) {
|
||||
//下
|
||||
case 0: {
|
||||
if (Page<(((PartyList.len() / PageMaxCount)))) Page++;
|
||||
break;
|
||||
}
|
||||
//上
|
||||
case 1: {
|
||||
if (Page > 0) Page--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
||||
}
|
||||
}
|
||||
259
Project/Fiendwar copy/FiendwarHallApplyJoin.nut
Normal file
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
文件名:FiendwarHallApplyJoin.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHallApplyJoin.nut
|
||||
创建日期:2024-04-02 12:07
|
||||
文件用途:超时空玩家申请加入攻坚队
|
||||
*/
|
||||
class FiendwarHallApplyJoinC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//角色对象
|
||||
Charc = null;
|
||||
//角色等级
|
||||
Level = "100级";
|
||||
//角色名称
|
||||
Name = "凌众K";
|
||||
//角色职业
|
||||
Job = 0;
|
||||
//角色决斗等级
|
||||
PvpLevel = 1;
|
||||
//职业名称
|
||||
JobName = "大暗黑天";
|
||||
//角色复活币
|
||||
Coin = "139个";
|
||||
//角色疲劳值
|
||||
Fatigue = "156";
|
||||
//战斗力
|
||||
Combat = "170051206";
|
||||
//通过次数
|
||||
ClearanceCount = 63;
|
||||
//玩家世界Session
|
||||
PlayerSession = 0;
|
||||
|
||||
//请求者信息集合
|
||||
RequestJoinTeamArr = null;
|
||||
NowSelectJoinIndex = 0;
|
||||
|
||||
//角色头像集合
|
||||
AvatarArr = null;
|
||||
|
||||
//初始化Flag
|
||||
InitFlag = false;
|
||||
|
||||
//X Y 裁切开始X Y 裁切结束X Y
|
||||
OffsetArr = [
|
||||
//男鬼剑士
|
||||
[45, 103, 230, 231],
|
||||
//女格斗家
|
||||
[56, 102, 235, 279],
|
||||
//男神枪手
|
||||
[52, 130, 238, 246],
|
||||
//女魔法师
|
||||
[55, 87, 234, 293],
|
||||
//男圣职者
|
||||
[42, 115, 223, 200],
|
||||
//女神枪手
|
||||
[52, 119, 226, 209],
|
||||
//暗夜使者
|
||||
[56, 102, 225, 226],
|
||||
//男格斗家
|
||||
[50, 114, 239, 216],
|
||||
//男魔法师
|
||||
[54, 103, 236, 276],
|
||||
//黑暗武士
|
||||
[46, 102, 229, 232],
|
||||
//缔造者
|
||||
[56, 86, 235, 293],
|
||||
]
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
RequestJoinTeamArr = [];
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
function InitInfo() {
|
||||
local InfoObj = RequestJoinTeamArr[NowSelectJoinIndex];
|
||||
Charc = InfoObj.Charc;
|
||||
//角色等级
|
||||
Level = InfoObj.Level;
|
||||
//角色名称
|
||||
Name = InfoObj.Name;
|
||||
//角色职业
|
||||
Job = InfoObj.Job;
|
||||
//角色决斗等级
|
||||
PvpLevel = InfoObj.PvpLevel;
|
||||
//职业名称
|
||||
JobName = InfoObj.JobName;
|
||||
//角色复活币
|
||||
Coin = InfoObj.Coin + "个";
|
||||
//角色疲劳值
|
||||
Fatigue = InfoObj.Fatigue.tostring();
|
||||
//战斗力
|
||||
Combat = InfoObj.Combat;
|
||||
//通过次数
|
||||
ClearanceCount = InfoObj.ClearanceCount;
|
||||
//头像
|
||||
AvatarArr = InfoObj.AvatarArr;
|
||||
//玩家世界Session
|
||||
this.PlayerSession = InfoObj.PlayerSession;
|
||||
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
InitFlag = true;
|
||||
}
|
||||
|
||||
function PopOne() {
|
||||
if (RequestJoinTeamArr.len() > 1) {
|
||||
RequestJoinTeamArr.remove(0);
|
||||
InitInfo();
|
||||
} else {
|
||||
RequestJoinTeamArr = [];
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(244, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
//冒险团按钮
|
||||
local MButton = LenheartNewUI_ButtonText(24, 114, 15, "冒险团信息");
|
||||
MButton.SetTextOffset(-13, 2);
|
||||
AddChild(MButton);
|
||||
//冒险图鉴按钮
|
||||
local FQButton = LenheartNewUI_ButtonText(95, 113, 15, "冒险图鉴");
|
||||
FQButton.State = 8;
|
||||
FQButton.SetTextOffset(-7, 2);
|
||||
AddChild(FQButton);
|
||||
//查看信息按钮
|
||||
local CButton = LenheartNewUI_ButtonText(166, 114, 15, "查看信息");
|
||||
CButton.SetTextOffset(-7, 2);
|
||||
CButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
// obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(8);
|
||||
L_sq_SendPackWord(this.PlayerSession);
|
||||
L_sq_SendPackByte(3);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(CButton);
|
||||
|
||||
//确认按钮
|
||||
local OkButton = LenheartNewUI_ButtonText(74, 192, -1, "是");
|
||||
OkButton.SetTextOffset(3, 2);
|
||||
OkButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063003,
|
||||
teamsId = RinDro_Anton_Obj.MyRaidTeamId,
|
||||
charac = Charc
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(OkButton);
|
||||
//拒绝按钮
|
||||
local NoButton = LenheartNewUI_ButtonText(130, 192, -1, "否");
|
||||
NoButton.SetTextOffset(3, 2);
|
||||
NoButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063019,
|
||||
charac = Charc.CID
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(NoButton);
|
||||
|
||||
//左翻页按钮
|
||||
local LeftButton = LenheartNewUI_BaseButton(90, 220, 15, 15, "interface/lenheartwindowcommon.img", 34);
|
||||
LeftButton.OnClick = function() {
|
||||
if (NowSelectJoinIndex > 0) NowSelectJoinIndex--;
|
||||
InitInfo();
|
||||
}.bindenv(this);
|
||||
AddChild(LeftButton);
|
||||
|
||||
//右翻页按钮
|
||||
local RightButton = LenheartNewUI_BaseButton(154, 220, 15, 15, "interface/lenheartwindowcommon.img", 38);
|
||||
RightButton.OnClick = function() {
|
||||
if (NowSelectJoinIndex< RequestJoinTeamArr.len() - 1) NowSelectJoinIndex++;
|
||||
InitInfo();
|
||||
}.bindenv(this);
|
||||
AddChild(RightButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (!InitFlag) return;
|
||||
//标题栏
|
||||
L_sq_DrawButton(X - 2, Y, 252, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//绘制窗口名字
|
||||
L_sq_DrawCode("攻坚队申请", X + 100, Y + 4, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 16, 240, 200, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制背景
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 15, X + 6, Y + 22);
|
||||
//绘制角色背景
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 14, X + 8, Y + 40);
|
||||
//绘制角色头像
|
||||
if (AvatarArr) {
|
||||
|
||||
foreach(AvatarObj in AvatarArr) {
|
||||
local AXpos = AvatarObj.D[0] + X + OffsetArr[Job][0] - 8;
|
||||
local AYpos = AvatarObj.D[1] + Y + OffsetArr[Job][1] + 40;
|
||||
setClip(AXpos + OffsetArr[Job][2], AYpos + OffsetArr[Job][3], AXpos + OffsetArr[Job][2] + 22, AYpos + OffsetArr[Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
}
|
||||
//绘制角色等级
|
||||
L_sq_DrawCode(Level, X + 78 - LenheartTextClass.GetStringLength(Level) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色名字
|
||||
L_sq_DrawCode(Name, X + 137 - LenheartTextClass.GetStringLength(Name) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色职业类型图标
|
||||
if (Job != 4) L_sq_DrawImg("hud/fiendwarl.img", 16, X + 176, Y + 43);
|
||||
//绘制角色职业名称
|
||||
L_sq_DrawCode(JobName, X + 224 - LenheartTextClass.GetStringLength(JobName) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X + 21, Y + 65, 30, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawWindow(X + 62, Y + 65, 156, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制决斗等级
|
||||
local PvpImg = PvpLevel / 6;
|
||||
L_sq_DrawImg("hud/fiendwarl1.img", 99, X + 25, Y + 74);
|
||||
L_sq_DrawCode(PvpLevel.tostring(), X + 45 - LenheartTextClass.GetStringLength(PvpLevel.tostring()) / 2, Y + 91, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制各项信息
|
||||
L_sq_DrawCode("复活币:", X + 70, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Coin, X + 134 - LenheartTextClass.GetStringLength(Coin) / 2, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode("疲劳值:", X + 158, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Fatigue, X + 216 - LenheartTextClass.GetStringLength(Fatigue) / 2, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode("战斗力:", X + 70, Y + 93, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Combat, X + 170 - LenheartTextClass.GetStringLength(Combat) / 2, Y + 93, sq_RGBA(74, 162, 86, 255), 0, 1);
|
||||
L_sq_DrawCode("通关超时空攻坚战" + ClearanceCount + "次", X + 130 - LenheartTextClass.GetStringLength("通关超时空攻坚战" + ClearanceCount + "次") / 2, Y + 144, sq_RGBA(221, 213, 147, 255), 0, 1);
|
||||
L_sq_DrawCode("申请加入攻坚队。", X + 87, Y + 160, sq_RGBA(160, 132, 75, 255), 0, 1);
|
||||
L_sq_DrawCode("请确定是否同意?", X + 87, Y + 176, sq_RGBA(160, 132, 75, 255), 0, 1);
|
||||
|
||||
L_sq_DrawWindow(X + 77, Y + 216, 100, 20, "interface/lenheartwindowcommon.img", 204, 4, 14, 4, 14);
|
||||
//绘制页数
|
||||
local Str = (NowSelectJoinIndex + 1) + " / " + RequestJoinTeamArr.len();
|
||||
L_sq_DrawCode(Str, X + 137 - LenheartTextClass.GetStringLength(Str) / 2, Y + 222, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
}
|
||||
81
Project/Fiendwar copy/FiendwarHallCreateParty.nut
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
文件名:FiendwarHallCreateParty.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHallCreateParty.nut
|
||||
创建日期:2024-03-18 13:20
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
|
||||
class FiendwarHallCreatePartyC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
DeBugMode = false;
|
||||
|
||||
X = 290;
|
||||
Y = 220;
|
||||
//输入框
|
||||
InputObject = null;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(266, 2, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
local OkButton = LenheartNewUI_ButtonText(78, 124, 5, "确定");
|
||||
OkButton.SetTextOffset(0, 1);
|
||||
OkButton.OnClick = function() {
|
||||
//如果队伍名输出框的文字长度大于0就创建队伍 创建时告诉服务端自己的 头发 帽子 脸部 皮肤
|
||||
if (InputObject.str.len() > 0) {
|
||||
local T = {
|
||||
op = 20063001,
|
||||
teamsName = InputObject.str,
|
||||
items = [L_sq_GetCharacterAttribute(0x1c, 21), L_sq_GetCharacterAttribute(0x1c, 15), L_sq_GetCharacterAttribute(0x1c, 14), L_sq_GetCharacterAttribute(0x1c, 13)],
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
CloseWindow();
|
||||
}
|
||||
}.bindenv(this);
|
||||
AddChild(OkButton);
|
||||
|
||||
local CloseButton = LenheartNewUI_ButtonText(144, 124, 5, "取消");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
InputObject = LenheartNewUI_BaseInput(62, 68, 152, 20);
|
||||
AddChild(InputObject);
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
L_sq_DrawWindow(X, Y + 10, 260, 120, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawWindow(X, Y + 10, 260, 120, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 0, X + 11, Y + 21);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 9, X - 2, Y + 2);
|
||||
L_sq_DrawCode("创建攻坚队", X + 112, Y + 3, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 10, X + 72, Y + 44);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
81
Project/Fiendwar copy/FiendwarHallGoBossDgn.nut
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
文件名:FiendwarHallGoBossDgn.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHallGoBossDgn.nut
|
||||
创建日期:2024-05-10 06:55
|
||||
文件用途:进入罗什的窗口
|
||||
*/
|
||||
class FiendwarHallGoBossDgnC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
Dark = 0;
|
||||
Light = 0;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
Childrens = [];
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
//黑暗按钮
|
||||
local DarkButton = LenheartNewUI_BaseButton(4, 20, 264, 48, "interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 1);
|
||||
DarkButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063059,
|
||||
key = 28
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
if (Dark) DarkButton.State = 8;
|
||||
Childrens.append(DarkButton);
|
||||
//纯白按钮
|
||||
local LightButton = LenheartNewUI_BaseButton(4, 68, 264, 48, "interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 5);
|
||||
LightButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063059,
|
||||
key = 29
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
if (Light) LightButton.State = 8;
|
||||
Childrens.append(LightButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
L_sq_DrawWindow(X, Y + 10, 246, 85, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawWindow(X, Y + 10, 246, 85, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
|
||||
// L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 0, X + 11, Y + 21);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 25, X - 3, Y + 2);
|
||||
L_sq_DrawCode("量子时空传送站", X + 98, Y + 5, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
// L_sq_DrawImg("hud/fiendwarl.img", 10, X + 72, Y + 44);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
77
Project/Fiendwar copy/FiendwarHallParty.nut
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
文件名:FiendwarHallParty.nut
|
||||
路径:Plugins/Fiendwar/FiendwarHallParty.nut
|
||||
创建日期:2024-04-01 22:30
|
||||
文件用途:超时空之战 大厅中的队伍对象
|
||||
*/
|
||||
|
||||
class FiendwarHallPartyC extends LenheartNewUI_CommonUi {
|
||||
X = 0;
|
||||
Y = 0;
|
||||
Width = null;
|
||||
Height = null;
|
||||
TeamObj = null;
|
||||
//选中状态
|
||||
SelectState = false;
|
||||
//攻坚状态
|
||||
OffensiveState = 0;
|
||||
|
||||
constructor(gTeamObj) {
|
||||
//拿到信息Map
|
||||
TeamObj = gTeamObj;
|
||||
//设定宽高 坐标不重要 会被父窗口的Sync同步坐标
|
||||
this.Width = 458;
|
||||
this.Height = 21;
|
||||
|
||||
this.OnClick = function() {
|
||||
//还原父对象中其他攻坚队伍类 选中自己
|
||||
foreach(Obj in Parent.PartyList) {
|
||||
Obj.SelectState = false;
|
||||
}
|
||||
SelectState = !SelectState;
|
||||
//发送查看攻坚队具体信息包
|
||||
local T = {
|
||||
op = 20063013,
|
||||
teamsId = TeamObj.TeamId
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
LenheartNewUI_CommonUi.constructor(10, 82, this.Width, this.Height);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
|
||||
//绘制底槽
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 4, X, Y);
|
||||
|
||||
//绘制队伍编号
|
||||
L_sq_DrawCode(TeamObj.TeamId, X + 22 - LenheartTextClass.GetStringLength(TeamObj.TeamId) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制队长头像
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 55, X + 52, Y + 7);
|
||||
try {
|
||||
local channel_index = FiendwarTotal.GetInstance().BaseConfig.channel_index;
|
||||
channel_index = channel_index.slice(channel_index.len() - 2, channel_index.len());
|
||||
//绘制频道信息
|
||||
L_sq_DrawCode(channel_index, X + 102 - LenheartTextClass.GetStringLength(channel_index) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
} catch (exception) {
|
||||
|
||||
}
|
||||
//绘制攻坚队名称
|
||||
L_sq_DrawCode(TeamObj.TeamName, X + 130, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制攻坚队攻坚状态
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 6 + TeamObj.State, X + 314, Y + 2);
|
||||
|
||||
local PartyPlayerCountStr = TeamObj.TeamPlayerCount + " / " + 8;
|
||||
//绘制攻坚队队员数量
|
||||
L_sq_DrawCode(PartyPlayerCountStr, X + 434 - LenheartTextClass.GetStringLength(PartyPlayerCountStr) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
if (SelectState) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 5, X, Y);
|
||||
}
|
||||
|
||||
if (isInRect) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 5, X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
112
Project/Fiendwar copy/FiendwarNoti.nut
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
文件名:FiendwarNoti.nut
|
||||
路径:Plugins/Fiendwar/FiendwarNoti.nut
|
||||
创建日期:2024-04-12 22:12
|
||||
文件用途:超时空攻坚战队伍消息
|
||||
*/
|
||||
class FiendwarNotiC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//消息内容
|
||||
Msg = null;
|
||||
//队长名称
|
||||
Name = null;
|
||||
//消息时间
|
||||
Timer = null;
|
||||
|
||||
//队伍聊天消息分发
|
||||
function FiendwarPartyNotiCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
Name = Jso.Name;
|
||||
Msg = Jso.msg;
|
||||
Timer = Clock();
|
||||
}
|
||||
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
//队伍聊天消息分发
|
||||
Pack_Control.rawset(20063018, FiendwarPartyNotiCallBack.bindenv(this));
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
//队长头像
|
||||
PartyMasterIcon = null;
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
if (!Name || !Msg) return;
|
||||
//绘制背景框
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 24, X + 134, Y + 180);
|
||||
//绘制队长图标
|
||||
// L_sq_DrawImg
|
||||
|
||||
if (FiendwarTotal.GetInstance().MyTeam) {
|
||||
local Mt = FiendwarTotal.GetInstance().MyTeam;
|
||||
local PartyMaster;
|
||||
foreach(index, value in Mt.MembersList) {
|
||||
if (value.InfoObj.Captain) {
|
||||
PartyMasterIcon = clone(value);
|
||||
}
|
||||
}
|
||||
|
||||
sq_DrawBox(X + 42 + 118, Y + 1 + 185, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + 118;
|
||||
local AYpos = AvatarObj.D[1] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + 185;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//绘制队长名字
|
||||
L_sq_DrawCode(Name, X + 184, Y + 189, sq_RGBA(247, 214, 90, 255), 0, 1);
|
||||
//绘制点
|
||||
L_sq_DrawCode(" : ", X + 210, Y + 189, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
//绘制消息
|
||||
L_sq_DrawCode(Msg, X + 190 + LenheartTextClass.GetStringLength(Name), Y + 189, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
if (Name && Msg)
|
||||
Visible = true;
|
||||
else
|
||||
Visible = false;
|
||||
|
||||
if (Timer) {
|
||||
if (Clock() - Timer >= 3500) {
|
||||
Timer = null;
|
||||
Name = null;
|
||||
Msg = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
120
Project/Fiendwar copy/FiendwarPartyFormation.nut
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
文件名:FiendwarPartyFormation.nut
|
||||
路径:Plugins/Fiendwar/FiendwarPartyFormation.nut
|
||||
创建日期:2024-04-02 12:09
|
||||
文件用途:超时空攻坚队 队内编队
|
||||
*/
|
||||
//编队用按钮需要传递参数所以重写
|
||||
class FiendwarPartyInfoEdit_BaseButton extends LenheartNewUI_BaseButton {
|
||||
MyInfoIndex = 0;
|
||||
constructor(X, Y, W, H, Path, Idx, InfoIndex) {
|
||||
MyInfoIndex = InfoIndex;
|
||||
LenheartNewUI_BaseButton.constructor(X, Y, W, H, Path, Idx);
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
if (isLBDown && OnClick) {
|
||||
OnClick(MyInfoIndex);
|
||||
}
|
||||
isLBDown = false;
|
||||
}
|
||||
}
|
||||
//编队窗口
|
||||
class FiendwarPartyFormation extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
PartyMarkFlag = -1;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
//搜索按钮
|
||||
local QdButton = LenheartNewUI_ButtonText(10, 157, 5, "签到");
|
||||
QdButton.State = 8;
|
||||
QdButton.SetTextOffset(0, 1);
|
||||
AddChild(QdButton);
|
||||
|
||||
//解散队伍按钮
|
||||
local BreakPartyButton = LenheartNewUI_ButtonText(80, 158, 5, "解散队伍");
|
||||
BreakPartyButton.SetTextOffset(-12, 1);
|
||||
BreakPartyButton.OnClick = function() {
|
||||
|
||||
}.bindenv(this);
|
||||
AddChild(BreakPartyButton);
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_ButtonText(150, 158, 5, "关闭");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
for (local i = 0; i< 8; i++) {
|
||||
//右翻页按钮
|
||||
local PartyIndexButton = FiendwarPartyInfoEdit_BaseButton(12 + (i % 2 * 136), 35 + ((i / 2) * 30), 41, 17, "interface/newstyle/windows/party/party_icon.img", 3 + (i * 3), i);
|
||||
//继承类 并重写 调用时传入InfoIndex
|
||||
PartyIndexButton.OnClick = function(MyInfoIndex) {
|
||||
PartyMarkFlag = MyInfoIndex;
|
||||
}.bindenv(this);
|
||||
AddChild(PartyIndexButton);
|
||||
}
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//标题栏
|
||||
L_sq_DrawButton(X - 1, Y, 284, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 17, 272, 154, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
|
||||
for (local q = 0; q< 8; q++) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 358, X + 60 + (q % 2 * 136), Y + 34 + ((q / 2) * 30));
|
||||
for (local i = 0; i< 3; i++) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 361, X + 80 + (q % 2 * 136) + (i * 20), Y + 34 + ((q / 2) * 30));
|
||||
}
|
||||
}
|
||||
|
||||
if (PartyMarkFlag != -1) {
|
||||
L_sq_WA(0x1b46898, 47);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
//还原编队的鼠标指针
|
||||
local win = LenheartNewUI_CreateWindow(FiendwarPartyFormation, "超时空我的队伍编队窗口", 105, 40, 294, 192, 18);
|
||||
if (win.PartyMarkFlag != -1) {
|
||||
win.PartyMarkFlag = -1;
|
||||
L_sq_WA(0x1b46898, 0);
|
||||
}
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
}
|
||||
252
Project/Fiendwar copy/FiendwarPartyInfo.nut
Normal file
@@ -0,0 +1,252 @@
|
||||
/*
|
||||
文件名:FiendwarPartyInfo.nut
|
||||
路径:Plugins/Fiendwar/FiendwarPartyInfo.nut
|
||||
创建日期:2024-03-27 19:18
|
||||
文件用途:超时空攻坚队队伍信息窗口
|
||||
*/
|
||||
class FiendwarPartyInfoC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//队员列表
|
||||
MembersList = null;
|
||||
|
||||
//队伍名称
|
||||
TeamName = "";
|
||||
//队伍ID
|
||||
TeamID = 99999999;
|
||||
|
||||
//是否是我的攻坚队
|
||||
IsMyTeam = false;
|
||||
//是否是队长
|
||||
IsCaptain = false;
|
||||
|
||||
|
||||
|
||||
//收到请求加入攻坚队包
|
||||
function JoinTeamCallBack(Chunk) {
|
||||
// Sout("收到请求加入包 : \n\n\n %L", Chunk);
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local win = LenheartNewUI_CreateWindow(FiendwarHallApplyJoinC, "超时空申请加入队伍窗口", 542, 348, 257, 240, 18);
|
||||
win.Visible = true;
|
||||
win.ResetFocus();
|
||||
local T = {
|
||||
Charc = Jso.charac, //角色对象
|
||||
Level = Jso.charac.PlayerLevel,
|
||||
Name = Jso.charac.PlayerName,
|
||||
Job = Jso.charac.PlayerJob,
|
||||
PvpLevel = Jso.charac.pvp,
|
||||
JobName = Jso.charac.PlayerGrowTypeJob,
|
||||
Coin = Jso.charac.PlayCoin,
|
||||
Fatigue = Jso.charac.PlayFatigue,
|
||||
Combat = Jso.charac.ZL,
|
||||
ClearanceCount = Jso.charac.ClearanceCount,
|
||||
AvatarArr = Jso.charac.equVos,
|
||||
PlayerSession = Jso.charac.PlayerSession
|
||||
}
|
||||
//没人
|
||||
if (win.RequestJoinTeamArr.len() == 0) {
|
||||
win.RequestJoinTeamArr.append(T);
|
||||
win.InitInfo();
|
||||
} else win.RequestJoinTeamArr.append(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
// RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
Pack_Control.rawset(20063006, JoinTeamCallBack.bindenv(this));
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//清除老的按钮在刷新
|
||||
RemoveChilds(FiendwarPartyInfoMemberC, false);
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(336, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
|
||||
//队伍按钮
|
||||
local ModelButton = LenheartNewUI_ButtonText(9, 60, -18, "队伍");
|
||||
ModelButton.Idx = 163;
|
||||
ModelButton.DWidth = -8;
|
||||
ModelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ModelButton);
|
||||
|
||||
//等级按钮
|
||||
local StateButton = LenheartNewUI_ButtonText(51, 60, -18, "等级");
|
||||
StateButton.Idx = 163;
|
||||
StateButton.DWidth = -8;
|
||||
StateButton.SetTextOffset(-9, 1);
|
||||
AddChild(StateButton);
|
||||
|
||||
//角色名按钮
|
||||
local ChannelButton = LenheartNewUI_ButtonText(93, 60, 44, "角色名");
|
||||
ChannelButton.Idx = 163;
|
||||
ChannelButton.DWidth = 120;
|
||||
ChannelButton.FillWidth = 1;
|
||||
ChannelButton.FirstWidth = 21;
|
||||
ChannelButton.SetTextOffset(17, 1);
|
||||
AddChild(ChannelButton);
|
||||
|
||||
//攻坚队名称按钮
|
||||
local PartyNameButton = LenheartNewUI_ButtonText(196, 60, 36, "职业名");
|
||||
PartyNameButton.Idx = 163;
|
||||
PartyNameButton.DWidth = 100;
|
||||
PartyNameButton.FillWidth = 1;
|
||||
PartyNameButton.FirstWidth = 21;
|
||||
PartyNameButton.SetTextOffset(11, 1);
|
||||
AddChild(PartyNameButton);
|
||||
|
||||
//入场材料按钮
|
||||
local Striiu = "入场材料";
|
||||
if (FiendwarTotal.GetInstance().EndTime) Striiu = "通关次数";
|
||||
local StageButton = LenheartNewUI_ButtonText(289, 60, 0, Striiu);
|
||||
StageButton.Idx = 163;
|
||||
StageButton.DWidth = 26;
|
||||
StageButton.FillWidth = 1;
|
||||
StageButton.FirstWidth = 21;
|
||||
StageButton.SetTextOffset(-14, 1);
|
||||
AddChild(StageButton);
|
||||
|
||||
//如果不是我的队伍 并且我没有攻坚队
|
||||
if (!IsMyTeam && !FiendwarTotal.GetInstance().MyPartyId) {
|
||||
local JoinPartyButton = LenheartNewUI_ButtonText(10, 268, 10, "参加攻坚队");
|
||||
JoinPartyButton.SetTextOffset(-15, 1);
|
||||
JoinPartyButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063005,
|
||||
teamsId = TeamID,
|
||||
items = [L_sq_GetCharacterAttribute(0x1c, 21), L_sq_GetCharacterAttribute(0x1c, 15), L_sq_GetCharacterAttribute(0x1c, 14), L_sq_GetCharacterAttribute(0x1c, 13)],
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
AddChild(JoinPartyButton);
|
||||
}
|
||||
|
||||
//如果是我的队伍
|
||||
if (IsMyTeam) {
|
||||
//退出按钮
|
||||
local ExitButton = LenheartNewUI_ButtonText(220, 268, 5, "退出");
|
||||
ExitButton.SetTextOffset(-1, 1);
|
||||
ExitButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063009,
|
||||
teamsId = TeamID
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
FiendwarTotal.GetInstance().MyCid = null;
|
||||
FiendwarTotal.GetInstance().MyPartyId = null;
|
||||
FiendwarTotal.GetInstance().IsCaptain = null;
|
||||
}.bindenv(this);
|
||||
AddChild(ExitButton);
|
||||
|
||||
if (IsCaptain) {
|
||||
//队伍编制按钮
|
||||
local PartyEditButton = LenheartNewUI_ButtonText(10, 268, 5, "队伍编制");
|
||||
PartyEditButton.SetTextOffset(-12, 1);
|
||||
PartyEditButton.OnClick = function() {
|
||||
local win = LenheartNewUI_CreateWindow(FiendwarPartyFormation, "超时空我的队伍编队窗口", 105, 40, 294, 192, 18);
|
||||
win.Visible = true;
|
||||
}.bindenv(this);
|
||||
AddChild(PartyEditButton);
|
||||
|
||||
//修改信息按钮
|
||||
local FqButton = LenheartNewUI_ButtonText(100, 267, 5, "修改信息");
|
||||
FqButton.State = 8;
|
||||
FqButton.SetTextOffset(-12, 1);
|
||||
AddChild(FqButton);
|
||||
|
||||
//队伍招募按钮
|
||||
local FqButton1 = LenheartNewUI_ButtonText(160, 267, 5, "队伍招募");
|
||||
FqButton1.State = 8;
|
||||
FqButton1.SetTextOffset(-12, 1);
|
||||
AddChild(FqButton1);
|
||||
|
||||
if (!FiendwarTotal.GetInstance().EndTime) {
|
||||
//队伍招募按钮
|
||||
local FightOpenButton = LenheartNewUI_ButtonText(290, 268, 5, "开始攻坚");
|
||||
FightOpenButton.SetTextOffset(-12, 1);
|
||||
FightOpenButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063051,
|
||||
teamsId = TeamID
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
AddChild(FightOpenButton);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//标题栏
|
||||
L_sq_DrawButton(X, Y, 344, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//绘制队伍名字
|
||||
L_sq_DrawCode(TeamName, X + 178 - LenheartTextClass.GetStringLength(TeamName) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 17, 340, 250, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制头图
|
||||
L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/memberwindow.img", 0, X + 10, Y + 24);
|
||||
//绘制阶段图 //TODO 根据阶段绘制img
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 7, X + 296, Y + 34);
|
||||
|
||||
//绘制队伍List
|
||||
DrawMembersList(obj);
|
||||
}
|
||||
|
||||
//绘制队伍信息
|
||||
function DrawMembersList(obj) {
|
||||
if (MembersList.len() <= 0) return;
|
||||
//遍历需要显示的同步坐标
|
||||
foreach(Index, TeamObj in MembersList) {
|
||||
TeamObj.SyncPos(X, Y + 2 + Index * 23);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
# override # "
|
||||
* @函数作用:
|
||||
* @参数 name
|
||||
* @返回值
|
||||
*/
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
foreach(Window in Childrens) {
|
||||
Window.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
//判断没有点到具体角色就隐藏
|
||||
if (!sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y + 80, Width, MembersList.len() * 21)) {
|
||||
//交互窗口需要隐藏
|
||||
local Each = LenheartNewUI_CreateWindow(FiendwarHallPlayerInteractiveC, "超时空玩家交互", X, Y, 100, 21, 0);
|
||||
Each.Visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
188
Project/Fiendwar copy/FiendwarPartyMemberInfo.nut
Normal file
@@ -0,0 +1,188 @@
|
||||
/*
|
||||
文件名:FiendwarPartyMemberInfo.nut
|
||||
路径:Plugins/Fiendwar/FiendwarPartyMemberInfo.nut
|
||||
创建日期:2024-04-02 10:49
|
||||
文件用途:攻坚队详细信息中的队员显示类
|
||||
*/
|
||||
//队员显示类
|
||||
class FiendwarPartyInfoMemberC extends LenheartNewUI_CommonUi {
|
||||
X = 0;
|
||||
Y = 0;
|
||||
Width = null;
|
||||
Height = null;
|
||||
InfoObj = null;
|
||||
|
||||
//构造时间
|
||||
ConstructorTime = null;
|
||||
//选中状态
|
||||
SelectState = false;
|
||||
//攻坚状态
|
||||
OffensiveState = 0;
|
||||
//头像框的颜色
|
||||
HandBoxColor = [
|
||||
0xff717272,
|
||||
0xff7b2a29,
|
||||
0xff874e0d,
|
||||
0xff8b8108,
|
||||
0xff658e2d,
|
||||
0xff0f5c8a,
|
||||
0xff27238f,
|
||||
0xff4e2491,
|
||||
0xff932586,
|
||||
]
|
||||
|
||||
//X Y 裁切开始X Y 裁切结束X Y
|
||||
OffsetArr = [
|
||||
//男鬼剑士
|
||||
[45, 103, 230, 231],
|
||||
//女格斗家
|
||||
[56, 102, 235, 279],
|
||||
//男神枪手
|
||||
[52, 130, 238, 246],
|
||||
//女魔法师
|
||||
[55, 87, 234, 293],
|
||||
//男圣职者
|
||||
[42, 115, 223, 200],
|
||||
//女神枪手
|
||||
[52, 119, 226, 209],
|
||||
//暗夜使者
|
||||
[56, 102, 225, 226],
|
||||
//男格斗家
|
||||
[50, 114, 239, 216],
|
||||
//男魔法师
|
||||
[54, 103, 236, 276],
|
||||
//黑暗武士
|
||||
[46, 102, 229, 232],
|
||||
//缔造者
|
||||
[56, 86, 235, 293],
|
||||
]
|
||||
|
||||
constructor(gInfoObj) {
|
||||
ConstructorTime = Clock();
|
||||
|
||||
InfoObj = gInfoObj;
|
||||
this.Width = 458;
|
||||
this.Height = 21;
|
||||
|
||||
this.OnClick = function() {
|
||||
//还原其他 选中自己
|
||||
foreach(Obj in Parent.MembersList) {
|
||||
Obj.SelectState = false;
|
||||
}
|
||||
SelectState = !SelectState;
|
||||
|
||||
local win = LenheartNewUI_CreateWindow(FiendwarPartyFormation, "超时空我的队伍编队窗口", 105, 40, 294, 192, 18);
|
||||
//编队状态
|
||||
if (win.PartyMarkFlag != -1) {
|
||||
//并且是属于我的攻坚队的成员
|
||||
if (FiendwarTotal.GetInstance().MyPartyId == InfoObj.PartyId) {
|
||||
local T = {
|
||||
op = 20063015,
|
||||
teamsId = InfoObj.PartyId,
|
||||
cidNew = InfoObj.Cid,
|
||||
num = win.PartyMarkFlag
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
win.PartyMarkFlag = -1;
|
||||
L_sq_WA(0x1b46898, 0);
|
||||
return;
|
||||
}
|
||||
//点了其他队伍成员要还原编队状态
|
||||
else {
|
||||
win.PartyMarkFlag = -1;
|
||||
L_sq_WA(0x1b46898, 0);
|
||||
}
|
||||
}
|
||||
|
||||
local Interactive = LenheartNewUI_CreateWindow(FiendwarHallPlayerInteractiveC, "超时空玩家交互", 0, 0, 100, 21, 0);
|
||||
//改变鼠标坐标
|
||||
Interactive.X = MousePos_X;
|
||||
Interactive.Y = MousePos_Y;
|
||||
//赋值对象参数
|
||||
Interactive.InfoObj = InfoObj;
|
||||
//对象不是我
|
||||
if (InfoObj.Cid == FiendwarTotal.GetInstance().MyCid) {
|
||||
Interactive.InfoObj.IsMyself <- true;
|
||||
}
|
||||
//刷新UI
|
||||
Interactive.InitInfo();
|
||||
}
|
||||
LenheartNewUI_CommonUi.constructor(10, 82, this.Width, this.Height);
|
||||
|
||||
|
||||
//如果没有材料要建立一个购买材料的Button 并且要判断是否是自己 //TODO 这里还不行 要拓展一个函数来比对名字
|
||||
/*
|
||||
local Name = L_Sq_GetObjectName(sq_GetMyMasterCharacter());
|
||||
local Name2 = "夜刃";
|
||||
Name == Name2 失败了
|
||||
*/
|
||||
// if (!InfoObj.StkHasFlag && InfoObj.Name == L_Sq_GetObjectName(sq_GetMyMasterCharacter())) {
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//绘制底槽
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 12, X, Y);
|
||||
|
||||
//绘制队伍编号
|
||||
L_sq_DrawImg("interface/newstyle/windows/party/party_icon.img", InfoObj.TeamId * 3, X, Y + 1);
|
||||
|
||||
sq_DrawBox(X + 42, Y + 1, 22, 18, HandBoxColor[InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + OffsetArr[InfoObj.Job][0];
|
||||
local AYpos = AvatarObj.D[1] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
// }
|
||||
}
|
||||
|
||||
if (InfoObj.Captain) L_sq_DrawImg("hud/fiendwarl.img", 18, X + 42, Y + 1);
|
||||
|
||||
|
||||
//绘制等级
|
||||
L_sq_DrawCode(InfoObj.Level, X + 76 - LenheartTextClass.GetStringLength(InfoObj.Level) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色名
|
||||
L_sq_DrawCode(InfoObj.Name, X + 138 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制职业名
|
||||
L_sq_DrawCode(InfoObj.JobName, X + 234 - LenheartTextClass.GetStringLength(InfoObj.JobName) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
|
||||
//离线了
|
||||
if (InfoObj.ExitTime > 0) {
|
||||
local DrawTime = InfoObj.ExitTime - (Clock() - ConstructorTime);
|
||||
local seconds = (DrawTime / 1000) % 60; // 计算秒数
|
||||
local minutes = (DrawTime / (1000 * 60)) % 60; // 计算分钟数
|
||||
local DrawTimeStr = format("%02d分%02d秒", minutes, seconds);
|
||||
|
||||
L_sq_DrawCode(DrawTimeStr, X + 306 - LenheartTextClass.GetStringLength(DrawTimeStr) / 2, Y + 5, sq_RGBA(255, 50, 50, 255), 0, 1);
|
||||
}
|
||||
//通关次数
|
||||
else if (InfoObj.ClearanceCount > 0) {
|
||||
L_sq_DrawCode((InfoObj.ClearanceCount - 1) + "/" + (InfoObj.ClearanceCountMax), X + 306 - LenheartTextClass.GetStringLength((InfoObj.ClearanceCount - 1) + "/" + (InfoObj.ClearanceCountMax)) / 2, Y + 5, sq_RGBA(250, 250, 181, 255), 0, 1);
|
||||
} else if (InfoObj.StkHasFlag) {
|
||||
L_sq_DrawImg("hud/fiendwarlstk.img", 0, X + 280, Y + 3);
|
||||
} else {
|
||||
L_sq_DrawImg("hud/fiendwarlstk.img", 1, X + 280, Y + 3);
|
||||
}
|
||||
|
||||
if (SelectState) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 13, X, Y);
|
||||
}
|
||||
|
||||
if (isInRect) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 13, X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
MousePos_X = 0;
|
||||
MousePos_Y = 0;
|
||||
//鼠标事件回调
|
||||
function OnMouseProc(Flag, gMousePos_X, gMousePos_Y) {
|
||||
this.MousePos_X = gMousePos_X;
|
||||
this.MousePos_Y = gMousePos_Y;
|
||||
LenheartNewUI_CommonUi.OnMouseProc(Flag, gMousePos_X, gMousePos_Y);
|
||||
}
|
||||
}
|
||||
227
Project/Fiendwar copy/FiendwarPlayerInteractive.nut
Normal file
@@ -0,0 +1,227 @@
|
||||
/*
|
||||
文件名:FiendwarPlayerInteractive.nut
|
||||
路径:Plugins/Fiendwar/FiendwarPlayerInteractive.nut
|
||||
创建日期:2024-04-02 10:55
|
||||
文件用途:超时空玩家交互
|
||||
*/
|
||||
//角色交互按钮需要传递参数所以重写
|
||||
class FiendwarPlayerInteractive_BaseButton extends LenheartNewUI_BaseButton {
|
||||
|
||||
OnShow = null;
|
||||
|
||||
constructor(X, Y, W, H, Path, Idx) {
|
||||
|
||||
LenheartNewUI_BaseButton.constructor(X, Y, W, H, Path, Idx);
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
Y--;
|
||||
if (isLBDown && OnClick) {
|
||||
OnClick();
|
||||
}
|
||||
isLBDown = false;
|
||||
local Each = LenheartNewUI_CreateWindow(FiendwarHallPlayerInteractiveC, "超时空玩家交互", X, Y, 100, 21, 0);
|
||||
Each.Visible = false;
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//不可用
|
||||
if (State == 8) {
|
||||
L_sq_DrawImg(Path, Idx + 3, X, Y + 1);
|
||||
} else {
|
||||
//按下
|
||||
if (isLBDown) {
|
||||
Y++;
|
||||
L_sq_DrawImg(Path, (Idx * 2) + 2, X, Y);
|
||||
}
|
||||
//悬停
|
||||
else if (isInRect) {
|
||||
L_sq_DrawImg(Path, (Idx * 2) + 1, X, Y);
|
||||
}
|
||||
//普通
|
||||
else {
|
||||
L_sq_DrawImg(Path, 0, X, Y);
|
||||
}
|
||||
}
|
||||
if (OnShow) OnShow(X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
//角色交互类
|
||||
class FiendwarHallPlayerInteractiveC extends LenheartNewUI_Windows {
|
||||
// DeBugMode = true;
|
||||
|
||||
//信息对象
|
||||
InfoObj = null;
|
||||
|
||||
//初始化Flag 初始化以后才显示
|
||||
InitInfoFlag = false;
|
||||
|
||||
//有多少个标签
|
||||
InitIndexFlag = 1;
|
||||
|
||||
//头像框颜色
|
||||
HandBoxColor = [
|
||||
0xff717272,
|
||||
0xff7b2a29,
|
||||
0xff874e0d,
|
||||
0xff8b8108,
|
||||
0xff658e2d,
|
||||
0xff0f5c8a,
|
||||
0xff27238f,
|
||||
0xff4e2491,
|
||||
0xff932586,
|
||||
]
|
||||
|
||||
//X Y 裁切开始X Y 裁切结束X Y
|
||||
OffsetArr = [
|
||||
//男鬼剑士
|
||||
[45, 103, 230, 231],
|
||||
//女格斗家
|
||||
[56, 102, 235, 279],
|
||||
//男神枪手
|
||||
[52, 130, 238, 246],
|
||||
//女魔法师
|
||||
[55, 87, 234, 293],
|
||||
//男圣职者
|
||||
[42, 115, 223, 200],
|
||||
//女神枪手
|
||||
[52, 119, 226, 209],
|
||||
//暗夜使者
|
||||
[56, 102, 225, 226],
|
||||
//男格斗家
|
||||
[50, 114, 239, 216],
|
||||
//男魔法师
|
||||
[54, 103, 236, 276],
|
||||
//黑暗武士
|
||||
[46, 102, 229, 232],
|
||||
//缔造者
|
||||
[56, 86, 235, 293],
|
||||
]
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
//初始化信息
|
||||
function InitInfo() {
|
||||
Childrens = [];
|
||||
//还原标签数量
|
||||
InitIndexFlag = 1;
|
||||
//还原高度
|
||||
Height = 21;
|
||||
//还原可见性
|
||||
Visible = true;
|
||||
//置顶窗口
|
||||
ResetFocus();
|
||||
RegisterWidget();
|
||||
InitInfoFlag = true;
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
|
||||
|
||||
//是团长才能委任 并且不是我自己 并且我们在同一个攻坚队
|
||||
if (FiendwarTotal.GetInstance().IsCaptain && !("IsMyself" in InfoObj) && FiendwarTotal.GetInstance().MyPartyId == InfoObj.PartyId) {
|
||||
//委任团长按钮
|
||||
local GiveMasterButton = FiendwarPlayerInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
GiveMasterButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 11, X, Y + 2);
|
||||
L_sq_DrawCode("委任团长", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
GiveMasterButton.OnClick = function() {
|
||||
|
||||
}.bindenv(this);
|
||||
AddChild(GiveMasterButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
}
|
||||
|
||||
//查看信息按钮
|
||||
local CheckInfoButton = FiendwarPlayerInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
CheckInfoButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 10, X, Y + 2);
|
||||
L_sq_DrawCode("查看信息", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
CheckInfoButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(8);
|
||||
L_sq_SendPackWord(InfoObj.PlayerSession);
|
||||
L_sq_SendPackByte(3);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(CheckInfoButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
|
||||
if (!("IsMyself" in InfoObj)) {
|
||||
//交易按钮
|
||||
local TransactionButton = FiendwarPlayerInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
TransactionButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 0, X, Y + 2);
|
||||
L_sq_DrawCode("交易", X + 46, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
TransactionButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(10);
|
||||
L_sq_SendPackWord(InfoObj.PlayerSession);
|
||||
L_sq_SendPackByte(1);
|
||||
L_sq_SendPackDWord(22053);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(TransactionButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
|
||||
|
||||
if (FiendwarTotal.GetInstance().IsCaptain && FiendwarTotal.GetInstance().MyPartyId == InfoObj.PartyId) {
|
||||
//攻坚队员强退按钮
|
||||
local KickMemberButton = FiendwarPlayerInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 4);
|
||||
KickMemberButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_warning.img", 3, X, Y + 2);
|
||||
L_sq_DrawCode("攻坚队员强退", X + 24, Y + 5, sq_RGBA(255, 50, 50, 255), 0, 1);
|
||||
}
|
||||
KickMemberButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
local T = {
|
||||
op = 20063021,
|
||||
teamsId = InfoObj.PartyId,
|
||||
charCid = InfoObj.Cid
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
AddChild(KickMemberButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
if (!InitInfoFlag) return;
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_back.img", 0, X, Y);
|
||||
//绘制角色名
|
||||
L_sq_DrawCode(InfoObj.Name, X + 61 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 4, sq_RGBA(169, 255, 171, 255), 0, 1);
|
||||
//绘制头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + OffsetArr[InfoObj.Job][0] - 40;
|
||||
local AYpos = AvatarObj.D[1] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
}
|
||||
190
Project/Fiendwar/FiendFightLogic.nut
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
文件名:FiendFightLogic.nut
|
||||
路径:Plugins/Fiendwar/FiendFightLogic.nut
|
||||
创建日期:2024-05-27 19:18
|
||||
文件用途:超时空战斗逻辑
|
||||
*/
|
||||
class FiendFightLogicC {
|
||||
//进入BOSS房间发包告诉服务端的Flag
|
||||
IsBossActiveMsgPackFlag = false;
|
||||
|
||||
constructor() {
|
||||
|
||||
//注册回调包
|
||||
Pack_Control.rawset(20063030, SetCharacterDamageRate.bindenv(this));
|
||||
Pack_Control.rawset(20063600, CreatePassiveObjectById.bindenv(this));
|
||||
Pack_Control.rawset(20063602, GetBossHp.bindenv(this));
|
||||
Pack_Control.rawset(20063604, SetBossHp.bindenv(this));
|
||||
Pack_Control.rawset(20063608, CheckMonsterIsV.bindenv(this));
|
||||
}
|
||||
|
||||
//检测怪物是否存在
|
||||
function CheckMonsterIsV(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Idx = Jso.id;
|
||||
local ObjectBuf = GetObjectByIndex(Idx);
|
||||
if (!ObjectBuf) {
|
||||
local T = {
|
||||
op = 20063609,
|
||||
id = Idx
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
}
|
||||
}
|
||||
|
||||
//设置BOSS生命值
|
||||
function SetBossHp(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local BossObject = GetObjectByIndex(210994);
|
||||
|
||||
//没找到BOSS
|
||||
if (!BossObject) {
|
||||
local T = {
|
||||
op = 20063605,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
} else {
|
||||
BossObject.setHp(Jso.hp, null, true);
|
||||
}
|
||||
|
||||
}
|
||||
//获取BOSS生命值
|
||||
function GetBossHp(Chunk) {
|
||||
if (!IsBossActiveMsgPackFlag) return;
|
||||
local BossObject = GetObjectByIndex(210994);
|
||||
local curthp = -1;
|
||||
local rmaxhp = -1;
|
||||
//找到BOSS
|
||||
if (BossObject) {
|
||||
curthp = BossObject.getHp();
|
||||
rmaxhp = BossObject.getHpMax();
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = 20063603,
|
||||
hp = curthp,
|
||||
maxhp = rmaxhp
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(T);
|
||||
}
|
||||
|
||||
//设置伤害值回调
|
||||
function SetCharacterDamageRate(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Rate = Jso.damageMarkup.tofloat() / 100.0;
|
||||
//超时空伤害设置
|
||||
if (getroottable().rawin("LenheartFiendModuleDamageRate")) {
|
||||
getroottable()["LenheartFiendModuleDamageRate"] = Rate;
|
||||
}
|
||||
}
|
||||
|
||||
//召唤PassiveObject回调
|
||||
function CreatePassiveObjectById(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local ObjectId = Jso.id;
|
||||
local ZPos = Jso.z;
|
||||
|
||||
//确保在BOSS房间才召唤免得游戏崩溃
|
||||
if (IsBossActiveMsgPackFlag) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_GetCNRDObjectToActiveObject(obj);
|
||||
// obj.sq_SendCreatePassiveObjectPacket(ObjectId, 0, 99999990, 0, ZPos);
|
||||
// sq_SendCreatePassiveObjectPacketFromPassivePos(obj, ObjectId, 0, 99999990, 0, ZPos);
|
||||
sq_SendCreatePassiveObjectPacket(obj, ObjectId, 0, 99999990, 0, ZPos, obj.getDirection());
|
||||
local Jso = {
|
||||
op = 20063601,
|
||||
id = ObjectId,
|
||||
z = ZPos
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//获取指定对象
|
||||
function GetObjectByIndex(Idx) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_GetCNRDObjectToActiveObject(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)) {
|
||||
local activeObj = sq_GetCNRDObjectToActiveObject(object);
|
||||
local MonsterIndex = activeObj.getCollisionObjectIndex();
|
||||
if (MonsterIndex == Idx) {
|
||||
return activeObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//获取地图ID
|
||||
function GetMapIndex() {
|
||||
local stage = sq_GetGlobaludpModuleStage();
|
||||
local MapIndex = sq_GetMapIndex(stage);
|
||||
return MapIndex;
|
||||
}
|
||||
|
||||
//检测是否在超时空BOSS图
|
||||
function CheckBossIsActive() {
|
||||
//如果在副本中
|
||||
if (sq_GetCurrentModuleType() == 3) {
|
||||
//在BOSS地图
|
||||
if (GetMapIndex() == 24151) {
|
||||
if (!IsBossActiveMsgPackFlag) {
|
||||
IsBossActiveMsgPackFlag = true;
|
||||
local Jso = {
|
||||
op = 20063801
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
//退出副本以后设置flag 还原
|
||||
else {
|
||||
IsBossActiveMsgPackFlag = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//怪物死亡回调包
|
||||
function MonsterDieCallBack(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);
|
||||
if (activeObj.isDead()) {
|
||||
local MonsterIndex = activeObj.getCollisionObjectIndex();
|
||||
if (MonsterIndex >= 210994 && MonsterIndex <= 210999) {
|
||||
local Jso = {
|
||||
op = 20063503,
|
||||
monster_id = MonsterIndex
|
||||
}
|
||||
Rindro_BaseToolClass.SendPack(Jso);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Proc(obj) {
|
||||
|
||||
//如果进入BOSS房间需要告诉服务端
|
||||
CheckBossIsActive();
|
||||
|
||||
//如果在和BOSS干架 要检测所有怪物的死亡
|
||||
if (IsBossActiveMsgPackFlag) {
|
||||
//怪物死亡检测
|
||||
MonsterDieCallBack(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
328
Project/Fiendwar/FiendReward.nut
Normal file
@@ -0,0 +1,328 @@
|
||||
/*
|
||||
文件名:FiendReward.nut
|
||||
路径:Project/Fiendwar/FiendReward.nut
|
||||
创建日期:2024-11-26 14:44
|
||||
文件用途:
|
||||
*/
|
||||
class FiendRewardC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
DeBugMode = true;
|
||||
//默认显示状态需要是关闭 因为要通过收包打开
|
||||
Visible = false;
|
||||
|
||||
//奖励信息
|
||||
RewardInfo = null;
|
||||
//奖励动画开始时间
|
||||
AniStartFlag = null;
|
||||
|
||||
//收到奖励包
|
||||
function RewardCallBack(Chunk) {
|
||||
// Sout("收到请求加入包 : \n\n\n %L", Chunk);
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RewardInfo = Jso;
|
||||
Visible = true;
|
||||
AniStartFlag = Clock();
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20063026, RewardCallBack.bindenv(this));
|
||||
|
||||
local T = {
|
||||
op = 20063061,
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
AniName_Flag = 0;
|
||||
AniActFlag = 0;
|
||||
Ani_Title = null;
|
||||
Ani_Time = null;
|
||||
Ani_Time2 = null;
|
||||
Ani_Card_1 = null;
|
||||
Ani_Card_2 = null;
|
||||
Ani_Card_Open_1 = null;
|
||||
Ani_Card_Open_2 = null;
|
||||
AniTimeStartFlag = 0;
|
||||
AniRewardMyStartFlag = 0;
|
||||
Ani_Card_All_1 = null;
|
||||
Ani_Card_All_Open = null;
|
||||
Ani_Card_All_Open_Gold = null;
|
||||
AniRewardReloadFlag = 0;
|
||||
AlphaValue = 0.0;
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (AniStartFlag) {
|
||||
local ExiTime = Clock() - AniStartFlag;
|
||||
|
||||
//绘制背景
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 0, X + 0, Y + 0, 1, sq_RGBA(255, 255, 255, 150), 1.0, 1.0);
|
||||
|
||||
//标题一阶段
|
||||
Ani_Title = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_title_00.ani", X + 188, Y + 30, "超时空奖励标题1" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Title)) {
|
||||
if (AniActFlag == 0) AniActFlag = 1;
|
||||
}
|
||||
//时间二阶段
|
||||
if (AniActFlag >= 1) {
|
||||
Ani_Time = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_time.ani", X + 55, Y + 120, "超时空奖励标题2" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Time)) {
|
||||
if (AniActFlag == 1) AniActFlag = 2;
|
||||
}
|
||||
}
|
||||
//时间三阶段
|
||||
if (AniActFlag >= 2) {
|
||||
Ani_Time2 = Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_rank_00.ani", X + 570, Y + 90, "超时空奖励标题3" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Time2)) {
|
||||
//记录一下时间
|
||||
if (AniActFlag == 2) {
|
||||
AniTimeStartFlag = Clock();
|
||||
AniActFlag = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
//时间四阶段
|
||||
if (AniActFlag >= 3) {
|
||||
local al = sq_GetUniformVelocity(0, 100, Clock() - AniTimeStartFlag, 1500);
|
||||
AlphaValue = al.tofloat() / 100.0;
|
||||
|
||||
local RealTime = RewardInfo.time;
|
||||
local seconds = RealTime / 10;
|
||||
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 Offset = -6;
|
||||
DrawImg("hud/fiendwartime.img", hours.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", hours.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139);
|
||||
Offset += 60;
|
||||
DrawImg("hud/fiendwartime.img", minutes.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", minutes.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", 10, X + 286 + Offset, Y + 139);
|
||||
Offset += 60;
|
||||
DrawImg("hud/fiendwartime.img", seconds.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", seconds.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
|
||||
Offset += 160;
|
||||
local DieCount = RewardInfo.deathsNum;
|
||||
local DrawDieStr = format("%02d", DieCount);
|
||||
DrawImg("hud/fiendwartime.img", DrawDieStr.slice(0, 1).tointeger(), X + 240 + Offset, Y + 139);
|
||||
DrawImg("hud/fiendwartime.img", DrawDieStr.slice(1).tointeger(), X + 260 + Offset, Y + 139);
|
||||
|
||||
if (al >= 100) {
|
||||
if (AniActFlag == 3) {
|
||||
AniActFlag = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌一阶段
|
||||
if (AniActFlag == 4) {
|
||||
Ani_Card_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_01.ani", X + 0, Y + 30, "超时空奖励个人第一张卡牌" + AniName_Flag);
|
||||
Ani_Card_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_02.ani", X + 0, Y + 30, "超时空奖励个人第二张卡牌" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_1) && sq_IsEnd(Ani_Card_2)) {
|
||||
if (AniActFlag == 4) AniActFlag = 5;
|
||||
}
|
||||
}
|
||||
//卡牌二阶段
|
||||
if (AniActFlag == 5) {
|
||||
Ani_Card_Open_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 218, Y + 280, "超时空奖励个人第一张卡牌打开" + AniName_Flag);
|
||||
Ani_Card_Open_2 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 406, Y + 280, "超时空奖励个人第二张卡牌打开" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_Open_1) && sq_IsEnd(Ani_Card_Open_2)) {
|
||||
if (AniActFlag == 5) {
|
||||
AniRewardMyStartFlag = Clock();
|
||||
AniActFlag = 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌三阶段
|
||||
if (AniActFlag == 6) {
|
||||
local BackGroundFlag = 0;
|
||||
if (RewardInfo.rewards[0].item == -1) BackGroundFlag = 1;
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 218, Y + 280);
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 406, Y + 280);
|
||||
|
||||
DrawItemEx(X + 290, Y + 342, RewardInfo.rewards[0].item, RewardInfo.rewards[0].num, RewardInfo.pid, 0, -10);
|
||||
DrawItemEx(X + 478, Y + 342, RewardInfo.rewards[0].item2, RewardInfo.rewards[0].num2, RewardInfo.pid, 0, -10);
|
||||
|
||||
if ((Clock() - AniRewardMyStartFlag) >= 1500) {
|
||||
AniActFlag = 7;
|
||||
}
|
||||
}
|
||||
//卡牌四阶段
|
||||
if (AniActFlag == 7) {
|
||||
Ani_Card_All_1 = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/cardspread_00.ani", X + 0, Y + 0, "二阶段翻牌未翻开" + AniName_Flag);
|
||||
if (sq_IsEnd(Ani_Card_All_1)) {
|
||||
if (AniActFlag == 7) {
|
||||
Ani_Card_All_Open = array(8);
|
||||
Ani_Card_All_Open_Gold = array(8);
|
||||
AniActFlag = 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌五阶段
|
||||
if (AniActFlag == 8) {
|
||||
for (local i = 0; i< 8; i++) {
|
||||
Ani_Card_All_Open[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/reward_card_open.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开" + "i" + AniName_Flag);
|
||||
|
||||
if (i<(RewardInfo.rewards2.len() - 1) && RewardInfo.rewards2[i][0].grade == 1) {
|
||||
Ani_Card_All_Open_Gold[i] = T_DrawDynamicAni(obj, "common/fiendwar_kr/reward/gold_nomal.ani", X + 30 + ((i % 4) * 188), Y + 250 + ((i / 4) * 138), "超时空奖励团队卡牌打开金牌" + "i" + AniName_Flag);
|
||||
}
|
||||
}
|
||||
if (sq_IsEnd(Ani_Card_All_Open[7])) {
|
||||
if (AniActFlag == 8) {
|
||||
AniActFlag = 9;
|
||||
AniRewardReloadFlag = Clock();
|
||||
}
|
||||
}
|
||||
}
|
||||
//卡牌六阶段
|
||||
if (AniActFlag == 9) {
|
||||
for (local i = 0; i< 8; i++) {
|
||||
DrawRewardCard(i);
|
||||
}
|
||||
//重置
|
||||
if (Clock() - AniRewardReloadFlag >= 2000) {
|
||||
AniActFlag = 0;
|
||||
Ani_Title = null;
|
||||
Ani_Time = null;
|
||||
Ani_Time2 = null;
|
||||
Ani_Card_1 = null;
|
||||
Ani_Card_2 = null;
|
||||
Ani_Card_Open_1 = null;
|
||||
Ani_Card_Open_2 = null;
|
||||
AniTimeStartFlag = 0;
|
||||
AniRewardMyStartFlag = 0;
|
||||
Ani_Card_All_1 = null;
|
||||
Ani_Card_All_Open = null;
|
||||
Ani_Card_All_Open_Gold = null;
|
||||
AniRewardReloadFlag = 0;
|
||||
AlphaValue = 0.0;
|
||||
RewardInfo = null;
|
||||
AniStartFlag = null;
|
||||
AniName_Flag += 1;
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function DrawRewardCard(Index) {
|
||||
if (Index > (RewardInfo.rewards2.len() - 1)) {
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 24, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
return;
|
||||
}
|
||||
local Info = RewardInfo.rewards2[Index][0];
|
||||
local BackGroundFlag = 0;
|
||||
if (Info.count == 0) {
|
||||
BackGroundFlag = 1;
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10);
|
||||
}
|
||||
if (Info.count == 1) {
|
||||
if (Info.grade == 1)(BackGroundFlag = -5)
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 0, -10);
|
||||
} else if (Info.count == 2) {
|
||||
if (Info.grade == 1)(BackGroundFlag = -5)
|
||||
DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 23 + BackGroundFlag, X + 29 + ((Index % 4) * 189), Y + 250 + ((Index / 4) * 138));
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 - 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item, Info.num, Index, 999999, 0);
|
||||
DrawItemEx(X + 29 + ((Index % 4) * 189) + 72 + 20, Y + 250 + ((Index / 4) * 138) + 62, Info.item2, Info.num2, Index, -20, -10);
|
||||
}
|
||||
}
|
||||
|
||||
ItemInfoDrawS = null;
|
||||
//绘制道具相信信息
|
||||
ItemObject = null;
|
||||
|
||||
//绘制道具带道具信息
|
||||
function DrawItemEx(X, Y, Id, Count, Pid, Flag, Flag2) {
|
||||
try {
|
||||
if (Flag != 999999) {
|
||||
local PartyMasterIcon = RinDro_Fiendwar_Obj.MyRaidTeam.MembersList[Pid];
|
||||
|
||||
local XOffset = -77 + Flag;
|
||||
local YOffset = -31 + Flag2;
|
||||
sq_DrawBox(X + 30 + XOffset, Y + 1 + YOffset, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12;
|
||||
local AYpos = AvatarObj.F[1][3] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + YOffset;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
//绘制名字
|
||||
L_sq_DrawCode(DrawName, X + XOffset + 100 - LenheartTextClass.GetStringLength(DrawName) / 2, Y + YOffset + 4, sq_RGBA(247, 214, 90, 250), 0, 1);
|
||||
}
|
||||
|
||||
if (Id != -1) {
|
||||
local Rarity = L_sq_RA(L_sq_GetItem(Id) + 0xF4);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/reward/fiend_reward.img", 5 + Rarity, X - 3, Y - 3);
|
||||
L_Sq_DrawItem(X, Y, Id, Count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, 24, 24)) {
|
||||
ItemInfoDrawS = {};
|
||||
ItemInfoDrawS.X <- X;
|
||||
ItemInfoDrawS.Y <- Y;
|
||||
ItemInfoDrawS.ItemId <- Id;
|
||||
}
|
||||
}
|
||||
} catch (exception) {
|
||||
print(exception);
|
||||
}
|
||||
}
|
||||
//绘制悬停
|
||||
function DrawItemInfoF(obj) {
|
||||
if (ItemInfoDrawS) {
|
||||
if (!ItemObject) {
|
||||
local ItemId = ItemInfoDrawS.ItemId;
|
||||
if (AllItemInfoObject.rawin(ItemId)) {
|
||||
ItemObject = ItemInfoClass(AllItemInfoObject[ItemId]);
|
||||
}
|
||||
}
|
||||
ItemObject.Show(ItemInfoDrawS.X, ItemInfoDrawS.Y - ItemObject.PageLength);
|
||||
} else {
|
||||
ItemObject = null;
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
ItemInfoDrawS = null;
|
||||
DrawMain(obj);
|
||||
// DrawItemInfoF(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
703
Project/Fiendwar/FiendwarFightSituation.nut
Normal file
@@ -0,0 +1,703 @@
|
||||
/*
|
||||
文件名:FiendwarFightSituation.nut
|
||||
路径:Project/Fiendwar/FiendwarFightSituation.nut
|
||||
创建日期:2024-11-26 14:44
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
//复选框
|
||||
class Fiendwar_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 Fiendwar_LenheartNewUI_ProgressIndicator extends LenheartNewUI_CommonUi {
|
||||
//透明度
|
||||
AlphaValue = 1.0;
|
||||
//宽
|
||||
DWidth = null;
|
||||
//控制者
|
||||
Controller = 0;
|
||||
//回调函数
|
||||
OnChangeControl = null;
|
||||
//球的偏移 因为除不尽 所以这个最好单独写
|
||||
BXposOffset = 0;
|
||||
|
||||
constructor(X, Y, W, H) {
|
||||
this.DWidth = W;
|
||||
LenheartNewUI_CommonUi.constructor(X, Y, W, H);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//绘制左
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 19, X, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
|
||||
local OffserIndex = 0;
|
||||
//绘制中
|
||||
for (local i = 0; i< this.DWidth; i++) {
|
||||
if (i > (Controller * this.DWidth).tointeger())
|
||||
OffserIndex = 0;
|
||||
else OffserIndex = 1;
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 21 + OffserIndex, X + 8 + i, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
}
|
||||
//绘制右
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 20, X + 8 + this.DWidth, Y, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
|
||||
// local BXposOffset = 0;
|
||||
// if (BaseX && EndX) BXposOffset = EndX - BaseX;
|
||||
//绘制球
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 23, X + BXposOffset + 1, Y + 1, 1, sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger()), 1.0, 1.0);
|
||||
}
|
||||
|
||||
//按下时的基准X
|
||||
BaseX = null;
|
||||
EndX = null;
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + BXposOffset + 1, Y + 1, 15, 14)) {
|
||||
isLBDown = true;
|
||||
if (!BaseX) BaseX = MousePos_X;
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标事件回调
|
||||
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||
if (isLBDown && Flag == 1) {
|
||||
if (MousePos_X > (X + DWidth + 8))
|
||||
MousePos_X = (X + DWidth + 8);
|
||||
else if (MousePos_X<(X + 8))
|
||||
MousePos_X = (X + 8);
|
||||
EndX = MousePos_X;
|
||||
if (BaseX && EndX) {
|
||||
BXposOffset = EndX - BaseX;
|
||||
Controller = BXposOffset.tofloat() / DWidth.tofloat();
|
||||
AlphaValue = Controller;
|
||||
if (AlphaValue< 0.4) AlphaValue = 0.4;
|
||||
if (OnChangeControl) OnChangeControl(Controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
isLBDown = false;
|
||||
}
|
||||
}
|
||||
|
||||
class FiendwarFightSituationC extends LenheartNewUI_Windows {
|
||||
|
||||
Visible = false;
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
//透明度
|
||||
AlphaValue = 1.0;
|
||||
//简易战况表复选框
|
||||
BaseSituationBtn = null;
|
||||
//简易战况表是否开启
|
||||
BaseSituationFlag = 0;
|
||||
|
||||
ExternalWindow = null;
|
||||
|
||||
//雷达是否存在
|
||||
RadarFlag = true;
|
||||
//turret2
|
||||
turret2 = true;
|
||||
|
||||
MonsterFace = {
|
||||
m20413 = 1,
|
||||
m20412 = 3,
|
||||
m20411 = 4,
|
||||
m20415 = 15,
|
||||
m20408 = 9,
|
||||
m20409 = 8,
|
||||
m20405 = 5,
|
||||
m20404 = 6,
|
||||
m20406 = 12,
|
||||
m20401 = 13,
|
||||
m20402 = 10,
|
||||
m20403 = 11,
|
||||
};
|
||||
|
||||
SlotPos = [
|
||||
[50, 479],
|
||||
[50, 374],
|
||||
[50, 270],
|
||||
[140, 167],
|
||||
[186, 89],
|
||||
[275, 36],
|
||||
[275, 141],
|
||||
[411, 11],
|
||||
[365, 88],
|
||||
[455, 141],
|
||||
[545, 36],
|
||||
|
||||
[141, 427],
|
||||
[185, 348],
|
||||
[185, 245],
|
||||
[321, 271],
|
||||
[411, 219],
|
||||
[546, 245],
|
||||
[591, 166],
|
||||
|
||||
[141, 530],
|
||||
[276, 505],
|
||||
[320, 375],
|
||||
[410, 478],
|
||||
[546, 504],
|
||||
[456, 401],
|
||||
[681, 478],
|
||||
[545, 348],
|
||||
[680, 374],
|
||||
[725, 244],
|
||||
|
||||
[690, 53],
|
||||
[727, 129],
|
||||
]
|
||||
|
||||
|
||||
Info = null;
|
||||
PackCurT = null;
|
||||
EndTime = null;
|
||||
|
||||
function InfoCallBack(Chunk) {
|
||||
// print(Chunk);
|
||||
local Jso = Json.Decode(Chunk);
|
||||
Info = Jso.fightInfo.platVos;
|
||||
EndTime = Jso.fightInfo.endTime;
|
||||
RadarFlag = Jso.fightInfo.radar;
|
||||
turret2 = Jso.fightInfo.turret2;
|
||||
RinDro_Fiendwar_Obj.EndTime = Jso.fightInfo.endTime;
|
||||
local Pt = Clock();
|
||||
PackCurT = Pt;
|
||||
RinDro_Fiendwar_Obj.PackCurT = Pt;
|
||||
|
||||
// local Win = LenheartNewUI_CreateWindow(Rindro_FiendwarPartyInfoC, "超时空我的队伍窗口", 430, 15, 354, 290, 18);
|
||||
// Win.CloseWindow();
|
||||
// local Win = LenheartNewUI_CreateWindow(Rindro_Fiendwar_PartyHallC, "超时空攻坚队伍列表", 320, 40, 478, 434, 18);
|
||||
// Win.CloseWindow();
|
||||
}
|
||||
|
||||
//收到进入BOSS请求包
|
||||
function GoBossCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local Win = LenheartNewUI_CreateWindow(FiendwarHallGoBossDgnC, "超时空攻坚进入罗什", 273, 225, 270, 120, 19);
|
||||
Win.Visible = true;
|
||||
Win.Dark = Jso.boss1;
|
||||
Win.Light = Jso.boss2;
|
||||
Win.RegisterWidget();
|
||||
}
|
||||
|
||||
PlayerGiveUpTime = null;
|
||||
PlayerGiveUpFlagTime = null;
|
||||
//放弃副本包
|
||||
function PlayerGiveUpCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
PlayerGiveUpTime = Jso.endTime;
|
||||
PlayerGiveUpFlagTime = Clock();
|
||||
}
|
||||
|
||||
function GetInfo() {
|
||||
local T = {
|
||||
op = 20063053,
|
||||
// teamsId = RinDro_Fiendwar_Obj.MyPartyId
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(20063016, InfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063022, GoBossCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063024, PlayerGiveUpCallBack.bindenv(this));
|
||||
|
||||
ExternalWindow = Rindro_Fiendwar_FightSituatioExternalC("超时空攻坚战况表外部窗口", getroottable().Rindro_Scr_Width.tointeger() - 296, 8, 103, 22, 0);
|
||||
ExternalWindow.AddParentWin(this);
|
||||
|
||||
GetInfo();
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(770, 0, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
// CloseButton.OnClick = function() {
|
||||
// local Win = LenheartNewUI_CreateWindow(FiendwarFightSituationC, "超时空战况表开关", 770, 9, 30, 30, 0);
|
||||
// Win.ResetFocus();
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
local PIButton = Fiendwar_LenheartNewUI_ProgressIndicator(264, 11, 80, 10);
|
||||
PIButton.Controller = 1.0;
|
||||
PIButton.BaseX = 273;
|
||||
PIButton.EndX = 352;
|
||||
PIButton.BXposOffset = 79;
|
||||
PIButton.OnChangeControl = function(Controller) {
|
||||
AlphaValue = Controller;
|
||||
if (AlphaValue< 0.4) AlphaValue = 0.4;
|
||||
}.bindenv(this);
|
||||
Childrens.append(PIButton);
|
||||
|
||||
|
||||
//简易战况表复选框
|
||||
BaseSituationBtn = Fiendwar_LenheartNewUI_SwitchButton(198, 9);
|
||||
BaseSituationBtn.State = 0;
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//绘制简易动态Ani // obj -- ani路径 -- X -- Y -- ani名字
|
||||
function T_DrawDynamicAni(obj, aniFileName, x, y, aniname, Alpha) {
|
||||
local ani = obj.getVar().GetAnimationMap(aniname, aniFileName);
|
||||
ani.setRGBA(255, 255, 255, Alpha);
|
||||
sq_AnimationProc(ani);
|
||||
sq_drawCurrentFrame(ani, x, y, true);
|
||||
return ani;
|
||||
}
|
||||
|
||||
function DrawParty() {
|
||||
//绘制我的队伍
|
||||
if (RinDro_Fiendwar_Obj.MyRaidTeam) {
|
||||
local Mt = RinDro_Fiendwar_Obj.MyRaidTeam;
|
||||
if (!Mt) return;
|
||||
local PartyMaster;
|
||||
foreach(index, PartyMasterIcon in Mt.MembersList) {
|
||||
local XOffset = 0;
|
||||
local YOffset = 9 + (index * 22);
|
||||
|
||||
DrawImg("interface2/fiendwar_kr/navigation/partyseatnumber.img", 0, X + XOffset + 10, Y + YOffset);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/partyseatnumber.img", PartyMasterIcon.InfoObj.TeamId, X + XOffset + 10, Y + YOffset + 1);
|
||||
|
||||
sq_DrawBox(X + 30 + XOffset, Y + 1 + YOffset, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
|
||||
// //绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + XOffset - 12;
|
||||
local AYpos = AvatarObj.F[1][3] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + YOffset;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
local RgbaValue = sq_RGBA(255, 255, 255, (250 * AlphaValue).tointeger());
|
||||
if (PartyMasterIcon.InfoObj.Captain) RgbaValue = sq_RGBA(247, 214, 90, (250 * AlphaValue).tointeger());
|
||||
if (PartyMasterIcon.InfoObj.Captain) DrawImg("hud/fiendwarl.img", 18, X + 42 + XOffset, Y + 1 + YOffset);
|
||||
|
||||
local DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
if (PlayerGiveUpTime && PlayerGiveUpTime[index]) {
|
||||
local STime = ((PlayerGiveUpTime[index] - (Clock() - PlayerGiveUpFlagTime)) / 1000);
|
||||
DrawName = "复活时间: " + STime.tostring() + "秒";
|
||||
if (STime <= 0) DrawName = PartyMasterIcon.InfoObj.Name;
|
||||
}
|
||||
//绘制名字
|
||||
L_sq_DrawCode(DrawName, X + XOffset + 58, Y + YOffset + 4, RgbaValue, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//绘制背景框
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 0, X + 7, Y);
|
||||
//绘制建议进度表文字
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 71, X + 130, Y + 10);
|
||||
|
||||
//绘制透明度文字
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 72, X + 220, Y + 10);
|
||||
|
||||
|
||||
|
||||
DrawParty();
|
||||
|
||||
|
||||
|
||||
//Boss底层特效
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/boss_effect.ani", X + 720, Y + 110, "超时空战况表背景图BOSS区域", (250 * AlphaValue).tointeger());
|
||||
|
||||
//下路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linebottom.ani", X + 7, Y, "超时空战况表背景图下路特效B");
|
||||
//中路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linemiddle.ani", X + 7, Y, "超时空战况表背景图中路特效B");
|
||||
//上路特效
|
||||
Rindro_BaseToolClass.T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/linetop.ani", X + 7, Y, "超时空战况表背景图上路特效B");
|
||||
|
||||
//绘制地图
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 64, X + 7, Y + 1);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (Info) {
|
||||
foreach(Index, Value in Info) {
|
||||
if (Value.id != -1) {
|
||||
//裁切比例
|
||||
local SliceRate = 0;
|
||||
if (Value.e && Value.s) {
|
||||
SliceRate = (Value.e.tofloat() - (Clock().tofloat() - PackCurT.tofloat())) / Value.s.tofloat();
|
||||
}
|
||||
//BOSS暗
|
||||
if (Value.id == 28) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 60, X - 68 + SlotPos[Value.id][0], Y - 56 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//BOSS光
|
||||
else if (Value.id == 29) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 61, X - 68 + SlotPos[Value.id][0], Y - 56 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//兵营
|
||||
else if (Value.id == 10 || Value.id == 17 || Value.id == 27) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 5 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
//复活
|
||||
if (!Value.m) {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 55, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
//生成小怪
|
||||
else {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 54, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//前哨
|
||||
else if (Value.id == 7 || Value.id == 15 || Value.id == 24) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 4 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 54, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(50, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
} else if (Value.id == 6 || Value.id == 23) {
|
||||
//雷达
|
||||
if (Value.id == 6) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 2 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
}
|
||||
//炮塔
|
||||
else if (Value.id == 23) {
|
||||
local Offset = 0;
|
||||
if (!Value.m) Offset = 7;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 3 + Offset, X - 14 + SlotPos[Value.id][0], Y - 4 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//基地和出发点一定有框
|
||||
if (Value.id == 0 || Value.id == 1 || Value.id == 11 || Value.id == 18) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
//基地两边都画
|
||||
if (Value.id == 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X - 30 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X + 33 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
}
|
||||
} else {
|
||||
//有怪物
|
||||
if (Value.m || Value.n) {
|
||||
if (Value.m) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 27, X + 36 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
//如果不是这些 那就是移动怪 并且活着
|
||||
if (Value.id != 10 && Value.id != 17 && Value.id != 27 && Value.id != 28 && Value.id != 29 && Value.id != 7 && Value.id != 15 && Value.id != 24 && Value.id != 6 && Value.id != 23 && !Value.n) {
|
||||
//没人打
|
||||
if (Value.u.len()< 1) {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 56, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(52, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
//战斗中
|
||||
else {
|
||||
if (SliceRate != 0) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 53, X - 24 + SlotPos[Value.id][0], Y + 45 + SlotPos[Value.id][1]);
|
||||
DrawProgress(49, SliceRate, X - 10 + SlotPos[Value.id][0], Y + 51 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (Value.n) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 59, X + 36 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
}
|
||||
DrawImg("interface2/fiendwar_kr/navigation/monsterface.img", 14, X + 37 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 98, X + 38 + SlotPos[Value.id][0], Y + 37 + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
|
||||
//如果有玩家
|
||||
if (Value.u.len() >= 1) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 25, X - 10 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 26, X - 30 + SlotPos[Value.id][0], Y - 1 + SlotPos[Value.id][1]);
|
||||
|
||||
//说明有战斗
|
||||
if (Value.m) {
|
||||
//战斗特效
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/hexagon_ef_red.ani", X - 32 + SlotPos[Value.id][0], Y - 25 + SlotPos[Value.id][1], "超时空战况表战斗方格", (250 * AlphaValue).tointeger());
|
||||
} else {
|
||||
//TODO 这里判断有没有商人 没有商人画绿色 有画黄色
|
||||
T_DrawDynamicAni(obj, "common/fiendwar_kr/navigation/common/hexagon_ef_green.ani", X - 32 + SlotPos[Value.id][0], Y - 25 + SlotPos[Value.id][1], "超时空战况表安全方格", (250 * AlphaValue).tointeger());
|
||||
}
|
||||
//绘制队伍编号
|
||||
foreach(index, pos in Value.u) {
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 28 + pos, X - 24 + SlotPos[Value.id][0], Y + (index * 11) + 2 + SlotPos[Value.id][1]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//雷达死完要绘制怪物头像
|
||||
if (!RadarFlag) {
|
||||
if (Value.m || Value.n) {
|
||||
local ImgIndex = 0;
|
||||
if (Value.m && MonsterFace.rawin("m" + Value.m)) ImgIndex = MonsterFace["m" + Value.m];
|
||||
DrawImg("interface2/fiendwar_kr/navigation/monsterface.img", ImgIndex, X + 37 + SlotPos[Value.id][0], Y + SlotPos[Value.id][1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DrawFightTime(obj);
|
||||
}
|
||||
|
||||
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 DrawProgress(Index, SliceRate, X, Y) {
|
||||
if (!turret2) return;
|
||||
if (RadarFlag) SliceRate = 1.0;
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 48, X, Y);
|
||||
setClip(X, Y, X + (SliceRate * 61.0).tointeger(), Y + 3); //开始裁切
|
||||
DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", Index, X, Y);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//攻坚时间
|
||||
function DrawFightTime(obj) {
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 47, X + 576, Y - 9);
|
||||
if (EndTime) {
|
||||
local RealTime = EndTime - (Clock() - 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 Offset = 0;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", hours.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", minutes.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
Offset += 38;
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(0, 1).tointeger(), X + 657 + Offset, Y + 2);
|
||||
L_sq_DrawImg("interface2/fiendwar_kr/navigation/timenumberset.img", seconds.slice(1).tointeger(), X + 669 + Offset, Y + 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
//在基地
|
||||
if (RinDro_Fiendwar_Obj.BaseConfig && RinDro_Fiendwar_Obj.BaseConfig.channel_index.find("20") && L_sq_GetTownIndex() == RinDro_Fiendwar_Obj.BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) DrawParty();
|
||||
|
||||
// if (getroottable().rawin("FiendwarTotal") && RinDro_Fiendwar_Obj.EndTime) {
|
||||
// DrawFightTime(obj);
|
||||
// L_sq_DrawImg("interface2/fiendwar_kr/navigation/navigationframe.img", 13, X + 770, Y);
|
||||
// }
|
||||
|
||||
// //界面未打开
|
||||
// if (!this.Visible) {
|
||||
// //在甲板
|
||||
// if (RinDro_Fiendwar_Obj.BaseConfig && RinDro_Fiendwar_Obj.BaseConfig.channel_index.find("20") && L_sq_GetTownIndex() == RinDro_Fiendwar_Obj.BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) {
|
||||
// if (!MainButton) {
|
||||
// MainButton = LenheartBaseButton(X + 770, Y, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
// } else {
|
||||
// MainButton.Show();
|
||||
// if (MainButton.isLBActive()) {
|
||||
// this.Visible = true;
|
||||
// GetInfo();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
MainButton = null;
|
||||
CloseMainButton = null;
|
||||
CloseFlag = false;
|
||||
//顶层绘制
|
||||
function TopDraw(obj) {
|
||||
//界面未打开
|
||||
if (!this.Visible) {
|
||||
//在甲板
|
||||
if (RinDro_Fiendwar_Obj.BaseConfig && "channel_index" in RinDro_Fiendwar_Obj.BaseConfig && RinDro_Fiendwar_Obj.BaseConfig.channel_index.find("19") && "town_index" in RinDro_Fiendwar_Obj.BaseConfig && L_sq_GetTownIndex() == RinDro_Fiendwar_Obj.BaseConfig.town_index && (RinDro_Fiendwar_Obj.MyRaidState == 1 || RinDro_Fiendwar_Obj.MyRaidState == 3) && !CloseFlag) {
|
||||
|
||||
}
|
||||
|
||||
if (CloseFlag) {
|
||||
if (Clock() - CloseFlag >= 10)
|
||||
CloseFlag = false;
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
ExternalWindow.Show(obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Rindro_Fiendwar_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, 30, 30, "interface2/fiendwar_kr/navigation/navigationframe.img", 13);
|
||||
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 = 13;
|
||||
} else {
|
||||
button.Idx = 13;
|
||||
}
|
||||
}.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_Fiendwar_Obj.EndTime) {
|
||||
Window.DrawFightTime(obj);
|
||||
|
||||
}
|
||||
// Window.DrawSimpleSituation();
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
//在甲板
|
||||
if (RinDro_Fiendwar_Obj.BaseConfig && "channel_index" in RinDro_Fiendwar_Obj.BaseConfig && RinDro_Fiendwar_Obj.BaseConfig.channel_index.find("20") && "town_index" in RinDro_Fiendwar_Obj.BaseConfig && L_sq_GetTownIndex() == RinDro_Fiendwar_Obj.BaseConfig.town_index && (RinDro_Fiendwar_Obj.RaidStage == 1 || RinDro_Fiendwar_Obj.RaidStage == 3)) {
|
||||
Visible = true;
|
||||
} else {
|
||||
Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
81
Project/Fiendwar/FiendwarHallGoBossDgn.nut
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
文件名:FiendwarHallGoBossDgn.nut
|
||||
路径:Project/Fiendwar/FiendwarHallGoBossDgn.nut
|
||||
创建日期:2024-11-28 15:07
|
||||
文件用途:进入罗什的窗口
|
||||
*/
|
||||
class FiendwarHallGoBossDgnC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
Dark = 0;
|
||||
Light = 0;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
Childrens = [];
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
//黑暗按钮
|
||||
local DarkButton = LenheartNewUI_BaseButton(4, 20, 264, 48, "interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 1);
|
||||
DarkButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063059,
|
||||
key = 28
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
if (Dark) DarkButton.State = 8;
|
||||
Childrens.append(DarkButton);
|
||||
//纯白按钮
|
||||
local LightButton = LenheartNewUI_BaseButton(4, 68, 264, 48, "interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 5);
|
||||
LightButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063059,
|
||||
key = 29
|
||||
}
|
||||
Rindro_BaseToolClass.SendPackEx(T);
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
if (Light) LightButton.State = 8;
|
||||
Childrens.append(LightButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
L_sq_DrawWindow(X, Y + 10, 246, 85, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawWindow(X, Y + 10, 246, 85, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
|
||||
// L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 0, X + 11, Y + 21);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 25, X - 3, Y + 2);
|
||||
L_sq_DrawCode("量子时空传送站", X + 98, Y + 5, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
// L_sq_DrawImg("hud/fiendwarl.img", 10, X + 72, Y + 44);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
112
Project/Fiendwar/FiendwarNoti.nut
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
文件名:FiendwarNoti.nut
|
||||
路径:Project/Fiendwar/FiendwarNoti.nut
|
||||
创建日期:2024-11-26 14:45
|
||||
文件用途:
|
||||
*/
|
||||
class FiendwarNotiC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//消息内容
|
||||
Msg = null;
|
||||
//队长名称
|
||||
Name = null;
|
||||
//消息时间
|
||||
Timer = null;
|
||||
|
||||
//队伍聊天消息分发
|
||||
function FiendwarPartyNotiCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
Name = Jso.Name;
|
||||
Msg = Jso.msg;
|
||||
Timer = Clock();
|
||||
}
|
||||
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
//队伍聊天消息分发
|
||||
Pack_Control.rawset(20063018, FiendwarPartyNotiCallBack.bindenv(this));
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
//队长头像
|
||||
PartyMasterIcon = null;
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
if (!Name || !Msg) return;
|
||||
//绘制背景框
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 24, X + 134, Y + 180);
|
||||
//绘制队长图标
|
||||
// L_sq_DrawImg
|
||||
|
||||
if (FiendwarTotal.GetInstance().MyTeam) {
|
||||
local Mt = FiendwarTotal.GetInstance().MyTeam;
|
||||
local PartyMaster;
|
||||
foreach(index, value in Mt.MembersList) {
|
||||
if (value.InfoObj.Captain) {
|
||||
PartyMasterIcon = clone(value);
|
||||
}
|
||||
}
|
||||
|
||||
sq_DrawBox(X + 42 + 118, Y + 1 + 185, 22, 18, PartyMasterIcon.HandBoxColor[PartyMasterIcon.InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.D[0] + X + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][0] + 118;
|
||||
local AYpos = AvatarObj.D[1] + Y + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][1] + 185;
|
||||
setClip(AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2], AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3], AXpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][2] + 22, AYpos + PartyMasterIcon.OffsetArr[PartyMasterIcon.InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.C, AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//绘制队长名字
|
||||
L_sq_DrawCode(Name, X + 184, Y + 189, sq_RGBA(247, 214, 90, 255), 0, 1);
|
||||
//绘制点
|
||||
L_sq_DrawCode(" : ", X + 210, Y + 189, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
//绘制消息
|
||||
L_sq_DrawCode(Msg, X + 190 + LenheartTextClass.GetStringLength(Name), Y + 189, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
if (Name && Msg)
|
||||
Visible = true;
|
||||
else
|
||||
Visible = false;
|
||||
|
||||
if (Timer) {
|
||||
if (Clock() - Timer >= 3500) {
|
||||
Timer = null;
|
||||
Name = null;
|
||||
Msg = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
434
Project/Fiendwar/Rindro_Fiendwar.nut
Normal file
@@ -0,0 +1,434 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar.nut
|
||||
路径:Project/Fiendwar/Rindro_Fiendwar.nut
|
||||
创建日期:2024-08-13 09:30
|
||||
文件用途:超时空
|
||||
*/
|
||||
|
||||
|
||||
dofile("sqr/Project/Fiendwar/FiendFightLogic.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_CreateParty.nut");
|
||||
dofile("sqr/Project/Fiendwar/FiendwarHallGoBossDgn.nut");
|
||||
dofile("sqr/Project/Fiendwar/FiendwarFightSituation.nut");
|
||||
dofile("sqr/Project/Fiendwar/FiendwarNoti.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_Party.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PartyApplyJoin.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PartyFormation.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PartyHall.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PartyInfo.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PartyMemberInfo.nut");
|
||||
dofile("sqr/Project/Fiendwar/Rindro_Fiendwar_PlayerInteractive.nut");
|
||||
dofile("sqr/Project/Fiendwar/FiendReward.nut");
|
||||
|
||||
|
||||
//超时空核心数据类
|
||||
class RinDro_Fiendwar extends Rindro_BaseToolClass {
|
||||
//基础配置
|
||||
BaseConfig = null;
|
||||
//攻坚配置
|
||||
FightConfig = null;
|
||||
|
||||
//我的攻坚队状态
|
||||
MyRaidState = null;
|
||||
//我的攻坚队伍
|
||||
MyRaidTeam = null;
|
||||
//我的攻坚队伍ID
|
||||
MyRaidTeamId = null;
|
||||
//我的Cid
|
||||
MyCid = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//我的攻坚队攻坚阶段
|
||||
RaidStage = 0;
|
||||
//我的攻坚队伍头像存储
|
||||
Portrait = null;
|
||||
|
||||
|
||||
//超时空我的队伍窗口
|
||||
PartyWindow_Object = null;
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object = null;
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object = null;
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object = null;
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object = null;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//攻坚开始动画的Flag
|
||||
DrawStartAniMark = false;
|
||||
|
||||
|
||||
//请求基础信息配置
|
||||
function GetFiendwarBase() {
|
||||
local T = {
|
||||
op = 20063501,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
//请求掉线配置信息
|
||||
function GetFiendwarDown() {
|
||||
local T = {
|
||||
op = 20063063,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
//基础信息配置
|
||||
function FiendwarBase(Chunk) {
|
||||
BaseConfig = Json.Decode(Chunk);
|
||||
FiendwarChannelTownLogicCallBack();
|
||||
}
|
||||
|
||||
//基础攻坚信息配置
|
||||
function FiendwarFightBase(Chunk) {
|
||||
FightConfig = Json.Decode(Chunk);
|
||||
}
|
||||
|
||||
//团本专属频道上线城镇移动包
|
||||
function FiendwarChannelTownLogicCallBack() {
|
||||
if (BaseConfig.channel_index.find("20")) {
|
||||
if (L_sq_GetTownIndex() != BaseConfig.town_index) {
|
||||
L_sq_MoveTown(BaseConfig.town_index, 0, 474, 249);
|
||||
}
|
||||
} else {
|
||||
//在超时空区域的 要转移回普通城镇
|
||||
if (L_sq_GetTownIndex() == BaseConfig.town_index) {
|
||||
L_sq_MoveTown(getroottable().rawin("RindroRaidNormalTown") ? getroottable().RindroRaidNormalTown : 2, getroottable().rawin("RindroRaidNormalArea") ? getroottable().RindroRaidNormalArea : 1, 474, 249);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//获取攻坚队信息回调
|
||||
function GetTeamInfoCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local ZlibStr = Jso.ZipS;
|
||||
Jso.ZipS = Json.Decode(L_sq_Dezlib(Jso.ZipS));
|
||||
Jso.team <- Jso.ZipS.team;
|
||||
|
||||
//取的窗口对象
|
||||
local Win = PartyWindow_Object;
|
||||
Win.InfoFlag = true;
|
||||
|
||||
//如果攻坚队伍信息中已经有了角色成员 清空成员对象集合
|
||||
for (local i = 0; i< Win.Childrens.len(); i++) {
|
||||
local Cobj = Win.Childrens[i];
|
||||
if (Cobj instanceof Rindro_FiendwarPartyInfoMemberC) {
|
||||
Win.Childrens.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
//重置成员数组
|
||||
Win.MembersList = [];
|
||||
|
||||
//清空是否为我的队伍状态
|
||||
Win.IsMyTeam = false;
|
||||
//清空是否为队长状态
|
||||
Win.IsCaptain = false;
|
||||
//赋值队伍名称
|
||||
Win.TeamName = Jso.team.TeamName;
|
||||
//赋值队伍ID
|
||||
Win.TeamID = Jso.team.TeamId;
|
||||
|
||||
//还原头像
|
||||
Portrait = {};
|
||||
//遍历Team包 用于构造队伍窗口中的每一位成员
|
||||
foreach(_index, MemberObj in Jso.team.characNum) {
|
||||
// for (local i = 0; i< 8; i++) {
|
||||
// local MemberObj = Jso.team.characNum[0];
|
||||
// local MemberObj = Jso.team.characNum[0];
|
||||
//说明我在这个攻坚队里
|
||||
if (Jso.cid == MemberObj.CID) {
|
||||
Win.IsMyTeam = true;
|
||||
MyRaidState = Jso.team.State;
|
||||
MyRaidTeam = PartyWindow_Object;
|
||||
//向全局类存入我的攻坚队伍ID
|
||||
MyRaidTeamId = Jso.team.TeamId;
|
||||
//存入我的CID
|
||||
MyCid = Jso.cid;
|
||||
//说明是队长
|
||||
if (Jso.cid == Jso.team.captainCid) {
|
||||
Win.IsCaptain = true;
|
||||
//存入我是攻坚队队长
|
||||
IsCaptain = true;
|
||||
}
|
||||
}
|
||||
//构造CID对应的装备数组方便绘制
|
||||
Portrait.rawset(MemberObj.CID, {
|
||||
EquVos = clone(MemberObj.equVos),
|
||||
Job = MemberObj.PlayerJob,
|
||||
TeamId = MemberObj.characNum + 1,
|
||||
Name = MemberObj.PlayerName,
|
||||
});
|
||||
local T = {
|
||||
PartyId = Jso.team.TeamId, //攻坚队ID
|
||||
TeamId = MemberObj.characNum + 1, //小队编号
|
||||
Level = MemberObj.PlayerLevel.tostring(), //等级
|
||||
Name = MemberObj.PlayerName, //名字
|
||||
JobName = MemberObj.PlayerGrowTypeJob, //职业名
|
||||
Job = MemberObj.PlayerJob, //职业编号
|
||||
StkHasFlag = MemberObj.isPrepare, //是否拥有攻坚材料
|
||||
EquVos = MemberObj.equVos, //装备List 用于显示头像
|
||||
Captain = MemberObj.CaptainBool, //是否为攻坚队队长
|
||||
Cid = MemberObj.CID, //Cid
|
||||
OnlineState = MemberObj.onLineStart, //在线状态
|
||||
ExitTime = MemberObj.exitTime, //离队时间
|
||||
PlayerSession = MemberObj.PlayerSession, //玩家在世界中的Session 用于进行原生用户操作
|
||||
ClearanceCount = MemberObj.ClearanceCount, //通关次数
|
||||
ClearanceCountMax = FightConfig.rewardCondition, //总通关次数
|
||||
}
|
||||
//通过类构造并添加队伍成员UI对象
|
||||
local TeamBuf = Rindro_FiendwarPartyInfoMemberC(T);
|
||||
Win.AddChild(TeamBuf);
|
||||
Win.MembersList.append(TeamBuf);
|
||||
}
|
||||
|
||||
if (("OpenWin" in Jso)) {
|
||||
//开启队伍窗口显示
|
||||
Win.Visible = true;
|
||||
//设置置顶
|
||||
Win.ResetFocus();
|
||||
}
|
||||
}
|
||||
|
||||
//攻坚队攻坚开始回调
|
||||
function RaidStartFightCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RaidStage = 1;
|
||||
MyRaidState = 1;
|
||||
|
||||
//在获取一下攻坚队信息
|
||||
local Jso = {
|
||||
op = 20063011
|
||||
}
|
||||
SendPackEx(Jso);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//上次刷新信息包的时间
|
||||
PackCurT = null;
|
||||
|
||||
//攻坚队信息包
|
||||
function RaidFightInfoCallBack(Chunk) {
|
||||
PackCurT = Clock();
|
||||
local Info = Json.Decode(Chunk).fightInfo;
|
||||
EndTime = Info.endTime;
|
||||
|
||||
if (FightSituationWindow_Object) FightSituationWindow_Object.InitInfo(Info);
|
||||
|
||||
//如果存在
|
||||
if (MyRaidTeam && MyRaidTeam.InfoFlag) {
|
||||
for (local i = 0; i< MyRaidTeam.MembersList.len(); i++) {
|
||||
local PInfo = MyRaidTeam.MembersList[i].InfoObj;
|
||||
local CID = PInfo.Cid;
|
||||
|
||||
local Flag = false;
|
||||
foreach(scid in Info.Standby) {
|
||||
if (scid == CID) Flag = true;
|
||||
}
|
||||
if (Flag) {
|
||||
MyRaidTeam.MembersList[i].InfoObj.Standby <- true;
|
||||
} else {
|
||||
MyRaidTeam.MembersList[i].InfoObj.Standby <- false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//收到奖励包
|
||||
function RaidRewardInfoCallBack(Chunk) {
|
||||
local Info = Json.Decode(Chunk);
|
||||
RewardWindow_Object.Init(Info);
|
||||
}
|
||||
|
||||
//收到初始化包
|
||||
function RaidInitCallBack(Chunk) {
|
||||
//我的攻坚队状态
|
||||
MyRaidState = null;
|
||||
//我的攻坚队伍
|
||||
MyRaidTeam = null;
|
||||
//我的攻坚队伍ID
|
||||
MyRaidTeamId = null;
|
||||
//我的Cid
|
||||
MyCid = null;
|
||||
//我是否是攻坚队队长
|
||||
IsCaptain = null;
|
||||
//结束时间
|
||||
EndTime = null;
|
||||
//我的攻坚队攻坚阶段
|
||||
RaidStage = 0;
|
||||
//我的攻坚队伍头像存储
|
||||
Portrait = null;
|
||||
|
||||
//超时空我的队伍窗口
|
||||
PartyWindow_Object.DestroyWindow();
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object.DestroyWindow();
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object.DestroyWindow();
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object.DestroyWindow();
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object.DestroyWindow();
|
||||
|
||||
//超时空我的队伍窗口
|
||||
PartyWindow_Object = null;
|
||||
//攻坚战况表窗口
|
||||
FightSituationWindow_Object = null;
|
||||
//攻坚大厅窗口
|
||||
PartyHallWindow_Object = null;
|
||||
//翻牌奖励窗口
|
||||
RewardWindow_Object = null;
|
||||
//编队窗口
|
||||
PartyFormationWindow_Object = null;
|
||||
|
||||
}
|
||||
|
||||
MonsterFMap = [202210052, 202210053, 202210054, 202210055];
|
||||
//火山怪物投放包
|
||||
function MonsterSendCallBack(Chunk) {
|
||||
local Info = Json.Decode(Chunk);
|
||||
if (sq_GetCurrentModuleType() == 3) {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
obj = sq_ObjectToSQRCharacter(obj);
|
||||
obj.sq_SendCreatePassiveObjectPacket(MonsterFMap[Info.id], 0, 120, 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
constructor() {
|
||||
// DrawStartAniMark = true;
|
||||
// DrawStartAniT = Clock();
|
||||
|
||||
Pack_Control.rawset(20063028, RaidStartFightCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063016, RaidFightInfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063004, GetTeamInfoCallBack.bindenv(this));
|
||||
Pack_Control.rawset(20063036, FiendwarFightBase.bindenv(this));
|
||||
//攻坚奖励包
|
||||
Pack_Control.rawset(20063026, RaidRewardInfoCallBack.bindenv(this));
|
||||
//初始化包 退出队伍 或者 被 请出队伍
|
||||
Pack_Control.rawset(20063008, RaidInitCallBack.bindenv(this));
|
||||
//火山怪物投放
|
||||
Pack_Control.rawset(20063050, MonsterSendCallBack.bindenv(this));
|
||||
//绘制动画包
|
||||
Pack_Control.rawset(20063038, RaidPlayAniCallBack.bindenv(this));
|
||||
|
||||
|
||||
//获取基础配置回调包
|
||||
Pack_Control.rawset(20063502, FiendwarBase.bindenv(this));
|
||||
//第一次上线要重新请求一下位置信息
|
||||
GetFiendwarBase();
|
||||
//看看是否有断线重连
|
||||
GetFiendwarDown();
|
||||
FiendFightLogicC_Object = FiendFightLogicC();
|
||||
}
|
||||
|
||||
|
||||
FiendFightLogicC_Object = null;
|
||||
|
||||
function Proc(obj) {
|
||||
PartyHallWindow_Object = LenheartNewUI_CreateWindow(Rindro_Fiendwar_PartyHallC, "新超时空攻坚大厅窗口", ((getroottable().Rindro_Scr_Width - 478)).tointeger(), 40, 478, 434, 18);
|
||||
PartyFormationWindow_Object = LenheartNewUI_CreateWindow(Rindro_FiendwarPartyFormation, "超时空我的队伍编队窗口", 375, 190, 294, 192, 18);
|
||||
FightSituationWindow_Object = LenheartNewUI_CreateWindow(FiendwarFightSituationC, "超时空攻坚战况表", 0, 8, 770, 600, 0);
|
||||
PartyWindow_Object = LenheartNewUI_CreateWindow(Rindro_FiendwarPartyInfoC, "超时空我的队伍窗口", 6, 15, 354, 566 - 255, 18);
|
||||
RewardWindow_Object = LenheartNewUI_CreateWindow(FiendRewardC, "超时空翻牌奖励窗口", 0, 0, 0, 0, 0);
|
||||
LenheartNewUI_CreateWindow(FiendwarNotiC, "超时空攻坚队伍消息分发", 0, 0, 0, 0, 0);
|
||||
|
||||
if (FightSituationWindow_Object) FightSituationWindow_Object.TopDraw(obj);
|
||||
|
||||
//绘制动画
|
||||
DrawPlayAni(obj);
|
||||
|
||||
if (FiendFightLogicC_Object) FiendFightLogicC_Object.Proc(obj);
|
||||
}
|
||||
|
||||
|
||||
DrawPlayAniMark = null;
|
||||
DrawPlayAniT = null;
|
||||
|
||||
function RaidPlayAniCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
DrawPlayAniMark = Jso.type;
|
||||
DrawPlayAniT = Clock();
|
||||
}
|
||||
|
||||
//绘制通关副本动画
|
||||
function DrawPlayAni(obj) {
|
||||
if (!DrawPlayAniMark || !DrawPlayAniT) return;
|
||||
local Offset = 0;
|
||||
if (getroottable().Rindro_Scr_Width > 800) Offset = ((getroottable().Rindro_Scr_Width - 800) / 2);
|
||||
local Ct = Clock() - DrawPlayAniT;
|
||||
switch (DrawPlayAniMark) {
|
||||
case 1: //通关擎天A
|
||||
case 2: //通关擎天B
|
||||
case 13: //通关擎天B
|
||||
local Ani = T_DrawDynamicAni(obj, "common/anton/title/04_clear_back.ani", 0 + Offset, 180, "超时空通关擎天A" + DrawPlayAniT);
|
||||
local str = "擎天之柱A";
|
||||
if (DrawPlayAniMark == 2) str = "擎天之柱B"
|
||||
if (DrawPlayAniMark == 13) str = "黑色火山"
|
||||
if (Ct >= 350 && Ct <= 1400) L_sq_DrawCode(str, 236 + Offset + 158 - LenheartTextClass.GetStringLength(str) / 2, 244, sq_RGBA(255, 146, 0, 250), 0, 1);
|
||||
break;
|
||||
case 5:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/00_start_back.ani", 401 + Offset, 210 + 26, "超时空阻截开始" + DrawPlayAniT);
|
||||
break;
|
||||
case 6:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/02_success_back.ani", 401 + Offset, 210 + 26, "超时空阻截成功" + DrawPlayAniT);
|
||||
break;
|
||||
case 7:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/01_fail_back.ani", 401 + Offset, 210 + 26, "超时空阻截失败" + DrawPlayAniT);
|
||||
break;
|
||||
case 8:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/00_start_back_1.ani", 401 + Offset, 210 + 26, "超时空灭杀开始" + DrawPlayAniT);
|
||||
break;
|
||||
case 9:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/02_success_back_1.ani", 401 + Offset, 210 + 26, "超时空灭杀成功" + DrawPlayAniT);
|
||||
break;
|
||||
case 10:
|
||||
T_DrawDynamicAni(obj, "common/luke/newtile/01_fail_back_1.ani", 401 + Offset, 210 + 26, "超时空灭杀失败" + DrawPlayAniT);
|
||||
break;
|
||||
case 11:
|
||||
case 12:
|
||||
T_DrawDynamicAni(obj, "common/anton/title/03_warning_back.ani", 0 + Offset, 210 + 26, "超时空火山警告" + DrawPlayAniT);
|
||||
local str = "火山能量即将过载,请立即前往压制!!!";
|
||||
if (DrawPlayAniMark == 12) str = "震颤的大地已经复活,请立即前往压制!!!"
|
||||
if (Ct >= 350 && Ct <= 1600) L_sq_DrawCode(str, 236 + Offset + 158 - LenheartTextClass.GetStringLength(str) / 2, 320, sq_RGBA(255, 50, 50, 250), 0, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (Ct >= 3000) {
|
||||
DrawPlayAniMark = null;
|
||||
DrawPlayAniT = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getroottable().rawdelete("RinDro_Fiendwar_Obj");
|
||||
|
||||
function Lenheart_Rindro_Fiendwar_New(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("RinDro_Fiendwar_Obj")) {
|
||||
RootTab.rawset("RinDro_Fiendwar_Obj", RinDro_Fiendwar());
|
||||
} else {
|
||||
RootTab["RinDro_Fiendwar_Obj"].Proc(obj);
|
||||
}
|
||||
}
|
||||
|
||||
if (getroottable().rawin("LenheartTopFuncTab")) {
|
||||
getroottable()["LenheartTopFuncTab"].rawset("Lenheart_Rindro_Fiendwar_NewFunc", Lenheart_Rindro_Fiendwar_New);
|
||||
} else {
|
||||
local T = {};
|
||||
T.rawset("Lenheart_Rindro_Fiendwar_NewFunc", Lenheart_Rindro_Fiendwar_New);
|
||||
getroottable().rawset("LenheartTopFuncTab", T);
|
||||
}
|
||||
106
Project/Fiendwar/Rindro_Fiendwar_CreateParty.nut
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_CreateParty.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_CreateParty.nut
|
||||
创建日期:2024-07-15 20:28
|
||||
文件用途:超时空创建队伍窗口
|
||||
*/
|
||||
|
||||
|
||||
class Rindro_FiendwarCreatePartyC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
DeBugMode = false;
|
||||
|
||||
X = 290;
|
||||
Y = 220;
|
||||
//输入框
|
||||
InputObject = null;
|
||||
|
||||
//时装 帽子 头部 脸 上衣 下装 鞋子 胸部 腰部 皮肤 光环
|
||||
AvatarInfoIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3030, 0x3034];
|
||||
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(266, 2, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
DestroyWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
local OkButton = LenheartNewUI_ButtonText(78, 124, 5, "确定");
|
||||
OkButton.SetTextOffset(0, 1);
|
||||
OkButton.OnClick = function() {
|
||||
|
||||
//如果队伍名输出框的文字长度大于0就创建队伍 创建时告诉服务端自己的 头发 帽子 脸部 皮肤
|
||||
if (InputObject.str.len() > 0) {
|
||||
|
||||
local C_Object = L_sq_RA(0x1ab7cdc);
|
||||
local avataritemsbuf = [];
|
||||
foreach(offset in AvatarInfoIdx) {
|
||||
local AvatarEquiAddress = L_sq_RA(C_Object + offset);
|
||||
if (AvatarEquiAddress >= 0x400000) {
|
||||
local Ab = [];
|
||||
local NormalIndex = L_sq_RA(AvatarEquiAddress + 0x1c);
|
||||
local ExIndex = L_sq_RA(AvatarEquiAddress + 0x13E0);
|
||||
Ab.append(NormalIndex);
|
||||
Ab.append(ExIndex);
|
||||
avataritemsbuf.append(Ab);
|
||||
} else {
|
||||
local Ab = [];
|
||||
Ab.append(0);
|
||||
Ab.append(0);
|
||||
avataritemsbuf.append(Ab);
|
||||
}
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = 20063001,
|
||||
teamsName = InputObject.str,
|
||||
items = avataritemsbuf,
|
||||
}
|
||||
SendPackEx(T);
|
||||
DestroyWindow();
|
||||
}
|
||||
}.bindenv(this);
|
||||
AddChild(OkButton);
|
||||
|
||||
local CloseButton = LenheartNewUI_ButtonText(144, 124, 5, "取消");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
DestroyWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
InputObject = LenheartNewUI_BaseInput(62, 68, 152, 20);
|
||||
AddChild(InputObject);
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
L_sq_DrawWindow(X, Y + 10, 260, 120, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawWindow(X, Y + 10, 260, 120, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/raid_areaimg_fiend.img", 0, X + 11, Y + 21);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 9, X - 2, Y + 2);
|
||||
L_sq_DrawCode("创建攻坚队", X + 112, Y + 3, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 10, X + 72, Y + 44);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
79
Project/Fiendwar/Rindro_Fiendwar_Party.nut
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_Party.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_Party.nut
|
||||
创建日期:2024-07-15 21:02
|
||||
文件用途:超时空队伍对象
|
||||
*/
|
||||
|
||||
class Rindro_FiendwarPartyC extends LenheartNewUI_CommonUi {
|
||||
X = 0;
|
||||
Y = 0;
|
||||
Width = null;
|
||||
Height = null;
|
||||
TeamObj = null;
|
||||
//选中状态
|
||||
SelectState = false;
|
||||
//攻坚状态
|
||||
OffensiveState = 0;
|
||||
|
||||
constructor(gTeamObj) {
|
||||
//拿到信息Map
|
||||
TeamObj = gTeamObj;
|
||||
//设定宽高 坐标不重要 会被父窗口的Sync同步坐标
|
||||
this.Width = 458;
|
||||
this.Height = 21;
|
||||
|
||||
this.OnClick = function() {
|
||||
//还原父对象中其他攻坚队伍类 选中自己
|
||||
foreach(Obj in Parent.Childrens) {
|
||||
if (Obj instanceof Rindro_FiendwarPartyC) {
|
||||
Obj.SelectState = false;
|
||||
}
|
||||
}
|
||||
SelectState = !SelectState;
|
||||
//发送查看攻坚队具体信息包
|
||||
local T = {
|
||||
op = 20063013,
|
||||
teamsId = TeamObj.TeamId
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
LenheartNewUI_CommonUi.constructor(10, 82, this.Width, this.Height);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//绘制底槽
|
||||
L_sq_DrawImg("hud/rindroanton.img", 4, X, Y);
|
||||
|
||||
//绘制队伍编号
|
||||
L_sq_DrawCode(TeamObj.TeamId, X + 22 - LenheartTextClass.GetStringLength(TeamObj.TeamId) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制队长头像
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 55, X + 52, Y + 7);
|
||||
try {
|
||||
local channel_index = FiendwarTotal.GetInstance().BaseConfig.channel_index;
|
||||
channel_index = channel_index.slice(channel_index.len() - 2, channel_index.len());
|
||||
//绘制频道信息
|
||||
L_sq_DrawCode(channel_index, X + 102 - LenheartTextClass.GetStringLength(channel_index) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
} catch (exception) {
|
||||
|
||||
}
|
||||
//绘制攻坚队名称
|
||||
L_sq_DrawCode(TeamObj.TeamName, X + 130, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
// print(TeamObj.State);
|
||||
//绘制攻坚队攻坚状态
|
||||
L_sq_DrawImg("hud/newantonui.img", 4 + TeamObj.State, X + 314, Y + 2);
|
||||
|
||||
local PartyPlayerCountStr = TeamObj.TeamPlayerCount + " / " + 20;
|
||||
//绘制攻坚队队员数量
|
||||
L_sq_DrawCode(PartyPlayerCountStr, X + 434 - LenheartTextClass.GetStringLength(PartyPlayerCountStr) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
if (SelectState) {
|
||||
L_sq_DrawImg("hud/rindroanton.img", 5, X, Y);
|
||||
}
|
||||
|
||||
if (isInRect) {
|
||||
L_sq_DrawImg("hud/rindroanton.img", 5, X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
258
Project/Fiendwar/Rindro_Fiendwar_PartyApplyJoin.nut
Normal file
@@ -0,0 +1,258 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PartyApplyJoin.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PartyApplyJoin.nut
|
||||
创建日期:2024-07-16 21:54
|
||||
文件用途:超时空玩家申请加入攻坚队
|
||||
*/
|
||||
class Rindro_FiendwarApplyJoinC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//角色对象
|
||||
Charc = null;
|
||||
//角色等级
|
||||
Level = "100级";
|
||||
//角色名称
|
||||
Name = "凌众K";
|
||||
//角色职业
|
||||
Job = 0;
|
||||
//角色决斗等级
|
||||
PvpLevel = 1;
|
||||
//职业名称
|
||||
JobName = "大暗黑天";
|
||||
//角色复活币
|
||||
Coin = "139个";
|
||||
//角色疲劳值
|
||||
Fatigue = "156";
|
||||
//战斗力
|
||||
Combat = "170051206";
|
||||
//通过次数
|
||||
ClearanceCount = 63;
|
||||
//玩家世界Session
|
||||
PlayerSession = 0;
|
||||
|
||||
//请求者信息集合
|
||||
RequestJoinTeamArr = null;
|
||||
NowSelectJoinIndex = 0;
|
||||
|
||||
//角色头像集合
|
||||
AvatarArr = null;
|
||||
|
||||
//初始化Flag
|
||||
InitFlag = false;
|
||||
|
||||
//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],
|
||||
]
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
RequestJoinTeamArr = [];
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
function InitInfo() {
|
||||
local InfoObj = RequestJoinTeamArr[NowSelectJoinIndex];
|
||||
Charc = InfoObj.Charc;
|
||||
//角色等级
|
||||
Level = InfoObj.Level;
|
||||
//角色名称
|
||||
Name = InfoObj.Name;
|
||||
//角色职业
|
||||
Job = InfoObj.Job;
|
||||
//角色决斗等级
|
||||
PvpLevel = InfoObj.PvpLevel;
|
||||
//职业名称
|
||||
JobName = InfoObj.JobName;
|
||||
//角色复活币
|
||||
Coin = InfoObj.Coin + "个";
|
||||
//角色疲劳值
|
||||
Fatigue = InfoObj.Fatigue.tostring();
|
||||
//战斗力
|
||||
Combat = InfoObj.Combat;
|
||||
//通过次数
|
||||
ClearanceCount = InfoObj.ClearanceCount;
|
||||
//头像
|
||||
AvatarArr = InfoObj.AvatarArr;
|
||||
//玩家世界Session
|
||||
this.PlayerSession = InfoObj.PlayerSession;
|
||||
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
InitFlag = true;
|
||||
}
|
||||
|
||||
function PopOne() {
|
||||
if (RequestJoinTeamArr.len() > 1) {
|
||||
RequestJoinTeamArr.remove(0);
|
||||
InitInfo();
|
||||
} else {
|
||||
RequestJoinTeamArr = [];
|
||||
CloseWindow();
|
||||
}
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(244, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
//冒险团按钮
|
||||
local MButton = LenheartNewUI_ButtonText(24, 114, 15, "冒险团信息");
|
||||
MButton.SetTextOffset(-13, 2);
|
||||
AddChild(MButton);
|
||||
//冒险图鉴按钮
|
||||
local FQButton = LenheartNewUI_ButtonText(95, 113, 15, "冒险图鉴");
|
||||
FQButton.State = 8;
|
||||
FQButton.SetTextOffset(-7, 2);
|
||||
AddChild(FQButton);
|
||||
//查看信息按钮
|
||||
local CButton = LenheartNewUI_ButtonText(166, 114, 15, "查看信息");
|
||||
CButton.SetTextOffset(-7, 2);
|
||||
CButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
// obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(8);
|
||||
L_sq_SendPackWord(this.PlayerSession);
|
||||
L_sq_SendPackByte(3);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(CButton);
|
||||
|
||||
//确认按钮
|
||||
local OkButton = LenheartNewUI_ButtonText(74, 192, -1, "是");
|
||||
OkButton.SetTextOffset(3, 2);
|
||||
OkButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063003,
|
||||
teamsId = RinDro_Fiendwar_Obj.MyRaidTeamId,
|
||||
applyCid = Charc.CID
|
||||
}
|
||||
SendPackEx(T);
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(OkButton);
|
||||
//拒绝按钮
|
||||
local NoButton = LenheartNewUI_ButtonText(130, 192, -1, "否");
|
||||
NoButton.SetTextOffset(3, 2);
|
||||
NoButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063019,
|
||||
charac = Charc.CID
|
||||
}
|
||||
SendPackEx(T);
|
||||
PopOne();
|
||||
}.bindenv(this);
|
||||
AddChild(NoButton);
|
||||
|
||||
//左翻页按钮
|
||||
local LeftButton = LenheartNewUI_BaseButton(90, 220, 15, 15, "interface/lenheartwindowcommon.img", 34);
|
||||
LeftButton.OnClick = function() {
|
||||
if (NowSelectJoinIndex > 0) NowSelectJoinIndex--;
|
||||
InitInfo();
|
||||
}.bindenv(this);
|
||||
AddChild(LeftButton);
|
||||
|
||||
//右翻页按钮
|
||||
local RightButton = LenheartNewUI_BaseButton(154, 220, 15, 15, "interface/lenheartwindowcommon.img", 38);
|
||||
RightButton.OnClick = function() {
|
||||
if (NowSelectJoinIndex< RequestJoinTeamArr.len() - 1) NowSelectJoinIndex++;
|
||||
InitInfo();
|
||||
}.bindenv(this);
|
||||
AddChild(RightButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (!InitFlag) return;
|
||||
//标题栏
|
||||
L_sq_DrawButton(X - 2, Y, 252, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//绘制窗口名字
|
||||
L_sq_DrawCode("攻坚队申请", X + 100, Y + 4, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 16, 240, 200, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制背景
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 15, X + 6, Y + 22);
|
||||
//绘制角色背景
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 14, X + 8, Y + 40);
|
||||
//绘制角色头像
|
||||
if (AvatarArr) {
|
||||
foreach(AvatarObj in AvatarArr) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[Job][0] - 8;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[Job][1] + 40;
|
||||
setClip(AXpos + OffsetArr[Job][2], AYpos + OffsetArr[Job][3], AXpos + OffsetArr[Job][2] + 22, AYpos + OffsetArr[Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
}
|
||||
//绘制角色等级
|
||||
L_sq_DrawCode(Level, X + 78 - LenheartTextClass.GetStringLength(Level) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色名字
|
||||
L_sq_DrawCode(Name, X + 137 - LenheartTextClass.GetStringLength(Name) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色职业类型图标
|
||||
if (Job != 4) L_sq_DrawImg("hud/fiendwarl.img", 16, X + 176, Y + 43);
|
||||
//绘制角色职业名称
|
||||
L_sq_DrawCode(JobName, X + 224 - LenheartTextClass.GetStringLength(JobName) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X + 21, Y + 65, 30, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawWindow(X + 62, Y + 65, 156, 30, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制决斗等级
|
||||
local PvpImg = PvpLevel / 6;
|
||||
L_sq_DrawImg("hud/fiendwarl1.img", 99, X + 25, Y + 74);
|
||||
L_sq_DrawCode(PvpLevel.tostring(), X + 45 - LenheartTextClass.GetStringLength(PvpLevel.tostring()) / 2, Y + 91, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制各项信息
|
||||
L_sq_DrawCode("复活币:", X + 70, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Coin, X + 134 - LenheartTextClass.GetStringLength(Coin) / 2, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode("疲劳值:", X + 158, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Fatigue, X + 216 - LenheartTextClass.GetStringLength(Fatigue) / 2, Y + 76, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode("战斗力:", X + 70, Y + 93, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
L_sq_DrawCode(Combat, X + 170 - LenheartTextClass.GetStringLength(Combat) / 2, Y + 93, sq_RGBA(74, 162, 86, 255), 0, 1);
|
||||
L_sq_DrawCode("通关超时空攻坚战" + ClearanceCount + "次", X + 130 - LenheartTextClass.GetStringLength("通关超时空攻坚战" + ClearanceCount + "次") / 2, Y + 144, sq_RGBA(221, 213, 147, 255), 0, 1);
|
||||
L_sq_DrawCode("申请加入攻坚队。", X + 87, Y + 160, sq_RGBA(160, 132, 75, 255), 0, 1);
|
||||
L_sq_DrawCode("请确定是否同意?", X + 87, Y + 176, sq_RGBA(160, 132, 75, 255), 0, 1);
|
||||
|
||||
L_sq_DrawWindow(X + 77, Y + 216, 100, 20, "interface/lenheartwindowcommon.img", 204, 4, 14, 4, 14);
|
||||
//绘制页数
|
||||
local Str = (NowSelectJoinIndex + 1) + " / " + RequestJoinTeamArr.len();
|
||||
L_sq_DrawCode(Str, X + 137 - LenheartTextClass.GetStringLength(Str) / 2, Y + 222, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
}
|
||||
121
Project/Fiendwar/Rindro_Fiendwar_PartyFormation.nut
Normal file
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PartyFormation.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PartyFormation.nut
|
||||
创建日期:2024-07-16 16:22
|
||||
文件用途:超时空 队内编队
|
||||
*/
|
||||
//编队用按钮需要传递参数所以重写
|
||||
class Rindro_FiendwarPartyInfoEdit_BaseButton extends LenheartNewUI_BaseButton {
|
||||
MyInfoIndex = 0;
|
||||
constructor(X, Y, W, H, Path, Idx, InfoIndex) {
|
||||
MyInfoIndex = InfoIndex;
|
||||
LenheartNewUI_BaseButton.constructor(X, Y, W, H, Path, Idx);
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
if (isLBDown && OnClick) {
|
||||
OnClick(MyInfoIndex);
|
||||
}
|
||||
isLBDown = false;
|
||||
}
|
||||
}
|
||||
//编队窗口
|
||||
class Rindro_FiendwarPartyFormation extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
Visible = false;
|
||||
|
||||
PartyMarkFlag = -1;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
//搜索按钮
|
||||
local QdButton = LenheartNewUI_ButtonText(10, 157, 5, "签到");
|
||||
QdButton.State = 8;
|
||||
QdButton.SetTextOffset(0, 1);
|
||||
AddChild(QdButton);
|
||||
|
||||
//解散队伍按钮
|
||||
local BreakPartyButton = LenheartNewUI_ButtonText(80, 158, 5, "解散队伍");
|
||||
BreakPartyButton.SetTextOffset(-12, 1);
|
||||
BreakPartyButton.OnClick = function() {
|
||||
PartyMarkFlag = 99;
|
||||
}.bindenv(this);
|
||||
AddChild(BreakPartyButton);
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_ButtonText(150, 158, 5, "关闭");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
for (local i = 0; i< 8; i++) {
|
||||
//右翻页按钮
|
||||
local PartyIndexButton = Rindro_FiendwarPartyInfoEdit_BaseButton(12 + (i % 2 * 136), 35 + ((i / 2) * 30), 41, 17, "interface/newstyle/windows/party/party_icon.img", 3 + (i * 3), i);
|
||||
//继承类 并重写 调用时传入InfoIndex
|
||||
PartyIndexButton.OnClick = function(MyInfoIndex) {
|
||||
PartyMarkFlag = MyInfoIndex;
|
||||
}.bindenv(this);
|
||||
AddChild(PartyIndexButton);
|
||||
}
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//标题栏
|
||||
L_sq_DrawButton(X - 1, Y, 284, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 17, 272, 154, "interface/lenheartwindowcommon.img", 213, 12, 2, 13, 2);
|
||||
|
||||
for (local q = 0; q< 8; q++) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 358, X + 60 + (q % 2 * 136), Y + 34 + ((q / 2) * 30));
|
||||
for (local i = 0; i< 3; i++) {
|
||||
L_sq_DrawImg("interface/lenheartwindowcommon.img", 361, X + 80 + (q % 2 * 136) + (i * 20), Y + 34 + ((q / 2) * 30));
|
||||
}
|
||||
}
|
||||
|
||||
if (PartyMarkFlag != -1) {
|
||||
R_Mouse.SetType(151);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
//还原编队的鼠标指针
|
||||
if (this.PartyMarkFlag != -1) {
|
||||
this.PartyMarkFlag = -1;
|
||||
R_Mouse.SetType(0);
|
||||
}
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
}
|
||||
347
Project/Fiendwar/Rindro_Fiendwar_PartyHall.nut
Normal file
@@ -0,0 +1,347 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PartyHall.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PartyHall.nut
|
||||
创建日期:2024-07-15 16:50
|
||||
文件用途:超时空组队大厅
|
||||
*/
|
||||
class Rindro_Fiendwar_PartyHallC extends LenheartNewUI_Windows {
|
||||
|
||||
Visible = false;
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
|
||||
//页数
|
||||
Page = 0;
|
||||
//一页放多少个队伍
|
||||
PageMaxCount = 13;
|
||||
//攻坚队List
|
||||
PartyList = null;
|
||||
|
||||
|
||||
|
||||
//获取所有队伍
|
||||
function GetAllTeamCall() {
|
||||
local Jso = {
|
||||
op = 20063011
|
||||
}
|
||||
SendPack(Jso);
|
||||
}
|
||||
|
||||
//获取所有队伍收包
|
||||
function GetAllTeamCallCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
|
||||
//清除原来的List PartyList可以直接清除 但是Childrens中的窗口需要调用底层方法清除队伍类
|
||||
PartyList = [];
|
||||
|
||||
RemoveAllParty();
|
||||
//遍历包构造攻坚队UI对象
|
||||
foreach(TeamsSimple in Jso.TeamSimList) {
|
||||
local RealState = 0;
|
||||
if (TeamsSimple.State == 1) RealState = 1;
|
||||
else if (TeamsSimple.State == 2) RealState = 0;
|
||||
else if (TeamsSimple.State == 3) RealState = 2;
|
||||
else if (TeamsSimple.State == 4) RealState = 3;
|
||||
local T = {
|
||||
TeamId = TeamsSimple.TeamId.tostring(),
|
||||
TeamName = TeamsSimple.TeamName,
|
||||
TeamPlayerCount = TeamsSimple.TeamPlayerCount,
|
||||
State = RealState
|
||||
}
|
||||
local TeamBuf = Rindro_FiendwarPartyC(T);
|
||||
AddChild(TeamBuf);
|
||||
PartyList.append(TeamBuf);
|
||||
}
|
||||
//收到刷新队伍列表包时需要将队伍窗口关闭 //TODO
|
||||
// if ("Close" in Jso) LenheartNewUI_DestoryWindow("超时空我的队伍窗口");
|
||||
}
|
||||
|
||||
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
|
||||
PartyList = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
Pack_Control.rawset(20063002, GetAllTeamCallCallBack.bindenv(this));
|
||||
|
||||
|
||||
GetAllTeamCall();
|
||||
}
|
||||
|
||||
|
||||
OnlyPreparingBtn = null;
|
||||
OnlyPreparingFlag = 1;
|
||||
InputObject = null;
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(457, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
|
||||
//我的频道复选框
|
||||
local MyChannelBtn = LenheartNewUI_SwitchButtonText(16, 30, "我的频道");
|
||||
MyChannelBtn.State = 1;
|
||||
MyChannelBtn.ImgIndex = 358;
|
||||
MyChannelBtn.SetTextPos(12, 2);
|
||||
MyChannelBtn.Width = 76;
|
||||
MyChannelBtn.Height = 16;
|
||||
AddChild(MyChannelBtn);
|
||||
|
||||
//只查看招募中的攻坚队
|
||||
OnlyPreparingBtn = LenheartNewUI_SwitchButtonText(110, 30, "只查看招募中的攻坚队");
|
||||
OnlyPreparingBtn.ImgIndex = 358;
|
||||
OnlyPreparingBtn.SetTextPos(12, 2);
|
||||
OnlyPreparingBtn.Width = 76;
|
||||
OnlyPreparingBtn.Height = 16;
|
||||
OnlyPreparingBtn.OnClick = function() {
|
||||
switch (OnlyPreparingFlag) {
|
||||
case 0:
|
||||
OnlyPreparingFlag = 1;
|
||||
break;
|
||||
case 1:
|
||||
OnlyPreparingFlag = 0;
|
||||
break;
|
||||
}
|
||||
OnlyPreparingBtn.State = OnlyPreparingFlag;
|
||||
}.bindenv(this);
|
||||
AddChild(OnlyPreparingBtn);
|
||||
|
||||
//搜索队伍输入框
|
||||
InputObject = LenheartNewUI_BaseInput(260, 31, 80, 20);
|
||||
AddChild(InputObject);
|
||||
|
||||
//搜索按钮
|
||||
local FindButton = LenheartNewUI_ButtonText(348, 28, 5, "搜索");
|
||||
FindButton.SetTextOffset(0, 1);
|
||||
FindButton.OnClick = function() {
|
||||
if (InputObject.str.len() > 0) {
|
||||
|
||||
}
|
||||
}.bindenv(this);
|
||||
AddChild(FindButton);
|
||||
|
||||
//重置按钮
|
||||
local ResetButton = LenheartNewUI_ButtonText(408, 28, 5, "重置");
|
||||
ResetButton.SetTextOffset(0, 1);
|
||||
ResetButton.OnClick = function() {
|
||||
InputObject.str = "";
|
||||
}.bindenv(this);
|
||||
AddChild(ResetButton);
|
||||
|
||||
//编号按钮
|
||||
local ModelButton = LenheartNewUI_ButtonText(9, 56, -18, "编号");
|
||||
ModelButton.Idx = 163;
|
||||
ModelButton.DWidth = -8;
|
||||
ModelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ModelButton);
|
||||
|
||||
//状态按钮
|
||||
local StateButton = LenheartNewUI_ButtonText(51, 56, -18, "状态");
|
||||
StateButton.Idx = 163;
|
||||
StateButton.DWidth = -8;
|
||||
StateButton.SetTextOffset(-9, 1);
|
||||
AddChild(StateButton);
|
||||
|
||||
//频道按钮
|
||||
local ChannelButton = LenheartNewUI_ButtonText(93, 56, -18, "频道");
|
||||
ChannelButton.Idx = 163;
|
||||
ChannelButton.DWidth = -8;
|
||||
ChannelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ChannelButton);
|
||||
|
||||
//攻坚队名称按钮
|
||||
local PartyNameButton = LenheartNewUI_ButtonText(135, 56, 100, "攻坚队名称");
|
||||
PartyNameButton.Idx = 163;
|
||||
PartyNameButton.DWidth = 223;
|
||||
PartyNameButton.FillWidth = 1;
|
||||
PartyNameButton.FirstWidth = 21;
|
||||
PartyNameButton.SetTextOffset(26, 1);
|
||||
AddChild(PartyNameButton);
|
||||
|
||||
//阶段按钮
|
||||
local StageButton = LenheartNewUI_ButtonText(289, 56, 52, "阶段");
|
||||
StageButton.Idx = 163;
|
||||
StageButton.DWidth = 140;
|
||||
StageButton.FillWidth = 1;
|
||||
StageButton.FirstWidth = 21;
|
||||
StageButton.SetTextOffset(26, 1);
|
||||
AddChild(StageButton);
|
||||
|
||||
//队员数量按钮
|
||||
local TeammembersButton = LenheartNewUI_ButtonText(402, 56, 50, "队员数量");
|
||||
TeammembersButton.Idx = 163;
|
||||
TeammembersButton.FillWidth = 1;
|
||||
TeammembersButton.FirstWidth = 21;
|
||||
TeammembersButton.DWidth = 47;
|
||||
TeammembersButton.SetTextOffset(-8, 1);
|
||||
AddChild(TeammembersButton);
|
||||
|
||||
//创建攻坚队按钮
|
||||
local MyPartyButton = LenheartNewUI_ButtonText(15, 395, 30, "创建攻坚队");
|
||||
MyPartyButton.SetTextOffset(-6, 1);
|
||||
MyPartyButton.OnClick = function() {
|
||||
//有队伍则查看队伍信息
|
||||
if (RinDro_Fiendwar_Obj.MyRaidTeamId) {
|
||||
//发送查看攻坚队具体信息包
|
||||
local T = {
|
||||
op = 20063013,
|
||||
teamsId = RinDro_Fiendwar_Obj.MyRaidTeamId
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
//否则创建队伍
|
||||
else {
|
||||
local Win = LenheartNewUI_CreateWindow(Rindro_FiendwarCreatePartyC, "超时空创建队伍窗口", 290, 220, 284, 154, 18);
|
||||
Win.Visible = true;
|
||||
Win.ResetFocus();
|
||||
}
|
||||
}.bindenv(this);
|
||||
//设置动态回调改变按钮名称
|
||||
MyPartyButton.SetCallBackFunc(function(window) {
|
||||
if (RinDro_Fiendwar_Obj.MyRaidTeamId) window.TextStr = "我的攻坚队";
|
||||
else window.TextStr = "创建攻坚队";
|
||||
}.bindenv(this));
|
||||
|
||||
AddChild(MyPartyButton);
|
||||
|
||||
//左翻页按钮
|
||||
local LeftButton = LenheartNewUI_BaseButton(160, 400, 15, 15, "interface/lenheartwindowcommon.img", 34);
|
||||
LeftButton.OnClick = function() {
|
||||
if (Page > 0) Page--;
|
||||
}.bindenv(this);
|
||||
AddChild(LeftButton);
|
||||
|
||||
//右翻页按钮
|
||||
local RightButton = LenheartNewUI_BaseButton(220, 400, 15, 15, "interface/lenheartwindowcommon.img", 38);
|
||||
RightButton.OnClick = function() {
|
||||
if (Page<(((PartyList.len() / PageMaxCount)))) Page++;
|
||||
}.bindenv(this);
|
||||
AddChild(RightButton);
|
||||
|
||||
//进入待机按钮
|
||||
local FQButton = LenheartNewUI_ButtonText(300, 394, 20, "进入待机");
|
||||
FQButton.SetTextOffset(-5, 2);
|
||||
FQButton.State = 8;
|
||||
AddChild(FQButton);
|
||||
|
||||
//刷新按钮
|
||||
local RefreshButton = LenheartNewUI_BaseButton(410, 395, 25, 25, "interface/lenheartwindowcommon.img", 366);
|
||||
RefreshButton.OnClick = function() {
|
||||
GetAllTeamCall();
|
||||
}.bindenv(this);
|
||||
AddChild(RefreshButton);
|
||||
|
||||
//设置按钮
|
||||
local SettingButton = LenheartNewUI_BaseButton(440, 394, 15, 15, "interface/lenheartwindowcommon.img", 362);
|
||||
SettingButton.State = 8;
|
||||
AddChild(SettingButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 10, 540 * 0.85, 420 * 0.9, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
L_sq_DrawWindow(X + 6, Y + 19, 528 * 0.85, 47, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
//绘制背景框标题栏
|
||||
L_sq_DrawImg("hud/rindroanton.img", 3, X + 1, Y);
|
||||
|
||||
L_sq_DrawCode("寻找攻坚队", X + 217, Y + 3, sq_RGBA(179, 169, 135, 255), 0, 1);
|
||||
|
||||
//绘制队伍List
|
||||
DrawPartyList(obj);
|
||||
|
||||
L_sq_DrawWindow(X + 6, Y + 382, 528 * 0.85, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
//计算页数
|
||||
local PageStr = Page + 1 + " / " + ((PartyList.len() / PageMaxCount) + 1);
|
||||
//绘制当前页数
|
||||
L_sq_DrawCode(PageStr, X + 166 + LenheartTextClass.GetStringLength(PageStr) / 2, Y + 402, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
}
|
||||
|
||||
//重置所有选中
|
||||
function ResetAllSelect() {
|
||||
foreach(Index, TeamObj in PartyList) {
|
||||
TeamObj.SelectState = false;
|
||||
}
|
||||
}
|
||||
|
||||
//移除队伍
|
||||
function RemoveParty(TeamId) {
|
||||
local ObjectID = null;
|
||||
for (local i = 0; i< Childrens.len(); i++) {
|
||||
local Cobj = Childrens[i];
|
||||
if (Cobj instanceof Rindro_FiendwarPartyC) {
|
||||
if (Cobj.TeamObj.TeamId.tointeger() == TeamId.tointeger()) {
|
||||
ObjectID = Cobj.ObjectId;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ObjectID) RemoveChild(ObjectID);
|
||||
}
|
||||
|
||||
//移除所有队伍
|
||||
function RemoveAllParty() {
|
||||
for (local i = 0; i< Childrens.len(); i++) {
|
||||
local Cobj = Childrens[i];
|
||||
if (Cobj instanceof Rindro_FiendwarPartyC) {
|
||||
Childrens.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//绘制队伍信息
|
||||
function DrawPartyList(obj) {
|
||||
if (PartyList.len() <= 0) return;
|
||||
//先遍历一遍全部挪走
|
||||
foreach(Index, TeamObj in PartyList) {
|
||||
TeamObj.SyncPos(9999, 9999);
|
||||
}
|
||||
//在遍历需要显示的同步坐标
|
||||
foreach(Index, TeamObj in PartyList.slice((((Page) * PageMaxCount) > 0) ? ((Page) * PageMaxCount) : 0, ((Page + 1) * PageMaxCount) > PartyList.len() ? PartyList.len() : ((Page + 1) * PageMaxCount))) {
|
||||
TeamObj.SyncPos(X, Y + 2 + (Index % PageMaxCount) * 23);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
MainButton = null;
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
|
||||
|
||||
//界面未打开
|
||||
if (!this.Visible && L_sq_RA(0x1A5FB4C, "0x14+0x28+")< 2) {
|
||||
//在甲板
|
||||
if (RinDro_Fiendwar_Obj.BaseConfig && RinDro_Fiendwar_Obj.BaseConfig.channel_index.find("20") && L_sq_GetTownIndex() == RinDro_Fiendwar_Obj.BaseConfig.town_index && L_sq_GetRegionIndex() >= 1) {
|
||||
local PaW = sq_GetPopupWindowMainCotrol(6);
|
||||
if (PaW) {
|
||||
L_sq_UseSkill(DIK_ESCAPE);
|
||||
this.Visible = true;
|
||||
GetAllTeamCall();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
311
Project/Fiendwar/Rindro_Fiendwar_PartyInfo.nut
Normal file
@@ -0,0 +1,311 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PartyInfo.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PartyInfo.nut
|
||||
创建日期:2024-07-15 22:12
|
||||
文件用途:超时空队伍信息窗口
|
||||
*/
|
||||
class Rindro_FiendwarPartyInfoC extends LenheartNewUI_Windows {
|
||||
|
||||
Visible = false;
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//是否存在信息
|
||||
InfoFlag = false;
|
||||
|
||||
//队员列表
|
||||
MembersList = null;
|
||||
|
||||
//队伍名称
|
||||
TeamName = "";
|
||||
//队伍ID
|
||||
TeamID = 99999999;
|
||||
|
||||
//是否是我的攻坚队
|
||||
IsMyTeam = false;
|
||||
//是否是队长
|
||||
IsCaptain = false;
|
||||
|
||||
|
||||
|
||||
//收到请求加入攻坚队包
|
||||
function JoinTeamCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local win = LenheartNewUI_CreateWindow(Rindro_FiendwarApplyJoinC, "超时空申请加入队伍窗口", 542, 348, 257, 240, 18);
|
||||
win.Visible = true;
|
||||
win.ResetFocus();
|
||||
local T = {
|
||||
Charc = Jso.charac, //角色对象
|
||||
Level = Jso.charac.PlayerLevel,
|
||||
Name = Jso.charac.PlayerName,
|
||||
Job = Jso.charac.PlayerJob,
|
||||
PvpLevel = Jso.charac.pvp,
|
||||
JobName = Jso.charac.PlayerGrowTypeJob,
|
||||
Coin = Jso.charac.PlayCoin,
|
||||
Fatigue = Jso.charac.PlayFatigue,
|
||||
Combat = Jso.charac.ZL,
|
||||
ClearanceCount = Jso.charac.ClearanceCount,
|
||||
AvatarArr = Jso.charac.equVos,
|
||||
PlayerSession = Jso.charac.PlayerSession
|
||||
}
|
||||
//没人
|
||||
if (win.RequestJoinTeamArr.len() == 0) {
|
||||
win.RequestJoinTeamArr.append(T);
|
||||
win.InitInfo();
|
||||
} else win.RequestJoinTeamArr.append(T);
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
//注册控件
|
||||
// RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
Pack_Control.rawset(20063006, JoinTeamCallBack.bindenv(this));
|
||||
|
||||
RegisterWidget();
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(336, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
CloseWindow();
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
|
||||
//队伍按钮
|
||||
local ModelButton = LenheartNewUI_ButtonText(9, 60, -18, "队伍");
|
||||
ModelButton.Idx = 163;
|
||||
ModelButton.DWidth = -8;
|
||||
ModelButton.SetTextOffset(-9, 1);
|
||||
AddChild(ModelButton);
|
||||
|
||||
//等级按钮
|
||||
local StateButton = LenheartNewUI_ButtonText(51, 60, -18, "等级");
|
||||
StateButton.Idx = 163;
|
||||
StateButton.DWidth = -8;
|
||||
StateButton.SetTextOffset(-9, 1);
|
||||
AddChild(StateButton);
|
||||
|
||||
//角色名按钮
|
||||
local ChannelButton = LenheartNewUI_ButtonText(93, 60, 44, "角色名");
|
||||
ChannelButton.Idx = 163;
|
||||
ChannelButton.DWidth = 120;
|
||||
ChannelButton.FillWidth = 1;
|
||||
ChannelButton.FirstWidth = 21;
|
||||
ChannelButton.SetTextOffset(17, 1);
|
||||
AddChild(ChannelButton);
|
||||
|
||||
//攻坚队名称按钮
|
||||
local PartyNameButton = LenheartNewUI_ButtonText(196, 60, 36, "职业名");
|
||||
PartyNameButton.Idx = 163;
|
||||
PartyNameButton.DWidth = 100;
|
||||
PartyNameButton.FillWidth = 1;
|
||||
PartyNameButton.FirstWidth = 21;
|
||||
PartyNameButton.SetTextOffset(11, 1);
|
||||
AddChild(PartyNameButton);
|
||||
|
||||
//入场材料按钮
|
||||
local StageButton = LenheartNewUI_ButtonText(289, 60, 0, "入场材料");
|
||||
StageButton.Idx = 163;
|
||||
StageButton.DWidth = 26;
|
||||
StageButton.FillWidth = 1;
|
||||
StageButton.FirstWidth = 21;
|
||||
StageButton.SetTextOffset(-14, 1);
|
||||
StageButton.SetCallBackFunc(function(window) {
|
||||
if (RinDro_Fiendwar_Obj.EndTime) window.TextStr = "通关次数";
|
||||
else window.TextStr = "入场材料";
|
||||
}.bindenv(this));
|
||||
AddChild(StageButton);
|
||||
|
||||
//如果不是我的队伍 并且我没有攻坚队
|
||||
local JoinPartyButton = LenheartNewUI_ButtonText(10, 268 + 8, 10, "参加攻坚队");
|
||||
JoinPartyButton.SetTextOffset(-15, 1);
|
||||
JoinPartyButton.OnClick = function() {
|
||||
|
||||
//时装 帽子 头部 脸 上衣 下装 鞋子 胸部 腰部 皮肤 光环
|
||||
local AvatarInfoIdx = [0x3038, 0x3010, 0x3014, 0x3018, 0x301c, 0x3020, 0x3024, 0x3028, 0x302c, 0x3030, 0x3034];
|
||||
|
||||
local C_Object = L_sq_RA(0x1ab7cdc);
|
||||
local avataritemsbuf = [];
|
||||
foreach(offset in AvatarInfoIdx) {
|
||||
local AvatarEquiAddress = L_sq_RA(C_Object + offset);
|
||||
if (AvatarEquiAddress >= 0x400000) {
|
||||
local Ab = [];
|
||||
local NormalIndex = L_sq_RA(AvatarEquiAddress + 0x1c);
|
||||
local ExIndex = L_sq_RA(AvatarEquiAddress + 0x13E0);
|
||||
Ab.append(NormalIndex);
|
||||
Ab.append(ExIndex);
|
||||
avataritemsbuf.append(Ab);
|
||||
} else {
|
||||
local Ab = [];
|
||||
Ab.append(0);
|
||||
Ab.append(0);
|
||||
avataritemsbuf.append(Ab);
|
||||
}
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = 20063005,
|
||||
teamsId = TeamID,
|
||||
items = avataritemsbuf,
|
||||
}
|
||||
SendPackEx(T);
|
||||
|
||||
}.bindenv(this);
|
||||
JoinPartyButton.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam && !RinDro_Fiendwar_Obj.MyRaidTeamId)
|
||||
window.X = 10;
|
||||
else window.X = 90000;
|
||||
}.bindenv(this));
|
||||
AddChild(JoinPartyButton);
|
||||
|
||||
//如果是我的队伍
|
||||
//退出按钮
|
||||
local ExitButton = LenheartNewUI_ButtonText(220, 268 + 8, 5, "退出");
|
||||
ExitButton.SetTextOffset(-1, 1);
|
||||
ExitButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063009,
|
||||
teamsId = TeamID
|
||||
}
|
||||
SendPackEx(T);
|
||||
RinDro_Fiendwar_Obj.MyCid = null;
|
||||
RinDro_Fiendwar_Obj.MyRaidTeamId = null;
|
||||
RinDro_Fiendwar_Obj.IsCaptain = null;
|
||||
|
||||
//重置所有选中 并且从攻坚大厅对象中移除这个子对象
|
||||
local HallWin = LenheartNewUI_CreateWindow(Rindro_Fiendwar_PartyHallC, "新超时空攻坚大厅窗口", 320, 40, 478, 434, 18);
|
||||
HallWin.ResetAllSelect();
|
||||
HallWin.RemoveParty(this.TeamID);
|
||||
DestroyWindow();
|
||||
}.bindenv(this);
|
||||
ExitButton.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam) window.X = X + 900000;
|
||||
else window.X = X + 220;
|
||||
}.bindenv(this));
|
||||
AddChild(ExitButton);
|
||||
|
||||
|
||||
//队伍编制按钮
|
||||
local PartyEditButton = LenheartNewUI_ButtonText(10, 268 + 8, 5, "队伍编制");
|
||||
PartyEditButton.SetTextOffset(-12, 1);
|
||||
PartyEditButton.OnClick = function() {
|
||||
local win = LenheartNewUI_CreateWindow(Rindro_FiendwarPartyFormation, "超时空我的队伍编队窗口", 105, 40, 294, 192, 18);
|
||||
win.Visible = true;
|
||||
win.ResetFocus();
|
||||
}.bindenv(this);
|
||||
PartyEditButton.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam || !IsCaptain) window.X = X + 900000;
|
||||
else window.X = X + 10;
|
||||
}.bindenv(this));
|
||||
AddChild(PartyEditButton);
|
||||
|
||||
//修改信息按钮
|
||||
local FqButton = LenheartNewUI_ButtonText(100, 267 + 8, 5, "修改信息");
|
||||
FqButton.State = 8;
|
||||
FqButton.SetTextOffset(-12, 1);
|
||||
FqButton.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam || !IsCaptain) window.X = X + 900000;
|
||||
else window.X = X + 100;
|
||||
}.bindenv(this));
|
||||
AddChild(FqButton);
|
||||
|
||||
//队伍招募按钮
|
||||
local FqButton1 = LenheartNewUI_ButtonText(160, 267 + 8, 5, "队伍招募");
|
||||
FqButton1.State = 8;
|
||||
FqButton1.SetTextOffset(-12, 1);
|
||||
FqButton1.SetCallBackFunc(function(window) {
|
||||
if (!IsMyTeam || !IsCaptain) window.X = X + 900000;
|
||||
else window.X = X + 160;
|
||||
}.bindenv(this));
|
||||
AddChild(FqButton1);
|
||||
|
||||
|
||||
//队伍招募按钮
|
||||
local FightOpenButton = LenheartNewUI_ButtonText(290, 268 + 8, 5, "开始攻坚");
|
||||
FightOpenButton.SetTextOffset(-12, 1);
|
||||
FightOpenButton.OnClick = function() {
|
||||
local T = {
|
||||
op = 20063051,
|
||||
teamsId = TeamID
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
FightOpenButton.SetCallBackFunc(function(window) {
|
||||
// if (!IsMyTeam || !IsCaptain || RinDro_Fiendwar_Obj.EndTime) window.X = X + 900000;
|
||||
// else window.X = X + 290;
|
||||
if ((RinDro_Fiendwar_Obj.MyRaidState == 0 || RinDro_Fiendwar_Obj.MyRaidState == 2) && IsCaptain && IsMyTeam) window.X = X + 290;
|
||||
else window.X = X + 900000;
|
||||
}.bindenv(this));
|
||||
AddChild(FightOpenButton);
|
||||
}
|
||||
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//如果没有信息则直接返回不绘制
|
||||
if (!InfoFlag) return;
|
||||
//标题栏
|
||||
L_sq_DrawButton(X, Y, 344, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
//绘制队伍名字
|
||||
L_sq_DrawCode(TeamName, X + 178 - LenheartTextClass.GetStringLength(TeamName) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X, Y + 17, 340, 252, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
//绘制头图
|
||||
L_sq_DrawImg("interface2/gcontents/180621_fiendwar/raid/memberwindow.img", 0, X + 10, Y + 24);
|
||||
//绘制阶段图 //TODO 根据阶段绘制img
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 7, X + 296, Y + 34);
|
||||
|
||||
//绘制队伍List
|
||||
DrawMembersList(obj);
|
||||
}
|
||||
|
||||
//绘制队伍信息
|
||||
function DrawMembersList(obj) {
|
||||
if (MembersList.len() <= 0) return;
|
||||
//遍历需要显示的同步坐标
|
||||
foreach(Index, TeamObj in MembersList) {
|
||||
TeamObj.SyncPos(X, Y + 2 + Index * 23);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
# override # "
|
||||
* @函数作用:
|
||||
* @参数 name
|
||||
* @返回值
|
||||
*/
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
foreach(Window in Childrens) {
|
||||
Window.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
}
|
||||
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||
//判断没有点到具体角色就隐藏
|
||||
if (!sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y + 80, Width, MembersList.len() * 21)) {
|
||||
//交互窗口需要隐藏
|
||||
local Each = LenheartNewUI_CreateWindow(Rindro_FiendwarPlayerInteractiveC, "超时空玩家交互", X, Y, 100, 21, 0);
|
||||
Each.Visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
190
Project/Fiendwar/Rindro_Fiendwar_PartyMemberInfo.nut
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PartyMemberInfo.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PartyMemberInfo.nut
|
||||
创建日期:2024-07-15 22:52
|
||||
文件用途:超时空队伍横条
|
||||
*/
|
||||
//队员显示类
|
||||
class Rindro_FiendwarPartyInfoMemberC extends LenheartNewUI_CommonUi {
|
||||
X = 0;
|
||||
Y = 0;
|
||||
Width = null;
|
||||
Height = null;
|
||||
InfoObj = null;
|
||||
|
||||
//构造时间
|
||||
ConstructorTime = null;
|
||||
//选中状态
|
||||
SelectState = false;
|
||||
//攻坚状态
|
||||
OffensiveState = 0;
|
||||
//头像框的颜色
|
||||
HandBoxColor = [
|
||||
0xff717272,
|
||||
0xff7b2a29,
|
||||
0xff874e0d,
|
||||
0xff8b8108,
|
||||
0xff658e2d,
|
||||
0xff0f5c8a,
|
||||
0xff27238f,
|
||||
0xff4e2491,
|
||||
0xff932586,
|
||||
]
|
||||
|
||||
//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],
|
||||
]
|
||||
|
||||
constructor(gInfoObj) {
|
||||
ConstructorTime = Clock();
|
||||
|
||||
InfoObj = gInfoObj;
|
||||
this.Width = 458;
|
||||
this.Height = 21;
|
||||
|
||||
this.OnClick = function() {
|
||||
//还原其他 选中自己
|
||||
foreach(Obj in Parent.MembersList) {
|
||||
Obj.SelectState = false;
|
||||
}
|
||||
SelectState = !SelectState;
|
||||
|
||||
local win = LenheartNewUI_CreateWindow(Rindro_FiendwarPartyFormation, "超时空我的队伍编队窗口", 105, 40, 294, 192, 18);
|
||||
//编队状态
|
||||
if (win.PartyMarkFlag != -1) {
|
||||
//并且是属于我的攻坚队的成员
|
||||
if (RinDro_Fiendwar_Obj.MyRaidTeamId == InfoObj.PartyId) {
|
||||
local gnum = win.PartyMarkFlag + 1;
|
||||
if (gnum == 100) gnum = 0;
|
||||
local T = {
|
||||
op = 20063015,
|
||||
teamsId = InfoObj.PartyId,
|
||||
cidNew = InfoObj.Cid,
|
||||
num = gnum
|
||||
}
|
||||
SendPackEx(T);
|
||||
win.PartyMarkFlag = -1;
|
||||
R_Mouse.SetType(0);
|
||||
win.ResetFocus();
|
||||
return;
|
||||
}
|
||||
//点了其他队伍成员要还原编队状态
|
||||
else {
|
||||
win.PartyMarkFlag = -1;
|
||||
R_Mouse.SetType(0);
|
||||
}
|
||||
}
|
||||
|
||||
local Interactive = LenheartNewUI_CreateWindow(Rindro_FiendwarPlayerInteractiveC, "超时空玩家交互", 0, 0, 100, 21, 0);
|
||||
//改变鼠标坐标
|
||||
Interactive.X = MousePos_X;
|
||||
Interactive.Y = MousePos_Y;
|
||||
//赋值对象参数
|
||||
Interactive.InfoObj = InfoObj;
|
||||
//对象不是我
|
||||
if (InfoObj.Cid == RinDro_Fiendwar_Obj.MyCid) {
|
||||
Interactive.InfoObj.IsMyself <- true;
|
||||
}
|
||||
//刷新UI
|
||||
Interactive.InitInfo();
|
||||
}
|
||||
LenheartNewUI_CommonUi.constructor(10, 82, this.Width, this.Height);
|
||||
|
||||
|
||||
//如果没有材料要建立一个购买材料的Button 并且要判断是否是自己 //TODO 这里还不行 要拓展一个函数来比对名字
|
||||
/*
|
||||
local Name = L_Sq_GetObjectName(sq_GetMyMasterCharacter());
|
||||
local Name2 = "夜刃";
|
||||
Name == Name2 失败了
|
||||
*/
|
||||
// if (!InfoObj.StkHasFlag && InfoObj.Name == L_Sq_GetObjectName(sq_GetMyMasterCharacter())) {
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//绘制底槽
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 12, X, Y);
|
||||
|
||||
//绘制队伍编号
|
||||
L_sq_DrawImg("interface/newstyle/windows/party/party_icon.img", InfoObj.TeamId * 3, X, Y + 1);
|
||||
|
||||
sq_DrawBox(X + 42, Y + 1, 22, 18, HandBoxColor[InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0];
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
if (InfoObj.Captain) L_sq_DrawImg("hud/fiendwarl.img", 18, X + 42, Y + 1);
|
||||
|
||||
|
||||
//绘制等级
|
||||
L_sq_DrawCode(InfoObj.Level, X + 76 - LenheartTextClass.GetStringLength(InfoObj.Level) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制角色名
|
||||
L_sq_DrawCode(InfoObj.Name, X + 138 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
//绘制职业名
|
||||
L_sq_DrawCode(InfoObj.JobName, X + 234 - LenheartTextClass.GetStringLength(InfoObj.JobName) / 2, Y + 5, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
|
||||
//离线了
|
||||
if (InfoObj.ExitTime > 0) {
|
||||
local DrawTime = InfoObj.ExitTime - (Clock() - ConstructorTime);
|
||||
local seconds = (DrawTime / 1000) % 60; // 计算秒数
|
||||
local minutes = (DrawTime / (1000 * 60)) % 60; // 计算分钟数
|
||||
local DrawTimeStr = format("%02d分%02d秒", minutes, seconds);
|
||||
|
||||
L_sq_DrawCode(DrawTimeStr, X + 306 - LenheartTextClass.GetStringLength(DrawTimeStr) / 2, Y + 5, sq_RGBA(255, 50, 50, 255), 0, 1);
|
||||
}
|
||||
//通关次数
|
||||
else if (InfoObj.ClearanceCount > 0) {
|
||||
L_sq_DrawCode((InfoObj.ClearanceCount - 1) + "/" + (InfoObj.ClearanceCountMax), X + 306 - LenheartTextClass.GetStringLength((InfoObj.ClearanceCount - 1) + "/" + (InfoObj.ClearanceCountMax)) / 2, Y + 5, sq_RGBA(250, 250, 181, 255), 0, 1);
|
||||
} else if (InfoObj.StkHasFlag) {
|
||||
L_sq_DrawImg("hud/fiendwarlstk.img", 0, X + 280, Y + 3);
|
||||
} else {
|
||||
L_sq_DrawImg("hud/fiendwarlstk.img", 1, X + 280, Y + 3);
|
||||
}
|
||||
|
||||
if (SelectState) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 13, X, Y);
|
||||
}
|
||||
|
||||
if (isInRect) {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 13, X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
MousePos_X = 0;
|
||||
MousePos_Y = 0;
|
||||
//鼠标事件回调
|
||||
function OnMouseProc(Flag, gMousePos_X, gMousePos_Y) {
|
||||
this.MousePos_X = gMousePos_X;
|
||||
this.MousePos_Y = gMousePos_Y;
|
||||
LenheartNewUI_CommonUi.OnMouseProc(Flag, gMousePos_X, gMousePos_Y);
|
||||
}
|
||||
}
|
||||
227
Project/Fiendwar/Rindro_Fiendwar_PlayerInteractive.nut
Normal file
@@ -0,0 +1,227 @@
|
||||
/*
|
||||
文件名:Rindro_Fiendwar_PlayerInteractive.nut
|
||||
路径:Plugins/New_Fiendwar/Rindro_Fiendwar_PlayerInteractive.nut
|
||||
创建日期:2024-07-16 11:02
|
||||
文件用途:超时空攻坚队玩家交互按钮
|
||||
*/
|
||||
//角色交互按钮需要传递参数所以重写
|
||||
class Rindro_FiendwarInteractive_BaseButton extends LenheartNewUI_BaseButton {
|
||||
|
||||
OnShow = null;
|
||||
|
||||
constructor(X, Y, W, H, Path, Idx) {
|
||||
|
||||
LenheartNewUI_BaseButton.constructor(X, Y, W, H, Path, Idx);
|
||||
}
|
||||
|
||||
//鼠标左键弹起回调
|
||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||
Y--;
|
||||
if (isLBDown && OnClick) {
|
||||
OnClick();
|
||||
}
|
||||
isLBDown = false;
|
||||
local Each = LenheartNewUI_CreateWindow(Rindro_FiendwarPlayerInteractiveC, "超时空玩家交互", X, Y, 100, 21, 0);
|
||||
Each.Visible = false;
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
//不可用
|
||||
if (State == 8) {
|
||||
L_sq_DrawImg(Path, Idx + 3, X, Y + 1);
|
||||
} else {
|
||||
//按下
|
||||
if (isLBDown) {
|
||||
Y++;
|
||||
L_sq_DrawImg(Path, (Idx * 2) + 2, X, Y);
|
||||
}
|
||||
//悬停
|
||||
else if (isInRect) {
|
||||
L_sq_DrawImg(Path, (Idx * 2) + 1, X, Y);
|
||||
}
|
||||
//普通
|
||||
else {
|
||||
L_sq_DrawImg(Path, 0, X, Y);
|
||||
}
|
||||
}
|
||||
if (OnShow) OnShow(X, Y);
|
||||
}
|
||||
}
|
||||
|
||||
//角色交互类
|
||||
class Rindro_FiendwarPlayerInteractiveC extends LenheartNewUI_Windows {
|
||||
// DeBugMode = true;
|
||||
|
||||
//信息对象
|
||||
InfoObj = null;
|
||||
|
||||
//初始化Flag 初始化以后才显示
|
||||
InitInfoFlag = false;
|
||||
|
||||
//有多少个标签
|
||||
InitIndexFlag = 1;
|
||||
|
||||
//头像框颜色
|
||||
HandBoxColor = [
|
||||
0xff717272,
|
||||
0xff7b2a29,
|
||||
0xff874e0d,
|
||||
0xff8b8108,
|
||||
0xff658e2d,
|
||||
0xff0f5c8a,
|
||||
0xff27238f,
|
||||
0xff4e2491,
|
||||
0xff932586,
|
||||
]
|
||||
|
||||
//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],
|
||||
]
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
}
|
||||
|
||||
//初始化信息
|
||||
function InitInfo() {
|
||||
Childrens = [];
|
||||
//还原标签数量
|
||||
InitIndexFlag = 1;
|
||||
//还原高度
|
||||
Height = 21;
|
||||
//还原可见性
|
||||
Visible = true;
|
||||
//置顶窗口
|
||||
ResetFocus();
|
||||
RegisterWidget();
|
||||
InitInfoFlag = true;
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
|
||||
|
||||
//是团长才能委任 并且不是我自己 并且我们在同一个攻坚队
|
||||
if (RinDro_Fiendwar_Obj.IsCaptain && !("IsMyself" in InfoObj) && RinDro_Fiendwar_Obj.MyRaidTeamId == InfoObj.PartyId) {
|
||||
//委任团长按钮
|
||||
local GiveMasterButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
GiveMasterButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 11, X, Y + 2);
|
||||
L_sq_DrawCode("委任团长", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
GiveMasterButton.OnClick = function() {
|
||||
|
||||
}.bindenv(this);
|
||||
AddChild(GiveMasterButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
}
|
||||
|
||||
//查看信息按钮
|
||||
local CheckInfoButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
CheckInfoButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 10, X, Y + 2);
|
||||
L_sq_DrawCode("查看信息", X + 36, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
CheckInfoButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(8);
|
||||
L_sq_SendPackWord(InfoObj.PlayerSession);
|
||||
L_sq_SendPackByte(3);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(CheckInfoButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
|
||||
if (!("IsMyself" in InfoObj)) {
|
||||
//交易按钮
|
||||
local TransactionButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 0);
|
||||
TransactionButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_character.img", 0, X, Y + 2);
|
||||
L_sq_DrawCode("交易", X + 46, Y + 5, sq_RGBA(104, 213, 237, 255), 0, 1);
|
||||
}
|
||||
TransactionButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
L_sq_SendPackType(10);
|
||||
L_sq_SendPackWord(InfoObj.PlayerSession);
|
||||
L_sq_SendPackByte(1);
|
||||
L_sq_SendPackDWord(22053);
|
||||
L_sq_SendPack();
|
||||
getroottable().WindowsShowABFlag <- false; //让原生窗口置顶
|
||||
}.bindenv(this);
|
||||
AddChild(TransactionButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
|
||||
|
||||
if (RinDro_Fiendwar_Obj.IsCaptain && RinDro_Fiendwar_Obj.MyRaidTeamId == InfoObj.PartyId) {
|
||||
//攻坚队员强退按钮
|
||||
local KickMemberButton = Rindro_FiendwarInteractive_BaseButton(0, 0 + (InitIndexFlag * 21), 100, 21, "interface2/popup_menu/popup_back.img", 4);
|
||||
KickMemberButton.OnShow = function(X, Y) {
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_icon_warning.img", 3, X, Y + 2);
|
||||
L_sq_DrawCode("攻坚队员强退", X + 24, Y + 5, sq_RGBA(255, 50, 50, 255), 0, 1);
|
||||
}
|
||||
KickMemberButton.OnClick = function() {
|
||||
local obj = sq_GetMyMasterCharacter();
|
||||
//obj.sq_PlaySound("CLICK_BUTTON1");
|
||||
local T = {
|
||||
op = 20063021,
|
||||
teamsId = InfoObj.PartyId,
|
||||
charCid = InfoObj.Cid
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
AddChild(KickMemberButton);
|
||||
InitIndexFlag++;
|
||||
Height += 21;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
if (!InitInfoFlag) return;
|
||||
L_sq_DrawImg("interface2/popup_menu/popup_back.img", 0, X, Y);
|
||||
//绘制角色名
|
||||
L_sq_DrawCode(InfoObj.Name, X + 61 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 4, sq_RGBA(169, 255, 171, 255), 0, 1);
|
||||
//绘制头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] - 40;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,9 @@
|
||||
创建日期:2024-09-25 20:30
|
||||
文件用途:骑士马战
|
||||
*/
|
||||
dofile("sqr/Project/HorseGuessing/HorseGuessing_Guide.nut"); //骑士马战指引
|
||||
dofile("sqr/Project/HorseGuessing/HorseGuessing_KnightInfo.nut"); //骑士马战资料
|
||||
dofile("sqr/Project/HorseGuessing/HorseGuessing_PastRecord.nut"); //骑士马战过往战绩
|
||||
// dofile("sqr/Project/HorseGuessing/HorseGuessing_Guide.nut"); //骑士马战指引
|
||||
// dofile("sqr/Project/HorseGuessing/HorseGuessing_KnightInfo.nut"); //骑士马战资料
|
||||
// dofile("sqr/Project/HorseGuessing/HorseGuessing_PastRecord.nut"); //骑士马战过往战绩
|
||||
|
||||
class HorseGuessingBaseButton extends LenheartNewUI_BaseButton {
|
||||
//是否翻转
|
||||
|
||||
BIN
Project/HorseGuessing/img/0.png
Normal file
|
After Width: | Height: | Size: 626 KiB |
BIN
Project/HorseGuessing/img/1.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
@@ -75,7 +75,7 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||
}
|
||||
|
||||
//技能栏
|
||||
for (local i = 0; i< 6; i++) {
|
||||
for (local i = 0; i< 7; i++) {
|
||||
L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x30 + (i * 0x4)) + 0x14, 433 + (i * 31));
|
||||
L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x30 + (i * 0x4)) + 0x18, 565);
|
||||
L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x60 + (i * 0x4)) + 0x14, 433 + (i * 31));
|
||||
@@ -568,6 +568,7 @@ class HudUiC extends LenheartNewUI_Windows {
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
//绘制背景
|
||||
L_sq_DrawImg("interface2/hud/lenheartaddhud.img", 0, 347, 526);
|
||||
|
||||
@@ -658,4 +659,5 @@ getroottable()["LenheartFuncTab"].rawset("HudUiFuncN", Lenheart_HudUi_Fun);
|
||||
// L_sq_Test(L_sq_RA(0x01AB7CDC), 0x3DB61400);
|
||||
// local Ret = L_sq_Test(L_sq_RA(0x01AB7CDC), 10);
|
||||
// local Ret = L_sq_Test(L_sq_RA(0x01A5FA88), 101020037);
|
||||
// print(format("%02x", Ret));
|
||||
// print(format("%02x", Ret));
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ class RinDro_Luke extends Rindro_BaseToolClass {
|
||||
} else {
|
||||
//在卢克区域的 要转移回普通城镇
|
||||
if (L_sq_GetTownIndex() == BaseConfig.town_index) {
|
||||
L_sq_MoveTown(1, 1, 474, 249);
|
||||
L_sq_MoveTown(getroottable().rawin("RindroRaidNormalTown") ? getroottable().RindroRaidNormalTown : 2, getroottable().rawin("RindroRaidNormalArea") ? getroottable().RindroRaidNormalArea : 1, 474, 249);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,11 +160,12 @@ class RinDro_Luke extends Rindro_BaseToolClass {
|
||||
}
|
||||
//构造CID对应的装备数组方便绘制
|
||||
Portrait.rawset(MemberObj.CID, {
|
||||
EquVos = clone(MemberObj.equVos),
|
||||
EquVos = Rindro_Draw_Character(MemberObj.PlayerJob, MemberObj.equVos, "rest.ani", null),
|
||||
Job = MemberObj.PlayerJob,
|
||||
TeamId = MemberObj.characNum,
|
||||
Name = MemberObj.PlayerName,
|
||||
});
|
||||
|
||||
local T = {
|
||||
PartyId = Jso.team.TeamId, //攻坚队ID
|
||||
TeamId = MemberObj.characNum, //小队编号
|
||||
@@ -173,7 +174,7 @@ class RinDro_Luke extends Rindro_BaseToolClass {
|
||||
JobName = MemberObj.PlayerGrowTypeJob, //职业名
|
||||
Job = MemberObj.PlayerJob, //职业编号
|
||||
StkHasFlag = MemberObj.isPrepare, //是否拥有攻坚材料
|
||||
EquVos = MemberObj.equVos, //装备List 用于显示头像
|
||||
EquVos = Rindro_Draw_Character(MemberObj.PlayerJob, MemberObj.equVos, "rest.ani", null), //装备List 用于显示头像
|
||||
Captain = MemberObj.CaptainBool, //是否为攻坚队队长
|
||||
Cid = MemberObj.CID, //Cid
|
||||
OnlineState = MemberObj.onLineStart, //在线状态
|
||||
@@ -335,7 +336,7 @@ class RinDro_Luke extends Rindro_BaseToolClass {
|
||||
PartyHallWindow_Object = LenheartNewUI_CreateWindow(Rindro_Luke_PartyHallC, "新卢克攻坚大厅窗口", ((getroottable().Rindro_Scr_Width - 478)).tointeger(), 40, 478, 434, 18);
|
||||
PartyFormationWindow_Object = LenheartNewUI_CreateWindow(Rindro_LukePartyFormation, "卢克我的队伍编队窗口", 375, 190, 294, 192, 18);
|
||||
FightSituationWindow_Object = LenheartNewUI_CreateWindow(Rindro_LukeFightSituationC, "卢克攻坚战况表", ((getroottable().Rindro_Scr_Width - 800) / 2).tointeger(), 8, 800, 600, 0);
|
||||
PartyWindow_Object = LenheartNewUI_CreateWindow(Rindro_LukePartyInfoC, "卢克我的队伍窗口", 6, 15, 354, 566, 18);
|
||||
PartyWindow_Object = LenheartNewUI_CreateWindow(Rindro_LukePartyInfoC, "卢克我的队伍窗口", 6, 15, 354, 566 - 255, 18);
|
||||
RewardWindow_Object = LenheartNewUI_CreateWindow(Rindro_Luke_RewardC, "卢克翻牌奖励窗口", 0, 0, 0, 0, 0);
|
||||
LenheartNewUI_CreateWindow(Rindro_Luke_NotiC, "卢克攻坚队伍消息分发", 0, 0, 0, 0, 0);
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
|
||||
Visible = false;
|
||||
//调试模式
|
||||
DeBugMode = true;
|
||||
// DeBugMode = true;
|
||||
//透明度
|
||||
AlphaValue = 1.0;
|
||||
|
||||
@@ -133,6 +133,7 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
obj = sq_ObjectToSQRCharacter(obj);
|
||||
local mob = LukeRaid_getMonsterObject(obj, 664670);
|
||||
if (mob) {
|
||||
mob = sq_GetCNRDObjectToActiveObject(mob);
|
||||
local mobMaxhp = mob.getHpMax();
|
||||
local mobhp = mob.getHp();
|
||||
local newhp = mobhp - (mobMaxhp.tofloat() * (Jso.ReduceHp.tofloat() / 100.0)).tointeger();
|
||||
@@ -143,7 +144,7 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
Pack_Control.rawset(20084402, setLukeRaidBoss_DamageHp.bindenv(this));
|
||||
Pack_Control.rawset(20084042, setLukeRaidBoss_DamageHp.bindenv(this));
|
||||
//初始化判断孵化进入操作表
|
||||
MapIndexTable = {};
|
||||
MapIndexTable.rawset(33100, 7);
|
||||
@@ -409,13 +410,9 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X + 26 + ((PosI % 10) * 24);
|
||||
local AYpos = Y + 513 + ((PosI / 10) * 20);
|
||||
PartyMasterIcon.InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
PosI++;
|
||||
}
|
||||
}
|
||||
@@ -524,13 +521,9 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X + DgnObj.X + ImgInfo[3] + 16;
|
||||
local AYpos = Y + DgnObj.Y + ImgInfo[4] + 2;
|
||||
CharacV.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
//绘制队伍人数
|
||||
for (local z = 0; z< count; z++) {
|
||||
@@ -740,29 +733,7 @@ class Rindro_LukeFightSituationC extends LenheartNewUI_Windows {
|
||||
}
|
||||
//判断自身地图相关事件
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -87,18 +87,16 @@ class Rindro_Luke_NotiC extends LenheartNewUI_Windows {
|
||||
|
||||
if (Ct >= 200) {
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in PartyMasterIcon.InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[PartyMasterIcon.InfoObj.Job][0] - 9 + 150;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[PartyMasterIcon.InfoObj.Job][1] + 184;
|
||||
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(); //裁切结束
|
||||
}
|
||||
local AXpos = X - 9 + 150 + 44;
|
||||
local AYpos = Y + 184 + 2;
|
||||
PartyMasterIcon.InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
}
|
||||
}
|
||||
|
||||
//绘制消息
|
||||
if (Ct >= 200) L_sq_DrawCode(Msg, X + 270 + LenheartTextClass.GetStringLength(Name), Y + 190, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
if (Ct >= 2000) Msg = null;
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
|
||||
@@ -205,13 +205,10 @@ class Rindro_LukeApplyJoinC extends LenheartNewUI_Windows {
|
||||
L_sq_DrawImg("hud/fiendwarl.img", 14, X + 8, Y + 40);
|
||||
//绘制角色头像
|
||||
if (AvatarArr) {
|
||||
foreach(AvatarObj in AvatarArr) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[Job][0] - 8;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[Job][1] + 40;
|
||||
setClip(AXpos + OffsetArr[Job][2], AYpos + OffsetArr[Job][3], AXpos + OffsetArr[Job][2] + 22, AYpos + OffsetArr[Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
//绘制队长头像
|
||||
local AXpos = X + 42 - 8;
|
||||
local AYpos = Y + 1 + 40;
|
||||
AvatarArr.DrawFace(AXpos, AYpos);
|
||||
}
|
||||
//绘制角色等级
|
||||
L_sq_DrawCode(Level, X + 78 - LenheartTextClass.GetStringLength(Level) / 2, Y + 45, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
@@ -326,7 +326,6 @@ class Rindro_Luke_PartyHallC extends LenheartNewUI_Windows {
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
|
||||
|
||||
//界面未打开
|
||||
if (!this.Visible && L_sq_RA(0x1A5FB4C, "0x14+0x28+")< 2) {
|
||||
//在甲板
|
||||
|
||||
@@ -45,7 +45,7 @@ class Rindro_LukePartyInfoC extends LenheartNewUI_Windows {
|
||||
Fatigue = Jso.charac.PlayFatigue,
|
||||
Combat = Jso.charac.ZL,
|
||||
ClearanceCount = Jso.charac.ClearanceCount,
|
||||
AvatarArr = Jso.charac.equVos,
|
||||
AvatarArr = Rindro_Draw_Character(Jso.charac.PlayerJob, Jso.charac.equVos, "rest.ani", null),
|
||||
PlayerSession = Jso.charac.PlayerSession
|
||||
}
|
||||
//没人
|
||||
|
||||
@@ -135,13 +135,9 @@ class Rindro_LukePartyInfoMemberC extends LenheartNewUI_CommonUi {
|
||||
|
||||
sq_DrawBox(X + 42, Y + 1, 22, 18, HandBoxColor[InfoObj.TeamId]);
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0];
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local AXpos = X + 42;
|
||||
local AYpos = Y + 1;
|
||||
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
if (InfoObj.Captain) L_sq_DrawImg("hud/rindroanton.img", 18, X + 42, Y + 1);
|
||||
|
||||
|
||||
@@ -753,14 +753,11 @@ class Rindro_Luke_RewardC extends LenheartNewUI_Windows {
|
||||
function DrawProfile(Cid, gx, gy, CodeXOffset) {
|
||||
if (RinDro_Luke_Obj.Portrait.rawin(Cid)) {
|
||||
local InfoObj = RinDro_Luke_Obj.Portrait[Cid];
|
||||
|
||||
//绘制队长头像
|
||||
foreach(AvatarObj in InfoObj.EquVos) {
|
||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] + gx - 110;
|
||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1] + gy - 5;
|
||||
setClip(AXpos + OffsetArr[InfoObj.Job][2], AYpos + OffsetArr[InfoObj.Job][3], AXpos + OffsetArr[InfoObj.Job][2] + 22, AYpos + OffsetArr[InfoObj.Job][3] + 18); //开始裁切
|
||||
L_sq_DrawImg("character/" + AvatarObj.B + ".img", AvatarObj.F[0][0], AXpos, AYpos);
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
local AXpos = X + gx - 110 + 42;
|
||||
local AYpos = Y + gy - 5 + 1;
|
||||
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||
|
||||
L_sq_DrawCode(InfoObj.Name, gx + CodeXOffset - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, gy, 0xff00b1ff, 0, 1);
|
||||
} else {
|
||||
|
||||
@@ -138,6 +138,7 @@ class MarrySystemC extends Rindro_BaseToolClass {
|
||||
|
||||
GetConfig();
|
||||
CheckMarryState();
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
@@ -232,23 +233,6 @@ class MarrySystemC extends Rindro_BaseToolClass {
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
EachManager.AddEachForNpc(20014, function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 14;
|
||||
ApplyEngagementButton.Str = "离开礼堂";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
Button.Parent.CloseAllEach();
|
||||
Button.Parent.CloseWindow();
|
||||
local T = {
|
||||
op = OP + 17
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
//无论如何都添加礼堂列表
|
||||
@@ -269,6 +253,24 @@ class MarrySystemC extends Rindro_BaseToolClass {
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
|
||||
EachManager.AddEachForNpc(20014, function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 14;
|
||||
ApplyEngagementButton.Str = "离开礼堂";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
Button.Parent.CloseAllEach();
|
||||
Button.Parent.CloseWindow();
|
||||
local T = {
|
||||
op = OP + 17
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
//重选角色回调
|
||||
|
||||
@@ -117,7 +117,7 @@ class MarrySystem_OpenAuditoriumListC extends LenheartNewUI_Windows {
|
||||
|
||||
//绘制举办时间
|
||||
local Time = Sq_Time();
|
||||
local TimeStr = Time2Str(DrawInfo[9] + ((DrawInfo[2] + 1) * 10 * 60) - Time);
|
||||
local TimeStr = Time2Str(DrawInfo[9] - Time);
|
||||
L_sq_DrawCode(TimeStr, Button.X - 100 - LenheartTextClass.GetStringLength(TimeStr) / 2, Button.Y + 2, sq_RGBA(134, 120, 79, 255), 0, 1);
|
||||
|
||||
//绘制人数
|
||||
|
||||
106
Project/MonsterEx/MonsterEx.nut
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
文件名:MonsterEx.nut
|
||||
路径:Project/MonsterEx/MonsterEx.nut
|
||||
创建日期:2025-02-07 11:46
|
||||
文件用途:怪物扩展
|
||||
*/
|
||||
Rindro_Monster_Ex_Name_Map <- {};
|
||||
|
||||
function L_Rindro_MonsterEXControl_Face(ObjectAddress, Xpos, Ypos) {
|
||||
|
||||
if (getroottable().rawin("MonsterFaceImage")) {
|
||||
local ret = MonsterFaceImage(L_Sq_ObjectAddressToSqrObject(ObjectAddress, "IRDMonster", 0));
|
||||
if (ret) {
|
||||
L_sq_DrawImg(ret.img, ret.index, Xpos, Ypos);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function L_Rindro_MonsterEXControl_Race(ObjectAddress, Xpos, Ypos) {
|
||||
local v4 = L_sq_RA(ObjectAddress + 88);
|
||||
local Count = (L_sq_RA(ObjectAddress + 92) - v4) >> 2;
|
||||
local RaceArr = [];
|
||||
for (local i = 0; i< Count; i++) {
|
||||
RaceArr.append(L_sq_RA(v4 + 4 * i));
|
||||
}
|
||||
//调用种族拓展
|
||||
local Monobj = L_Sq_ObjectAddressToSqrObject(L_sq_RA(ObjectAddress + 0x8), "IRDMonster", 0)
|
||||
if (getroottable().rawin("MonsterCategory")) {
|
||||
local Ret = MonsterCategory(Monobj, RaceArr, Xpos, Ypos);
|
||||
if (Ret) RaceArr = Ret;
|
||||
}
|
||||
local XposBuffer = Xpos;
|
||||
foreach(Pos, Index in RaceArr) {
|
||||
if (Pos > 0) XposBuffer += 33;
|
||||
L_sq_DrawImg("common/etc/category.img", Index, XposBuffer, Ypos);
|
||||
}
|
||||
|
||||
if (!Monobj.isDead() && Rindro_Monster_Ex_Name_Map.rawin(sq_GetObjectId(Monobj))) {
|
||||
local Color = sq_RGBA(255, 255, 255, 255);
|
||||
if(sq_GetMonsterRank(Monobj) == 1) Color = sq_RGBA(179, 107, 255, 255);
|
||||
if(sq_GetMonsterRank(Monobj) == 3 || sq_GetMonsterRank(Monobj) == 5) Color = sq_RGBA(255, 0, 240 255);
|
||||
L_sq_DrawCode("Lv" + sq_GetMonsterLevel(Monobj) + " " + Rindro_Monster_Ex_Name_Map[sq_GetObjectId(Monobj)], XposBuffer + (RaceArr.len() > 0 ? 33 : 0) + 2, Ypos + 3, Color, 0, 1);
|
||||
return -5000;
|
||||
}
|
||||
return XposBuffer + (RaceArr.len() > 0 ? 33 : 0);
|
||||
}
|
||||
|
||||
|
||||
//获取怪物等级
|
||||
function sq_GetMonsterLevel(Object) {
|
||||
return L_Sq_GetObjectDeInfo(L_Sq_GetObjectAddress(Object), 0x1A4C, true);
|
||||
}
|
||||
//设置怪物等级
|
||||
function sq_SetMonsterLevel(Object, Level) {
|
||||
L_Sq_SetObjectDeInfo(L_Sq_GetObjectAddress(Object), 0x1A4C, true, Level);
|
||||
}
|
||||
//获取怪物名字
|
||||
function sq_GetMonsterName(Object) {
|
||||
return L_Sq_GetObjectName(Object);
|
||||
}
|
||||
//设置怪物名字
|
||||
function sq_SetMonsterName(Object, Name) {
|
||||
L_Sq_DeleteObjectName(Object);
|
||||
Rindro_Monster_Ex_Name_Map.rawset(sq_GetObjectId(Object), Name);
|
||||
}
|
||||
//获取怪物阶级
|
||||
function sq_GetMonsterRank(Object) {
|
||||
if (sq_IsNamed(Object)) return 4;
|
||||
switch (L_sq_RA(L_Sq_GetObjectAddress(Object) + 0x3658)) {
|
||||
case 0:
|
||||
case 4:
|
||||
case 5:
|
||||
return 0;
|
||||
case 1:
|
||||
case 6:
|
||||
return 1;
|
||||
case 2:
|
||||
case 7:
|
||||
return 3;
|
||||
case 3:
|
||||
case 8:
|
||||
return 5;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
//设置怪物阶级
|
||||
function sq_SetMonsterRank(Object, Type) {
|
||||
L_sq_WA(L_Sq_GetObjectAddress(Object) + 0x3658, Type);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//怪物头像回调 返回空 或者不返回则为不修改 返回 {img,index} 则为修改
|
||||
function MonsterFaceImage(obj) {
|
||||
|
||||
}
|
||||
|
||||
//怪物种族回调 返回空 或者不返回则为不修改 返回修改后的RaceArr数组 则为修改
|
||||
function MonsterCategory(obj, RaceArr, Xpos, Ypos) {
|
||||
for (local i = 0; i< 14; i++) {
|
||||
RaceArr.append(i + 1);
|
||||
}
|
||||
return RaceArr;
|
||||
}
|
||||
@@ -14,17 +14,30 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
//是否可见
|
||||
// Visible = false;
|
||||
|
||||
//世界
|
||||
World = null;
|
||||
//区域
|
||||
Region = null;
|
||||
//当前自身所在世界
|
||||
SelfMapWorld = 0;
|
||||
//当前自身所在区域
|
||||
SelfMapRegion = 0;
|
||||
//当前地图浏览区域
|
||||
MapRegion = -1;
|
||||
|
||||
//Img
|
||||
WorldMapImg = null;
|
||||
StepImg = null;
|
||||
|
||||
Ani = null;
|
||||
|
||||
|
||||
Timer = Clock();
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
Region = [];
|
||||
World = [];
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
@@ -34,32 +47,71 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
// printT(Region);
|
||||
LoadImg();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function LoadImg() {
|
||||
WorldMapImg = Rindro_Image("worldmap.img");
|
||||
StepImg = {};
|
||||
}
|
||||
|
||||
function InitData() {
|
||||
local RegionLst = R_Utils.GetScriptFileReader("region/region.lst");
|
||||
if (RegionLst) {
|
||||
local IO = Sq_Point2Blob(L_sq_P2I(RegionLst.Buffer.C_Object), RegionLst.Size);
|
||||
local i = 2;
|
||||
while (i< RegionLst.Size) {
|
||||
if ((RegionLst.Size - i) >= 10) {
|
||||
IO.seek(i + 6); //内容指示位
|
||||
local FindKey = IO.readn('i');
|
||||
local Key = Rindro_Script.GetBinString(FindKey);
|
||||
if (Key) {
|
||||
local StrFilePath = "region/" + Key.tolower();
|
||||
InitRegion(StrFilePath);
|
||||
}
|
||||
} else break;
|
||||
i += 10;
|
||||
}
|
||||
InitMiniMap();
|
||||
//读取世界
|
||||
local WorldLst = R_Utils.GetLstArr("region/world.lst", "region/");
|
||||
foreach(Path in WorldLst) {
|
||||
InitWorld(Path);
|
||||
}
|
||||
|
||||
//读取区域
|
||||
local RegionLst = R_Utils.GetLstArr("region/region.lst", "region/");
|
||||
foreach(Path in RegionLst) {
|
||||
InitRegion(Path);
|
||||
}
|
||||
|
||||
//读取小地图
|
||||
InitMiniMap();
|
||||
}
|
||||
|
||||
function InitWorld(Path) {
|
||||
local Data = R_Utils.GetFileTableByHandle(Path, function(DataT, IO, i) {
|
||||
local str = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
//城镇编号
|
||||
if (str == "[areas]") {
|
||||
DataT.Areas <- [];
|
||||
while (true) {
|
||||
local Ret = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
if (Ret == "[/areas]") break;
|
||||
DataT.Areas.append((Ret.tointeger() - 9));
|
||||
}
|
||||
}
|
||||
//背景
|
||||
else if (str == "[background]") {
|
||||
DataT.Background <- {};
|
||||
DataT.Background.path <- Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
DataT.Background.frame <- Rindro_Script.UnpackData(IO, i).tointeger() - 9;
|
||||
i += 5;
|
||||
}
|
||||
//坐标
|
||||
else if (str == "[pos]") {
|
||||
local Index = Rindro_Script.UnpackData(IO, i).tointeger() - 9;
|
||||
i += 5;
|
||||
local Path = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
DataT["pos_" + Index] <- [];
|
||||
DataT["pos_" + Index].append(Path);
|
||||
while (true) {
|
||||
local Ret = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
if (Ret == "[/pos]") break;
|
||||
DataT["pos_" + Index].append((Ret.tointeger() - 9));
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}.bindenv(this));
|
||||
World.append(Data);
|
||||
printT(Data);
|
||||
}
|
||||
|
||||
function InitRegion(Path) {
|
||||
@@ -123,6 +175,7 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
local Ret = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
if (Ret == "[/image]") break;
|
||||
Ret = Ret.slice(1, -1);
|
||||
|
||||
local imgpath = Rindro_Script.UnpackData(IO, i);
|
||||
i += 5;
|
||||
@@ -138,6 +191,7 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
} else break;
|
||||
}
|
||||
}
|
||||
Region[Pos].Data <- Data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,16 +206,18 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
|
||||
}
|
||||
|
||||
Timer = Clock();
|
||||
|
||||
function GetMoveOffset(L, R) {
|
||||
return (-L) + (L.tofloat() * (R.tofloat() / 100.0)).tointeger()
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
local Config = Region[SelfMapRegion];
|
||||
|
||||
//绘制背景
|
||||
WorldMapImg.DrawExPng(0, 0, -83, 0, 0xffffffff, 0.84, 0.84);
|
||||
//绘制地图背景
|
||||
DrawLogic(Config);
|
||||
|
||||
local UniRate = sq_GetAccel(0, 100, Clock() - Timer, 1000);
|
||||
local AccRate = sq_GetAccel(0, 100, Clock() - Timer, 1000, true);
|
||||
@@ -200,16 +256,128 @@ class NewWorldMapC extends LenheartNewUI_Windows {
|
||||
|
||||
WorldMapImg.DrawExPng(7, 20, 470, 0, sq_RGBA(255, 255, 255, ((UniRate.tofloat() / 100.0) * 255.0).tointeger()), 0.6, 0.6);
|
||||
WorldMapImg.DrawExPng(6, 39 + newRelX, 489 + newRelY, sq_ToRadian(-angle.tofloat()), 0xffffffff, 0.6, 0.6);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
function GetImgObject(path) {
|
||||
if (!(StepImg.rawin(path))) StepImg.rawset(path, Rindro_Image(path));
|
||||
return StepImg[path];
|
||||
}
|
||||
|
||||
|
||||
// 环绕数法判断点是否在多边形内
|
||||
function IsPointInPolygonWindingNumber(x, y, polygon) {
|
||||
local windingNumber = 0;
|
||||
local n = polygon.len();
|
||||
for (local i = 0; i< n; ++i) {
|
||||
local x1 = polygon[i][0];
|
||||
local y1 = polygon[i][1];
|
||||
local x2 = polygon[(i + 1) % n][0];
|
||||
local y2 = polygon[(i + 1) % n][1];
|
||||
if (y1 <= y) {
|
||||
if (y2 > y && ((x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0)) {
|
||||
windingNumber++;
|
||||
}
|
||||
} else {
|
||||
if (y2 <= y && ((x2 - x1) * (y - y1) - (x - x1) * (y2 - y1)< 0)) {
|
||||
windingNumber--;
|
||||
}
|
||||
}
|
||||
}
|
||||
return windingNumber != 0;
|
||||
}
|
||||
|
||||
|
||||
//绘制世界
|
||||
function DrawWorld(Config) {
|
||||
local MapCurIndex = SelfMapWorld;
|
||||
local BackgroundData = World[MapCurIndex].Background;
|
||||
|
||||
local UniRate = sq_GetAccel(0, 250, Clock() - Timer, 1500);
|
||||
|
||||
local BackgroundDataImgObj = GetImgObject(BackgroundData.path);
|
||||
BackgroundDataImgObj.DrawExPng(BackgroundData.frame, 0, -60, 0, sq_RGBA(255, 255, 255, UniRate), 1.32, 1.32);
|
||||
|
||||
foreach(index in World[MapCurIndex].Areas) {
|
||||
// print(index);
|
||||
if (!(World[MapCurIndex].rawin("pos_" + index))) continue;
|
||||
local Config = World[MapCurIndex]["pos_" + index];
|
||||
local BackgroundDataImgObj = GetImgObject(Config[0]);
|
||||
local PointArr = [];
|
||||
for (local i = 4; i< Config.len(); i += 2) {
|
||||
local Buf = [];
|
||||
Buf.append(Config[i]);
|
||||
Buf.append(Config[i + 1]);
|
||||
PointArr.append(Buf);
|
||||
}
|
||||
if (IsPointInPolygonWindingNumber(IMouse.GetXPos().tofloat(), IMouse.GetYPos().tofloat(), PointArr)) {
|
||||
BackgroundDataImgObj.DrawExPng(Config[1], Config[2], Config[3] - 60, 0, sq_RGBA(255, 255, 255, UniRate), 1.32, 1.32);
|
||||
}
|
||||
foreach(pos in PointArr) {
|
||||
L_sq_DrawImg("interface/windowcommon.img", 50, pos[0], pos[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//绘制区域
|
||||
function DrawArea(Config) {
|
||||
|
||||
}
|
||||
|
||||
//绘制城镇地图
|
||||
function DrawTownMap(Config) {
|
||||
|
||||
// local UniRate = sq_GetAccel(250, 0, Clock() - 3000 - Timer, 1000);
|
||||
// local BackgroundData = Config.Data.Image.background;
|
||||
// if (!(StepImg.rawin(BackgroundData.path))) StepImg.rawset(BackgroundData.path, Rindro_Image(BackgroundData.path));
|
||||
// StepImg[BackgroundData.path].DrawExPng(BackgroundData.frame, 0, -8, 0, sq_RGBA(255, 255, 255, UniRate), 1.0, 1.055);
|
||||
}
|
||||
|
||||
|
||||
//绘制逻辑
|
||||
function DrawLogic(Config) {
|
||||
//绘制世界
|
||||
DrawWorld(Config);
|
||||
//绘制区域
|
||||
DrawArea(Config);
|
||||
//绘制城镇
|
||||
DrawTownMap(Config);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//同步自身现在在哪个地图区域
|
||||
function SyncSelfMapRegion() {
|
||||
local Town = L_sq_GetTownIndex();
|
||||
foreach(AreaIndex, Areaobj in Region) {
|
||||
foreach(TownIndex, Townobj in Areaobj.Towns) {
|
||||
if (TownIndex == Town) {
|
||||
SelfMapRegion = AreaIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//同步自身现在在哪个地图世界
|
||||
function SyncSelfMapWorld() {
|
||||
foreach(WorldIndex, Worldobj in World) {
|
||||
foreach(AreaIndex, Areaobj in Worldobj.Areas) {
|
||||
if (AreaIndex == SelfMapRegion) {
|
||||
SelfMapWorld = WorldIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
SyncSelfMapRegion();
|
||||
SyncSelfMapWorld();
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
|
||||
132
Project/OddsPlugins/TransformEqu.nut
Normal file
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
文件名:TransformEqu.nut
|
||||
路径:Project/OddsPlugins/TransformEqu.nut
|
||||
创建日期:2025-01-17 21:03
|
||||
文件用途:变换装备
|
||||
*/
|
||||
class TransformEquC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
// Visible = false;
|
||||
|
||||
//属性记录表
|
||||
Attributes = null;
|
||||
//播报内容数组
|
||||
BroadcastContent = null;
|
||||
//是否需要绘制
|
||||
DrawFlag = false;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
Attributes = array(7, null);
|
||||
BroadcastContent = {};
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
RetrieveAndRecordAttributes(1);
|
||||
|
||||
Pack_Control.rawset(20072602, RetrieveAndRecordAttributes.bindenv(this));
|
||||
}
|
||||
|
||||
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
|
||||
}
|
||||
|
||||
//获取并记录属性
|
||||
function RetrieveAndRecordAttributes(Chunk) {
|
||||
//记录四维 力量 智力 体力 精神
|
||||
local AttributesBuffer = [];
|
||||
AttributesBuffer.append(L_sq_GetCharacterAttribute(0x2364));
|
||||
AttributesBuffer.append(L_sq_GetCharacterAttribute(0x2394));
|
||||
AttributesBuffer.append(L_sq_GetCharacterAttribute(0x237c));
|
||||
AttributesBuffer.append(L_sq_GetCharacterAttribute(0x23ac));
|
||||
|
||||
local ObjectAddress = L_sq_RA(0x1AB7CDC);
|
||||
local Wg = (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E54) * (AttributesBuffer[0].tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1EB4);
|
||||
AttributesBuffer.append(Wg);
|
||||
local Mg = (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E84) * (AttributesBuffer[1].tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1ED8);
|
||||
AttributesBuffer.append(Mg);
|
||||
local Dl = MemoryTool.DecodeMemoryData(ObjectAddress + 0x22C8) + MemoryTool.DecodeMemoryData(ObjectAddress + 0x22F8);
|
||||
AttributesBuffer.append(Dl);
|
||||
|
||||
for (local i = 0; i< AttributesBuffer.len(); i++) {
|
||||
if (AttributesBuffer[i] != Attributes[i]) {
|
||||
if (Attributes[i] != null) {
|
||||
BroadcastContent.rawset(i, AttributesBuffer[i] - Attributes[i]);
|
||||
DrawFlag = Clock();
|
||||
}
|
||||
Attributes[i] = AttributesBuffer[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
if (DrawFlag) {
|
||||
if (sq_GetCurrentModuleType() == 3) {
|
||||
local Xpos = sq_GetScreenXPos(obj) - 45;
|
||||
local Ypos = sq_GetScreenYPos(obj) - 128;
|
||||
|
||||
setClip(Xpos, Ypos - 40, Xpos + 150, Ypos + 80); //开始裁切
|
||||
local Time = Clock() - DrawFlag;
|
||||
local pos = 0;
|
||||
foreach(Index, Value in BroadcastContent) {
|
||||
local RealAtt = "";
|
||||
if (Index == 0) RealAtt = "力量";
|
||||
if (Index == 1) RealAtt = "智力";
|
||||
if (Index == 2) RealAtt = "体力";
|
||||
if (Index == 3) RealAtt = "精神";
|
||||
if (Index == 4) RealAtt = "物理攻击力";
|
||||
if (Index == 5) RealAtt = "魔法攻击力";
|
||||
if (Index == 6) RealAtt = "独立攻击力";
|
||||
local Color = [65, 255, 78];
|
||||
if (Value< 0) Color = [255, 50, 50];
|
||||
local Ap = 250 - ((BroadcastContent.len() - pos) * Time * 0.05).tointeger();
|
||||
if (Ap< 0) Ap = 0;
|
||||
L_sq_DrawCode(RealAtt + " " + (Value > 0 ? "+ " : "- ") + (abs(Value)), Xpos, Ypos + (pos * 16) - (Time * 0.05), sq_RGBA(Color[0], Color[1], Color[2], Ap), 0, 1);
|
||||
pos++;
|
||||
}
|
||||
releaseClip(); //裁切结束
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("TransformEqu_Obj");
|
||||
|
||||
function Lenheart_TransformEqu_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("TransformEqu_Obj")) {
|
||||
RootTab.rawset("TransformEqu_Obj", true);
|
||||
LenheartNewUI_CreateWindow(TransformEquC, "变换装备飘小字", 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("TransformEquFuncN", Lenheart_TransformEqu_Fun);
|
||||
BIN
Project/OnlineAnnouncement/img/0.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
350
Project/Recovery/Recovery.nut
Normal file
@@ -0,0 +1,350 @@
|
||||
/*
|
||||
文件名:Recovery.nut
|
||||
路径:Project/Recovery/Recovery.nut
|
||||
创建日期:2024-11-17 06:16
|
||||
文件用途:回收系统
|
||||
*/
|
||||
// class RecoveryMaskC extends LenheartNewUI_Windows {
|
||||
|
||||
// //信息
|
||||
// Info = null;
|
||||
// //调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
// constructor(ginfo) {
|
||||
// Childrens = [];
|
||||
// Info = ginfo;
|
||||
|
||||
// LenheartNewUI_Windows.constructor(Clock() + "+" + Info.type + Info.pos, 0, 0, 0, 0, 0);
|
||||
// }
|
||||
|
||||
// function Show(obj) {
|
||||
// LenheartNewUI_Windows.Show(obj);
|
||||
// }
|
||||
|
||||
// //逻辑入口
|
||||
// function Proc(obj) {
|
||||
// local Window = sq_GetPopupWindowMainCotrol(64);
|
||||
// if (Window) {
|
||||
// X = Window.GetXPos() + ((Info.pos % 8) * 30);
|
||||
// Y = Window.GetYPos() + 206 + ((Info.pos / 8) * 30);
|
||||
// }
|
||||
// LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
// }
|
||||
// }
|
||||
class RecoveryC extends LenheartNewUI_Windows {
|
||||
|
||||
//包头
|
||||
Op = 20085000;
|
||||
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
//待回收列表
|
||||
RecoveryList = null;
|
||||
//待回收绘制列表
|
||||
RecoveryDrawList = null;
|
||||
|
||||
//回收奖励列表
|
||||
RecoveryRewardList = null;
|
||||
|
||||
//当前绘制对象
|
||||
DrawItemCurObject = null;
|
||||
|
||||
//时间对象
|
||||
Timer = null;
|
||||
|
||||
|
||||
Img = Rindro_Image("recovery/main.img");
|
||||
LenheartUI = Rindro_Image("interface/lenheartwindowcommon.img");
|
||||
|
||||
//获取配置包
|
||||
function GetBaseConfig() {
|
||||
local T = {
|
||||
op = Op + 1
|
||||
}
|
||||
SendPackEx(T);
|
||||
}
|
||||
//配置包
|
||||
function BaseConfig(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
//注册NPC功能
|
||||
RegisterNpc(Jso.npc_id);
|
||||
}
|
||||
|
||||
function RefreshRecoveryItemListCallBack(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RecoveryRewardList = Jso.reward;
|
||||
}
|
||||
|
||||
//遍历背包查找Item
|
||||
function FindItemPosByForeachInven(FindAddress) {
|
||||
local Inven = L_sq_RA(0x1A5FB24);
|
||||
local InvenAdd = L_sq_RA(Inven + 56);
|
||||
InvenAdd += 36;
|
||||
for (local z = 0; z< 5; z++) {
|
||||
for (local i = 0; i< 48; i++) {
|
||||
local ItemAdd = L_sq_RA(InvenAdd + ((i + (z * 48)) * 4));
|
||||
if (ItemAdd == FindAddress) return {
|
||||
type = z,
|
||||
pos = i,
|
||||
vis = false,
|
||||
count = MemoryTool.DecodeMemoryData(FindAddress + 0x1A4),
|
||||
itemId = L_sq_RA(FindAddress + 0x1c)
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
RecoveryList = {};
|
||||
RecoveryDrawList = [];
|
||||
Timer = Clock();
|
||||
// RecoveryList.rawset(0x3EA5B400, {});
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
Pack_Control.rawset(Op + 2, BaseConfig.bindenv(this));
|
||||
Pack_Control.rawset(Op + 4, RefreshRecoveryItemListCallBack.bindenv(this));
|
||||
DiscardItemCallBackFunc.rawset("RecoveryC", DiscardItem.bindenv(this));
|
||||
GetBaseConfig();
|
||||
|
||||
// local Ret = L_sq_GetWindowById(64);
|
||||
// print(Ret);
|
||||
}
|
||||
|
||||
//刷新回收道具列表包
|
||||
function RefreshRecoveryItemList() {
|
||||
local Arr = [];
|
||||
foreach(obj in RecoveryList) {
|
||||
Arr.append(obj);
|
||||
}
|
||||
local T = {
|
||||
op = Op + 3
|
||||
}
|
||||
if (Arr.len() > 0) T.list <- Arr;
|
||||
SendPackEx(T);
|
||||
}
|
||||
|
||||
//回收道具回调
|
||||
function DiscardItem(ItemAddress) {
|
||||
if (!Visible) return true;
|
||||
else {
|
||||
local info = FindItemPosByForeachInven(ItemAddress);
|
||||
if (info) {
|
||||
if (!(RecoveryList.rawin(ItemAddress)) && RecoveryList.len()< 60) {
|
||||
//绘制列表
|
||||
RecoveryDrawList.append(ItemAddress);
|
||||
// info.Mask <- RecoveryMaskC(info);
|
||||
// AddChild(info.Mask);
|
||||
RecoveryList.rawset(ItemAddress, info);
|
||||
}
|
||||
}
|
||||
RefreshRecoveryItemList();
|
||||
}
|
||||
}
|
||||
//移除绘制道具列表中指定Item
|
||||
function RemoveDrawItem(ItemAddress) {
|
||||
for (local i = 0; i< RecoveryDrawList.len(); i++) {
|
||||
if (RecoveryDrawList[i] == ItemAddress) {
|
||||
RecoveryDrawList.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (RecoveryList.rawin(ItemAddress)) {
|
||||
RecoveryList.rawdelete(DrawItemCurObject);
|
||||
}
|
||||
RefreshRecoveryItemList();
|
||||
}
|
||||
|
||||
function RegisterNpc(id) {
|
||||
local EachManager = getroottable()["L_Each_Obj"];
|
||||
//先清空注册
|
||||
EachManager.RemoveEachForNpc(id);
|
||||
|
||||
EachManager.AddEachForNpc(id, function(SThis) {
|
||||
//关闭按钮
|
||||
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
||||
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
||||
ApplyEngagementButton.IconIdx = 27;
|
||||
ApplyEngagementButton.Str = "回收";
|
||||
ApplyEngagementButton.OnClick = function(Button) {
|
||||
//打开背包
|
||||
L_sq_Open_ExWindow(0x1ADE090, 0, 0, 1);
|
||||
Button.Parent.CloseAllEach();
|
||||
Button.Parent.CloseWindow();
|
||||
Visible = true;
|
||||
RecoveryList = {};
|
||||
RecoveryDrawList = [];
|
||||
RecoveryRewardList = null;
|
||||
ResetFocus();
|
||||
}.bindenv(this);
|
||||
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
||||
SThis.AddChild(ApplyEngagementButton);
|
||||
}.bindenv(this));
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
// //关闭按钮
|
||||
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
// CloseButton.OnClick = function() {
|
||||
// this.Visible = false;
|
||||
// }.bindenv(this);
|
||||
// Childrens.append(CloseButton);
|
||||
local CloseButton = LenheartNewUI_ButtonText(100, 381, 5, "确认");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
if (RecoveryList.len() <= 0) return;
|
||||
local T = {
|
||||
op = Op + 5
|
||||
}
|
||||
SendPackEx(T);
|
||||
RecoveryList = {};
|
||||
RecoveryDrawList = [];
|
||||
RecoveryRewardList = null;
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
|
||||
local CloseButton = LenheartNewUI_ButtonText(240, 381, 5, "取消");
|
||||
CloseButton.SetTextOffset(0, 1);
|
||||
CloseButton.OnClick = function() {
|
||||
this.Visible = false;
|
||||
RecoveryList = {};
|
||||
RecoveryDrawList = [];
|
||||
}.bindenv(this);
|
||||
AddChild(CloseButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
//Item信息框一般为211的宽度
|
||||
L_sq_DrawWindow(X - 5, Y + 14, 400, 356, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
Img.DrawExPng(0, X + 0, Y + 0, 0, sq_RGBA(255, 255, 255, 250), 0.92, 0.92);
|
||||
//标题栏
|
||||
L_sq_DrawButton(X - 5, Y, 405, "interface/lenheartwindowcommon.img", 609, 2, 7);
|
||||
LenheartUI.DrawExPng(425, X + 191, Y + 221, 0, sq_RGBA(255, 255, 255, 250), 0.92, 0.92);
|
||||
|
||||
foreach(Pos, Object in RecoveryDrawList) {
|
||||
local Info = RecoveryList[Object];
|
||||
DrawItemCur(Object, Info, X + 13 + ((Pos % 12) * 32), Y + 42 + ((Pos / 12) * 34));
|
||||
}
|
||||
if (RecoveryRewardList) {
|
||||
local drawpos = 0;
|
||||
foreach(Index, Count in RecoveryRewardList) {
|
||||
DrawItemEx(X + 13 + ((drawpos % 12) * 32), Y + 250 + ((drawpos / 12) * 34), Index.tointeger(), Count);
|
||||
drawpos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//绘制项目
|
||||
function DrawItemCur(Object, Info, XPos, Ypos) {
|
||||
local Id = L_sq_RA(Object + 0x1C);
|
||||
local Rarity = L_sq_RA(Object + 0xF4);
|
||||
L_sq_DrawImg("interface2/rindro_reward.img", Rarity, XPos - 3, Ypos - 3);
|
||||
L_Sq_DrawItem(XPos, Ypos, Id, Info.count, 0, 0, 0);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, XPos, Ypos, 24, 24)) {
|
||||
//打开道具信息窗口
|
||||
if (!Info.vis) {
|
||||
//手动解锁道具信息窗口
|
||||
Sq_Memory_WriteByteArr(L_sq_I2P(0xF63DDA), [0x56, 0xE8, 0x10, 0xFE, 0xFF, 0xFF]);
|
||||
local ItemDrawInfo = L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 275, Object, 41);
|
||||
//校准道具信息窗口位置
|
||||
L_Sq_CallFunc(0xF3B3B0, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], ItemDrawInfo, IMouse.GetXPos(), IMouse.GetYPos(), 24, 24);
|
||||
Info.vis = true;
|
||||
//我自己UI打开的道具信息窗口需要把渲染队列改为下层 以显示我打开的道具
|
||||
getroottable().WindowsShowABFlag <- false;
|
||||
DrawItemCurObject = Object;
|
||||
}
|
||||
} else {
|
||||
if (Info.vis) {
|
||||
//关闭道具信息窗口
|
||||
L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||
Info.vis = false;
|
||||
DrawItemCurObject = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//override
|
||||
//鼠标右键按下回调
|
||||
function OnMouseRbDown(MousePos_X, MousePos_Y) {
|
||||
if (DrawItemCurObject) {
|
||||
if (RecoveryList.rawin(DrawItemCurObject)) {
|
||||
local Info = RecoveryList[DrawItemCurObject];
|
||||
if (Info.vis) {
|
||||
//关闭道具信息窗口
|
||||
L_Sq_CallFunc(0xE6B2B0, "int", FFI_THISCALL, ["int", "int", "int", "char"], 0x1ADE090, 0x113, 0xFFFFFFFF, 0x0);
|
||||
Info.vis = false;
|
||||
RemoveDrawItem(DrawItemCurObject);
|
||||
DrawItemCurObject = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
//调用原生方法
|
||||
LenheartNewUI_Windows.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
// //接管鼠标设定逻辑
|
||||
// if (Visible) {
|
||||
// _Rindro_Cusor_.TakeoverFlag = true;
|
||||
// } else {
|
||||
// _Rindro_Cusor_.TakeoverFlag = false;
|
||||
// }
|
||||
|
||||
|
||||
//同步位移窗口逻辑
|
||||
local Window = sq_GetPopupWindowMainCotrol(64);
|
||||
if (Window) {
|
||||
X = Window.GetXPos() - 430;
|
||||
Y = Window.GetYPos() + 60;
|
||||
}
|
||||
|
||||
//悬停已回收锁定逻辑
|
||||
local SelectItem = L_sq_RA(0x1AE45B4);
|
||||
if (SelectItem) {
|
||||
if (RecoveryList.rawin(SelectItem)) {
|
||||
R_Mouse.Lock();
|
||||
_Rindro_Cusor_.ForceLockState = true;
|
||||
} else {
|
||||
_Rindro_Cusor_.ForceLockState = false;
|
||||
}
|
||||
} else {
|
||||
_Rindro_Cusor_.ForceLockState = false;
|
||||
}
|
||||
|
||||
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
getroottable().rawdelete("Recovery_Obj");
|
||||
|
||||
function Lenheart_Recovery_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("Recovery_Obj")) {
|
||||
RootTab.rawset("Recovery_Obj", true);
|
||||
LenheartNewUI_CreateWindow(RecoveryC, "回收系统窗口", 43, 128, 420, 412, 0);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("RecoveryFuncN", Lenheart_Recovery_Fun);
|
||||
@@ -4,6 +4,8 @@
|
||||
创建日期:2024-08-10 08:04
|
||||
文件用途:修补世界地图
|
||||
*/
|
||||
YosinWorldMapX <- 0;
|
||||
YosinWorldMapY <- 0;
|
||||
class RepairWorldMapC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
@@ -20,7 +22,7 @@ class RepairWorldMapC extends LenheartNewUI_Windows {
|
||||
//世界地图信息
|
||||
Info = null;
|
||||
|
||||
//当前城镇编号
|
||||
//当前区域编号
|
||||
AreaId = 0;
|
||||
|
||||
//下拉框打开Flag
|
||||
@@ -36,6 +38,7 @@ class RepairWorldMapC extends LenheartNewUI_Windows {
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
Info = {};
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
@@ -48,6 +51,25 @@ class RepairWorldMapC extends LenheartNewUI_Windows {
|
||||
L_sq_WAB(0x1031B36, 0x90);
|
||||
L_sq_WAB(0x1031B37, 0x90);
|
||||
L_sq_WAB(0x1031B38, 0x90);
|
||||
|
||||
Info = Rindro_Script.GetFileData("region/region.lst", function(DataTable, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Key = Data.Get();
|
||||
local Path = "region/" + Data.Get();
|
||||
local RgnInfo = Rindro_Script.GetFileData(Path, function(DataTableA, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Str = Data.Get();
|
||||
if (Str == "[name]") {
|
||||
DataTableA.Name <- Sq_ConvertWideChar(Data.Get(), "big5");
|
||||
}
|
||||
}
|
||||
});
|
||||
DataTable.rawset(Key.tointeger() - 1, {
|
||||
Name = RgnInfo.Name
|
||||
});
|
||||
}
|
||||
}.bindenv(this));
|
||||
Info.rawdelete("filepath");
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
@@ -65,19 +87,19 @@ class RepairWorldMapC extends LenheartNewUI_Windows {
|
||||
return;
|
||||
}
|
||||
//黑框
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 8, 131, 7);
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 8, 131 + YosinWorldMapX, 7 + YosinWorldMapY);
|
||||
//绘制区域名称
|
||||
L_sq_DrawCode(getroottable().RINDRO_CONFIG.region[AreaId].Name, 135, 10, 0xFFFFFFFF, 1, 1);
|
||||
L_sq_DrawCode(Info[AreaId].Name, 135 + YosinWorldMapX, 10 + YosinWorldMapY, 0xFFFFFFFF, 1, 1);
|
||||
|
||||
if (TabbarFlag) {
|
||||
foreach(Pos, Value in getroottable().RINDRO_CONFIG.region) {
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 9, 131, 25 + (Pos * 18));
|
||||
foreach(Pos, Value in Info) {
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 9, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY);
|
||||
// L_sq_DrawWindow(128, 24 + (Pos * 18), 108, 10, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawCode(Value.Name, 135, 28 + (Pos * 18), 0xFFFFFFFF, 1, 1);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 131, 25 + (Pos * 18), 108, 18)) {
|
||||
L_sq_DrawCode(Value.Name, 135 + YosinWorldMapX, 28 + (Pos * 18) + YosinWorldMapY, 0xFFFFFFFF, 1, 1);
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY, 108, 18)) {
|
||||
MarkFlag = Pos;
|
||||
L_sq_SetDrawImgModel(2, 0);
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 16, 131, 25 + (Pos * 18));
|
||||
L_sq_DrawImg("interface/minimap_minimap_town.img", 16, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY);
|
||||
L_sq_ReleaseDrawImgModel();
|
||||
}
|
||||
}
|
||||
@@ -125,10 +147,9 @@ function Sq_DrawMiniMapUI(obj) {
|
||||
getroottable().rawdelete("RepairWorldMap_Obj");
|
||||
|
||||
function Lenheart_RepairWorldMap_Fun(obj) {
|
||||
return;
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("RepairWorldMap_Obj")) {
|
||||
RootTab.rawset("RepairWorldMap_Obj", LenheartNewUI_CreateWindow(RepairWorldMapC, "世界地图修补", 230, 0, 30, 30, 0));
|
||||
RootTab.rawset("RepairWorldMap_Obj", LenheartNewUI_CreateWindow(RepairWorldMapC, "世界地图修补", 230 + YosinWorldMapX, 0 + YosinWorldMapY, 30, 30, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
764
Project/Scheming/Scheming.nut
Normal file
@@ -0,0 +1,764 @@
|
||||
/*
|
||||
文件名:Scheming.nut
|
||||
路径:Project/Scheming/Scheming.nut
|
||||
创建日期:2025-03-04 10:15
|
||||
文件用途:心机牌
|
||||
*/
|
||||
class SchemingC_Player {
|
||||
Charc = null;
|
||||
Name = "";
|
||||
IsMyControl = true;
|
||||
Card = null;
|
||||
|
||||
|
||||
//Img
|
||||
Img = Rindro_Image("xjp.img");
|
||||
|
||||
//生命值
|
||||
Hp = 3;
|
||||
|
||||
constructor() {
|
||||
Card = [0, 1, 2];
|
||||
}
|
||||
|
||||
//职业int 装备array 名字string
|
||||
function SetPlayer(Job, Equ, Name) {
|
||||
this.Name = Name;
|
||||
Charc = Rindro_Draw_Character(Job, Equ, "rest.ani", null);
|
||||
}
|
||||
|
||||
function SetCard(gCard) {
|
||||
Card = gCard;
|
||||
}
|
||||
|
||||
function Draw(Xpos, Ypos) {
|
||||
if (!Charc) return;
|
||||
//绘制头像背景框
|
||||
sq_DrawBox(Xpos - 1, Ypos - 1, 26, 20, sq_RGBA(127, 132, 142, 250));
|
||||
sq_DrawBox(Xpos - 1, Ypos - 1 + 20, 80, 20, sq_RGBA(127, 132, 142, 250));
|
||||
L_sq_DrawCode(this.Name, Xpos + 44 - (LenheartTextClass.GetStringLength(this.Name) / 2), Ypos + 23, IsMyControl ? sq_RGBA(157, 245, 10, 250) : sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
Charc.DrawFace(Xpos, Ypos);
|
||||
DrawHp(Xpos, Ypos);
|
||||
}
|
||||
|
||||
function DrawHp(Xpos, Ypos) {
|
||||
for (local i = 0; i< Hp; i++) {
|
||||
Img.DrawPng(2, Xpos + 28 + (i * 18), Ypos + 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
class SchemingC_Card extends LenheartNewUI_CommonUi {
|
||||
State = 0;
|
||||
//Img
|
||||
Img = Rindro_Image("xjpcard.img");
|
||||
Id = 1;
|
||||
//是否选中
|
||||
IsSelect = false;
|
||||
|
||||
constructor() {
|
||||
Id = 1;
|
||||
LenheartNewUI_CommonUi.constructor(0, 0, 82, 107);
|
||||
|
||||
OnClick = function() {
|
||||
IsSelect = !IsSelect;
|
||||
if (IsSelect) {
|
||||
Localtion_Y -= 30;
|
||||
} else {
|
||||
Localtion_Y += 30;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function SetCardId(CardId) {
|
||||
Id = CardId + 1;
|
||||
}
|
||||
|
||||
|
||||
function Show(obj) {
|
||||
//不可用
|
||||
if (State == 8) {
|
||||
Img.DrawPng(Id, X, Y);
|
||||
} else {
|
||||
//按下
|
||||
if (isLBDown) {
|
||||
Img.DrawPng(6, X, Y);
|
||||
Img.DrawPng(Id, X, Y);
|
||||
}
|
||||
//悬停
|
||||
else if (isInRect) {
|
||||
if (!IsSelect) Img.DrawPng(5, X, Y);
|
||||
else Img.DrawPng(6, X, Y);
|
||||
Img.DrawPng(Id, X, Y);
|
||||
}
|
||||
//普通
|
||||
else {
|
||||
if (IsSelect) Img.DrawPng(6, X, Y);
|
||||
Img.DrawPng(Id, X, Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
class SchemingC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
//本服或跨服模式
|
||||
IsServer = false;
|
||||
|
||||
//胜利场次
|
||||
WinCount = 0;
|
||||
//排名
|
||||
Ranking = 0;
|
||||
//跨服排名
|
||||
OnlineRanking = 0;
|
||||
//入场券数量
|
||||
TicketCount = 0;
|
||||
|
||||
//阶段
|
||||
Stage = 0;
|
||||
//游戏状态
|
||||
GameState = -1;
|
||||
//发牌阶段
|
||||
DealCardState = 0;
|
||||
//发牌时间管理器
|
||||
DealCardTimer = Clock();
|
||||
//翻牌阶段
|
||||
FlipCardState = 0;
|
||||
//翻牌时间管理器
|
||||
FlipCardTimer = Clock();
|
||||
//随机牌阶段
|
||||
RandCardState = 0;
|
||||
//随机牌时间管理器
|
||||
RandCardTimer = Clock();
|
||||
//匹配状态
|
||||
MatchState = 0;
|
||||
|
||||
//Img
|
||||
Img = Rindro_Image("xjp.img");
|
||||
//CardImg
|
||||
CardImg = Rindro_Image("xjpcard.img");
|
||||
|
||||
//X轴方向偏移基准值
|
||||
XOffset = 0;
|
||||
|
||||
//玩家集合
|
||||
PlayerList = null;
|
||||
PlayerPos = [
|
||||
[360, 550],
|
||||
[1, 274],
|
||||
[360, 10],
|
||||
[720, 274]
|
||||
];
|
||||
|
||||
//卡牌集合
|
||||
CardList = null;
|
||||
|
||||
//点击效果Ani
|
||||
ClickEffFrameArr = null;
|
||||
ClickEffAni = null;
|
||||
|
||||
//匹配动画Ani
|
||||
MatchImg2 = Rindro_Image("xjploading2.img");
|
||||
MatchAni2 = null;
|
||||
|
||||
//主牌
|
||||
MainCardId = 0;
|
||||
|
||||
//出牌动画演出Flag
|
||||
PlayCardAniTimer = Clock();
|
||||
PlayCardAniFlag = -1;
|
||||
PlayCardAniCount = 3;
|
||||
|
||||
//质疑开牌动画演出
|
||||
QuestionAniTimer = Clock();
|
||||
QuestionAniFlag = -1;
|
||||
QuestionList = null;
|
||||
|
||||
//回合玩家
|
||||
RoundCharac = 0;
|
||||
//回合剩余时间
|
||||
RoundTime = Clock();
|
||||
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
ClickEffAni = [];
|
||||
//计算宽屏适配
|
||||
XOffset = (gWidth == 800 ? 0 : 133);
|
||||
|
||||
//初始化构造
|
||||
PlayerList = array(4);
|
||||
for (local i = 0; i< 4; i++) {
|
||||
PlayerList[i] = SchemingC_Player();
|
||||
}
|
||||
CardList = array(5);
|
||||
for (local i = 0; i< 5; i++) {
|
||||
CardList[i] = SchemingC_Card();
|
||||
CardList[i].Localtion_X = (XOffset + 400) - 205 + (i * 82)
|
||||
CardList[i].Localtion_Y = 426;
|
||||
Childrens.append(CardList[i]);
|
||||
}
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
//注册收包
|
||||
RegisterPacket();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
//记录点击效果帧
|
||||
ClickEffFrameArr = [];
|
||||
for (local i = 0; i< 13; i++) {
|
||||
local T = {
|
||||
ImgIndex = i,
|
||||
Delay = 50,
|
||||
Pos = [0, 0]
|
||||
}
|
||||
ClickEffFrameArr.append(T);
|
||||
}
|
||||
|
||||
//匹配动画
|
||||
local MatchEffFrameArr2 = [];
|
||||
for (local i = 0; i< 24; i++) {
|
||||
local T = {
|
||||
ImgIndex = i,
|
||||
Delay = 40,
|
||||
Pos = [0, 0]
|
||||
}
|
||||
MatchEffFrameArr2.append(T);
|
||||
//预加载
|
||||
MatchImg2.DrawPng(i, -500, -500);
|
||||
}
|
||||
MatchAni2 = Lenheart_Ani("xjploading2.img", MatchEffFrameArr2, [XOffset + 356, 310]);
|
||||
MatchAni2.ImgPath = "xjploading2.img";
|
||||
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
//质疑按钮
|
||||
local QuestionButton = LenheartNewUI_BaseButton(getroottable().Rindro_Scr_Width == 800 ? 680 : 860, 500, 87, 34, "xjp.img", 5);
|
||||
QuestionButton.OnClick = function() {
|
||||
|
||||
}.bindenv(this);
|
||||
QuestionButton.SetCallBackFunc(function(Button) {
|
||||
if (Stage == 0) Button.Visible = false;
|
||||
else Button.Visible = true;
|
||||
}.bindenv(this));
|
||||
Childrens.append(QuestionButton);
|
||||
|
||||
//出牌按钮
|
||||
local ProduceButton = LenheartNewUI_BaseButton(getroottable().Rindro_Scr_Width == 800 ? 680 : 860, 536, 87, 34, "xjp.img", 8);
|
||||
ProduceButton.OnClick = function() {
|
||||
local SendCardList = [];
|
||||
foreach(Index, Card in CardList) {
|
||||
if (Card.IsSelect) SendCardList.append(Index);
|
||||
}
|
||||
if (SendCardList.len() == 0) return;
|
||||
//发送出牌包
|
||||
local T = {
|
||||
op = 20092007,
|
||||
CardList = SendCardList
|
||||
};
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
ProduceButton.SetCallBackFunc(function(Button) {
|
||||
if (Stage == 0) Button.Visible = false;
|
||||
else Button.Visible = true;
|
||||
}.bindenv(this));
|
||||
Childrens.append(ProduceButton);
|
||||
|
||||
//匹配按钮
|
||||
local MatchButton = LenheartNewUI_BaseButton(getroottable().Rindro_Scr_Width == 800 ? 355 : 488, 400, 87, 34, "xjp.img", 16);
|
||||
MatchButton.OnClickEx = function(Button) {
|
||||
if (!Button.Visible) return;
|
||||
//发送开始匹配包
|
||||
local T = {
|
||||
op = 20092001,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
MatchButton.SetCallBackFunc(function(Button) {
|
||||
if (Stage == 0) {
|
||||
if (MatchState == 0) Button.Visible = true;
|
||||
else Button.Visible = false;
|
||||
} else Button.Visible = false;
|
||||
}.bindenv(this));
|
||||
Childrens.append(MatchButton);
|
||||
|
||||
//取消匹配按钮
|
||||
local CancelMatchButton = LenheartNewUI_BaseButton(getroottable().Rindro_Scr_Width == 800 ? 355 : 488, 400, 87, 34, "xjp.img", 19);
|
||||
CancelMatchButton.OnClickEx = function(Button) {
|
||||
if (!Button.Visible) return;
|
||||
//发送开始匹配包
|
||||
local T = {
|
||||
op = 20092003,
|
||||
}
|
||||
SendPackEx(T);
|
||||
}.bindenv(this);
|
||||
CancelMatchButton.SetCallBackFunc(function(Button) {
|
||||
if (Stage == 0) {
|
||||
if (MatchState == 1) Button.Visible = true;
|
||||
else Button.Visible = false;
|
||||
} else Button.Visible = false;
|
||||
}.bindenv(this));
|
||||
Childrens.append(CancelMatchButton);
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
if (Width == 800) {
|
||||
Img.DrawPng(0, X, Y);
|
||||
} else {
|
||||
Img.DrawPng(1, X, Y);
|
||||
}
|
||||
|
||||
|
||||
//匹配阶段
|
||||
if (Stage == 0) {
|
||||
//绘制标题
|
||||
Img.DrawPng(11, X + XOffset + 124, Y + 60);
|
||||
//绘制个人信息框
|
||||
Img.DrawPng(12, X + XOffset + 400 - 135, Y + 200);
|
||||
L_sq_DrawCode("胜利场次: " + WinCount + "次", X + XOffset + 400 - 135 + 12, Y + 200 + 20, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
L_sq_DrawCode("服务器排名: 第" + (IsServer ? OnlineRanking : Ranking) + "名", X + XOffset + 400 - 135 + 12, Y + 200 + 40, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
if (!IsServer) L_sq_DrawCode("剩余入场券数量: " + Ranking + "张", X + XOffset + 400 - 135 + 12, Y + 200 + 60, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
|
||||
if (MatchState == 0) {
|
||||
|
||||
} else if (MatchState == 1) {
|
||||
//绘制匹配动画
|
||||
L_sq_SetDrawImgModel(2, 0);
|
||||
MatchAni2.Show(Duration);
|
||||
L_sq_ReleaseDrawImgModel();
|
||||
L_sq_DrawCode("匹配中", X + XOffset + 400 - 135 + 116, Y + 200 + 40 + 105, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
}
|
||||
}
|
||||
//游戏阶段
|
||||
else if (Stage == 1) {
|
||||
//挑选万能牌
|
||||
if (GameState == -1) {
|
||||
local Rate = sq_GetUniformVelocity(0, 100, Clock() - RandCardTimer, 300);
|
||||
if (RandCardState< 3) {
|
||||
if (RandCardState == 0) {
|
||||
if ((Clock() - RandCardTimer >= 300)) {
|
||||
RandCardTimer = Clock();
|
||||
RandCardState++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (RandCardState == 1) {
|
||||
if ((Clock() - RandCardTimer >= 1000)) {
|
||||
RandCardTimer = Clock();
|
||||
RandCardState++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (RandCardState == 2) {
|
||||
if ((Clock() - RandCardTimer >= 1000)) {
|
||||
RandCardTimer = Clock();
|
||||
RandCardState++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (RandCardState == 3) {
|
||||
GameState = 0;
|
||||
return;
|
||||
}
|
||||
if (RandCardState == 0) {
|
||||
Rate = abs(100 - Rate).tofloat() / 100.0;
|
||||
} else {
|
||||
Rate = Rate.tofloat() / 100.0;
|
||||
}
|
||||
|
||||
if (RandCardState == 0)
|
||||
CardImg.DrawExPng(0, ((XOffset + 400) - 41), 240, 0, 0xffffffff, Rate, 1.0);
|
||||
if (RandCardState == 1)
|
||||
CardImg.DrawExPng(MainCardId, ((XOffset + 400) - 41), 240, 0, 0xffffffff, Rate, 1.0);
|
||||
if (RandCardState == 2) {
|
||||
local XBuf = sq_GetUniformVelocity(((XOffset + 400) - 41), 10, Clock() - RandCardTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(240, 30, Clock() - RandCardTimer, 200);
|
||||
CardImg.DrawPng(MainCardId, XBuf, YBuf);
|
||||
}
|
||||
}
|
||||
if (GameState >= 0) {
|
||||
//大于0了就永远绘制主牌
|
||||
CardImg.DrawPng(MainCardId, 10, 30);
|
||||
//计算时间因子
|
||||
if (Clock() - DealCardTimer >= 200) {
|
||||
DealCardTimer = Clock();
|
||||
DealCardState++;
|
||||
|
||||
if (DealCardState > 3 && GameState == 0) {
|
||||
GameState = 1;
|
||||
FlipCardTimer = Clock();
|
||||
}
|
||||
}
|
||||
//绘制发牌动画
|
||||
for (local i = 0; i< 20; i++) {
|
||||
if (i< 5) {
|
||||
//自己的牌只在发牌阶段绘制
|
||||
if (GameState == 0) {
|
||||
if (DealCardState == 0) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40 - i), ((XOffset + 400) - 205) + (82 * i), Clock() - DealCardTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 240 - i, 426, Clock() - DealCardTimer, 200);
|
||||
CardImg.DrawPng(0, XBuf, YBuf);
|
||||
} else {
|
||||
CardImg.DrawPng(0, ((XOffset + 400) - 205) + (82 * i), 426);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if (i< 10 && DealCardState >= 1) {
|
||||
if (i - 5< PlayerList[i / 5].Card.len()) {
|
||||
if (DealCardState == 1) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40 - i), ((XOffset + 80)), Clock() - DealCardTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 240 - i, 190 + ((i - 5) * 15), Clock() - DealCardTimer, 200);
|
||||
CardImg.DrawPng(0, XBuf, YBuf);
|
||||
} else {
|
||||
CardImg.DrawPng(0, ((XOffset + 80)), 190 + ((i - 5) * 15));
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if (i< 15 && DealCardState >= 2) {
|
||||
if (i - 10< PlayerList[i / 5].Card.len()) {
|
||||
if (DealCardState == 2) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40 - i), ((XOffset + 400) - 86) + (15 * (i - 10)), Clock() - DealCardTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 240 - i, 54, Clock() - DealCardTimer, 200);
|
||||
CardImg.DrawPng(0, XBuf, YBuf);
|
||||
} else {
|
||||
CardImg.DrawPng(0, ((XOffset + 400) - 86) + (15 * (i - 10)), 54);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if (i< 20 && DealCardState >= 3) {
|
||||
if (i - 15< PlayerList[i / 5].Card.len()) {
|
||||
if (DealCardState == 3) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40 - i), ((XOffset + 620)), Clock() - DealCardTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 240 - i, 190 + ((i - 15) * 15), Clock() - DealCardTimer, 200);
|
||||
CardImg.DrawPng(0, XBuf, YBuf);
|
||||
} else {
|
||||
CardImg.DrawPng(0, ((XOffset + 620)), 190 + ((i - 15) * 15));
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
CardImg.DrawPng(0, X + XOffset + 400 - 40 - i, Y + 240 - i);
|
||||
}
|
||||
}
|
||||
|
||||
//绘制翻牌动画
|
||||
if (GameState == 1) {
|
||||
local Rate = sq_GetUniformVelocity(0, 100, Clock() - FlipCardTimer, 300);
|
||||
if (FlipCardState< 2) {
|
||||
if (FlipCardState == 0) {
|
||||
if ((Clock() - FlipCardTimer >= 300)) {
|
||||
FlipCardTimer = Clock();
|
||||
FlipCardState++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (FlipCardState == 1) {
|
||||
if ((Clock() - FlipCardTimer >= 1000)) {
|
||||
FlipCardTimer = Clock();
|
||||
FlipCardState++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (FlipCardState == 2) {
|
||||
GameState = 2;
|
||||
return;
|
||||
}
|
||||
if (FlipCardState == 0) {
|
||||
Rate = abs(100 - Rate).tofloat() / 100.0;
|
||||
} else {
|
||||
Rate = Rate.tofloat() / 100.0;
|
||||
if (Rate > 0.95) {
|
||||
for (local i = 0; i< 5; i++) {
|
||||
CardList[i].Visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (local i = 0; i< 5; i++) {
|
||||
if (FlipCardState == 0)
|
||||
CardImg.DrawExPng(0, ((XOffset + 400) - 205) + (82 * i), 426, 0, 0xffffffff, Rate, 1.0);
|
||||
if (FlipCardState == 1)
|
||||
CardImg.DrawExPng(CardList[i].Id, ((XOffset + 400) - 205) + (82 * i), 426, 0, 0xffffffff, Rate, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//绘制玩家
|
||||
foreach(Index, PlayerObj in PlayerList) {
|
||||
PlayerObj.Draw(X + (XOffset + PlayerPos[Index][0]), Y + PlayerPos[Index][1]);
|
||||
}
|
||||
|
||||
//绘制文字当前主牌
|
||||
Img.DrawPng(4, X + 10, Y + 10);
|
||||
|
||||
|
||||
//绘制出牌动画
|
||||
if (PlayCardAniFlag == 0) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40), (X + XOffset + 300 - 40), Clock() - PlayCardAniTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 400, 220, Clock() - PlayCardAniTimer, 200);
|
||||
for (local i = 0; i< PlayCardAniCount; i++) {
|
||||
CardImg.DrawPng(0, XBuf + (12 * i), YBuf);
|
||||
}
|
||||
} else if (PlayCardAniFlag == 1) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 80), (X + XOffset + 300 - 40), Clock() - PlayCardAniTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 200, 220, Clock() - PlayCardAniTimer, 200);
|
||||
for (local i = 0; i< PlayCardAniCount; i++) {
|
||||
CardImg.DrawPng(0, XBuf + (12 * i), YBuf);
|
||||
}
|
||||
} else if (PlayCardAniFlag == 2) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 400 - 40), (X + XOffset + 300 - 40), Clock() - PlayCardAniTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 54, 220, Clock() - PlayCardAniTimer, 200);
|
||||
for (local i = 0; i< PlayCardAniCount; i++) {
|
||||
CardImg.DrawPng(0, XBuf + (12 * i), YBuf);
|
||||
}
|
||||
} else if (PlayCardAniFlag == 3) {
|
||||
local XBuf = sq_GetUniformVelocity((X + XOffset + 620), (X + XOffset + 300 - 40), Clock() - PlayCardAniTimer, 200);
|
||||
local YBuf = sq_GetUniformVelocity(Y + 200, 220, Clock() - PlayCardAniTimer, 200);
|
||||
for (local i = 0; i< PlayCardAniCount; i++) {
|
||||
CardImg.DrawPng(0, XBuf + (12 * i), YBuf);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
//绘制质疑开牌动画
|
||||
if (QuestionAniFlag == 1) {
|
||||
local XBufRate = sq_GetUniformVelocity(12, 82, Clock() - QuestionAniTimer, 300);
|
||||
if (XBufRate >= 82) {
|
||||
QuestionAniFlag++;
|
||||
QuestionAniTimer = Clock();
|
||||
}
|
||||
for (local i = 0; i< QuestionList.len(); i++) {
|
||||
CardImg.DrawPng(0, X + XOffset + 300 - 40 + (XBufRate * i), 220);
|
||||
}
|
||||
}
|
||||
if (QuestionAniFlag >= 2) {
|
||||
local Rate = sq_GetUniformVelocity(0, 100, Clock() - QuestionAniTimer, 200);
|
||||
if (QuestionAniFlag< 5) {
|
||||
if (QuestionAniFlag == 2) {
|
||||
if ((Clock() - QuestionAniTimer >= 300)) {
|
||||
QuestionAniTimer = Clock();
|
||||
QuestionAniFlag++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (QuestionAniFlag == 3) {
|
||||
if ((Clock() - QuestionAniTimer >= 1200)) {
|
||||
QuestionAniTimer = Clock();
|
||||
QuestionAniFlag++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (QuestionAniFlag == 4) {
|
||||
if ((Clock() - QuestionAniTimer >= 1000)) {
|
||||
QuestionAniTimer = Clock();
|
||||
QuestionAniFlag++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (QuestionAniFlag == 5) {
|
||||
return;
|
||||
}
|
||||
if (QuestionAniFlag == 2) {
|
||||
Rate = abs(100 - Rate).tofloat() / 100.0;
|
||||
} else if (QuestionAniFlag == 3) {
|
||||
Rate = Rate.tofloat() / 100.0;
|
||||
}
|
||||
|
||||
for (local i = 0; i< QuestionList.len(); i++) {
|
||||
if (QuestionAniFlag == 2)
|
||||
CardImg.DrawExPng(0, X + XOffset + 300 - 40 + (82 * i), 220, 0, 0xffffffff, Rate, 1.0);
|
||||
if (QuestionAniFlag == 3)
|
||||
CardImg.DrawExPng(QuestionList[i] + 1, X + XOffset + 300 - 40 + (82 * i), 220, 0, 0xffffffff, Rate, 1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//绘制当前是谁的回合
|
||||
if (RoundCharac == 0) {
|
||||
// Img.DrawPng(5, X + 10, Y + 10);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
//绘制点击效果
|
||||
L_sq_SetDrawImgModel(2, 0);
|
||||
foreach(Ani in ClickEffAni) {
|
||||
Ani.ShowEx(Duration, sq_RGBA(255, 255, 255, 250), 0.8, 0.8);
|
||||
}
|
||||
L_sq_ReleaseDrawImgModel();
|
||||
}
|
||||
|
||||
function SyncCardPos() {
|
||||
//匹配阶段
|
||||
if (Stage == 0) {
|
||||
foreach(Card in CardList) {
|
||||
Card.Visible = false;
|
||||
}
|
||||
}
|
||||
//游戏阶段
|
||||
else if (Stage == 1) {
|
||||
//State 0 发牌阶段 1 出牌阶段
|
||||
if (GameState == 2) {
|
||||
SynchronizeYourCardPosition();
|
||||
} else if (GameState <= 0) {
|
||||
foreach(Card in CardList) {
|
||||
Card.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function SynchronizeYourCardPosition() {
|
||||
//计算数量
|
||||
local DisplayCount = 0;
|
||||
foreach(Card in CardList) {
|
||||
if (Card.Visible) DisplayCount++;
|
||||
}
|
||||
//计算卡牌总宽度
|
||||
local TotalWidth = DisplayCount * 82;
|
||||
//计算偏移量 居中 卡牌宽度为82
|
||||
local DrawIndex = 0;
|
||||
foreach(Card in CardList) {
|
||||
if (!Card.Visible) continue;
|
||||
Card.Localtion_X = (XOffset + 400) - (TotalWidth / 2) + (DrawIndex * 82);
|
||||
DrawIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
SyncCardPos();
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
}
|
||||
|
||||
//注册收包
|
||||
function RegisterPacket() {
|
||||
//开始匹配回调
|
||||
Pack_Control.rawset(20092002, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
MatchState = 1;
|
||||
}.bindenv(this));
|
||||
//取消匹配回调
|
||||
Pack_Control.rawset(20092004, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
MatchState = 0;
|
||||
}.bindenv(this));
|
||||
//对局开始回调
|
||||
Pack_Control.rawset(20092006, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
MatchState = 0;
|
||||
Stage = 1;
|
||||
GameState = -1;
|
||||
DealCardTimer = Clock();
|
||||
RandCardTimer = Clock();
|
||||
//设置主牌
|
||||
MainCardId = Jso.MainCard;
|
||||
//设置玩家
|
||||
foreach(Index, PlayerObj in Jso.CharacList) {
|
||||
PlayerList[Index].SetPlayer(PlayerObj.Job, PlayerObj.Equ, PlayerObj.Name);
|
||||
PlayerList[Index].SetCard(PlayerObj.CardList);
|
||||
}
|
||||
//设置自己的牌
|
||||
foreach(Index, CardId in Jso.CharacList[0].CardList) {
|
||||
CardList[Index].SetCardId(CardId);
|
||||
}
|
||||
}.bindenv(this));
|
||||
//出牌成功回调
|
||||
Pack_Control.rawset(20092008, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
local SendCardList = Jso.CardList;
|
||||
|
||||
//如果是自己出牌
|
||||
if (Jso.CharacId == 0) {
|
||||
//设定卡牌不可见
|
||||
foreach(Index in SendCardList) {
|
||||
CardList[Index].Visible = false;
|
||||
}
|
||||
//设置出牌动画Flag
|
||||
PlayCardAniFlag = 0;
|
||||
}
|
||||
//如果是其他玩家出牌
|
||||
else {
|
||||
PlayerList[Jso.CharacId].Card = array(PlayerList[Jso.CharacId].Card.len() - SendCardList.len());
|
||||
//设置出牌动画Flag
|
||||
PlayCardAniFlag = Jso.CharacId;
|
||||
//设置出牌张数
|
||||
PlayCardAniCount = SendCardList.len();
|
||||
}
|
||||
|
||||
}.bindenv(this));
|
||||
//刷新回合信息回调
|
||||
Pack_Control.rawset(20092010, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
//回合玩家
|
||||
RoundCharac = Jso.RoundCharac;
|
||||
//回合剩余时间
|
||||
RoundTime = Jso.RoundTime;
|
||||
}.bindenv(this));
|
||||
|
||||
//战绩包回调
|
||||
Pack_Control.rawset(20092098, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
this.WinCount = Jso.WinCount;
|
||||
this.Ranking = Jso.Ranking;
|
||||
this.OnlineRanking = Jso.OnlineRanking;
|
||||
this.TicketCount = Jso.TicketCount;
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
|
||||
ClickFlag = null;
|
||||
//鼠标左键按下回调
|
||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||
LenheartNewUI_Windows.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||
ClickFlag = {
|
||||
x = MousePos_X,
|
||||
y = MousePos_Y
|
||||
};
|
||||
|
||||
local ClickEffAniBuffer = Lenheart_Ani("", ClickEffFrameArr, [MousePos_X - (70 * 0.8), MousePos_Y - (75 * 0.8)]);
|
||||
ClickEffAniBuffer.ImgPath = "xjpclick2.img";
|
||||
ClickEffAniBuffer.LoopFlag = false;
|
||||
ClickEffAni.append(ClickEffAniBuffer);
|
||||
}
|
||||
|
||||
function OpenCallBack() {
|
||||
Visible = true;
|
||||
//查询战绩
|
||||
local T = {
|
||||
op = 20092097,
|
||||
};
|
||||
SendPackEx(T);
|
||||
}
|
||||
}
|
||||
getroottable().rawdelete("Scheming_Obj");
|
||||
|
||||
function Lenheart_Scheming_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("Scheming_Obj")) {
|
||||
RootTab.rawset("Scheming_Obj", true);
|
||||
local width = getroottable().Rindro_Scr_Width;
|
||||
local Win = LenheartNewUI_CreateWindow(SchemingC, "心机牌窗口", 0, 0, width, 600, 0);
|
||||
EventList_Obj.AddEvent("心机牌大作战", 364, Win);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("SchemingFuncN", Lenheart_Scheming_Fun);
|
||||
@@ -192,6 +192,14 @@ class ServerAuctionC extends LenheartNewUI_Windows {
|
||||
AddChild(OpenAuctionButton);
|
||||
}
|
||||
|
||||
function GetItemName(Id) {
|
||||
//读取物品名称
|
||||
local ItemObject = L_sq_GetItem(Id);
|
||||
local NamePointer = L_sq_RA(ItemObject + 0x20);
|
||||
local Name = NativePointer(L_sq_I2P(NamePointer)).readUnicodeString();
|
||||
return Name;
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
|
||||
@@ -211,18 +219,17 @@ class ServerAuctionC extends LenheartNewUI_Windows {
|
||||
if (Value.cost == -1) CostItemId = 7906;
|
||||
if (Value.cost == -2) CostItemId = 133;
|
||||
//绘制扣除道具
|
||||
if (Rindro_ItemInfoObject.rawin(CostItemId)) DrawItemEx(X + 40, Y + 284, CostItemId, 1);
|
||||
else L_Sq_DrawItem(X + 40, Y + 284, CostItemId, 1, 0, 0, 0);
|
||||
DrawItemEx(X + 40, Y + 284, CostItemId, 1);
|
||||
|
||||
local CostName = "";
|
||||
if (Value.cost == 0) CostName = "金币";
|
||||
else if (Value.cost == -1) CostName = "点券";
|
||||
else if (Value.cost == -2) CostName = "代币券";
|
||||
else CostName = Rindro_ItemInfoObject[CostItemId].Name;
|
||||
else CostName = GetItemName(CostItemId);
|
||||
//绘制扣除道具名字
|
||||
L_sq_DrawCode(CostName, X + 79, Y + 300, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制竞品名
|
||||
L_sq_DrawCode(Rindro_ItemInfoObject[Value.itemId].Name, X + 120, Y + 207, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
L_sq_DrawCode(GetItemName(Value.itemId), X + 120, Y + 207, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制最高竞价者
|
||||
L_sq_DrawCode(AuctionRealInfo.name, X + 120, Y + 230, sq_RGBA(227, 212, 154, 250), 0, 1);
|
||||
//绘制最高竞拍价
|
||||
|
||||
@@ -25,6 +25,10 @@ class ShapeshiftingC extends LenheartNewUI_Windows {
|
||||
//初始化时间
|
||||
Timer = 0;
|
||||
|
||||
//是否已经变身
|
||||
IsShapeshifting = false;
|
||||
|
||||
|
||||
//收到信息包
|
||||
function GetInfoCallBack(Chunk) {
|
||||
if (!this) return;
|
||||
@@ -49,18 +53,41 @@ class ShapeshiftingC extends LenheartNewUI_Windows {
|
||||
|
||||
function RegisterWidget() {
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(0, 0, 28, 28, "interface2/yosin/bianshen.img", 0);
|
||||
CloseButton.OnClick = function() {
|
||||
local OpenButton = LenheartNewUI_BaseButton(0, 0, 28, 28, "interface2/yosin/bianshen.img", 0);
|
||||
OpenButton.OnClick = function() {
|
||||
if (ShapeMonsterId) {
|
||||
L_sq_SendPackType(214);
|
||||
L_sq_SendPackByte(2);
|
||||
L_sq_SendPackWord(ShapeMonsterId);
|
||||
L_sq_SendPack();
|
||||
IsShapeshifting = true;
|
||||
}
|
||||
}.bindenv(this);
|
||||
OpenButton.SetCallBackFunc(function(Button) {
|
||||
if (!IsShapeshifting) {
|
||||
Button.Localtion_X = 0;
|
||||
} else {
|
||||
Button.Localtion_X = -90000;
|
||||
}
|
||||
}.bindenv(this))
|
||||
Childrens.append(OpenButton);
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(0, 0, 28, 28, "interface2/yosin/bianshen.img", 4);
|
||||
CloseButton.OnClick = function() {
|
||||
if (ShapeMonsterId) {
|
||||
L_sq_SendPackType(215);
|
||||
L_sq_SendPack();
|
||||
IsShapeshifting = false;
|
||||
}
|
||||
}.bindenv(this);
|
||||
CloseButton.SetCallBackFunc(function(Button) {
|
||||
|
||||
})
|
||||
if (!IsShapeshifting) {
|
||||
Button.Localtion_X = -90000;
|
||||
} else {
|
||||
Button.Localtion_X = 0;
|
||||
}
|
||||
}.bindenv(this))
|
||||
Childrens.append(CloseButton);
|
||||
}
|
||||
|
||||
@@ -72,12 +99,11 @@ class ShapeshiftingC extends LenheartNewUI_Windows {
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function CheckPlayerInfoToSeverShapeInfo() {
|
||||
if(!SeverEquInfo)return;
|
||||
if (!SeverEquInfo) return;
|
||||
local Toubu = L_sq_GetCharacterAttribute(0x1C, 14);
|
||||
local Maozi = L_sq_GetCharacterAttribute(0x1C, 13);
|
||||
local Lianbu = L_sq_GetCharacterAttribute(0x1C, 15);
|
||||
@@ -109,17 +135,22 @@ class ShapeshiftingC extends LenheartNewUI_Windows {
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
|
||||
//每五秒获取一次本地数据信息
|
||||
if (Clock() - Timer >= 5000) {
|
||||
Timer = Clock();
|
||||
if (Clock() - Timer >= 1000) {
|
||||
CheckPlayerInfoToSeverShapeInfo();
|
||||
}
|
||||
|
||||
if (!ShapeMonsterId) {
|
||||
Visible = false;
|
||||
} else {
|
||||
Visible = true;
|
||||
|
||||
if ("RepairWorldMap_Obj" in getroottable()) {
|
||||
if (RepairWorldMap_Obj.OpenState || sq_GetCurrentModuleType() != 1) {
|
||||
Visible = false;
|
||||
} else {
|
||||
if (!ShapeMonsterId) {
|
||||
Visible = false;
|
||||
} else {
|
||||
Visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
Project/Shapeshifting/img/0.png
Normal file
|
After Width: | Height: | Size: 362 KiB |
BIN
Project/Shapeshifting/img/1.png
Normal file
|
After Width: | Height: | Size: 840 KiB |
BIN
Project/Shapeshifting/img/2.png
Normal file
|
After Width: | Height: | Size: 543 KiB |
@@ -206,13 +206,13 @@ class SkinHubC extends LenheartNewUI_Windows {
|
||||
ActiveButton.OnClickEx = function(Button) {
|
||||
local T = {
|
||||
op = 20076007,
|
||||
itemId = HasDamageSkinList[Button.Data],
|
||||
itemId = HasDamageSkinList[Button.Data + abs(NowPage)],
|
||||
type = 0
|
||||
}
|
||||
SendPackEx(T);
|
||||
NowDamageSkinIndex = HasDamageSkinList[Button.Data];
|
||||
FocusPrintIdx = HasDamageSkinList[Button.Data];
|
||||
InitDamageFont(HasDamageSkinList[Button.Data]);
|
||||
NowDamageSkinIndex = HasDamageSkinList[Button.Data + abs(NowPage)];
|
||||
FocusPrintIdx = HasDamageSkinList[Button.Data + abs(NowPage)];
|
||||
InitDamageFont(HasDamageSkinList[Button.Data + abs(NowPage)]);
|
||||
}.bindenv(this);
|
||||
ActiveButton.SetCallBackFunc(function(Button) {
|
||||
if (Button.Data >= (HasDamageSkinList.len())) {
|
||||
|
||||
BIN
Project/SkinHub/img/0.png
Normal file
|
After Width: | Height: | Size: 251 KiB |
BIN
Project/SkinHub/img/1.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
Project/Tuguan/img/0.png
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
Project/Tuguan/img/1.png
Normal file
|
After Width: | Height: | Size: 710 KiB |
BIN
Project/Tuguan/img/2.png
Normal file
|
After Width: | Height: | Size: 735 KiB |
413
Project/WorldBoss/WorldBoss.nut
Normal file
@@ -0,0 +1,413 @@
|
||||
/*
|
||||
文件名:WorldBoss.nut
|
||||
路径:Project/WorldBoss/WorldBoss.nut
|
||||
创建日期:2025-05-01 23:54
|
||||
文件用途:世界BOSS
|
||||
*/
|
||||
|
||||
class WorldBossC extends LenheartNewUI_Windows {
|
||||
//调试模式
|
||||
// DeBugMode = true;
|
||||
|
||||
//不是窗口
|
||||
// NoWindow = true;
|
||||
|
||||
//是否可见
|
||||
Visible = false;
|
||||
|
||||
WindowImg = Rindro_Image("hud/worldboss.img");
|
||||
WindowTimeImg = Rindro_Image("hud/worldboss_time.img");
|
||||
WindowTimeNumImg = Rindro_Image("hud/worldboss_timenum.img");
|
||||
|
||||
//基础信息
|
||||
BaseInfo = null;
|
||||
|
||||
//Pvf信息
|
||||
PvfInfo = null;
|
||||
|
||||
//伤害列表
|
||||
RankList = null;
|
||||
|
||||
|
||||
//页面
|
||||
Page = 0;
|
||||
//查询排名页数
|
||||
CheckPage = 1;
|
||||
MaxPage = 50;
|
||||
|
||||
|
||||
//计时器
|
||||
TiemrCache = null;
|
||||
Timer = null;
|
||||
|
||||
//累计伤害
|
||||
TotalDamage = null;
|
||||
|
||||
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||
Childrens = [];
|
||||
|
||||
InitButtonConfig();
|
||||
//注册控件
|
||||
RegisterWidget();
|
||||
|
||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||
|
||||
|
||||
Pack_Control.rawset(20060002, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
BaseInfo = Jso;
|
||||
}.bindenv(this));
|
||||
|
||||
Pack_Control.rawset(20060006, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
RankList = Jso.list;
|
||||
}.bindenv(this));
|
||||
|
||||
Pack_Control.rawset(20060014, function(Chunk) {
|
||||
local Jso = Json.Decode(Chunk);
|
||||
Timer = Clock();
|
||||
TiemrCache = Jso.endTime;
|
||||
}.bindenv(this));
|
||||
|
||||
|
||||
PushDamageFontFuncTab.rawset("DamagePerSecondCFunc", function(ObjAddress, MySelfAddress, Value) {
|
||||
if (!SendDamagePackFlag) return;
|
||||
if (ObjAddress == 0 || ObjAddress == MySelfAddress) {
|
||||
if (!TotalDamage) TotalDamage = longlong(0);
|
||||
TotalDamage += longlong(Value);
|
||||
}
|
||||
}.bindenv(this));
|
||||
|
||||
|
||||
|
||||
// ChangePage(1);
|
||||
// SendPackEx({
|
||||
// op = 20060005,
|
||||
// page = 1
|
||||
// })
|
||||
}
|
||||
|
||||
function InitButtonConfig() {
|
||||
PvfInfo = Rindro_Script.GetFileData("etc/rindro/worldboss/worldboss.etc", function(DataTable, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Key = Data.Get();
|
||||
if (Key == "[Enter Button]") {
|
||||
DataTable.EnterButton <- {
|
||||
x = Data.Get(),
|
||||
y = Data.Get(),
|
||||
width = Data.Get(),
|
||||
height = Data.Get()
|
||||
}
|
||||
} else if (Key == "[Refresh Button]") {
|
||||
DataTable.RefreshButton <- {
|
||||
x = Data.Get(),
|
||||
y = Data.Get(),
|
||||
width = Data.Get(),
|
||||
height = Data.Get()
|
||||
}
|
||||
} else if (Key == "[Rank List]") {
|
||||
DataTable.RankList <- {
|
||||
x = Data.Get(),
|
||||
y = Data.Get()
|
||||
}
|
||||
} else if (Key == "[Time Countdown]") {
|
||||
DataTable.Countdown <- {
|
||||
x = Data.Get(),
|
||||
y = Data.Get()
|
||||
}
|
||||
}
|
||||
}
|
||||
}.bindenv(this));
|
||||
}
|
||||
|
||||
|
||||
//标题栏
|
||||
Title = null;
|
||||
|
||||
function ChangePage(ToPage) {
|
||||
foreach(ButtonObj in Title) {
|
||||
ButtonObj.State = 0;
|
||||
}
|
||||
Page = ToPage;
|
||||
Title[ToPage].State = 1;
|
||||
}
|
||||
|
||||
function RegisterWidget() {
|
||||
Title = [];
|
||||
local Tabbars1 = LenheartNewUI_TabbarsText(2, 27, "玩法简介");
|
||||
Tabbars1.State = 1;
|
||||
Tabbars1.SetTextOffset(7, 4);
|
||||
AddChild(Tabbars1);
|
||||
Tabbars1.OnClick = function() {
|
||||
ChangePage(0);
|
||||
}.bindenv(this);
|
||||
Title.append(Tabbars1);
|
||||
|
||||
local Tabbars2 = LenheartNewUI_TabbarsText(64, 27, "世界BOSS");
|
||||
Tabbars2.SetTextOffset(7, 4);
|
||||
AddChild(Tabbars2);
|
||||
Tabbars2.OnClick = function() {
|
||||
ChangePage(1);
|
||||
}.bindenv(this);
|
||||
Title.append(Tabbars2);
|
||||
|
||||
|
||||
//关闭按钮
|
||||
local CloseButton = LenheartNewUI_BaseButton(600, 5, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||
CloseButton.OnClick = function() {
|
||||
this.Visible = false;
|
||||
}.bindenv(this);
|
||||
Childrens.append(CloseButton);
|
||||
|
||||
//进入按钮
|
||||
local EnterButton = LenheartNewUI_BaseButton(PvfInfo.EnterButton.x, PvfInfo.EnterButton.y, PvfInfo.EnterButton.width, PvfInfo.EnterButton.height, "hud/worldboss.img", 1);
|
||||
EnterButton.OnClick = function() {
|
||||
SendPackEx({
|
||||
op = 20060007
|
||||
})
|
||||
}.bindenv(this);
|
||||
EnterButton.SetCallBackFunc(function(Btn) {
|
||||
if (Page == 1)
|
||||
Btn.Visible = true;
|
||||
else
|
||||
Btn.Visible = false;
|
||||
}.bindenv(this))
|
||||
Childrens.append(EnterButton);
|
||||
|
||||
//刷新按钮
|
||||
local RefreshButton = LenheartNewUI_BaseButton(PvfInfo.RefreshButton.x, PvfInfo.RefreshButton.y, PvfInfo.RefreshButton.width, PvfInfo.RefreshButton.height, "hud/worldboss.img", 5);
|
||||
RefreshButton.OnClick = function() {
|
||||
|
||||
}.bindenv(this);
|
||||
RefreshButton.SetCallBackFunc(function(Btn) {
|
||||
if (Page == 1)
|
||||
Btn.Visible = true;
|
||||
else
|
||||
Btn.Visible = false;
|
||||
}.bindenv(this))
|
||||
Childrens.append(RefreshButton);
|
||||
|
||||
|
||||
//左按钮
|
||||
local LeftButton = LenheartNewUI_BaseButton(PvfInfo.RankList.x + 150, PvfInfo.RankList.y + 284, 12, 9, "interface/lenheartwindowcommon.img", 511);
|
||||
LeftButton.OnClick = function() {
|
||||
if (CheckPage > 1) CheckPage--;
|
||||
SendPackEx({
|
||||
op = 20060005,
|
||||
Page = CheckPage
|
||||
})
|
||||
}.bindenv(this);
|
||||
LeftButton.SetCallBackFunc(function(Btn) {
|
||||
if (Page == 1)
|
||||
Btn.Visible = true;
|
||||
else
|
||||
Btn.Visible = false;
|
||||
}.bindenv(this))
|
||||
Childrens.append(LeftButton);
|
||||
//关闭按钮
|
||||
local RightButton = LenheartNewUI_BaseButton(PvfInfo.RankList.x + 196, PvfInfo.RankList.y + 284, 12, 9, "interface/lenheartwindowcommon.img", 521);
|
||||
RightButton.OnClick = function() {
|
||||
if (CheckPage< MaxPage) CheckPage++;
|
||||
SendPackEx({
|
||||
op = 20060005,
|
||||
page = CheckPage
|
||||
})
|
||||
}.bindenv(this);
|
||||
RightButton.SetCallBackFunc(function(Btn) {
|
||||
if (Page == 1)
|
||||
Btn.Visible = true;
|
||||
else
|
||||
Btn.Visible = false;
|
||||
}.bindenv(this))
|
||||
Childrens.append(RightButton);
|
||||
}
|
||||
|
||||
//悬停层绘制Flag
|
||||
HoverFlag = null;
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//玩法简介
|
||||
if (Page == 0) {
|
||||
WindowImg.DrawPng(0, X, Y);
|
||||
}
|
||||
//世界BOSS
|
||||
else if (Page == 1) {
|
||||
WindowImg.DrawPng(9, X, Y);
|
||||
WindowImg.DrawPng(10, X + PvfInfo.RankList.x, Y + PvfInfo.RankList.y);
|
||||
|
||||
//绘制查询页数
|
||||
local Str = CheckPage + "/" + MaxPage;
|
||||
L_sq_DrawCode(Str, X + PvfInfo.RankList.x + 179 - LenheartTextClass.GetStringLength(Str) / 2, Y + PvfInfo.RankList.y + 283, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
HoverFlag = null;
|
||||
//绘制排行榜
|
||||
if (RankList) {
|
||||
foreach(Pos, info in RankList) {
|
||||
local Rank = info.rank.tostring();
|
||||
L_sq_DrawCode(Rank, X + PvfInfo.RankList.x + 18 - LenheartTextClass.GetStringLength(Rank) / 2, Y + PvfInfo.RankList.y + 10 + (Pos * 20), sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
local TeamName = info.teamName;
|
||||
L_sq_DrawCode(TeamName, X + PvfInfo.RankList.x + 70 - LenheartTextClass.GetStringLength(TeamName) / 2, Y + PvfInfo.RankList.y + 10 + (Pos * 20), sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
local Damage = info.totalDamage.tostring();
|
||||
L_sq_DrawCode(Damage, X + PvfInfo.RankList.x + 150 - LenheartTextClass.GetStringLength(Damage) / 2, Y + PvfInfo.RankList.y + 10 + (Pos * 20), sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + PvfInfo.RankList.x, Y + PvfInfo.RankList.y + (Pos * 20), 200, 20)) {
|
||||
HoverFlag = Pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//悬停层
|
||||
if (HoverFlag != null) {
|
||||
L_sq_DrawWindow(X + PvfInfo.RankList.x, Y + PvfInfo.RankList.y + (HoverFlag * 20), 200, 100, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
L_sq_DrawWindow(X + PvfInfo.RankList.x, Y + PvfInfo.RankList.y + (HoverFlag * 20), 200, 100, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
||||
|
||||
L_sq_DrawCode(RankList[HoverFlag].teamName, X + PvfInfo.RankList.x + 104 - LenheartTextClass.GetStringLength(RankList[HoverFlag].teamName) / 2, Y + PvfInfo.RankList.y + (HoverFlag * 20) + 14, sq_RGBA(83, 205, 255, 255), 0, 1);
|
||||
local Yoffset = 40;
|
||||
for (local Pos = 0; Pos < 4; Pos++) {
|
||||
local info = {
|
||||
name = "无队员",
|
||||
job = "无职业",
|
||||
damage = "0",
|
||||
color = sq_RGBA(174, 174, 174, 255)
|
||||
}
|
||||
if(RankList[HoverFlag].team.len() > Pos) {
|
||||
info = RankList[HoverFlag].team[Pos];
|
||||
info.color <- sq_RGBA(218, 248, 129, 255);
|
||||
}
|
||||
local Name = info.name;
|
||||
L_sq_DrawCode(Name, X + PvfInfo.RankList.x + 28 - LenheartTextClass.GetStringLength(Name) / 2, Y + PvfInfo.RankList.y + (HoverFlag * 20) + Yoffset + (Pos * 20), info.color, 0, 1);
|
||||
local Job = info.job;
|
||||
L_sq_DrawCode(Job, X + PvfInfo.RankList.x + 110 - LenheartTextClass.GetStringLength(Job) / 2, Y + PvfInfo.RankList.y + (HoverFlag * 20) + Yoffset + (Pos * 20), info.color, 0, 1);
|
||||
|
||||
local Damage = info.damage.tostring();
|
||||
L_sq_DrawCode(Damage, X + PvfInfo.RankList.x + 202 - LenheartTextClass.GetStringLength(Damage), Y + PvfInfo.RankList.y + (HoverFlag * 20) + Yoffset + (Pos * 20), info.color, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function DrawTime(obj) {
|
||||
if (!TiemrCache || !Timer) return;
|
||||
local DrawX = PvfInfo.Countdown.x;
|
||||
local DrawY = PvfInfo.Countdown.y;
|
||||
//背景绘制
|
||||
WindowTimeImg.DrawPng(1, DrawX, DrawY);
|
||||
WindowTimeImg.DrawPng(0, DrawX, DrawY + 2);
|
||||
|
||||
//时间绘制
|
||||
local DrawTime = TiemrCache - (Clock() - Timer);
|
||||
local TotalSeconds = DrawTime / 1000;
|
||||
local Minutes = (TotalSeconds % 3600) / 60;
|
||||
local Seconds = (TotalSeconds % 3600) % 60;
|
||||
local Millisecond = DrawTime % 1000 / 10;
|
||||
|
||||
local Offset = 43;
|
||||
DrawNum(format("%02d", Minutes), Offset);
|
||||
Offset += 40;
|
||||
WindowTimeNumImg.DrawPng(10, DrawX + Offset - 5, DrawY + 27);
|
||||
DrawNum(format("%02d", Seconds), Offset);
|
||||
Offset += 40;
|
||||
WindowTimeNumImg.DrawPng(10, DrawX + Offset - 5, DrawY + 27);
|
||||
DrawNum(format("%02d", Millisecond), Offset);
|
||||
}
|
||||
|
||||
function DrawNum(time, Xoffset) {
|
||||
local DrawX = PvfInfo.Countdown.x;
|
||||
local DrawY = PvfInfo.Countdown.y;
|
||||
for (local i = 0; i< time.len(); i++) {
|
||||
local DrawNum = time.slice(i, i + 1);
|
||||
WindowTimeNumImg.DrawPng(DrawNum.tointeger(), DrawX + Xoffset + (i * 15), DrawY + 21);
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
DrawMain(obj);
|
||||
LenheartNewUI_Windows.Show(obj);
|
||||
|
||||
}
|
||||
|
||||
//进入副本初始化包Flag
|
||||
EnterMapPackFlag = false;
|
||||
//发送伤害包Flag
|
||||
SendDamagePackFlag = false;
|
||||
|
||||
//副本逻辑
|
||||
function DungeonLogic() {
|
||||
local stage = sq_GetGlobaludpModuleStage();
|
||||
local mapIndex = sq_GetMapIndex(stage);
|
||||
local dungeon = sq_GetDungeonByStage(stage);
|
||||
local dungeonIndex = sq_GetDuegonIndex(dungeon);
|
||||
if (dungeonIndex == BaseInfo.dgn && mapIndex == BaseInfo.map) {
|
||||
if (!EnterMapPackFlag) {
|
||||
EnterMapPackFlag = true;
|
||||
SendPackEx({
|
||||
op = 20060013
|
||||
})
|
||||
}
|
||||
SendDamagePackFlag = true;
|
||||
} else {
|
||||
SendDamagePackFlag = false;
|
||||
TiemrCache = null;
|
||||
Timer = null;
|
||||
}
|
||||
}
|
||||
|
||||
//发送伤害计时器
|
||||
SendDamageT = 0;
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||
if (!BaseInfo) return;
|
||||
DungeonLogic();
|
||||
DrawTime(obj);
|
||||
|
||||
//在副本中需要发送伤害的时候
|
||||
if (TotalDamage) {
|
||||
if (SendDamagePackFlag) {
|
||||
SendDamageT += Rindro_Duration;
|
||||
if (SendDamageT > 5000) {
|
||||
SendDamageT = 0;
|
||||
SendPackEx({
|
||||
op = 20060017,
|
||||
Damage = TotalDamage.Value
|
||||
})
|
||||
TotalDamage = null;
|
||||
}
|
||||
}
|
||||
//结束时再发一次
|
||||
else {
|
||||
SendPackEx({
|
||||
op = 20060017,
|
||||
Damage = TotalDamage.Value
|
||||
})
|
||||
TotalDamage = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function OpenCallBack() {
|
||||
Visible = true;
|
||||
|
||||
SendPackEx({
|
||||
op = 20060005,
|
||||
page = 1
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function Lenheart_WorldBoss_Fun(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("WorldBoss_Obj")) {
|
||||
RootTab.rawset("WorldBoss_Obj", true);
|
||||
local Win = LenheartNewUI_CreateWindow(WorldBossC, "阿拉德守卫战窗口", ((getroottable().Rindro_Scr_Width - 620) / 2).tointeger(), 64, 620, 430, 28);
|
||||
EventList_Obj.AddEvent("阿拉德守卫战", 1001, Win);
|
||||
}
|
||||
}
|
||||
|
||||
getroottable()["LenheartFuncTab"].rawset("WorldBossFuncN", Lenheart_WorldBoss_Fun);
|
||||
|
||||