DP-S-Script/Dps_A/BaseClass/InvenClass/InvenClass.nut

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