异界装备升级
This commit is contained in:
parent
58b5ebfcc2
commit
513caa5347
|
|
@ -107,6 +107,21 @@
|
|||
"Script": [
|
||||
"装备跨界/装备跨界.nut"
|
||||
]
|
||||
},
|
||||
"灵魂救赎武器": {
|
||||
"Script": [
|
||||
"灵魂救赎武器/灵魂救赎武器.nut"
|
||||
]
|
||||
},
|
||||
"装备拓展": {
|
||||
"Script": [
|
||||
"装备拓展/装备拓展.nut"
|
||||
]
|
||||
},
|
||||
"异界装备升级": {
|
||||
"Script": [
|
||||
"异界装备升级/异界装备升级.nut"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,204 @@
|
|||
/*
|
||||
文件名:升级券.nut
|
||||
路径:MyProject/升级券/升级券.nut
|
||||
创建日期:2025-12-14 21:32
|
||||
文件用途:
|
||||
*/
|
||||
|
||||
class ItemEquipmentUpgrade {
|
||||
|
||||
//配置表
|
||||
Info = null;
|
||||
|
||||
//用户状态表
|
||||
UserState = null;
|
||||
|
||||
//基础所需材料
|
||||
BasicMaterials = null;
|
||||
//等级倍率
|
||||
LevelRate = 1.0;
|
||||
//品级倍率
|
||||
RarityRate = 1.0;
|
||||
//禁止升级Map
|
||||
BanEquipmentMap = null;
|
||||
//特殊装备Map
|
||||
SpecialEquipmentMap = null;
|
||||
//特殊材料组
|
||||
SpecialMaterialsGroup = null;
|
||||
|
||||
constructor() {
|
||||
Info = {};
|
||||
UserState = {};
|
||||
|
||||
//读取PVF
|
||||
InitPvf();
|
||||
|
||||
//注册客户端收包
|
||||
RegisterClient();
|
||||
}
|
||||
|
||||
|
||||
function RegisterClient() {
|
||||
ClientSocketPackFuncMap.rawset(21010001, function(SUser, Jso) {
|
||||
//获取背包
|
||||
local InvenObj = SUser.GetInven();
|
||||
//装备ID
|
||||
local Id = Jso.item.ItemId;
|
||||
local pvfItem = PvfItem.GetPvfItemById(Id)
|
||||
local Level = pvfItem.GetUsableLevel();
|
||||
|
||||
//判断是否为异界装备 不是就返回 或者等级已经是85了也返回
|
||||
if (pvfItem.GetRarity() != 5 || Level == 85) {
|
||||
SUser.SendJso({
|
||||
op = 21010002,
|
||||
error = 1
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
//普通升级装备
|
||||
else {
|
||||
local equ = PvfItem.GetPvfItemById(Id);
|
||||
local Rarity = equ.GetRarity();
|
||||
local Level = equ.GetUsableLevel();
|
||||
local RarityCalculateRate = Rarity * RarityRate;
|
||||
local LevelCalculateRate = Level * LevelRate;
|
||||
local MgArr = [];
|
||||
foreach(object in BasicMaterials) {
|
||||
//查询自己有多少个道具
|
||||
MgArr.push({
|
||||
Item = object.Item,
|
||||
RealCount = InvenObj.GetCountById(object.Item),
|
||||
NeedCount = (object.Count * RarityCalculateRate * LevelCalculateRate).tointeger()
|
||||
});
|
||||
}
|
||||
SUser.SendJso({
|
||||
op = 21010002,
|
||||
MgInfo = MgArr
|
||||
});
|
||||
}
|
||||
}.bindenv(this));
|
||||
|
||||
ClientSocketPackFuncMap.rawset(21010003, function(SUser, Jso) {
|
||||
//获取背包
|
||||
local InvenObj = SUser.GetInven();
|
||||
//装备ID
|
||||
local Id = Jso.item.ItemId;
|
||||
local equ = PvfItem.GetPvfItemById(Id);
|
||||
local Level = equ.GetUsableLevel();
|
||||
local giveid = Id + 220000000;
|
||||
if (Level == 75 || Level == 80) {
|
||||
giveid = Id + 1000000;
|
||||
}
|
||||
|
||||
//获取对应槽位的装备
|
||||
local SlotItem = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, 9 + Jso.item.Pos);
|
||||
if (SlotItem.GetIndex() != Id) {
|
||||
SUser.SendNotiBox(" 升级失败 升级时请不要操作背包", 1);
|
||||
return;
|
||||
} else {
|
||||
local equ = PvfItem.GetPvfItemById(Id);
|
||||
local Rarity = equ.GetRarity();
|
||||
local Level = equ.GetUsableLevel();
|
||||
local RarityCalculateRate = Rarity * RarityRate;
|
||||
local LevelCalculateRate = Level * LevelRate;
|
||||
local MgArr = [];
|
||||
foreach(object in BasicMaterials) {
|
||||
//查询自己有多少个道具
|
||||
MgArr.push({
|
||||
Id = object.Item,
|
||||
Count = (object.Count * RarityCalculateRate * LevelCalculateRate).tointeger()
|
||||
});
|
||||
}
|
||||
|
||||
local Flag = InvenObj.CheckArrItemCount(MgArr);
|
||||
if (!Flag) {
|
||||
print("扣除失败");
|
||||
SUser.SendNotiBox(" 升级失败 升级时请不要操作背包", 1);
|
||||
return;
|
||||
} else {
|
||||
local SlogInfo = SUser.GiveItem(giveid, 1);
|
||||
if (!SlogInfo) {
|
||||
SUser.SendNotiBox(" 升级失败 请确定背包有空余空间", 1);
|
||||
return;
|
||||
}
|
||||
|
||||
local giveItemObj = InvenObj.GetSlot(1, SlogInfo[1])
|
||||
//扣除道具
|
||||
InvenObj.DeleteArrItemCount(MgArr);
|
||||
|
||||
local forging = SlotItem.GetForging(); //锻造
|
||||
local upgrade = SlotItem.GetUpgrade(); //强化
|
||||
local amplification = SlotItem.GetAmplification(); //增幅
|
||||
local enchanting = SlotItem.GetEnchanting(); //附魔
|
||||
|
||||
if (forging > 0) {
|
||||
giveItemObj.SetForging(forging);
|
||||
}
|
||||
|
||||
if (upgrade > 0) {
|
||||
giveItemObj.SetUpgrade(upgrade);
|
||||
}
|
||||
|
||||
if (amplification != 0) {
|
||||
giveItemObj.SetAmplification(amplification);
|
||||
}
|
||||
giveItemObj.SetEnchanting(enchanting);
|
||||
giveItemObj.SetAdd_Info(SlotItem.GetAdd_Info()); //品级
|
||||
giveItemObj.Flush();
|
||||
|
||||
//销毁背包中的道具
|
||||
SlotItem.Delete();
|
||||
//刷新玩家背包列表
|
||||
SUser.SendUpdateItemList(1, 0, 9 + Jso.item.Pos);
|
||||
SUser.SendUpdateItemList(1, 0, SlogInfo[1]);
|
||||
|
||||
//刷新账号金库列表
|
||||
SUser.SendNotiBox(" 升级成功", 1);
|
||||
SUser.SendJso({
|
||||
op = 21010004
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}.bindenv(this));
|
||||
};
|
||||
|
||||
function InitPvf() {
|
||||
// getroottable()._Script_Data_Init_ <- false;
|
||||
Script();
|
||||
ScriptData.GetFileData("etc/rindro/itemtool/itemotherworldupgrade/itemotherworldupgrade.etc", function(DataTable, Data) {
|
||||
while (!Data.Eof()) {
|
||||
local Fragment = Data.Get();
|
||||
if (Fragment == "[BASIC MATERIALS]") {
|
||||
BasicMaterials = [];
|
||||
while (true) {
|
||||
local Fbuf = Data.Get();
|
||||
if (Fbuf == "[/BASIC MATERIALS]") {
|
||||
break;
|
||||
}
|
||||
local T = {
|
||||
Item = Fbuf,
|
||||
Count = Data.Get()
|
||||
}
|
||||
BasicMaterials.push(T);
|
||||
}
|
||||
} else if (Fragment == "[LEVEL RATE]") {
|
||||
LevelRate = Data.Get()
|
||||
} else if (Fragment == "[RARITY RATE]") {
|
||||
RarityRate = Data.Get()
|
||||
}
|
||||
}
|
||||
}.bindenv(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Timer.SetTimeOut(function() {
|
||||
|
||||
getroottable()._ItemEquipmentUpgrade_ <- ItemEquipmentUpgrade();
|
||||
print("装备升级 - 已加载");
|
||||
}, 1);
|
||||
Loading…
Reference in New Issue