public void RequestAdd(int sourceID, string itemName) { if (!requestItems.Contains(itemName)) { Debug.LogError("[SVR] Item not valid: " + itemName); return; } ShItem item = SceneManager.Instance.GetEntity <ShItem>(itemName); if (!item) { Debug.LogError("[SVR] Item not found: " + itemName); return; } ShPlayer requester = EntityCollections.FindByID <ShPlayer>(sourceID); if (!requester) { Debug.LogError("[SVR] Requester not found"); return; } if (requester.HasItem(item.index)) { requester.svPlayer.SendGameMessage("Already own item"); } else if (requester.MyMoneyCount < item.value) { requester.svPlayer.SendGameMessage("Not enough money"); } else if (requests.ContainsKey(requester.username)) { requester.svPlayer.SendGameMessage("Previous request still pending"); } else { requests[requester.username] = itemName; requester.svPlayer.SendGameMessage("Request successfully sent"); ShPlayer mayor = info.members.FirstOrDefault(); if (mayor) { mayor.svPlayer.SendGameMessage(requester.username + " requesting a " + item.itemName); } } }
public void OnEnterDoor(ShPlayer player, ShDoor door, ShPlayer sender, bool forceEnter) { if (!forceEnter) { if (player.IsRestrained) { player.svPlayer.SendGameMessage("You are restrained"); return; } if (door.svDoor.key && !player.HasItem(door.svDoor.key)) { player.svPlayer.SendGameMessage("Need " + door.svDoor.key.itemName + " to enter"); return; } if (!player.InActionRange(door)) { return; } } ShMountable baseEntity; if (player.curMount is ShPlayer mountPlayer) { baseEntity = mountPlayer; } else { baseEntity = player; if (player.curMount) { player.svPlayer.SvDismount(); } } if (door is ShApartment apartment && sender.ownedApartments.TryGetValue(apartment, out var place)) { baseEntity.svMountable.SvRelocate(place.mainDoor.spawnPoint, place.mTransform); }