private bool CheckClientVendorPermission(PhotonView identity, INetworkVendor <IItemInstance> vendor, IItemInstance item) { var unetCol = vendor.itemCollection as IPUN2Collection; if (unetCol == null) { return(false); } // TODO: Instead of checking read permission on the vendor's collection use trigger permissions instead (UNetPermissionRegistry.objects) var itemPermission = PUN2PermissionsRegistry.collections.GetPermission(unetCol, identity); if (itemPermission.CanRead() == false) { return(false); } return(true); }
public Result <bool> ValidateSellItemToVendor(PhotonView identity, byte[] vendorGuidBytes, Guid vendorGuid, byte[] itemGuidBytes, Guid itemGuid, ushort amount, out INetworkVendor <IItemInstance> outVendor, out INetworkItemInstance outItem) { outVendor = null; outItem = null; if (CheckGuidBytes(vendorGuidBytes) == false || CheckGuidBytes(itemGuidBytes) == false) { return(Failed()); } outItem = ServerItemRegistry.Get(itemGuid) as INetworkItemInstance; outVendor = ServerVendorRegistry.itemVendors.Get(vendorGuid); if (outItem == null || outVendor == null) { return(Failed()); } // Item has to be in a collection to be sellable. if (outItem.collectionEntry?.collection == null) { return(Failed()); } if (outItem.collectionEntry.amount < amount) { return(Failed()); } return(true); }
public Result <bool> ValidateSellItemToVendor(NetworkIdentity identity, RequestSellItemToVendorMessage data, out INetworkVendor <IItemInstance> outVendor, out INetworkItemInstance outItem) { outVendor = null; outItem = null; if (CheckGuidBytes(data.vendorGuid.bytes) == false || CheckGuidBytes(data.itemGuid.bytes) == false) { return(Failed()); } outItem = ServerItemRegistry.Get(data.itemGuid) as INetworkItemInstance; outVendor = ServerVendorRegistry.itemVendors.Get(data.vendorGuid); if (outItem == null || outVendor == null) { return(Failed()); } // Item has to be in a collection to be sellable. if (outItem.collectionEntry?.collection == null) { return(Failed()); } if (outItem.collectionEntry.amount < data.amount) { return(Failed()); } return(true); }
public Result <bool> ValidateBuyItemFromVendor(PhotonView identity, byte[] vendorGuidBytes, Guid vendorGuid, byte[] itemGuidBytes, Guid itemGuid, ushort amount, out INetworkVendor <IItemInstance> outVendor, out INetworkItemInstance outItem) { outVendor = null; outItem = null; if (CheckGuidBytes(vendorGuidBytes) == false || CheckGuidBytes(itemGuidBytes) == false) { return(Failed()); } outItem = ServerItemRegistry.Get(itemGuid) as INetworkItemInstance; outVendor = ServerVendorRegistry.itemVendors.Get(vendorGuid); if (outItem == null || outVendor == null) { return(Failed()); } var tempItem = outItem; var vendorItemAmount = outVendor.itemCollection.GetAmount(o => o?.ID == tempItem.ID); if (vendorItemAmount < amount) { return(Failed()); } // Check if player has read permission to vendor collection if (CheckClientVendorPermission(identity, outVendor, outItem) == false) { return(Failed()); } return(true); }
public Result <bool> ValidateBuyItemFromVendor(NetworkIdentity identity, RequestBuyItemFromVendorMessage data, out INetworkVendor <IItemInstance> outVendor, out INetworkItemInstance outItem) { outVendor = null; outItem = null; if (CheckGuidBytes(data.vendorGuid.bytes) == false || CheckGuidBytes(data.itemGuid.bytes) == false) { return(Failed()); } outItem = ServerItemRegistry.Get(data.itemGuid) as INetworkItemInstance; outVendor = ServerVendorRegistry.itemVendors.Get(data.vendorGuid); if (outItem == null || outVendor == null) { return(Failed()); } var tempItem = outItem; var vendorItemAmount = outVendor.itemCollection.GetAmount(o => o?.ID == tempItem.ID); if (vendorItemAmount < data.amount) { return(Failed()); } // Check if player has read permission to vendor collection if (CheckClientVendorPermission(identity, outVendor, outItem) == false) { return(Failed()); } return(true); }