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> 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> 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(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); }
private void OnGUI() { _source = (Source)EditorGUILayout.EnumPopup("Source", _source); itemGuid = EditorGUILayout.TextField("Item GUID", itemGuid); _scrollPosition = GUILayout.BeginScrollView(_scrollPosition, false, true); if (string.IsNullOrEmpty(itemGuid)) { if (_source == Source.Server) { var items = ServerItemRegistry.GetAll(); foreach (var item in items) { DrawItemInfo(item); } } else if (_source == Source.Client) { var items = ItemRegistry.GetAll(); foreach (var item in items) { DrawItemInfo(item); } } } else { System.Guid guid; if (System.Guid.TryParse(itemGuid, out guid)) { if (_source == Source.Server) { var item = ServerItemRegistry.Get(guid); DrawItemInfo(item); } else if (_source == Source.Client) { var col = ItemRegistry.Get(guid); DrawItemInfo(col); } } else { EditorGUILayout.LabelField("guid is not a valid parsable GUID value"); } } EditorGUILayout.EndScrollView(); }
private bool CheckItemPermission(PhotonView identity, System.Guid itemGuid, ReadWritePermission minimalPermission, out INetworkItemInstance outItem) { outItem = ServerItemRegistry.Get(itemGuid) as INetworkItemInstance; if (outItem?.collectionEntry?.collection == null) { return(false); } if (CheckCollectionPermission(identity, outItem.collectionEntry.collection, minimalPermission) == false) { return(false); } return(true); }
public void Server_CleanDanglingItemReferences() { var all = ServerItemRegistry.GetAll(); foreach (var item in all) { var entry = item as ICollectionSlotEntry; if (entry != null && entry.collectionEntry != null) { if (entry.collectionEntry.amount == 0) { // Item is depleted, yet still exists and has a reference to a collection (itemGuid could be filled by other item now). ServerItemRegistry.UnRegister(item.ID); ItemRegistry.UnRegister(item.ID); logger.Log($"[Server] Cleaned dangling item {item.ID} from item registry", this); } } } }