111
This commit is contained in:
parent
0d0465fad3
commit
6eb4d6a2f9
|
|
@ -5,6 +5,7 @@
|
||||||
文件用途:
|
文件用途:
|
||||||
*/
|
*/
|
||||||
Pack_Control <- {}
|
Pack_Control <- {}
|
||||||
|
Pack_Hex_Control <- {}
|
||||||
Pack_DPS_Control <- {}
|
Pack_DPS_Control <- {}
|
||||||
|
|
||||||
function Register_DPS_Pack(Id, Func) {
|
function Register_DPS_Pack(Id, Func) {
|
||||||
|
|
@ -52,12 +53,16 @@ function Sq_Pack_ControlLocal(Chunk) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//字节流包
|
//字节流包
|
||||||
function Sq_BlobPack_Control(Size,Pointer)
|
function Sq_BlobPack_Control(Size, Pointer) {
|
||||||
{
|
|
||||||
local Pack = Packet();
|
local Pack = Packet();
|
||||||
Pack.Load(Pointer,Size);
|
Pack.Load(Pointer, Size);
|
||||||
// print(Pack.GetInt());
|
local Op = Pack.GetInt();
|
||||||
// print(Pack.GetInt());
|
//读取位置回到原点
|
||||||
|
// Pack.Seek(0);
|
||||||
|
|
||||||
|
if (Pack_Hex_Control.rawin(Op)) {
|
||||||
|
Pack_Hex_Control[Op](Pack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -497,7 +497,11 @@ class Rindro_Draw_Character {
|
||||||
function DrawFace(X, Y) {
|
function DrawFace(X, Y) {
|
||||||
setClip(X, Y, X + 22, Y + 18); //开始裁切
|
setClip(X, Y, X + 22, Y + 18); //开始裁切
|
||||||
foreach(AniInfo in DrawInfo) {
|
foreach(AniInfo in DrawInfo) {
|
||||||
AniInfo.Ani.DrawIndex(X + ENUM_RINDRO_JOB_FACE_HEIGHT[Job].x, Y + ENUM_RINDRO_JOB_FACE_HEIGHT[Job].y, 0);
|
try {
|
||||||
|
AniInfo.Ani.DrawIndex(X + ENUM_RINDRO_JOB_FACE_HEIGHT[Job].x, Y + ENUM_RINDRO_JOB_FACE_HEIGHT[Job].y, 0);
|
||||||
|
} catch (exception) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
releaseClip(); //裁切结束
|
releaseClip(); //裁切结束
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,11 @@ class Rindro_BaseToolClass {
|
||||||
Pack_Control.rawset(Id, CallBack);
|
Pack_Control.rawset(Id, CallBack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function RegisterHexPack(Id, CallBack)
|
||||||
|
{
|
||||||
|
Pack_Hex_Control.rawset(Id, CallBack);
|
||||||
|
}
|
||||||
|
|
||||||
//绘制简易静态Ani // obj -- ani路径 -- X -- Y -- 第几帧 -- ani名字
|
//绘制简易静态Ani // obj -- ani路径 -- X -- Y -- 第几帧 -- ani名字
|
||||||
function T_DrawStayAni(obj, aniFileName, x, y, index, aniname) {
|
function T_DrawStayAni(obj, aniFileName, x, y, index, aniname) {
|
||||||
local SelectAni = obj.getVar().GetAnimationMap(aniname, aniFileName);
|
local SelectAni = obj.getVar().GetAnimationMap(aniname, aniFileName);
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,11 @@ class NativePointer {
|
||||||
}
|
}
|
||||||
|
|
||||||
function add(intoffset) {
|
function add(intoffset) {
|
||||||
this.C_Object = L_sq_I2P(L_sq_P2I(this.C_Object) + intoffset);
|
return NativePointer(L_sq_I2P(L_sq_P2I(this.C_Object) + intoffset));
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function sub(intoffset) {
|
function sub(intoffset) {
|
||||||
this.C_Object = L_sq_I2P(L_sq_P2I(this.C_Object) - intoffset);
|
return NativePointer(L_sq_I2P(L_sq_P2I(this.C_Object) - intoffset));
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeByteArray(arr) {
|
function writeByteArray(arr) {
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@
|
||||||
创建日期:2025-06-30 09:24
|
创建日期:2025-06-30 09:24
|
||||||
文件用途:字节包
|
文件用途:字节包
|
||||||
*/
|
*/
|
||||||
class Packet{
|
class Packet {
|
||||||
|
|
||||||
//读取指针位置
|
//读取指针位置
|
||||||
ReadIndex = 0;
|
Index = 0;
|
||||||
|
|
||||||
//内存数据
|
//内存数据
|
||||||
Pointer = null;
|
Pointer = null;
|
||||||
|
|
@ -16,24 +16,46 @@ class Packet{
|
||||||
|
|
||||||
|
|
||||||
//加载包
|
//加载包
|
||||||
function Load(P,S)
|
function Load(P, S) {
|
||||||
{
|
|
||||||
Pointer = P;
|
Pointer = P;
|
||||||
Size = S;
|
Size = S;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//读取指针跳转
|
||||||
|
function Seek(...) {
|
||||||
|
local Pos = vargv[0];
|
||||||
|
local Mode = 0;
|
||||||
|
if(vargc > 1) Mode = vargv[1];
|
||||||
|
if (Mode == 0) {
|
||||||
|
Index = Pos;
|
||||||
|
} else if (Mode == 1) {
|
||||||
|
Index += Pos;
|
||||||
|
} else if (Mode == 2) {
|
||||||
|
Index -= Pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//读取整形
|
//读取整形
|
||||||
function GetInt()
|
function GetInt() {
|
||||||
{
|
|
||||||
local Size_t = 4;
|
local Size_t = 4;
|
||||||
if(ReadIndex + Size_t > Size){
|
if (Index + Size_t > Size) {
|
||||||
print("读取包越界!");
|
print("读取包越界!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
local Buf = NativePointer(Pointer).add(ReadIndex).readInt();
|
local Buf = NativePointer(Pointer).add(Index).readInt();
|
||||||
ReadIndex += Size_t;
|
Index += Size_t;
|
||||||
return Buf;
|
return Buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
//读取
|
//读取流
|
||||||
|
function GetStream(Size_t) {
|
||||||
|
if (Index + Size_t > Size) {
|
||||||
|
print("读取包越界!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
local Np = NativePointer(Pointer).add(Index);
|
||||||
|
Np.Size = Size_t;
|
||||||
|
Index += Size_t;
|
||||||
|
return Np;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
142
FileConfig.json
142
FileConfig.json
|
|
@ -26,6 +26,18 @@
|
||||||
"Base/Interface.nut"
|
"Base/Interface.nut"
|
||||||
],
|
],
|
||||||
"ProjectScript": {
|
"ProjectScript": {
|
||||||
|
"累计奖励": {
|
||||||
|
"price": 10,
|
||||||
|
"Script": [
|
||||||
|
"Project/CumulativeReward/CumulativeReward.nut"
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"ProjectAuthor": "官方 (期限:月)",
|
||||||
|
"ProjectVersion": "1.0.0",
|
||||||
|
"ProjectDescribe": "累计在线奖励(仿官版)",
|
||||||
|
"ImageMini": "http://49.234.27.222:8651/dps/download2/Image:chengjiu.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
"成就系统": {
|
"成就系统": {
|
||||||
"Private": true,
|
"Private": true,
|
||||||
"Script": [
|
"Script": [
|
||||||
|
|
@ -96,6 +108,7 @@
|
||||||
"price": 999,
|
"price": 999,
|
||||||
"Script": [
|
"Script": [
|
||||||
"Project/FatalismStone/FatalismStone_Stone.nut",
|
"Project/FatalismStone/FatalismStone_Stone.nut",
|
||||||
|
"Project/FatalismStone/FatalismStone_BackPack.nut",
|
||||||
"Project/FatalismStone/FatalismStone.nut"
|
"Project/FatalismStone/FatalismStone.nut"
|
||||||
],
|
],
|
||||||
"info": {
|
"info": {
|
||||||
|
|
@ -544,6 +557,135 @@
|
||||||
},
|
},
|
||||||
"imgPath": "Anton"
|
"imgPath": "Anton"
|
||||||
},
|
},
|
||||||
|
"卢克": {
|
||||||
|
"price": 200,
|
||||||
|
"Script": [
|
||||||
|
"Project/Luke/Rindro_Luke_CreateParty.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_FightSituation.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_Noti.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_Party.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PartyApplyJoin.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PartyFormation.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PartyHall.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PartyInfo.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PartyMemberInfo.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_PlayerInteractive.nut",
|
||||||
|
"Project/Luke/Rindro_Luke_Reward.nut",
|
||||||
|
"Project/Luke/Rindro_Luke.nut"
|
||||||
|
],
|
||||||
|
"info": {
|
||||||
|
"ProjectAuthor": "官方 (期限:月)",
|
||||||
|
"ProjectVersion": "1.0.0",
|
||||||
|
"ProjectDescribe": "一比一复刻!安图恩攻坚战 完全体!",
|
||||||
|
"ProjectDetails": [
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "99%机制还原,包含炸震颤 炸舰炮,孵化不打火山动物园等等。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "加载插件后,要启动18频道作为安图恩攻坚战频道。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "频道将会限制只能够在安图恩区域活动!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "通过游戏菜单中的寻找队伍,打开攻坚战队伍界面,在这里可以创建与加入攻坚队!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能1:进团时队长能看到申请人信息,战斗力会直接读登录器的战斗力表!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能2:攻坚队队内聊天"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能3:头像直接读取当前时装"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能4:后台配置表里可以直接对安图恩难度进行调整(适合原版、微变、超变的服务器),不用麻烦的改pvf副本难度"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能5:可以对全攻坚队复活币使用进行限制"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能6:有简易战况表,可以在没打开大攻坚战况表的的情况下知道了解攻坚状态"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能7:每次攻坚的孵化会随机感染 不通关感染的情况下,火山能量额外上涨"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能8:如果不压制孵化,火山将会投放孵化的怪物(动物园机制)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "str",
|
||||||
|
"content": "独家功能9:可以设定通关多少次副本才能领取翻牌奖励(也可设置站甲板即可翻牌)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "img",
|
||||||
|
"content": "12"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"imgPath": "Anton"
|
||||||
|
},
|
||||||
"世界地图修补": {
|
"世界地图修补": {
|
||||||
"price": 0,
|
"price": 0,
|
||||||
"Script": [
|
"Script": [
|
||||||
|
|
|
||||||
|
|
@ -210,13 +210,9 @@ class Rindro_AntonPlayerInteractiveC extends LenheartNewUI_Windows {
|
||||||
//绘制角色名
|
//绘制角色名
|
||||||
L_sq_DrawCode(InfoObj.Name, X + 61 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 4, sq_RGBA(169, 255, 171, 255), 0, 1);
|
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 = X;
|
||||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] - 40;
|
local AYpos = Y + 1;
|
||||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||||
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);
|
LenheartNewUI_Windows.Show(obj);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,255 @@
|
||||||
|
/*
|
||||||
|
文件名:CumulativeReward.nut
|
||||||
|
路径:Project/CumulativeReward/CumulativeReward.nut
|
||||||
|
创建日期:2025-10-05 20:49
|
||||||
|
文件用途: 累计奖励
|
||||||
|
*/
|
||||||
|
class CumulativeRewardC extends LenheartNewUI_Windows {
|
||||||
|
//调试模式
|
||||||
|
// DeBugMode = true;
|
||||||
|
|
||||||
|
//不是窗口
|
||||||
|
NoWindow = true;
|
||||||
|
|
||||||
|
|
||||||
|
//下一奖励道具
|
||||||
|
NextRewardItem = 3037;
|
||||||
|
//当前阶段
|
||||||
|
CurrentStage = 1;
|
||||||
|
//当前阶段已过时间
|
||||||
|
CurrentStageTime = 0;
|
||||||
|
//下一阶段所需时间
|
||||||
|
NextStageTime = 0;
|
||||||
|
//总累计次数
|
||||||
|
TotalCount = null;
|
||||||
|
//当前累计次数
|
||||||
|
CurrentCount = 0;
|
||||||
|
//奖励道具信息(数组)
|
||||||
|
/*对象结构体
|
||||||
|
{
|
||||||
|
id = 3037,(编号)
|
||||||
|
count = 1,(数量)
|
||||||
|
state = 0,(0未达到要求,1达到要求未领取,2已领取)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
RewardItemInfo = null;
|
||||||
|
|
||||||
|
//领取按钮List
|
||||||
|
RewardButtonList = null;
|
||||||
|
|
||||||
|
//收包记录时间
|
||||||
|
RecvPackTime = 0;
|
||||||
|
|
||||||
|
//下方界面是否打开Flag
|
||||||
|
IsOpen = false;
|
||||||
|
|
||||||
|
|
||||||
|
Img1 = null;
|
||||||
|
|
||||||
|
//请求配置的Flag
|
||||||
|
RequestConfig = false;
|
||||||
|
|
||||||
|
//全部完成的Flag
|
||||||
|
AllFinish = false;
|
||||||
|
|
||||||
|
|
||||||
|
function CheckTimePack() {
|
||||||
|
SendPackEx({
|
||||||
|
op = 20097001,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function CheckConfigPack() {
|
||||||
|
SendPackEx({
|
||||||
|
op = 20097005,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//是否可见
|
||||||
|
// Visible = false;
|
||||||
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
||||||
|
Childrens = [];
|
||||||
|
RewardButtonList = [];
|
||||||
|
//注册控件
|
||||||
|
RegisterWidget();
|
||||||
|
|
||||||
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
|
||||||
|
//配置回包
|
||||||
|
RegisterPack(20097004, function(Chunk) {
|
||||||
|
local Jso = Json.Decode(Chunk);
|
||||||
|
this.X = Jso.X;
|
||||||
|
this.Y = Jso.Y;
|
||||||
|
TotalCount = Jso.TotalCount;
|
||||||
|
CurrentCount = Jso.currentCount;
|
||||||
|
RewardItemInfo = Jso.RewardItemInfo;
|
||||||
|
foreach(button in RewardButtonList) {
|
||||||
|
RemoveChild(button.ObjectId);
|
||||||
|
}
|
||||||
|
RewardButtonList = [];
|
||||||
|
foreach(pos, value in RewardItemInfo) {
|
||||||
|
local ButtonBuf = LenheartNewUI_BaseButton(12 + (pos % 4) * 52, 109 + (pos / 4) * 104, 28, 18, "interface2/event/chn_event_2018/180619_honey_time/main.img", 6);
|
||||||
|
ButtonBuf.Data = pos;
|
||||||
|
ButtonBuf.OnClickEx = function(button) {
|
||||||
|
SendPackEx({
|
||||||
|
op = 20097003,
|
||||||
|
id = button.Data
|
||||||
|
});
|
||||||
|
}.bindenv(this);
|
||||||
|
ButtonBuf.SetCallBackFunc(function(button) {
|
||||||
|
if (!IsOpen) button.Visible = false;
|
||||||
|
else button.Visible = true;
|
||||||
|
}.bindenv(this));
|
||||||
|
AddChild(ButtonBuf);
|
||||||
|
RewardButtonList.append(ButtonBuf);
|
||||||
|
if (value.start == 0 || value.start == 2) ButtonBuf.State = 8;
|
||||||
|
}
|
||||||
|
RequestConfig = false;
|
||||||
|
}.bindenv(this));
|
||||||
|
//时间回包
|
||||||
|
RegisterPack(20097002, function(Chunk) {
|
||||||
|
local Jso = Json.Decode(Chunk);
|
||||||
|
local Arr = Jso.info;
|
||||||
|
NextRewardItem = Arr[0];
|
||||||
|
CurrentStage = Arr[1];
|
||||||
|
if (CurrentStage >= 3) {
|
||||||
|
CurrentStage = 3;
|
||||||
|
AllFinish = true;
|
||||||
|
}
|
||||||
|
CurrentStageTime = Arr[2];
|
||||||
|
NextStageTime = Arr[3];
|
||||||
|
RecvPackTime = Clock();
|
||||||
|
|
||||||
|
}.bindenv(this));
|
||||||
|
|
||||||
|
|
||||||
|
CheckTimePack();
|
||||||
|
|
||||||
|
Img1 = Rindro_Image("interface2/event/chn_event_2018/180619_honey_time/main.img");
|
||||||
|
}
|
||||||
|
|
||||||
|
function RegisterWidget() {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//绘制主界面
|
||||||
|
function DrawMain(obj) {
|
||||||
|
//绘制进度条底槽
|
||||||
|
Img1.DrawPng(20, X + 33, Y + 20);
|
||||||
|
//计算百分比
|
||||||
|
if (RecvPackTime != 0) {
|
||||||
|
local TimePercentage = (CurrentStageTime.tofloat() + ((Clock() - RecvPackTime).tofloat())) / NextStageTime.tofloat();
|
||||||
|
|
||||||
|
if (TimePercentage > 1.0) {
|
||||||
|
TimePercentage = 1.0;
|
||||||
|
if (!RequestConfig && !AllFinish) {
|
||||||
|
CheckTimePack();
|
||||||
|
CheckConfigPack();
|
||||||
|
RequestConfig = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setClip(X + 36, Y + 24, X + 36 + (101.0 * TimePercentage).tointeger(), Y + 24 + 6); //开始裁切
|
||||||
|
//绘制进度条
|
||||||
|
Img1.DrawPng(21, X + 36, Y + 24);
|
||||||
|
releaseClip(); //裁切结束
|
||||||
|
}
|
||||||
|
|
||||||
|
//绘制下一奖励道具
|
||||||
|
DrawItemBase(X + 6, Y + 6, NextRewardItem, 1);
|
||||||
|
//绘制盖子
|
||||||
|
Img1.DrawPng(19, X, Y);
|
||||||
|
//绘制阶段文字
|
||||||
|
Img1.DrawExPng(25 + CurrentStage, X + 46, Y + 3, 0, sq_RGBA(255, 255, 255, 250), 0.85, 0.85);
|
||||||
|
|
||||||
|
if (IsOpen) {
|
||||||
|
//绘制所有奖励道具
|
||||||
|
if (RewardItemInfo) {
|
||||||
|
foreach(pos, value in RewardItemInfo) {
|
||||||
|
DrawItemBase(X + 12 + (pos % 4) * 52, Y + 80 + (pos / 4) * 104, value.id, value.count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EffectFlag = false;
|
||||||
|
EffectTime = 0;
|
||||||
|
|
||||||
|
function TopShow(obj) {
|
||||||
|
if (!IsOpen) return;
|
||||||
|
if (EffectTime == 0) EffectTime = Clock();
|
||||||
|
local A = 60;
|
||||||
|
if (!EffectFlag) {
|
||||||
|
A = sq_GetUniformVelocity(60, 255, Clock() - EffectTime, 600);
|
||||||
|
if (A >= 255) {
|
||||||
|
EffectFlag = true;
|
||||||
|
EffectTime = Clock();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
A = sq_GetUniformVelocity(255, 60, Clock() - EffectTime, 600);
|
||||||
|
if (A <= 60) {
|
||||||
|
EffectFlag = false;
|
||||||
|
EffectTime = Clock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//绘制完成
|
||||||
|
if (RewardItemInfo) {
|
||||||
|
foreach(pos, value in RewardItemInfo) {
|
||||||
|
if (value.start == 1) {
|
||||||
|
L_sq_SetDrawImgModel(2, 0);
|
||||||
|
Img1.DrawExPng(10, X + 4 + (pos % 4) * 52, Y + 102 + (pos / 4) * 104, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
|
||||||
|
L_sq_ReleaseDrawImgModel();
|
||||||
|
} else if (value.start == 2) Img1.DrawPng(24, X + 12 + (pos % 4) * 52, Y + 110 + (pos / 4) * 104);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show(obj) {
|
||||||
|
LenheartNewUI_Windows.Show(obj);
|
||||||
|
DrawMain(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
//鼠标事件回调
|
||||||
|
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
|
||||||
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) {
|
||||||
|
IsOpen = true;
|
||||||
|
} else {
|
||||||
|
IsOpen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//心跳时间
|
||||||
|
HeartTime = 0;
|
||||||
|
|
||||||
|
//逻辑入口
|
||||||
|
function Proc(obj) {
|
||||||
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||||
|
|
||||||
|
if (IsOpen) {
|
||||||
|
Img1.DrawPng(18, X, Y + 38);
|
||||||
|
Width = 206
|
||||||
|
Height = 266;
|
||||||
|
} else {
|
||||||
|
Width = 144
|
||||||
|
Height = 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Clock() - HeartTime > 30000) {
|
||||||
|
CheckTimePack();
|
||||||
|
HeartTime = Clock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function Lenheart_CumulativeReward_Fun(obj) {
|
||||||
|
local RootTab = getroottable();
|
||||||
|
if (!RootTab.rawin("CumulativeReward_Obj")) {
|
||||||
|
RootTab.rawset("CumulativeReward_Obj", true);
|
||||||
|
LenheartNewUI_CreateWindow(CumulativeRewardC, "累计奖励窗口", ((getroottable().Rindro_Scr_Width - 405) / 2).tointeger(), 64, 405, 372, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getroottable()["LenheartFuncTab"].rawset("CumulativeRewardFuncN", Lenheart_CumulativeReward_Fun);
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 610 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 610 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 571 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 599 KiB |
|
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
//魂石list
|
//魂石list
|
||||||
FatalismStoneLst <- null;
|
FatalismStoneLst <- null;
|
||||||
|
FatalismStoneConfig <- null;
|
||||||
//魂石Img主体
|
//魂石Img主体
|
||||||
FatalismStone_StoneImg <- {};
|
FatalismStone_StoneImg <- {};
|
||||||
FatalismStone_StoneImg["icon_Frame"] <- Rindro_Image("interface2/rindro_reward.img");
|
FatalismStone_StoneImg["icon_Frame"] <- Rindro_Image("interface2/rindro_reward.img");
|
||||||
|
|
@ -19,13 +20,10 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
// NoWindow = true;
|
// NoWindow = true;
|
||||||
|
|
||||||
//是否可见
|
//是否可见
|
||||||
Visible = false;
|
// Visible = false;
|
||||||
|
|
||||||
//Img
|
//Img
|
||||||
Img = null;
|
Img = null;
|
||||||
|
|
||||||
//属性数据位数
|
|
||||||
AttrCount = 2;
|
|
||||||
//总格子数
|
//总格子数
|
||||||
GridCount = 77;
|
GridCount = 77;
|
||||||
//总穿戴数
|
//总穿戴数
|
||||||
|
|
@ -33,21 +31,31 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
|
|
||||||
//功能标题
|
//功能标题
|
||||||
FunctionTitle = null;
|
FunctionTitle = null;
|
||||||
|
//功能页面
|
||||||
|
FunctionPage = 0;
|
||||||
|
//Ani任务队列
|
||||||
|
AniQueue = null;
|
||||||
|
|
||||||
|
|
||||||
|
//背包数据
|
||||||
|
BackPackData = null;
|
||||||
//背包页面
|
//背包页面
|
||||||
BackpackPage = 0;
|
BackpackPage = 0;
|
||||||
//背包页面Tabbars
|
//背包页面Tabbars
|
||||||
BackpackPageTabbars = null;
|
BackpackPageTabbars = null;
|
||||||
//魂石数据
|
|
||||||
FatalismStoneData = null;
|
|
||||||
//页面魂石集合
|
//页面魂石集合
|
||||||
PageFatalismStoneLst = null;
|
PageFatalismStoneLst = null;
|
||||||
|
//穿戴魂石集合
|
||||||
|
WearFatalismStoneLst = null;
|
||||||
|
|
||||||
//穿戴页面坐标数组
|
//穿戴页面坐标数组
|
||||||
WearPagePos = [131, 140, 32, 180, 234, 180, 32, 272, 234, 272, 131, 413];
|
WearPagePos = [131, 140, 32, 180, 234, 180, 32, 272, 234, 272, 131, 413];
|
||||||
|
|
||||||
|
|
||||||
|
//洗练对象
|
||||||
|
WashStone = null;
|
||||||
|
|
||||||
|
|
||||||
//查询魂石背包数据
|
//查询魂石背包数据
|
||||||
function QueryFatalismStoneBackpack() {
|
function QueryFatalismStoneBackpack() {
|
||||||
SendPackEx({
|
SendPackEx({
|
||||||
|
|
@ -61,70 +69,29 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
BackpackPageTabbars = [];
|
BackpackPageTabbars = [];
|
||||||
//注册控件
|
//注册控件
|
||||||
RegisterWidget();
|
RegisterWidget();
|
||||||
|
|
||||||
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
||||||
|
|
||||||
InitImg();
|
InitImg();
|
||||||
|
|
||||||
|
|
||||||
//初始化魂石列表
|
//初始化魂石列表
|
||||||
InitFatalismStoneLst();
|
InitFatalismStoneLst();
|
||||||
|
|
||||||
//背包数据回包
|
//背包数据回包
|
||||||
RegisterPack(21000002, function(Chunk) {
|
RegisterHexPack(21000002, function(Pack) {
|
||||||
local Jso = Json.Decode(Chunk);
|
local Data = [];
|
||||||
FatalismStoneData = [];
|
local BackPackSize = Pack.GetInt();
|
||||||
//三个背包页
|
local BackPackDataBuffer = Pack.GetStream(BackPackSize);
|
||||||
for (local j = 0; j< 3; j++) {
|
Data.append(BackPackDataBuffer);
|
||||||
local Buf = [];
|
local WearSize = Pack.GetInt();
|
||||||
//每个背包页77格道具
|
local WearDataBuffer = Pack.GetStream(WearSize);
|
||||||
for (local i = 0; i< GridCount; i++) {
|
Data.append(WearDataBuffer);
|
||||||
local Obj = Jso.BackPackData[i + (j * GridCount)];
|
BackPackData = FatalismStone_BackPack();
|
||||||
local _Id = Obj.id;
|
BackPackData.Deserialize(Data);
|
||||||
local _CultivationDegree = Obj.cultivationDegree;
|
|
||||||
Buf.append({
|
|
||||||
Id = _Id,
|
|
||||||
CultivationDegree = _CultivationDegree / 100.0,
|
|
||||||
XPos = 310 + (i % 11 * 39),
|
|
||||||
YPos = 260 + (i / 11 * 35),
|
|
||||||
StoneType = j
|
|
||||||
});
|
|
||||||
}
|
|
||||||
FatalismStoneData.append(Buf);
|
|
||||||
}
|
|
||||||
//穿戴页
|
|
||||||
local WearBuf = [];
|
|
||||||
for (local i = 0; i< WearCount; i++) {
|
|
||||||
local Obj = Jso.WearData[i];
|
|
||||||
|
|
||||||
local _Id = Obj.id;
|
|
||||||
local _CultivationDegree = Obj.cultivationDegree;
|
|
||||||
|
|
||||||
local _Xpos = WearPagePos[i * 2];
|
|
||||||
local _Ypos = WearPagePos[i * 2 + 1];
|
|
||||||
_Xpos += 5;
|
|
||||||
_Ypos += 5;
|
|
||||||
|
|
||||||
local infoBuf = {
|
|
||||||
Id = _Id,
|
|
||||||
CultivationDegree = _CultivationDegree / 100.0,
|
|
||||||
XPos = _Xpos,
|
|
||||||
YPos = _Ypos,
|
|
||||||
};
|
|
||||||
if (i == 0) infoBuf.StoneType <- 0;
|
|
||||||
else if (i >= 1 && i <= 4) infoBuf.StoneType <- 1;
|
|
||||||
else if (i == 5) infoBuf.StoneType <- 2;
|
|
||||||
WearBuf.append(infoBuf);
|
|
||||||
}
|
|
||||||
FatalismStoneData.append(WearBuf);
|
|
||||||
InitPageFatalismStone();
|
InitPageFatalismStone();
|
||||||
}.bindenv(this));
|
}.bindenv(this));
|
||||||
|
//请求魂石数据
|
||||||
QueryFatalismStoneBackpack();
|
QueryFatalismStoneBackpack();
|
||||||
}
|
}
|
||||||
|
|
||||||
function RegisterWidget() {
|
function RegisterWidget() {
|
||||||
|
|
||||||
//关闭按钮
|
//关闭按钮
|
||||||
local CloseButton = LenheartNewUI_BaseButton(738, 2, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
local CloseButton = LenheartNewUI_BaseButton(738, 2, 11, 12, "interface/lenheartwindowcommon.img", 276);
|
||||||
CloseButton.OnClick = function() {
|
CloseButton.OnClick = function() {
|
||||||
|
|
@ -161,9 +128,6 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
}.bindenv(this);
|
}.bindenv(this);
|
||||||
FunctionTitle.append(FuncTabbar4);
|
FunctionTitle.append(FuncTabbar4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local Tabbars3 = LenheartNewUI_TabbarsText(302, 235, "天魂石");
|
local Tabbars3 = LenheartNewUI_TabbarsText(302, 235, "天魂石");
|
||||||
Tabbars3.SetTextOffset(13, 4);
|
Tabbars3.SetTextOffset(13, 4);
|
||||||
Tabbars3.State = 1;
|
Tabbars3.State = 1;
|
||||||
|
|
@ -203,50 +167,41 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
InitPageFatalismStone();
|
InitPageFatalismStone();
|
||||||
}.bindenv(this);
|
}.bindenv(this);
|
||||||
BackpackPageTabbars.append(Tabbars5);
|
BackpackPageTabbars.append(Tabbars5);
|
||||||
|
|
||||||
|
local WashButton = LenheartNewUI_ButtonText(483, 182, 24, "洗练");
|
||||||
|
WashButton.OnClickSound = "ICON_QUICK_SET";
|
||||||
|
WashButton.SetTextOffset(9, 1);
|
||||||
|
WashButton.OnClick = function() {
|
||||||
|
if (FunctionPage == 0 && WashStone) {
|
||||||
|
SendPackEx({
|
||||||
|
op = 21000005,
|
||||||
|
uuid = WashStone.Uuid,
|
||||||
|
rarity = WashStone.Info["rarity"],
|
||||||
|
});
|
||||||
|
AniQueue.AddQuest("洗练特效动画", function(Name, Time) {
|
||||||
|
local AniPath = "fatalismstone/animation/eff1.ani";
|
||||||
|
local Ani = DrawAniEx(X + 440, Y + 32, AniPath, "魂石洗练特效");
|
||||||
|
if (sq_GetAnimationFrameIndex(Ani) == 15) {
|
||||||
|
sq_Rewind(Ani);
|
||||||
|
AniQueue.RemoveQuest(Name);
|
||||||
|
}
|
||||||
|
}.bindenv(this));
|
||||||
|
R_Utils.PlaySound("BUTTON_06");
|
||||||
|
}
|
||||||
|
}.bindenv(this);
|
||||||
|
WashButton.SetCallBackFunc(function(Btn) {
|
||||||
|
if (FunctionPage != 0) Btn.Visible = false;
|
||||||
|
else Btn.Visible = true;
|
||||||
|
}.bindenv(this))
|
||||||
|
AddChild(WashButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
//初始化背包
|
//初始化背包
|
||||||
function InitPageFatalismStone() {
|
function InitPageFatalismStone() {
|
||||||
// if (!BackpackData || BackpackData.len() == 0) return;
|
if (!BackPackData) return;
|
||||||
if (!FatalismStoneData) return;
|
//设置需要渲染的当前背包页面
|
||||||
local SubBackPack = FatalismStoneData[BackpackPage];
|
PageFatalismStoneLst = BackPackData.GetList(BackpackPage);
|
||||||
local ItArr = SubBackPack;
|
WearFatalismStoneLst = BackPackData.GetList(3);
|
||||||
foreach(value in FatalismStoneData[3]) {
|
|
||||||
ItArr.append(value);
|
|
||||||
}
|
|
||||||
PageFatalismStoneLst = [];
|
|
||||||
foreach(info in ItArr) {
|
|
||||||
local StoneBuf;
|
|
||||||
if (!info.Id) StoneBuf = FatalismStone_Stone(null);
|
|
||||||
else StoneBuf = FatalismStone_Stone(info.Id);
|
|
||||||
StoneBuf.InitializeData(info);
|
|
||||||
PageFatalismStoneLst.append(StoneBuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//计算全身的属性
|
|
||||||
local AttributeTable = {};
|
|
||||||
for (local i = GridCount; i< GridCount + WearCount; i++) {
|
|
||||||
local StoneObj = PageFatalismStoneLst[i];
|
|
||||||
local Att = StoneObj.GetAttribute();
|
|
||||||
if (Att) {
|
|
||||||
foreach(key, value in Att) {
|
|
||||||
if (!AttributeTable.rawin(key)) AttributeTable.rawset(key, value);
|
|
||||||
else AttributeTable.rawset(key, AttributeTable.rawget(key) + value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//记录最新属性数据
|
|
||||||
if ("LenheartAttributesTable" in getroottable()) {
|
|
||||||
local T = getroottable()["LenheartAttributesTable"];
|
|
||||||
T.rawset("LenheartCollectFatalismStoneAb", AttributeTable);
|
|
||||||
} else {
|
|
||||||
local T = {};
|
|
||||||
T.rawset("LenheartCollectFatalismStoneAb", AttributeTable);
|
|
||||||
getroottable().rawset("LenheartAttributesTable", T);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//绘制主界面
|
//绘制主界面
|
||||||
|
|
@ -265,22 +220,48 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
L_sq_DrawWindow(X + 300, Y + 253, 420, 220, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); //下背景框
|
L_sq_DrawWindow(X + 300, Y + 253, 420, 220, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13); //下背景框
|
||||||
|
|
||||||
Img["main"].DrawPng(1, X + 309, Y + 259);
|
Img["main"].DrawPng(1, X + 309, Y + 259);
|
||||||
}
|
|
||||||
|
|
||||||
|
//洗练页面
|
||||||
|
if (FunctionPage == 0) {
|
||||||
|
//绘制洗练槽
|
||||||
|
Img["main"].DrawPng(2, X + 500, Y + 90);
|
||||||
|
if (WashStone) {
|
||||||
|
local NowCultivationDegree = "当前魂石洗练度: " + WashStone.Info.cultivationDegree.tostring();
|
||||||
|
local NeedStkStr = FatalismStoneConfig["wash_cost"][WashStone.Info["rarity"]] + "个";
|
||||||
|
L_sq_DrawCode("当前魂石洗练度: ", X + 471, Y + 140, sq_RGBA(174, 174, 174, 250), 1, 1);
|
||||||
|
L_sq_DrawCode("洗练所需魂屑: ", X + 473, Y + 160, sq_RGBA(174, 174, 174, 250), 1, 1);
|
||||||
|
L_sq_DrawCode(WashStone.Info.cultivationDegree.tostring() + "%", X + 560, Y + 140, sq_RGBA(104, 237, 161, 250), 1, 1);
|
||||||
|
L_sq_DrawCode(NeedStkStr, X + 552, Y + 160, sq_RGBA(104, 237, 161, 250), 1, 1);
|
||||||
|
WashStone.Show(obj, X + 505, Y + 95);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function Show(obj) {
|
function Show(obj) {
|
||||||
DrawMain(obj);
|
DrawMain(obj);
|
||||||
LenheartNewUI_Windows.Show(obj);
|
LenheartNewUI_Windows.Show(obj);
|
||||||
//绘制魂石
|
//绘制魂石
|
||||||
|
//背包中的魂石
|
||||||
if (PageFatalismStoneLst) {
|
if (PageFatalismStoneLst) {
|
||||||
foreach(Pos, Stone in PageFatalismStoneLst) {
|
foreach(Pos, Stone in PageFatalismStoneLst) {
|
||||||
// sq_DrawBox(X + Stone.XPos, Y + Stone.YPos, 34,34, 0xffffffff);
|
local XPos = 310 + (Pos % 11 * 39);
|
||||||
Stone.Show(obj, X + Stone.XPos, Y + Stone.YPos);
|
local YPos = 260 + (Pos / 11 * 35);
|
||||||
|
if (Stone) Stone.Show(obj, X + XPos, Y + YPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//穿戴的魂石
|
||||||
|
if (WearFatalismStoneLst) {
|
||||||
|
foreach(Pos, Stone in WearFatalismStoneLst) {
|
||||||
|
local XPos = WearPagePos[Pos * 2];
|
||||||
|
local YPos = WearPagePos[Pos * 2 + 1];
|
||||||
|
XPos += 5;
|
||||||
|
YPos += 5;
|
||||||
|
if (Stone) Stone.Show(obj, X + XPos, Y + YPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AniQueue.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function TopShow(obj) {
|
function TopShow(obj) {
|
||||||
LenheartNewUI_Windows.TopShow(obj);
|
LenheartNewUI_Windows.TopShow(obj);
|
||||||
//还没有初始化数据的时候直接返回
|
//还没有初始化数据的时候直接返回
|
||||||
|
|
@ -289,8 +270,30 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
local MousePos_Y = IMouse.GetYPos();
|
local MousePos_Y = IMouse.GetYPos();
|
||||||
//魂石的悬停绘制
|
//魂石的悬停绘制
|
||||||
foreach(Pos, Stone in PageFatalismStoneLst) {
|
foreach(Pos, Stone in PageFatalismStoneLst) {
|
||||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + Stone.XPos, Y + Stone.YPos, 31, 31)) {
|
local XPos = 310 + (Pos % 11 * 39);
|
||||||
Stone.HoverShow(X + Stone.XPos + 31, Y + Stone.YPos);
|
local YPos = 260 + (Pos / 11 * 35);
|
||||||
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 31, 31)) {
|
||||||
|
//绘制悬停框
|
||||||
|
L_sq_SetDrawImgModel(2, 0);
|
||||||
|
Rindro_Image_GlobalMap["lenheartui"].DrawPng(353, X + XPos + 1, Y + YPos + 1);
|
||||||
|
L_sq_ReleaseDrawImgModel();
|
||||||
|
if (Stone && !DragObj) Stone.HoverShow(X + XPos + 31, Y + YPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//魂石穿戴的悬停绘制
|
||||||
|
if (WearFatalismStoneLst) {
|
||||||
|
foreach(Pos, Stone in WearFatalismStoneLst) {
|
||||||
|
local XPos = WearPagePos[Pos * 2];
|
||||||
|
local YPos = WearPagePos[Pos * 2 + 1];
|
||||||
|
XPos += 5;
|
||||||
|
YPos += 5;
|
||||||
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 31, 31)) {
|
||||||
|
//绘制悬停框
|
||||||
|
L_sq_SetDrawImgModel(2, 0);
|
||||||
|
Rindro_Image_GlobalMap["lenheartui"].DrawPng(353, X + XPos + 1, Y + YPos + 1);
|
||||||
|
L_sq_ReleaseDrawImgModel();
|
||||||
|
if (Stone && !DragObj) Stone.HoverShow(X + XPos + 31, Y + YPos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//绘制拖拽的魂石
|
//绘制拖拽的魂石
|
||||||
|
|
@ -299,89 +302,158 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//鼠标右键按下回调
|
|
||||||
function OnMouseRbDown(MousePos_X, MousePos_Y) {
|
|
||||||
LenheartNewUI_BaseWindow.OnMouseRbDown(MousePos_X, MousePos_Y);
|
|
||||||
if (PageFatalismStoneLst) {
|
|
||||||
foreach(Pos, Stone in PageFatalismStoneLst) {
|
|
||||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + Stone.XPos, Y + Stone.YPos, 31, 31)) {
|
|
||||||
// //发送穿戴装备包
|
|
||||||
// SendPackEx({
|
|
||||||
// op = 21000003,
|
|
||||||
// type = BackpackPage,
|
|
||||||
// pos = Pos
|
|
||||||
// })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//当前拖拽的物品对象
|
//当前拖拽的物品对象
|
||||||
DragObj = null;
|
DragObj = null;
|
||||||
DragOldPos = null;
|
DragOldPos = null;
|
||||||
|
DragType = null;
|
||||||
|
|
||||||
//鼠标左键按下回调
|
//鼠标左键按下回调
|
||||||
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
||||||
LenheartNewUI_BaseWindow.OnMouseLbDown(MousePos_X, MousePos_Y);
|
LenheartNewUI_BaseWindow.OnMouseLbDown(MousePos_X, MousePos_Y);
|
||||||
|
if (!PageFatalismStoneLst) return;
|
||||||
foreach(Pos, Stone in PageFatalismStoneLst) {
|
foreach(Pos, Stone in PageFatalismStoneLst) {
|
||||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + Stone.XPos, Y + Stone.YPos, 34, 34)) {
|
local XPos = 310 + (Pos % 11 * 39);
|
||||||
if (Stone.isSuccess) {
|
local YPos = 260 + (Pos / 11 * 35);
|
||||||
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 34, 34)) {
|
||||||
|
if (Stone && Stone.isSuccess) {
|
||||||
DragObj = Stone;
|
DragObj = Stone;
|
||||||
PageFatalismStoneLst[Pos] = FatalismStone_Stone(null);
|
PageFatalismStoneLst[Pos] = null;
|
||||||
PageFatalismStoneLst[Pos].InitializeData(DragObj.BackupInfo);
|
|
||||||
DragOldPos = Pos;
|
DragOldPos = Pos;
|
||||||
|
DragType = 1; //背包中的拖拽
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (WearFatalismStoneLst) {
|
||||||
|
foreach(Pos, Stone in WearFatalismStoneLst) {
|
||||||
|
local XPos = WearPagePos[Pos * 2];
|
||||||
|
local YPos = WearPagePos[Pos * 2 + 1];
|
||||||
|
XPos += 5;
|
||||||
|
YPos += 5;
|
||||||
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 34, 34)) {
|
||||||
|
if (Stone) {
|
||||||
|
DragObj = Stone;
|
||||||
|
WearFatalismStoneLst[Pos] = null;
|
||||||
|
DragOldPos = Pos + (GridCount * 3);
|
||||||
|
DragType = 0; //身上的拖拽
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//鼠标左键抬起回调
|
//鼠标左键抬起回调
|
||||||
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
function OnMouseLbUp(MousePos_X, MousePos_Y) {
|
||||||
LenheartNewUI_BaseWindow.OnMouseLbUp(MousePos_X, MousePos_Y);
|
LenheartNewUI_BaseWindow.OnMouseLbUp(MousePos_X, MousePos_Y);
|
||||||
if (!PageFatalismStoneLst) return;
|
if (PageFatalismStoneLst) {
|
||||||
foreach(Pos, Stone in PageFatalismStoneLst) {
|
foreach(Pos, Stone in PageFatalismStoneLst) {
|
||||||
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + Stone.XPos, Y + Stone.YPos, 34, 34)) {
|
local XPos = 310 + (Pos % 11 * 39);
|
||||||
|
local YPos = 260 + (Pos / 11 * 35);
|
||||||
if (DragObj) {
|
if (DragObj) {
|
||||||
//获取到旧的穿戴类型
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 34, 34)) {
|
||||||
local OldEType = DragObj.Stone_Type;
|
StoneMoveLogic(Pos, Stone);
|
||||||
//获取到新的穿戴类型
|
|
||||||
local NewEType = Stone.Stone_Type;
|
|
||||||
|
|
||||||
//如果两个类型相同则进行交换 相同位置也不发包
|
|
||||||
if (OldEType == NewEType && DragOldPos != Pos) {
|
|
||||||
SendPackEx({
|
|
||||||
op = 21000003,
|
|
||||||
oldtype = DragOldPos >= GridCount ? -1 : BackpackPage,
|
|
||||||
oldpos = DragOldPos >= GridCount ? (DragOldPos - GridCount) : DragOldPos,
|
|
||||||
newtype = Pos >= GridCount ? -1 : BackpackPage,
|
|
||||||
newpos = Pos >= GridCount ? (Pos - GridCount) : Pos
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//播放移动声音
|
|
||||||
R_Utils.PlaySound(DragObj.Info["move wav"]);
|
|
||||||
|
|
||||||
//放回原位
|
|
||||||
PageFatalismStoneLst[DragOldPos] = DragObj;
|
|
||||||
DragObj = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (WearFatalismStoneLst) {
|
||||||
|
foreach(Pos, Stone in WearFatalismStoneLst) {
|
||||||
Cetshi = 0;
|
local XPos = WearPagePos[Pos * 2];
|
||||||
//逻辑入口
|
local YPos = WearPagePos[Pos * 2 + 1];
|
||||||
function Proc(obj) {
|
XPos += 5;
|
||||||
LenheartNewUI_Windows.SyncPos(X, Y);
|
YPos += 5;
|
||||||
|
if (DragObj) {
|
||||||
if (Clock() - Cetshi > 100) {
|
if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + XPos, Y + YPos, 34, 34)) {
|
||||||
Cetshi = Clock();
|
StoneMoveLogic((GridCount * 3) + Pos, Stone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//洗练的区域
|
||||||
|
if (FunctionPage == 0 && sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X + 500, Y + 90, 42, 42)) {
|
||||||
|
if (DragObj) {
|
||||||
|
WashStone = DragObj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DragObj) {
|
||||||
|
//播放移动声音
|
||||||
|
R_Utils.PlaySound(DragObj.Info["move wav"]);
|
||||||
|
//放回原位
|
||||||
|
if (DragType == 1) PageFatalismStoneLst[DragOldPos] = DragObj;
|
||||||
|
else if (DragType == 0) WearFatalismStoneLst[DragOldPos - (GridCount * 3)] = DragObj;
|
||||||
|
DragObj = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function StoneMoveLogic(Pos, Stone) {
|
||||||
|
local OldEType = DragObj.Stone_Type; //老装备类型
|
||||||
|
local NewEType; //新装备类型
|
||||||
|
//如果新位置有魂石 获取到新的穿戴类型
|
||||||
|
if (Stone) NewEType = Stone.Stone_Type;
|
||||||
|
else {
|
||||||
|
//这是往身上拖
|
||||||
|
if (Pos >= GridCount * 3) {
|
||||||
|
local RealPos = Pos - (GridCount * 3);
|
||||||
|
if (RealPos == 0) NewEType = 0;
|
||||||
|
if (RealPos >= 1 && RealPos <= 4) NewEType = 1;
|
||||||
|
if (RealPos == 5) NewEType = 2;
|
||||||
|
}
|
||||||
|
//这是往背包拖
|
||||||
|
else {
|
||||||
|
NewEType = BackpackPage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//如果两个类型相同则进行交换 相同位置也不发包
|
||||||
|
if (OldEType == NewEType && DragOldPos != Pos) {
|
||||||
|
//老装备的页面位置
|
||||||
|
SendPackEx({
|
||||||
|
op = 21000003,
|
||||||
|
oldtype = DragType == 1 ? BackpackPage : 3,
|
||||||
|
oldpos = DragType == 1 ? DragOldPos : DragOldPos - (GridCount * 3),
|
||||||
|
newtype = Pos >= (GridCount * 3) ? 3 : BackpackPage,
|
||||||
|
newpos = Pos >= (GridCount * 3) ? Pos - (GridCount * 3) : Pos
|
||||||
|
})
|
||||||
|
QueryFatalismStoneBackpack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//计算全身属性
|
||||||
|
function StatisticalAttribute() {
|
||||||
|
local AttributeTable = {};
|
||||||
|
local WearStoneList = BackPackData.GetList(3);
|
||||||
|
for (local i = 0; i< WearStoneList.len(); i++) {
|
||||||
|
local StoneObj = WearStoneList[i];
|
||||||
|
if (StoneObj) {
|
||||||
|
local Att = StoneObj.GetAttribute();
|
||||||
|
if (Att) {
|
||||||
|
foreach(key, value in Att) {
|
||||||
|
local RealValue = value;
|
||||||
|
if (typeof RealValue == "array") RealValue = RealValue[0];
|
||||||
|
if (!AttributeTable.rawin(key)) AttributeTable.rawset(key, value);
|
||||||
|
else AttributeTable.rawset(key, AttributeTable.rawget(key) + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//记录最新属性数据
|
||||||
|
if ("LenheartAttributesTable" in getroottable()) {
|
||||||
|
local T = getroottable()["LenheartAttributesTable"];
|
||||||
|
T.rawset("LenheartCollectFatalismStoneAb", AttributeTable);
|
||||||
|
} else {
|
||||||
|
local T = {};
|
||||||
|
T.rawset("LenheartCollectFatalismStoneAb", AttributeTable);
|
||||||
|
getroottable().rawset("LenheartAttributesTable", T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//逻辑入口
|
||||||
|
function Proc(obj) {
|
||||||
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
//初始化PVF魂石列表
|
||||||
function InitFatalismStoneLst() {
|
function InitFatalismStoneLst() {
|
||||||
FatalismStoneLst = {};
|
FatalismStoneLst = {};
|
||||||
Rindro_Script.GetFileData("fatalismstone/fatalismstone.lst", function(DataTable, Data) {
|
Rindro_Script.GetFileData("fatalismstone/fatalismstone.lst", function(DataTable, Data) {
|
||||||
|
|
@ -391,16 +463,29 @@ class FatalismStoneC extends LenheartNewUI_Windows {
|
||||||
FatalismStoneLst.rawset(Id, Path);
|
FatalismStoneLst.rawset(Id, Path);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
FatalismStoneConfig = Rindro_Script.GetFileData("fatalismstone/fatalismstone.etc", function(DataTable, Data) {
|
||||||
|
while (!Data.Eof()) {
|
||||||
|
local Str = Data.Get();
|
||||||
|
if (Str == "[wash item]") {
|
||||||
|
DataTable.wash_item <- Data.Get();
|
||||||
|
} else if (Str == "[wash cost]") {
|
||||||
|
DataTable.wash_cost <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function InitImg() {
|
function InitImg() {
|
||||||
Img = {};
|
Img = {};
|
||||||
Img["main"] <- Rindro_Image("hud/fatalism_stone.img");
|
Img["main"] <- Rindro_Image("hud/fatalism_stone.img");
|
||||||
|
AniQueue = QuestQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
function OpenCallBack() {
|
function OpenCallBack() {
|
||||||
Visible = true;
|
Visible = true;
|
||||||
QueryFatalismStoneBackpack();
|
QueryFatalismStoneBackpack();
|
||||||
|
WashStone = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
/*
|
||||||
|
文件名:FatalismStone_BackPack.nut
|
||||||
|
路径:Project/FatalismStone/FatalismStone_BackPack.nut
|
||||||
|
创建日期:2025-08-27 17:54
|
||||||
|
文件用途:魂石背包类
|
||||||
|
*/
|
||||||
|
|
||||||
|
//魂石背包类
|
||||||
|
class FatalismStone_BackPack {
|
||||||
|
|
||||||
|
//背包总格子数
|
||||||
|
GridCount = 77;
|
||||||
|
//穿戴总格子数
|
||||||
|
WearCount = 6;
|
||||||
|
|
||||||
|
StoneArr = null;
|
||||||
|
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
StoneArr = [];
|
||||||
|
|
||||||
|
//魂石单个数据回包
|
||||||
|
Rindro_BaseToolClass.RegisterHexPack(21000012, function(Pack) {
|
||||||
|
local Uuid = Pack.GetInt();
|
||||||
|
local Info = {
|
||||||
|
Cultivation = Pack.GetInt().tofloat() * 0.01,
|
||||||
|
}
|
||||||
|
foreach(StoneObject in StoneArr) {
|
||||||
|
if (!StoneObject) continue;
|
||||||
|
if (StoneObject.Uuid == Uuid) {
|
||||||
|
StoneObject.InitializeData(Info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.bindenv(this));
|
||||||
|
|
||||||
|
//魂石多个数据回包
|
||||||
|
Rindro_BaseToolClass.RegisterHexPack(21000014, function(Pack) {
|
||||||
|
local Count = Pack.GetInt();
|
||||||
|
for (local i = 0; i< Count; i++) {
|
||||||
|
local Uuid = Pack.GetInt();
|
||||||
|
local Info = {
|
||||||
|
Cultivation = Pack.GetInt().tofloat() * 0.01,
|
||||||
|
}
|
||||||
|
foreach(StoneObject in StoneArr) {
|
||||||
|
if (!StoneObject) continue;
|
||||||
|
if (StoneObject.Uuid == Uuid) {
|
||||||
|
StoneObject.InitializeData(Info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.bindenv(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
//通过数据构造背包 反序列化
|
||||||
|
function Deserialize(N_Data) {
|
||||||
|
local BackpackData = N_Data[0];
|
||||||
|
local WearData = N_Data[1];
|
||||||
|
|
||||||
|
//转换背包数据
|
||||||
|
local BackPackArr = [];
|
||||||
|
for (local i = 0; i<(GridCount * 3); i++) {
|
||||||
|
local StoneId = BackpackData.add(i * 8).readInt();
|
||||||
|
local StoneUuid = BackpackData.add(i * 8 + 4).readInt();
|
||||||
|
if (StoneId != 0 && StoneUuid != 0) {
|
||||||
|
local StoneObj = FatalismStone_Stone(StoneId);
|
||||||
|
StoneObj.Stone_Type = i / GridCount;
|
||||||
|
StoneObj.Uuid = StoneUuid;
|
||||||
|
BackPackArr.append(StoneObj);
|
||||||
|
} else {
|
||||||
|
BackPackArr.append(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//转化穿戴数据
|
||||||
|
local WearArr = [];
|
||||||
|
for (local i = 0; i< WearCount; i++) {
|
||||||
|
local StoneId = WearData.add(i * 8).readInt();
|
||||||
|
local StoneUuid = WearData.add(i * 8 + 4).readInt();
|
||||||
|
if (StoneId != 0 && StoneUuid != 0) {
|
||||||
|
local StoneObj = FatalismStone_Stone(StoneId);
|
||||||
|
StoneObj.Uuid = StoneUuid;
|
||||||
|
WearArr.append(StoneObj);
|
||||||
|
} else {
|
||||||
|
WearArr.append(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//两段数据放入总数据
|
||||||
|
StoneArr.extend(BackPackArr);
|
||||||
|
StoneArr.extend(WearArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取魂石的列表 3为身上穿戴的
|
||||||
|
function GetList(Page) {
|
||||||
|
local SliceLength = GridCount;
|
||||||
|
if (Page == 3) SliceLength = WearCount;
|
||||||
|
return StoneArr.slice(Page * 77, Page * 77 + SliceLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
L_Windows_List <- [];
|
||||||
|
getroottable().rawdelete("LenheartPluginsInitFlag");
|
||||||
|
getroottable().rawdelete("EventList_Obj")
|
||||||
|
getroottable().rawdelete("FatalismStone_Obj");
|
||||||
|
|
@ -32,6 +32,10 @@ FatalismStone_AttrTagDrawOrder <- ["[physical attack]", "[magical attack]", "[ph
|
||||||
|
|
||||||
|
|
||||||
class FatalismStone_Stone {
|
class FatalismStone_Stone {
|
||||||
|
//唯一ID
|
||||||
|
Uuid = null;
|
||||||
|
//魂石ID
|
||||||
|
Id = null;
|
||||||
//数据
|
//数据
|
||||||
Info = null;
|
Info = null;
|
||||||
//显示偏移位置
|
//显示偏移位置
|
||||||
|
|
@ -42,6 +46,10 @@ class FatalismStone_Stone {
|
||||||
|
|
||||||
//完成Flag
|
//完成Flag
|
||||||
isSuccess = false;
|
isSuccess = false;
|
||||||
|
//唯一属性加载Flag
|
||||||
|
isInitializeData = false;
|
||||||
|
//唯一属性请求Flag
|
||||||
|
isInitializeRequestData = false;
|
||||||
|
|
||||||
constructor(Arg) {
|
constructor(Arg) {
|
||||||
if (Arg != null) {
|
if (Arg != null) {
|
||||||
|
|
@ -54,6 +62,7 @@ class FatalismStone_Stone {
|
||||||
FatalismStoneLst.rawset(Arg, Buf);
|
FatalismStoneLst.rawset(Arg, Buf);
|
||||||
}
|
}
|
||||||
Initialize(Buf);
|
Initialize(Buf);
|
||||||
|
Id = Arg;
|
||||||
} else printf("FatalismStone_Stone:没有找到Id为" + Arg + "的魂石");
|
} else printf("FatalismStone_Stone:没有找到Id为" + Arg + "的魂石");
|
||||||
}
|
}
|
||||||
isSuccess = true;
|
isSuccess = true;
|
||||||
|
|
@ -74,13 +83,14 @@ class FatalismStone_Stone {
|
||||||
|
|
||||||
//悬停
|
//悬停
|
||||||
function HoverShow(X, Y) {
|
function HoverShow(X, Y) {
|
||||||
|
|
||||||
//绘制悬停框
|
|
||||||
L_sq_SetDrawImgModel(2, 0);
|
|
||||||
Rindro_Image_GlobalMap["lenheartui"].DrawPng(353, X - 31 + 1, Y + 1);
|
|
||||||
L_sq_ReleaseDrawImgModel();
|
|
||||||
|
|
||||||
if (!isSuccess) return;
|
if (!isSuccess) return;
|
||||||
|
if (!isInitializeRequestData) {
|
||||||
|
isInitializeRequestData = true;
|
||||||
|
Rindro_BaseToolClass.SendPackEx({
|
||||||
|
op = 21000011,
|
||||||
|
uuid = Uuid
|
||||||
|
})
|
||||||
|
}
|
||||||
//基础长度50
|
//基础长度50
|
||||||
local Height = 50;
|
local Height = 50;
|
||||||
Height += Info.Attribute.len() * 14; //计算属性带来的高度加成
|
Height += Info.Attribute.len() * 14; //计算属性带来的高度加成
|
||||||
|
|
@ -178,23 +188,15 @@ class FatalismStone_Stone {
|
||||||
|
|
||||||
//初始化数据
|
//初始化数据
|
||||||
function InitializeData(info) {
|
function InitializeData(info) {
|
||||||
BackupInfo = info;
|
|
||||||
//同步位置
|
|
||||||
XPos = info.XPos;
|
|
||||||
YPos = info.YPos;
|
|
||||||
|
|
||||||
//如果是没有ID的通过传入的数据确定魂石类型
|
|
||||||
if (Stone_Type == null) Stone_Type = info.StoneType;
|
|
||||||
|
|
||||||
|
|
||||||
if (!isSuccess) return;
|
|
||||||
//得到洗练度
|
//得到洗练度
|
||||||
local Rate = info.CultivationDegree;
|
local Rate = info.Cultivation;
|
||||||
Info.cultivationDegree = (Rate * 100.0);
|
Info.cultivationDegree = (Rate * 100.0);
|
||||||
//计算属性
|
//计算属性
|
||||||
foreach(Key, value in Info.Attribute) {
|
foreach(Key, value in Info.Attribute) {
|
||||||
Info.Attribute[Key] = (value[0] + (value[1] - value[0]) * Rate).tointeger();
|
local BaseValueArr = FatalismStoneLst[Id].Attribute[Key];
|
||||||
|
Info.Attribute[Key] = (BaseValueArr[0] + (BaseValueArr[1] - BaseValueArr[0]) * Rate).tointeger();
|
||||||
}
|
}
|
||||||
|
isInitializeData = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//品级颜色
|
//品级颜色
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class TH_CombatRankC extends LenheartNewUI_Windows {
|
||||||
DeclareTimer = null;
|
DeclareTimer = null;
|
||||||
DeclareFlag = false;
|
DeclareFlag = false;
|
||||||
|
|
||||||
|
//排行名次颜色集合
|
||||||
|
RankColor = null;
|
||||||
//公会奖励集合
|
//公会奖励集合
|
||||||
GuildReward = null;
|
GuildReward = null;
|
||||||
GuildFlagData = null;
|
GuildFlagData = null;
|
||||||
|
|
@ -82,6 +84,10 @@ class TH_CombatRankC extends LenheartNewUI_Windows {
|
||||||
RegisterPack(20096102, function(Chunk) {
|
RegisterPack(20096102, function(Chunk) {
|
||||||
local Jso = Json.Decode(Chunk);
|
local Jso = Json.Decode(Chunk);
|
||||||
PersonReward = Jso["config"];
|
PersonReward = Jso["config"];
|
||||||
|
RankColor = [];
|
||||||
|
foreach (colorarr in Jso["pmys"]) {
|
||||||
|
RankColor.append(sq_RGBA(colorarr[0], colorarr[1], colorarr[2], colorarr[3]));
|
||||||
|
}
|
||||||
}.bindenv(this));
|
}.bindenv(this));
|
||||||
|
|
||||||
//基础公会数据回包
|
//基础公会数据回包
|
||||||
|
|
@ -194,18 +200,14 @@ class TH_CombatRankC extends LenheartNewUI_Windows {
|
||||||
// }.bindenv(this);
|
// }.bindenv(this);
|
||||||
// TitleButtonList.append(FuncTabbar2);
|
// TitleButtonList.append(FuncTabbar2);
|
||||||
|
|
||||||
// local FuncTabbar3 = LenheartNewUI_TabbarsText(476, 23, "我的战力");
|
local FuncTabbar3 = LenheartNewUI_BaseButton(706, 8, 11, 12, "interface/lenheartwindowcommon.img", 593);
|
||||||
// FuncTabbar3.SetTextOffset(8, 4);
|
AddChild(FuncTabbar3);
|
||||||
// AddChild(FuncTabbar3);
|
FuncTabbar3.OnClick = function() {
|
||||||
// FuncTabbar3.OnClick = function() {
|
Page = 0;
|
||||||
// TitleButtonList[0].State = 0;
|
LookingInfo = MyCombat;
|
||||||
// TitleButtonList[1].State = 0;
|
ScrollBar.Reset();
|
||||||
// TitleButtonList[2].State = 1;
|
}.bindenv(this);
|
||||||
// Page = 0;
|
TitleButtonList.append(FuncTabbar3);
|
||||||
// LookingInfo = MyCombat;
|
|
||||||
// ScrollBar.Reset();
|
|
||||||
// }.bindenv(this);
|
|
||||||
// TitleButtonList.append(FuncTabbar3);
|
|
||||||
|
|
||||||
ScrollBar = Yosin_ScrollBar(729, 295, 218, 60);
|
ScrollBar = Yosin_ScrollBar(729, 295, 218, 60);
|
||||||
ScrollBar.SetParent(this);
|
ScrollBar.SetParent(this);
|
||||||
|
|
@ -631,10 +633,12 @@ class TH_CombatRankC_Item {
|
||||||
Combat = Info.zdlS;
|
Combat = Info.zdlS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local Color = sq_RGBA(230, 200, 155, 255);
|
||||||
|
if(Idx < 10 && Parent.RankColor)Color = Parent.RankColor[Idx];
|
||||||
//绘制排名
|
//绘制排名
|
||||||
L_sq_DrawCode(Ranking, X + 25 - LenheartTextClass.GetStringLength(Ranking) / 2, Y + 14, sq_RGBA(230, 200, 155, 255), 0, 1);
|
L_sq_DrawCode(Ranking, X + 25 - LenheartTextClass.GetStringLength(Ranking) / 2, Y + 14, Color, 0, 1);
|
||||||
//绘制角色名
|
//绘制角色名
|
||||||
L_sq_DrawCode(CharacName, X + 110 - LenheartTextClass.GetStringLength(CharacName) / 2, Y + 14, sq_RGBA(230, 200, 155, 255), 0, 1);
|
L_sq_DrawCode(CharacName, X + 110 - LenheartTextClass.GetStringLength(CharacName) / 2, Y + 14, Color, 0, 1);
|
||||||
//绘制膜拜次数
|
//绘制膜拜次数
|
||||||
L_sq_DrawCode(MbCount, X + 213 - LenheartTextClass.GetStringLength(MbCount) / 2, Y + 14, sq_RGBA(230, 200, 155, 255), 0, 1);
|
L_sq_DrawCode(MbCount, X + 213 - LenheartTextClass.GetStringLength(MbCount) / 2, Y + 14, sq_RGBA(230, 200, 155, 255), 0, 1);
|
||||||
//绘制职业
|
//绘制职业
|
||||||
|
|
|
||||||
|
|
@ -6,17 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_CreateParty.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_FightSituation.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_Noti.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_Party.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PartyApplyJoin.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PartyFormation.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PartyHall.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PartyInfo.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PartyMemberInfo.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_PlayerInteractive.nut");
|
|
||||||
dofile("sqr/Project/Luke/Rindro_Luke_Reward.nut");
|
|
||||||
|
|
||||||
|
|
||||||
//卢克核心数据类
|
//卢克核心数据类
|
||||||
|
|
|
||||||
|
|
@ -210,13 +210,9 @@ class Rindro_LukePlayerInteractiveC extends LenheartNewUI_Windows {
|
||||||
//绘制角色名
|
//绘制角色名
|
||||||
L_sq_DrawCode(InfoObj.Name, X + 61 - LenheartTextClass.GetStringLength(InfoObj.Name) / 2, Y + 4, sq_RGBA(169, 255, 171, 255), 0, 1);
|
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 = X;
|
||||||
local AXpos = AvatarObj.F[0][2] + X + OffsetArr[InfoObj.Job][0] - 40;
|
local AYpos = Y + 1;
|
||||||
local AYpos = AvatarObj.F[0][3] + Y + OffsetArr[InfoObj.Job][1];
|
InfoObj.EquVos.DrawFace(AXpos, AYpos);
|
||||||
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);
|
LenheartNewUI_Windows.Show(obj);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,5 +169,8 @@
|
||||||
},
|
},
|
||||||
"Project/HM_CombatRank": {
|
"Project/HM_CombatRank": {
|
||||||
"description": "毁梦定制-战力榜"
|
"description": "毁梦定制-战力榜"
|
||||||
|
},
|
||||||
|
"Project/CumulativeReward": {
|
||||||
|
"description": "累计奖励"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue