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;
 | |
|     }
 | |
| } |