public void Invoke(ShPlayer player, string target = null) { if (target != null && !player.svPlayer.HasPermission($"{Core.Instance.Info.GroupNamespace}.{nameof(WarnList)}.viewotherplayers")) { player.TS("warns_noPermission_viewOtherPlayers"); return; } if (target == null) { SendWarnList(player, player.username, player.GetWarns()); return; } if (EntityCollections.TryGetPlayerByNameOrID(target, out var shTarget)) { SendWarnList(player, shTarget.username, shTarget.GetWarns()); return; } if (Core.Instance.SvManager.TryGetUserData(target, out var user)) { SendWarnList(player, user.ID, user.GetWarns()); return; } player.TS("user_not_found", target.CleanerMessage()); }
public void PlaceBounty(int sourceID, string bountyName) { ShPlayer requester = EntityCollections.FindByID <ShPlayer>(sourceID); if (!requester) { Debug.LogError("[SVR] Requester not found"); return; } if (bounties.ContainsKey(bountyName)) { requester.svPlayer.SendGameMessage("Bounty already exists for " + bountyName); } else if (requester.MyMoneyCount < placeCost) { requester.svPlayer.SendGameMessage("Not enough money"); } else { AddBounty(bountyName); requester.TransferMoney(DeltaInv.RemoveFromMe, placeCost); OnEmployeeAction(requester, null); } }
public void CancelBounty(int sourceID, string bountyName) { ShPlayer requester = EntityCollections.FindByID <ShPlayer>(sourceID); if (!requester) { Debug.LogError("[SVR] Requester not found"); return; } if (!bounties.ContainsKey(bountyName)) { requester.svPlayer.SendGameMessage("No Bounty for " + bountyName); } else if (requester.MyMoneyCount < cancelCost) { requester.svPlayer.SendGameMessage("Not enough money"); } else { bounties.Remove(bountyName); ChatHandler.SendToAll("Bounty Canceled on " + bountyName); requester.TransferMoney(DeltaInv.RemoveFromMe, cancelCost); OnEmployeeAction(requester, null); if (aiTarget && bountyName == aiTarget.username) { aiTarget = null; } } }
public void Invoke(ShPlayer player, string target, int warnId) { if (warnId < 1) { player.TS("warn_remove_error_null_or_negative", warnId.ToString()); return; } if (EntityCollections.TryGetPlayerByNameOrID(target, out var shTarget)) { if (CheckWarnCount(player, warnId, shTarget.GetWarns())) { return; } shTarget.RemoveWarn(warnId - 1); return; } if (Core.Instance.SvManager.TryGetUserData(target, out var user)) { if (CheckWarnCount(player, warnId, user.GetWarns())) { return; } user.RemoveWarn(warnId - 1); Core.Instance.SvManager.database.Users.Upsert(user); return; } player.TS("user_not_found", target.CleanerMessage()); }
public void GetItemType() { var ec = new EntityCollections(); var array = new int?[0]; Assert.AreEqual(typeof(int?), ec.GetItemType(array.GetType())); var collection = new Collection <object>(); Assert.AreEqual(typeof(object), ec.GetItemType(collection.GetType())); Assert.ThrowsException <ArgumentException>(() => ec.GetItemType(typeof(string))); }
public void OnOptionAction(ShPlayer player, int targetID, string menuID, string optionID, string actionID) { if (targetID >= 0) { player.svPlayer.job.OnOptionMenuAction(targetID, menuID, optionID, actionID); return; } ShPlayer target = EntityCollections.FindByID <ShPlayer>(-targetID); if (target) { target.svPlayer.job.OnOptionMenuAction(player.ID, menuID, optionID, actionID); } }
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 CreateCollection() { var ec = new EntityCollections(); var items = new int[] { 1, 2, 3 }; var arrayType = typeof(int).MakeArrayType(); var array = ec.CreateCollection(arrayType, items); Assert.IsInstanceOfType(array, typeof(int[])); Assert.AreEqual(3, ((int[])array).Length); var listType = typeof(ICollection <>).MakeGenericType(new[] { typeof(int) }); var list = ec.CreateCollection(listType, items); Assert.IsInstanceOfType(list, typeof(List <>).MakeGenericType(new[] { typeof(int) })); Assert.AreEqual(3, ((List <int>)list).Count); }
public void IsCollection() { var ec = new EntityCollections(); var arrayType = new int[0].GetType(); Assert.IsTrue(ec.IsCollection(arrayType)); arrayType = typeof(object).MakeArrayType(); Assert.IsTrue(ec.IsCollection(arrayType)); var collectionType = typeof(IList <>); Assert.IsTrue(ec.IsCollection(collectionType)); collectionType = typeof(IList <>).MakeGenericType(typeof(object)); Assert.IsTrue(ec.IsCollection(collectionType)); }
public void Invoke(ShPlayer player, string targetStr) { StringBuilder sb; if (EntityCollections.TryGetPlayerByNameOrId(targetStr, out ShPlayer target)) { sb = GetOnlineInfo(target); } else { sb = GetOfflineInfo(player, targetStr); } if (sb == null) { return; } // TODO: send as server info or CEF (pref server info to limit footprint) }
public void Invoke(ShPlayer player, string targetStr) { StringBuilder sb; var target = Core.Instance.SvManager.database.Users.FindById(targetStr); if (target != null) { sb = GetOfflineInfo(target); } else if (EntityCollections.TryGetPlayerByNameOrID(targetStr, out ShPlayer shPlayer)) { sb = GetOnlineInfo(shPlayer); } else { player.SendChatMessage($"No account found with the id '{targetStr}'."); return; } player.svPlayer.Send(SvSendType.Self, Channel.Reliable, ClPacket.ServerInfo, sb.ToString()); }
public void Invoke(ShPlayer player, string target, string reason) { if (EntityCollections.TryGetPlayerByNameOrID(target, out var shTarget)) { shTarget.AddWarn(player, reason); ChatUtils.SendToAllEnabledChatT("all_warned", player.username.CleanerMessage(), shTarget.username.CleanerMessage(), reason.CleanerMessage()); player.TS("player_warn", shTarget.username.CleanerMessage(), reason.CleanerMessage()); shTarget.TS("target_warn", shTarget.username.CleanerMessage(), reason.CleanerMessage()); return; } if (Core.Instance.SvManager.TryGetUserData(target, out var user)) { user.AddWarn(player, reason); ChatUtils.SendToAllEnabledChatT("all_warned", player.username.CleanerMessage(), target.CleanerMessage(), reason.CleanerMessage()); player.TS("player_warn", target.CleanerMessage(), reason.CleanerMessage()); Core.Instance.SvManager.database.Users.Upsert(user); return; } player.TS("user_not_found", target.CleanerMessage()); }
public void Invoke(ShPlayer player, string targetStr) { StringBuilder sb; if (EntityCollections.TryGetPlayerByNameOrID(targetStr, out ShPlayer shPlayer)) { sb = GetOnlineInfo(shPlayer); } else { var target = Core.Instance.SvManager.database.Users.FindById(targetStr); if (target != null) { sb = GetOfflineInfo(target); } else { player.SendChatMessage($"No account found with the id '{targetStr}'."); return; } } player.svPlayer.SendTextMenu(player.T("info_title"), sb.ToString()); }
public MinigameContainer(ShPlayer player, int entityID) { this.player = player; targetEntity = EntityCollections.FindByID(entityID); }
public HackingContainer(ShPlayer player, int apartmentID, string username) : base(player, apartmentID) { targetApartment = targetEntity as ShApartment; EntityCollections.TryGetPlayerByNameOrID(username, out targetPlayer); }
public HackingContainer(ShPlayer player, int apartmentID, string username) { this.player = player; targetApartment = EntityCollections.FindByID <ShApartment>(apartmentID); EntityCollections.TryGetPlayerByNameOrID(username, out targetPlayer); }
public void LoadFile(string fileName) { if (File.Exists(fileName)) { Filename = fileName; var xml = new XmlDocument(); xml.Load(fileName); // Map var mapNode = xml.ChildNodes[0]; ID = mapNode.Attributes["id"].ToValue <int>(); Name = mapNode.Attributes["name"].Value; Width = mapNode.Attributes["width"].ToValue <int>(); Height = mapNode.Attributes["height"].ToValue <int>(); // Map->Tilesets if (mapNode.ChildNodes.HasNode("tilesets")) { var tilesetsNode = mapNode.ChildNodes.FindNode("tilesets"); foreach (XmlNode tilesetNode in tilesetsNode.ChildNodes) { var tileset = Tileset.ParseFile(Path.Combine(ResourceUtils.GetResourcePath(ResourceUtils.AssetsType.Gfx), tilesetNode.Attributes["file"].Value)); Tilesets.Add(tileset); } } // Map->Entities if (mapNode.ChildNodes.HasNode("objects")) { var entityCollectionNodes = mapNode.ChildNodes.FindNode("objects"); foreach (XmlNode entityCollectionNode in entityCollectionNodes) { var entityCollection = EntityCollection.ParseFile(Path.Combine(ResourceUtils.GetResourcePath(ResourceUtils.AssetsType.Gfx), entityCollectionNode.Attributes["file"].Value)); EntityCollections.Add(entityCollection); } } // Map->Transitions if (mapNode.ChildNodes.HasNode("transitions")) { var transitionsNode = mapNode.ChildNodes.FindNode("transitions"); foreach (XmlNode transitionNode in transitionsNode.ChildNodes) { var transition = new Transition() { X = transitionNode.Attributes["x"].ToValue <int>(), Y = transitionNode.Attributes["y"].ToValue <int>(), Target = new Transition.TransitionTarget() { ID = transitionNode.ChildNodes[0].Attributes["mapid"].ToValue <int>(), X = transitionNode.ChildNodes[0].Attributes["x"].ToValue <int>(), Y = transitionNode.ChildNodes[0].Attributes["y"].ToValue <int>(), } }; Transitions.Add(transition); } } // Map->Spawn if (mapNode.ChildNodes.HasNode("spawn")) { Spawn = new System.Drawing.Point(mapNode.ChildNodes.FindNode("spawn").Attributes["x"].ToValue <int>(), mapNode.ChildNodes.FindNode("spawn").Attributes["y"].ToValue <int>()); } // Map->Tiles foreach (XmlNode node in mapNode.ChildNodes) { if (node.Name.ToLower().Equals("tile")) { var tile = new Tile() { X = node.Attributes["x"].ToValue <int>(), Y = node.Attributes["y"].ToValue <int>(), Sprite = FindSpriteByID(node.Attributes["spriteid"].ToValue <int>()) }; Tiles.Add(tile); } } } }