库存组件(UIC) {{ currentPage ? currentPage.title : "" }}

库存组件:UltimateInventoryComponent

  • 库存组件需要添加到玩家或建筑物、怪物上

  • 库存分为背包、蓝图、快捷栏、装备栏,其中蓝图为固定蓝图,不可进行移动,仅可通过系统添加,用于玩家制作物品

  • 库存组件中仅可操作客户端控制角色的库存,无法操作他人库存,如需操作请使用UltimateControllerComponent进行操作

  • 库存移动物品或使用物品需要先获得许可,每个玩家一次只能操作一个库存,并且打开库存才会进行物品同步

变量

说明

RemoteViewingInventoryPlayerControllers(保护)

获得许可的玩家控制器列表

UseColdDowns(保护)

使用冷却列表

DroppedClass(设置)

从该库存系统丢弃物品生成的实体类型,APrimalDropped

DroppedBackpackClass(设置)

从该库存系统一键丢弃所有物品和死亡后生成的包裹实体类型,APrimalDroppedBackpack

MaxAllowViewDistance(设置)

最大允许打开库存系统的距离

InteractionColdDownTime(设置)

交互冷却时间,防止作弊玩家用库存系统占用服务器资源

DecayMultiplication(设置)

腐坏倍率,用于冰箱等延缓腐化时间的变量

bDisableDropAllItem(设置)

禁止一键丢弃所有物品,一键丢弃的物品包裹库存组件开启此选项并且开启bEnableTransferRestriction防止玩家传送物品到包裹中

bEnableTransferRestriction(设置)

开启物品转移限制,例:武器柜仅可放置武器类物品

AllowItemType(设置)

允许转移的物品类型,需开启bEnableTransferRestriction

InventoryItems

背包物品

BlueprintItems

蓝图物品,由系统下发基础蓝图,玩家无法丢弃或移动,仅可进行制作

QuickItems

快速栏物品

EquippedItems

装备栏物品

MaxItemCount

最大物品数量

EquipSlotSetting(设置)

装备栏插槽数组设置

Table

制作平台,例如工作台、机床

CraftQueueEntries

制作队列

ItemUID 物品UID

Quantity 数量

bIsRepair 是否为修复

CraftQueueMaxCount

制作队列最大数量

CraftEntiie

当前正在制作的物品信息

bCraftEntriesValid

是否正在制作物品

CraftQueueHande

制作队列的定时器句柄

CraftStartTime

制作起始时间

CraftRequestTime

制作所需时间

MaxCraftQuantity

最大制作数量,例如最多一次制作100个地基

bAllowCrafFromOtherPlayer(设置)

允许其他玩家在此进行制作,防止玩家在另外一个玩家身上利用其蓝图制作物品

函数

说明

GiveItemToInventory(UPrimalItemBasic* ItemClass, EInventorySite InventorySite, int32 Quantity, bool bIsBlueprint,bool bShowHUDNotification)

给予物品,服务器专用

ClientStartReceivingItems/ClientEndReceivingItems

客户端开始/停止同步物品

FindItem(FItemUID ItemUID, EInventorySite InventorySite)

寻找物品

FindItemDetail(FItemUID ItemUID, EInventorySite InventorySite, int32& ItemIndex, UPrimalItem*& ResultItem, EInventorySite& InSite)

寻找物品,返回详细信息

FindItemsByClass(UPrimalItemBasic* ItemBasic, EInventorySite InventorySite)

按类型寻找物品

GetIsInventoryHasEmpty

库存是否有足够空位

GetStackableQuantity(UPrimalItemBasic* ItemClass, EInventorySite InventorySite)

获取库存中可进行指定物品类型堆叠的数量

GetItemQuantityByClass(UPrimalItemBasic* ItemClass, EInventorySite InventorySite, bool bIncludeBlurprint)

获取库存中该物品类型的总数量

IsEqualInventory(UPrimalItem* Item1, UPrimalItem* Item2)

物品与物品是否在同一库存组件中

GetQuickSlotItem(int32 Index)

获取快捷栏物品

GetEquipSlotItem(EItemEquipSlot SlotType,int32 Number)

获取装备栏物品

GetIsEquipSlotEmpty(EItemEquipSlot SlotType)

获取装备栏是否有空插槽

GetItemsFromEquip(EItemEquipSlot SlotType)

获取装备栏物品数组

GetItemsByPanel(EItemPanel Panel)

获取物品分页的物品数组,UI使用,用于分类

GetUseColdDown(FName ColdDownGroup)

获得冷却CD,UI使用,显示物品使用的冷却CD

服务器专用函数

DropAllItem(bool bIncludeEquip, bool bShowHUDNotification)

丢弃所有物品,服务器调用

bIncludeEquip 包含装备与快捷栏,死亡时为true,主动丢弃时为false,避免玩家将身上装备一键丢弃

RemoveItem(UPrimalItem* Item, bool bDropped = false, bool bShowHUDNotification)

移除物品,服务器调用

bDropped 是否为丢弃物品,true则会在丢弃时生成物品实体可供玩家捡起

SetupItemQuantity(UPrimalItem* Item, int32 Quantity, bool bShowHUDNotification)

设置物品数量,服务器调用,设置0则会移除该物品

AddItemToInventoryItemStack(UPrimalItemBasic* ItemClass, int32 Quantity, EInventorySite InventorySite, bool bShowHUDNotification)

添加物品到库存堆叠,返回未堆叠的物品数量,服务器调用

AddItem(FItemBuildInfo BuildInfo, EInventorySite InventorySite, bool bShowHUDNotification, bool bUseStack)

添加物品到库存,服务器调用

UseItem(UPrimalItem* Item)

使用物品,服务器调用

UseItemWithItem(UPrimalItem* Item1, UPrimalItem* Item2)

使用物品到另外一个物品,拖拽时使用,用于给武器调整弹药类型或堆叠物品等,,服务器调用

ApplyColdDown(FName ColdDownGroup, double ColdDown)

应用冷却CD

TransferToInventorySlot(UPrimalItem* Item, bool bUseStack)

传送到物品背包,服务器调用

TransferToQuickSlot(UPrimalItem* Item, int32 SlotIndex)

传送到快捷栏,服务器调用

TransferToEquipSlot(UPrimalItem* Item, int32 Index)

传送到装备栏,服务器调用

SwapInventorySlotItem(UPrimalItem* Item1, UPrimalItem* Item2)

交换物品位置,服务器调用

SwapQuickSlotItem(UPrimalItem* Item, int32 SlotIndex)

交换快捷栏位置,服务器调用

SplitItemStack(UPrimalItem* Item, int32 AmountToSplit)

拆分堆叠,服务器调用

StackItemToItem(UPrimalItem* Item1, UPrimalItem* Item2)

堆叠物品,服务器调用

SplitItemStackToItem(UPrimalItem* Item1, UPrimalItem* Item2, int32 AmountToSplit, bool bShowHUDNotification)

拆分并堆叠物品到另外一个物品上,服务器调用

TransferItemFromDrop(UPrimalItem* Item)

从丢弃的物品中传送到背包中,用于捡起地面物品,服务器调用

TransferItemToInventory(UUltimateInventoryComponent* Inventory, UPrimalItem* Item)

从将物品传送到另外一个库存组件中,服务器调用

TransferItemFromInventory(UUltimateInventoryComponent* Inventory, UPrimalItem* Item)

从另一个库存组件中移动物品到这个库存组件中,服务器调用

GetRemotePlayerControllers(bool bIncludeNetCullDistanceSquared)

获取同步所用的玩家控制器,

bIncludeNetCullDistanceSquared 是否包含剔除距离内的玩家,用于玩家装备同步,但不进行同步背包物品

RemoveQuantityFromItem(UPrimalItem* Item, int32 Quantity)

从物品中移除数量

RemoveQuantityFromInventory(UPrimalItemBasic* ItemClass, int32 Quantity)

