137 lines
4.6 KiB
Plaintext
137 lines
4.6 KiB
Plaintext
/*
|
|
文件名:Item.nut
|
|
路径:User/Asset/Item/Item.nut
|
|
创建日期:2024-12-13 12:30
|
|
文件用途:项目类
|
|
*/
|
|
GameItem <- {};
|
|
class GameItem.Item {
|
|
|
|
function _typeof() {
|
|
return "Item";
|
|
}
|
|
|
|
//在背包中的格子位置
|
|
PosInKnapsack = -1;
|
|
|
|
|
|
//获取信息窗口
|
|
function GetInfoWindow() {
|
|
if (typeof this == "Equipment") {
|
|
return GameItem.EquipmentInfo(this);
|
|
} else if (typeof this == "Stackable") {
|
|
return GameItem.StackableInfo(this);
|
|
}
|
|
|
|
error("GameItem::Info:: 未知物品类型");
|
|
}
|
|
|
|
//获取图标精灵
|
|
function GetIconSprite() {
|
|
if (typeof this == "Equipment") {
|
|
return GameItem.EquipmentIcon(this);
|
|
} else if (typeof this == "Stackable") {
|
|
return GameItem.StackableIcon(this);
|
|
}
|
|
error("GameItem::Icon:: 未知物品类型");
|
|
}
|
|
|
|
//public::
|
|
//通过ID构造物品
|
|
function ConstructionItemById(Idx) {
|
|
if (AssetManager.EquipmentList.rawin(Idx)) {
|
|
return GameItem.Equipment(Idx);
|
|
} else if (AssetManager.StackableList.rawin(Idx)) {
|
|
return GameItem.Stackable(Idx);
|
|
} else {
|
|
error("没有这个道具编号: " + Idx);
|
|
}
|
|
}
|
|
|
|
//通过包构造物品
|
|
function ConstructionItemByPacket(Pack) {
|
|
local Ret = {};
|
|
local Type = Pack.Get_Byte();
|
|
Ret.Pos <- Pack.Get_Short();
|
|
//装备类型
|
|
if (Type == 1) {
|
|
local EquInfo = {
|
|
//装备ID
|
|
EquipId = Pack.Get_Int(),
|
|
//交易类型
|
|
EquipTradeType = Pack.Get_Byte(),
|
|
//装备附魔编号
|
|
EquipEnchant = Pack.Get_Int(),
|
|
//装备强化等级或增幅等级
|
|
EquipUpgrade = Pack.Get_Byte(),
|
|
//装备锻造
|
|
EquipSeparate = Pack.Get_Byte(),
|
|
//装备增幅属性 0 无 1 力量 2 智力 3 体力 4 精神
|
|
EquipIncrease = Pack.Get_Byte(),
|
|
//装备力量百分比
|
|
EquipPowerPercentage = Pack.Get_Byte(),
|
|
//装备智力百分比
|
|
EquipIntellectPercentage = Pack.Get_Byte(),
|
|
//装备体力百分比
|
|
EquipStaminaPercentage = Pack.Get_Byte(),
|
|
//装备精神百分比
|
|
EquipSpiritPercentage = Pack.Get_Byte(),
|
|
//装备物理攻击百分比
|
|
EquipPhysicalAttackPercentage = Pack.Get_Byte(),
|
|
//装备魔法攻击百分比
|
|
EquipMagicAttackPercentage = Pack.Get_Byte(),
|
|
//装备独立攻击百分比
|
|
EquipIndependentAttackPercentage = Pack.Get_Byte(),
|
|
//装备物理防御百分比
|
|
EquipPhysicalDefensePercentage = Pack.Get_Byte(),
|
|
//装备魔法防御百分比
|
|
EquipMagicDefensePercentage = Pack.Get_Byte(),
|
|
//装备全属强
|
|
EquipAllElementalAttack = Pack.Get_Byte(),
|
|
//装备水属强
|
|
EquipWaterAttack = Pack.Get_Byte(),
|
|
//装备火属强
|
|
EquipFireAttack = Pack.Get_Byte(),
|
|
//装备光属强
|
|
EquipLightAttack = Pack.Get_Byte(),
|
|
//装备暗属强
|
|
EquipDarkAttack = Pack.Get_Byte(),
|
|
//装备品质
|
|
EquipPercentage = Pack.Get_Byte(),
|
|
//装备再封装次数
|
|
EquipWrapCount = Pack.Get_Byte(),
|
|
//装备是否封装
|
|
EquipIsWrap = Pack.Get_Byte(),
|
|
//耐久度
|
|
EquipDurability = Pack.Get_Byte(),
|
|
}
|
|
Ret.Item <- GameItem.Equipment(EquInfo);
|
|
}
|
|
//消耗品类型
|
|
else if (Type == 2 || Type == 3) {
|
|
local ItemInfo = {
|
|
//道具ID
|
|
ItemId = Pack.Get_Int(),
|
|
//交易类型
|
|
ItemTradeType = Pack.Get_Byte(),
|
|
//道具数量
|
|
ItemCount = Pack.Get_Int(),
|
|
}
|
|
Ret.Item <- GameItem.Stackable(ItemInfo);
|
|
}
|
|
//时装类型
|
|
else if (Type == 4) {
|
|
local ItemInfo = {
|
|
//道具ID
|
|
ItemId = Pack.Get_Int(),
|
|
//交易类型
|
|
ItemTradeType = Pack.Get_Byte(),
|
|
//道具数量
|
|
ItemCount = Pack.Get_Int(),
|
|
}
|
|
Ret.Item <- GameItem.Equipment(ItemInfo.ItemId);
|
|
}
|
|
Ret.Item.PosInKnapsack = Ret.Pos;
|
|
return Ret;
|
|
}
|
|
} |