/* 文件名: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; } }