75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:InvenClass.nut
 | |
| 路径:BaseClass/InvenClass/InvenClass.nut
 | |
| 创建日期:2024-04-18	13:26
 | |
| 文件用途:背包类
 | |
| */
 | |
| class Inven extends Base_C_Object {
 | |
| 
 | |
|     static INVENTORY_TYPE_BODY = 0; //身上穿的装备(0-26)
 | |
|     static INVENTORY_TYPE_ITEM = 1; //物品栏(0-311)
 | |
|     static INVENTORY_TYPE_AVARTAR = 2; //时装栏(0-104)
 | |
|     static INVENTORY_TYPE_CREATURE = 3; //宠物装备(0-241)
 | |
| 
 | |
| 
 | |
|     SUser = null;
 | |
| 
 | |
|     constructor(CObject, gSUser) {
 | |
|         base.constructor(CObject);
 | |
|         SUser = gSUser;
 | |
|     }
 | |
| 
 | |
|     //获得槽位里的对象
 | |
|     function GetSlot(Type, Slot) {
 | |
|         local P = Sq_Inven_GetItem(this.C_Object, Type, Slot);
 | |
|         if (P) {
 | |
|             return Item(P);
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     //通过ID获得槽位
 | |
|     function GetSlotById(Idx) {
 | |
|         return Sq_Inven_GetItemById(this.C_Object, Idx);
 | |
|     }
 | |
| 
 | |
|     //检查背包是否拥有指定数量的指定道具
 | |
|     function CheckItemCount(ItemId, ItemCount) {
 | |
|         local SlotIdx = GetSlotById(ItemId);
 | |
|         if (SlotIdx != -1) {
 | |
|             local SlotItem = GetSlot(1, SlotIdx);
 | |
|             if (SlotItem) {
 | |
|                 if (SlotItem.GetType() != "装备") {
 | |
|                     if (SlotItem.GetAdd_Info() >= ItemCount) return true;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     //检查背包是否拥有指定表的道具及数量
 | |
|     function CheckArrItemCount(T) {
 | |
|         local Flag = true;
 | |
|         foreach(value in T) {
 | |
|             if (!CheckItemCount(value.Id, value.Count)) Flag = false;
 | |
|         }
 | |
|         return Flag;
 | |
|     }
 | |
| 
 | |
|     //销毁背包中指定表的道具及数量
 | |
|     function DeleteArrItemCount(T) {
 | |
|         foreach(value in T) {
 | |
|             local Slot = GetSlotById(value.Id);
 | |
|             Sq_Inven_RemoveItemFormCount(this.C_Object, 1, Slot, value.Count, 10, 1);
 | |
|             SUser.SendUpdateItemList(1, 0, Slot);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //销毁背包中指定的道具及数量
 | |
|     function DeleteItemCount(Id, Count) {
 | |
|         local Slot = GetSlotById(Id);
 | |
|         local Ret = Sq_Inven_RemoveItemFormCount(this.C_Object, 1, Slot, Count, 10, 1);
 | |
|         SUser.SendUpdateItemList(1, 0, Slot);
 | |
|         return Ret;
 | |
|     }
 | |
| } |