从背包中移除指定物品类型的物品

SpawnDroppedItem(UPrimalItem* Item)

生成掉落物品实体

SpawnDroppedItems(const TArray<UPrimalItem*>& Items)

生成物品包裹实体

判断材料函数

说明

MeetResourcesRequirement(TArray<FItemResource> Resources, int32 Amount)

背包中是否拥有材料

MeetEnhanceRequirements(UPrimalItem* Item)

背包中是否拥有强化所需材料

MeetRepairRequirements(UPrimalItem* Item)

背包中是否拥有修理所需材料

MeetBlueprintCraftingRequirements(UPrimalItem* Item, int32 CraftAmount)

背包中是否拥有制作所需材料

GetBlueprintCanCraftQuantity(UPrimalItem* Item)

获取背包中物品材料可制作多少个指定蓝图的物品数量

网络同步

说明

NotifyClientsItemCommand(UPrimalItem* Item1, UPrimalItem* Item2, bool bShowHUDNotification, EClientItemNotifyType NotifyType)

通知客户端物品命令,用于同步客户端物品位置、添加物品、制作队列更新

NotifyClientsItemMutableAttribute(UPrimalItem* Item, UItemMutableAttribute* MutableAttribute)

通知客户端物品可变属性变更,内含可变属性序列化

NotifyClientsColdDown(FName ColdDownGroup, double DeleteTime)

通知客户端物品使用冷却时间变更

玩家交互使用函数(无论是否联网都使用此函数进行交互)

说明

ServerDropItem(FItemUID ItemUID)

丢弃物品

ServerDropAllItems()

丢弃背包所有物品

ServerDropMultiItems(const TArray<FItemUID>& ItemUIDs)

丢弃多个物品

ServerSwapItem(FItemUID ItemUID, FItemUID TargetItemUID)

交换物品位置

ServerUseItemWithItem(FItemUID ItemUID, FItemUID TargetItemUID)

物品拖拽后使用,用于堆叠到另外一个物品上或设置武器弹药类型

ServerSplitItemStack(FItemUID ItemUID, FItemUID TargetItemUID,int32 AmountToSplit)

拆分物品堆叠,TargetItemUID填写空则拆分到背包末尾,如不为空则进行物品堆叠

ServerSplitItemAllStack(FItemUID ItemUID)

拆分物品堆叠,将物品拆分成一个一个的物品,拆分后UID会更改,变为一个新物品,耐久等属性则会继承

ServerAddToQuick(FItemUID ItemUID, int32 SlotIndex)

将物品装备到快捷栏中

ServerRemoveToQuick(int32 SlotIndex)

从快捷栏中移除物品到背包中

ServerSwapQuickItem(int32 SlotIndex, int32 TargetSlotIndex)

交换快捷栏物品位置

ServerUseItem(FItemUID ItemUID)

使用物品

ServerEquipItem(FItemUID ItemUID,int32 Index)

装备物品

ServerUnequipItem(FItemUID ItemUID)

取消装备物品

ServerRepairItem(FItemUID ItemUID, APlayerController* PC)

修理物品

ServerCraftItem(FItemUID ItemUID, int32 AmountToCraft, APlayerController* PC)

制作物品

ServerRemoveCraftQueue(int32 QueueIndex, APlayerController* PC)

移除制作队列

ServerEnhanceItem(FItemUID ItemUID, int32 AppointIndex)

强化物品

  • 需要重载的函数,用于播放音效等操作

重载函数

说明

OnItemAddedNotify

物品添加通知,用于显示物品获得通知

OnItemEquipNotify

物品装备通知,在此替换角色的装备部件网格体

OnItemUseNotify

物品使用通知,用于播放音效与动画

OnItemMutableAttributeUpdated

物品可变属性更新通知

OnNotifyClientsItemStatus

物品变更通知,包含物品移动,新增等,用于UI同步背包更新

OnAddWeight

重量增加通知,用于过重减少玩家移动速度等

{{{ content }}}