Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }