/// <summary> /// Initializes a new instance of the <see cref="ChatMessageEventArgs"/> class. /// </summary> /// <param name="client">The <see cref="ClientInfo"/> object representing the client that sent the message.</param> /// <param name="type">The type of chat message.</param> /// <param name="message">The message text.</param> /// <param name="recipientEntityIds">The list of entity IDs receiving the message.</param> internal ChatMessageEventArgs(ClientInfo client, EChatType type, string message, List <int> recipientEntityIds) { this.Client = (client == null) ? SMClient.Console : new SMClient(client); this.Type = (SMChatType)type; this.Message = message; this.RecipientEntityIds = recipientEntityIds?.AsReadOnly(); }
public bool HookChat( ClientInfo clientInfo, EChatType eChatType, int senderId, string message, string mainName = null, bool localizeMain = false, List <int> recipientEntityIds = null ) { var recipientEntityIdsString = string.Empty; if (recipientEntityIds != null) { recipientEntityIdsString = recipientEntityIds.ToString(); } var response = _httpTool.Post(new NameValueCollection() { ClientInfoAsNameValueCollection(clientInfo), HookTypeNameValueCollection(EnumHookType.Chat), { "Message", message ?? string.Empty }, { "EChatType", eChatType.ToString() }, { "SenderId", senderId.ToString() }, { "MainName", mainName ?? string.Empty }, { "LocalizeMain", localizeMain.ToString() }, { "RecipientEntityIds", recipientEntityIdsString }, } ); return(IsMessageModerateAndOk(response)); }
/** * Executed when the user or the system sends a message to the chat room. * Return True to pass the message on to the next mod, or if no other mods then it will output to chat. * Return False to prevent the message from being passed on or output to chat */ private bool ChatMessage( ClientInfo clientInfo, EChatType eChatType, int senderId, string message, string mainName, bool localizeMain, List <int> recipientEntityIds ) { if (clientInfo == null) { return(_eventHooks.HookChat(eChatType, message)); } return(_eventHooks.HookChat( clientInfo, eChatType, senderId, message, mainName, localizeMain, recipientEntityIds ?? new List <int>() )); }
public CChatData(Guid id, String title, EChatType type, Boolean isPersonal) { Id = id; Title = title; Type = type; IsPersonal = isPersonal; }
public LinkedList <GC_ChatMsg> GetChats(EChatType _type) { if (!ChatInfo.ContainsKey((Byte)_type)) { return(null); } return(ChatInfo[(Byte)_type]); }
private void _onToggleChannelChange(bool _selected, EChatType _type) { if (!_selected) { return; } m_cur_chat_type = _type; _updateChat(); }
public bool ChatMessage(ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName, bool _localizeMain, List <int> _recipientEntityIds) { // ModChallenge fix- if (_msg.StartsWith("/challenge") || _msg.StartsWith("/Challenge")) { return(false); } //- return(ChatHook.Hook(_cInfo, _type, _senderId, _msg, _mainName, _localizeMain, _recipientEntityIds)); }
private void _sendChatMsg(EChatType _type, string _text) { CG_ChatMsg msg = new CG_ChatMsg(); msg.PlayerID = MainPlayer.Instance.PlayerInfo.PlayerID; msg.ChatType = (Byte)_type; var bytes = Encoding.GetEncoding("GB2312").GetBytes(_text); msg.ChatLen = (Int16)(bytes.Length + 1); msg.Chat = _text; NetManager.Instance.SendMsg(msg); }
/// <summary> /// Processes a chat message. /// </summary> /// <param name="client">The <see cref="ClientInfo"/> object representing the client that sent the message.</param> /// <param name="type">The type of chat message.</param> /// <param name="message">The message text.</param> /// <param name="recipientEntityIds">The list of entity IDs receiving the message.</param> /// <returns><c>true</c> to allow the message to continue propagating; <c>false</c> to consume the message.</returns> internal static bool HookChatMessage(ClientInfo client, EChatType type, string message, List <int> recipientEntityIds) { if (client == null) { return(true); } if (ChatMessage != null) { var args = new ChatMessageEventArgs(client, type, message, recipientEntityIds); foreach (EventHandler <ChatMessageEventArgs> d in ChatMessage.GetInvocationList()) { try { d.Invoke(null, args); if (args.Handled) { return(false); } } catch (HaltPluginException) { args.Handled = false; } catch (Exception e) { args.Handled = false; if (d.Target is IPlugin p) { p.Container.SetFailState(e); } else { SMLog.Error(e); } } } } if (message.StartsWith(publicChatTrigger.AsString) || message.StartsWith(silentChatTrigger.AsString)) { replyToChat.Add(client.entityId); ConnectionManager.Instance.ServerConsoleCommand(client, $"sm {message.Substring(1)}"); replyToChat.Remove(client.entityId); return(message.StartsWith(publicChatTrigger.AsString)); } return(true); }
public bool HookChat(EChatType eChatType, string message) { var response = _httpTool.Post(new NameValueCollection() { ClientInfoAsNameValueCollection(null), HookTypeNameValueCollection(EnumHookType.SystemChat), { "Message", message ?? string.Empty }, { "EChatType", eChatType.ToString() }, { "SenderId", string.Empty }, { "MainName", string.Empty }, { "LocalizeMain", string.Empty }, { "RecipientEntityIds", string.Empty }, } ); return(IsMessageModerateAndOk(response)); }
public static void ChatMessageServer_Postfix(ClientInfo _cInfo, EChatType _chatType, string _msg, string _mainName) { try { if (DiscordBot.IsEnabled && DiscordBot.Webhook != "" && DiscordBot.Webhook.StartsWith("https://discord.com/api/webhooks") && _chatType == EChatType.Global && !string.IsNullOrWhiteSpace(_mainName) && !_mainName.Contains(DiscordBot.Prefix)) { if (_msg.Contains("[") && _msg.Contains("]")) { _msg = Regex.Replace(_msg, @"\[.*?\]", ""); } if (!PersistentOperations.InvalidPrefix.Contains(_msg[0])) { if (_mainName.Contains("[") && _mainName.Contains("]")) { _mainName = Regex.Replace(_mainName, @"\[.*?\]", ""); } if (_cInfo != null) { if (DiscordBot.LastEntry != _msg) { DiscordBot.LastPlayer = _cInfo.PlatformId.ToString(); DiscordBot.LastEntry = _msg; DiscordBot.Queue.Add("[Game] **" + _mainName + "** : " + DiscordBot.LastEntry); } else if (DiscordBot.LastPlayer != _cInfo.PlatformId.ToString()) { DiscordBot.LastPlayer = _cInfo.PlatformId.ToString(); DiscordBot.LastEntry = _msg; DiscordBot.Queue.Add("[Game] **" + _mainName + "** : " + DiscordBot.LastEntry); } } else if (DiscordBot.LastEntry != _msg) { DiscordBot.LastPlayer = "-1"; DiscordBot.LastEntry = _msg; DiscordBot.Queue.Add("[Game] **" + _mainName + "** : " + DiscordBot.LastEntry); } } } } catch (Exception e) { Log.Out(string.Format("[SERVERTOOLS] Error in Injections.ChatMessageServer_Postfix: {0}", e.Message)); } }
public static String ToFontAwesome(this EChatType type) { // Return a FontAwesome string based on the icon type switch (type) { case EChatType.Common: return("\uf007"); case EChatType.Group: return("\uf0c0"); case EChatType.Protected: return("\uf023"); // If none found, return null default: return(null); } }
public bool ChatMessage(ClientInfo _cInfo, EChatType _type, int _senderId, string _msg, string _mainName, bool _localizeMain, List <int> _recipientEntityIds) { return(ChatHook.Hook(_cInfo, _type, _senderId, _msg, _mainName, _localizeMain, _recipientEntityIds)); }
public static bool ChatMessage(ClientInfo clientInfo, EChatType _type, int _senderId, string message, string mainName, bool _localizeMain, List <int> _recipientEntityIds) { // We make sure there is an actual message and a client, and also ignore the message if it's from the server. if (!string.IsNullOrEmpty(message) && clientInfo != null && mainName != null) { //We check to see if the message starts with a / if (message.Trim().StartsWith("/")) { return(ChatCommands.Handle(message, clientInfo)); /** * //we then remove that / to get the rest of the message. * string[] cmd = message.Trim().Remove(0, 1).Split(' '); * * if (cmd[0] == "end") * { * foreach (ClientInfo pcli in ConnectionManager.Instance.Clients.List) * { * if (pcli == null) continue; * * Configs.selectedMap = "none"; * * foreach (string key in Events.TeamDeaths.Keys) * { * Events.TeamDeaths[key] = 0; * } * * pcli.SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(Configs.LobbyPosition, null, false)); * pcli.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, pcli.entityId, "[FF3333] END", null, false, null)); * } * return false; * } * * if (Configs.selectedMap != "none") return true; * * if (cmd[0] == "zombie") * { * try * { * World world = GameManager.Instance.World; * EntityPlayer player = world.Players.dict[clientInfo.entityId]; * * HashSet<int> classIds = new HashSet<int>(); * foreach (var g in EntityGroups.list.Dict) * { * //Log.Out(string.Format("Key = {0}\n\n", g.Key)); * foreach (var gg in g.Value) * { * classIds.Add(gg.entityClassId); * * //Log.Out(string.Format("prob = {0}", gg.prob)); * //Log.Out(string.Format("reqMin = {0}", gg.reqMin)); * //Log.Out(string.Format("reqMax = {0}", gg.reqMax)); * } * } * * foreach (int id in classIds) * { * //Log.Out(string.Format("entityClassId = {0}", id)); * int et = id;//EntityClass.FromString("animalZombieVultureRadiated"); * * Vector3 vector; * if (!world.GetRandomSpawnPositionMinMaxToPosition(player.position, 1, 10, 1, false, out vector)) * { * Log.Out("Cant find spot wtf?"); * return false; * } * * Entity entity = EntityFactory.CreateEntity(et, vector); * //if (entity.GetType() != typeof(EntityEnemy)) continue; * * EntityEnemy entityEnemy = (EntityEnemy)entity; * * world.SpawnEntityInWorld(entityEnemy); * entityEnemy.SetSpawnerSource(EnumSpawnerSource.Dynamic); * entityEnemy.IsHordeZombie = false; * entityEnemy.IsBloodMoon = false; * entityEnemy.bIsChunkObserver = true; * entityEnemy.timeStayAfterDeath /= 3; * entityEnemy.lootDropProb = 0; * } * * * * * } * catch (Exception e) * { * Log.Error(string.Format("Error in z cmd: {0}", e.Message)); * Log.Error(e.StackTrace); * Log.Exception(e); * } * } * else if (cmd[0] == "class") * { * if (cmd.Length < 2) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF3333]Tank / Soldier / Scout ", null, false, null)); * return false; * } * * List<string> classes = new List<string>() { "tank", "soldier", "scout" }; * * string className = cmd[1].Trim().ToLower(); * * if (!classes.Contains(className)) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF3333]Tank / Soldier / Scout ", null, false, null)); * return false; * } * * string pId = clientInfo.playerId; * * if (!Configs.PlayerClasses.ContainsKey(pId)) * { * Configs.PlayerClasses.Add(pId, ""); * } * * Configs.PlayerClasses[pId] = className; * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[FF3333]Selected: {0} ", className), null, false, null)); * } * else if (cmd[0] == "die") * { * World world = GameManager.Instance.World; * foreach (EntityPlayer entityPlayer in world.Players.list) * { * if (!entityPlayer.IsSpawned()) continue; * if (entityPlayer.IsDead()) continue; * if (entityPlayer == null) continue; * * entityPlayer.DamageEntity(new DamageSource(EnumDamageSource.Internal, EnumDamageTypes.Suicide), 99999, false, 1f); * * * * /*EntityCreationData entityCreationData = new EntityCreationData() * { * clientEntityId = entityPlayer.clientEntityId, * belongsPlayerId = entityPlayer.belongsPlayerId, * entityClass = EntityClass.FromString("playerMale"), * id = EntityFactory.nextEntityID++, * }; * * * EntityPlayerLocal entityPlayerLocal = EntityFactory.CreateEntity(entityCreationData) as EntityPlayerLocal; * * * //EntityPlayerLocal entityPlayerLocal = BuildLocalPlayer(ci); * * /*if (entityPlayerLocal == null) * { * Log.Out("nah"); * continue; * } * * entityPlayerLocal.clientEntityId = entityPlayer.clientEntityId; * entityPlayerLocal.belongsPlayerId = entityPlayer.belongsPlayerId; * entityPlayerLocal.inventory = entityPlayer.inventory; * entityPlayerLocal.bag = entityPlayer.bag; * entityPlayerLocal.equipment = entityPlayer.equipment; * entityPlayerLocal.persistentPlayerData = GameManager.Instance.GetPersistentPlayerList().GetPlayerDataFromEntityID(entityPlayer.entityId); * * if (entityPlayerLocal == null) * { * Log.Out("nah"); * continue; * } * * //EntityPlayerLocal entityPlayerLocal = entityPlayer.GetAttachedPlayerLocal(); * * //Log.Out(entityPlayerLocal.ToString()); * * //entityPlayerLocal.inventory.Clear(); * //entityPlayerLocal.inventory.AddItem(itemStack); * * //entityPlayerLocal.bag.Clear(); * * * //world.SpawnEntityInWorld(entityItem); * * * //ci.SendPackage(NetPackageManager.GetPackage<NetPackagePlayerInventory>().Setup(entityPlayerLocal, true, true, false)); * //ci.SendPackage(NetPackageManager.GetPackage<NetPackageEntityCollect>().Setup(entityItem.entityId, entityPlayer.entityId)); * * //world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Despawned); * } * } * else if (cmd[0] == "tp") * { * if (cmd.Length < 2) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[85144b]You ugly bitch [FF4136]/tp who or what", null, false, null)); * return false; * } * * string what = cmd[1].Trim(); * * Vector3 destination = new Vector3(); * * bool found = false; * foreach (EntityPlayer player in GameManager.Instance.World.Players.list) * { * ClientInfo client = ConnectionManager.Instance.Clients.ForEntityId(player.entityId); * if (client.playerName.Contains(what)) * { * destination = player.position; * found = true; * break; * } * } * * if (found) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(destination, null, false)); * return false; * } * * foreach (Configs.Map map in Configs.Maps.Values) * { * if (map.name.ToLower().Contains(what.ToLower())) * { * string type = "team"; * if (cmd.Length >= 3) * { * type = cmd[2].Trim().ToLower(); * } * * int index = 0; * if (cmd.Length >= 4) * { * index = int.Parse(cmd[3].Trim()); * } * * if (type == "team" && map.spawnsForTeams.Count > 0) * { * destination = map.spawnsForTeams[index]; * } * else * { * destination = map.spawnsForEnemies[index]; * } * * found = true; * break; * } * } * * if (found) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(destination, null, false)); * return false; * } * * if (cmd.Length == 3) * { * World world = GameManager.Instance.World; * * int x = int.Parse(cmd[1].Trim()); * int z = int.Parse(cmd[2].Trim()); * * int y = 128; * if (world.IsChunkAreaLoaded(x, 0, z)) * { * Chunk c = (Chunk)world.GetChunkFromWorldPos(x, 0, z); * y = c.GetTerrainHeight(x & 0xF, z & 0xF) + 1; * } * * destination = new Vector3(x, y, z); * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(destination, null, false)); * return false; * } * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[85144b]You ugly bitch [FF4136]I can't find Your dreamed up hero!", null, false, null)); * return false; * } * else if (cmd[0] == "gparty") * { * * World world = GameManager.Instance.World; * * try * { * EntityPlayer leaderPlayer = world.Players.dict[clientInfo.entityId]; * ClientInfo leaderPlayerCI = ConnectionManager.Instance.Clients.ForEntityId(leaderPlayer.entityId); * * leaderPlayer.CreateParty(); * leaderPlayerCI.SendPackage(NetPackageManager.GetPackage<NetPackagePartyData>().Setup(leaderPlayer.Party, clientInfo.entityId, PartyActions.AutoJoin, false)); * * foreach (EntityPlayer entityPlayer in world.Players.list) * { * if (entityPlayer.entityId == leaderPlayer.entityId) continue; * * ClientInfo entityPlayerCI = ConnectionManager.Instance.Clients.ForEntityId(entityPlayer.entityId); * * * leaderPlayer.Party.AddPlayer(entityPlayer); * * foreach (EntityPlayer entityPlayerSub in world.Players.list) * { * entityPlayerCI = ConnectionManager.Instance.Clients.ForEntityId(entityPlayerSub.entityId); * entityPlayerCI.SendPackage(NetPackageManager.GetPackage<NetPackagePartyData>().Setup(leaderPlayer.Party, entityPlayerCI.entityId, PartyActions.AutoJoin, false)); * } * } * * } * catch (Exception e) * { * Log.Error(string.Format("Error in AddPlayerToTeam: {0}", e.Message)); * Log.Error(e.StackTrace); * Log.Exception(e); * } * } * else if (cmd[0] == "poi") * { * World world = GameManager.Instance.World; * Vector3 position = world.Players.dict[clientInfo.entityId].position; * PrefabInstance pi = GameManager.Instance.World.GetPOIAtPosition(position); * * if (cmd.Length == 1) * { * if (pi == null) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF0000]No POI found!", null, false, null)); * return false; * } * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FFCC00]POI: [DDDDDD]" + pi.name, null, false, null)); * return false; * } * * int num = World.toChunkXZ((int)position.x) - 1; * int num2 = World.toChunkXZ((int)position.z) - 1; * int num3 = num + 2; * int num4 = num2 + 2; * * HashSetLong hashSetLong = new HashSetLong(); * for (int k = num; k <= num3; k++) * { * for (int l2 = num2; l2 <= num4; l2++) * { * hashSetLong.Add(WorldChunkCache.MakeChunkKey(k, l2)); * } * } * * ChunkCluster chunkCache = world.ChunkCache; * ChunkProviderGenerateWorld chunkProviderGenerateWorld = world.ChunkCache.ChunkProvider as ChunkProviderGenerateWorld; * * foreach (long key in hashSetLong) * { * if (!chunkProviderGenerateWorld.GenerateSingleChunk(chunkCache, key, true)) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("Failed regenerating chunk at position {0}/{1}", WorldChunkCache.extractX(key) << 4, WorldChunkCache.extractZ(key) << 4), null, false, null)); * } * } * * world.m_ChunkManager.ResendChunksToClients(hashSetLong); * * if (pi != null) * { * pi.Reset(world); * } * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[44FF44]Reseted", null, false, null)); * return false; * } * else if (cmd[0] == "prot") * { * Vector3i l = GameManager.Instance.World.Players.dict[clientInfo.entityId].GetBlockPosition(); * Chunk c = (Chunk)GameManager.Instance.World.GetChunkFromWorldPos(l); * * if (cmd.Length < 2) * { * if (c.IsAnyTraderArea()) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[F012BE]Pos [FFDC00]X:[F012BE] {0}, [FFDC00]Z:[F012BE] {1}, [01FF70]Protected", l.x, l.z), null, false, null)); * } * else * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[F012BE]Pos [FFDC00]X:[F012BE] {0}, [FFDC00]Z:[F012BE] {1}, [FF4136]Unprotected", l.x, l.z), null, false, null)); * * } * * return false; * } * * bool enable = true; * try * { * enable = bool.Parse(cmd[1]); * } * catch (Exception) { } * * for (int x = 0; x < 16; x++) * { * for (int z = 0; z < 16; z++) * { * c.SetTraderArea(x, z, enable); * } * } * * //int x = l.x & 0xF; * //int z = l.z & 0xF; * * if (enable) * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[F012BE]Pos [FFDC00]X:[F012BE] {0}, [FFDC00]Z:[F012BE] {1}, [01FF70]Enabled", l.x, l.z), null, false, null)); * else * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[F012BE]Pos [FFDC00]X:[F012BE] {0}, [FFDC00]Z:[F012BE] {1}, [FF4136]Disabled", l.x, l.z), null, false, null)); * * //clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[4444FF]Chunk X: {0}, Z: {1}", c.GetWorldPos().x, c.GetWorldPos().z), null, false, null)); * * //clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("[44FF44]Done X: {0}, Z: {1}, Rel: {2}, {3}", c.GetBlockWorldPosX(x), c.GetBlockWorldPosZ(z), x, z), null, false, null)); * foreach (var cl in ConnectionManager.Instance.Clients.List) * { * cl.SendPackage(NetPackageManager.GetPackage<NetPackageChunk>().Setup(c, true)); * } * } * else if (cmd[0] == "start") * { * World world = GameManager.Instance.World; * HashSet<int> playersToSplit = new HashSet<int>(); * foreach (EntityPlayer entityPlayer in world.Players.list) * { * playersToSplit.Add(entityPlayer.entityId); * } * * int count = 2; * * try * { * count = int.Parse(cmd[1]); * } * catch (Exception) { } * * TeamMaker.SplitPlayers(playersToSplit, count); * * Configs.selectedMap = cmd[1].Trim(); * * Configs.Map map = Configs.Maps[Configs.selectedMap]; * * int tIndex = 0; * foreach (string teamName in TeamMaker.teams.Keys) * { * HashSet<int> team = TeamMaker.teams[teamName]; * * Vector3 destination = map.spawnsForTeams[tIndex++]; * PrefabInstance pi = GameManager.Instance.World.GetPOIAtPosition(destination); * * //foreach (int member in team) * //{ * //TeamMaker.AddEnemyMarker(teamName, destination); * //} * * if (cmd.Length == 1) * { * if (pi == null) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF0000]No POI found!", null, false, null)); * return false; * } * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FFCC00]POI: [DDDDDD]" + pi.name, null, false, null)); * return false; * } * * int num = World.toChunkXZ((int)destination.x) - 1; * int num2 = World.toChunkXZ((int)destination.z) - 1; * int num3 = num + 2; * int num4 = num2 + 2; * * HashSetLong hashSetLong = new HashSetLong(); * for (int k = num; k <= num3; k++) * { * for (int l2 = num2; l2 <= num4; l2++) * { * hashSetLong.Add(WorldChunkCache.MakeChunkKey(k, l2)); * } * } * * ChunkCluster chunkCache = world.ChunkCache; * ChunkProviderGenerateWorld chunkProviderGenerateWorld = world.ChunkCache.ChunkProvider as ChunkProviderGenerateWorld; * * foreach (long key in hashSetLong) * { * if (!chunkProviderGenerateWorld.GenerateSingleChunk(chunkCache, key, true)) * { * //clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, string.Format("Failed regenerating chunk at position {0}/{1}", WorldChunkCache.extractX(key) << 4, WorldChunkCache.extractZ(key) << 4), null, false, null)); * } * } * * world.m_ChunkManager.ResendChunksToClients(hashSetLong); * * if (pi != null) * { * pi.Reset(world); * } * * foreach (int player in team) * { * ClientInfo ci = ConnectionManager.Instance.Clients.ForEntityId(player); * * string pId = clientInfo.playerId; * * string className = "tank"; * * if (Configs.PlayerClasses.ContainsKey(pId)) * { * className = Configs.PlayerClasses[pId]; * } * * Configs.GiveClassItems(ci, className); * * ci.SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().Setup(destination, null, false)); * } * } * } * else if (cmd[0] == "eq") * { * World world = GameManager.Instance.World; * //LocalPlayerUI uiforPlayer = LocalPlayerUI.GetUIForPlayer(world.GetEntity(clientInfo.entityId) as EntityPlayerLocal); * * EntityPlayer player = world.Players.dict[clientInfo.entityId]; * * GameManager.Instance.TEAccessClient(player.clientEntityId, player.serverPos, -1, player.entityId); * * /*EntityTrader entityTrader = null; * * foreach (Entity e in GameManager.Instance.World.Entities.list) * { * if (e.GetType() == typeof(EntityTrader)) * { * entityTrader = (EntityTrader)e; * break; * } * } * * uiforPlayer.xui.Trader.TraderTileEntity = entityTrader.TileEntityTrader; * uiforPlayer.xui.Trader.Trader = entityTrader.TraderData; * * GameManager.Instance.traderManager.TraderInventoryRequested(entityTrader.TraderData, clientInfo.entityId); * * uiforPlayer.windowManager.CloseAllOpenWindows(null, false); * uiforPlayer.windowManager.Open("trader", true, false, true); * * //TraderData trader = new TraderData(); * //trader.TraderInfo.Init(); * //trader.TraderInfo.UseOpenHours = false; * //trader.TraderInfo.AllowBuy = true; * //trader.TraderInfo.AllowSell = false; * //ItemValue itemValue = ItemClass.GetItem("gunAK47", true); * //ItemStack itemStack = new ItemStack(itemValue, 1); * //trader.AddToPrimaryInventory(itemStack, true); * * /** Object reference not set to an instance of an object. START * * //GameManager.Instance.traderManager.TraderInventoryRequested(trader, clientInfo.entityId); * /** Object reference not set to an instance of an object. STOP * * * /** I (as player) am at trader protected area during such operation (POI teleporter) * * //foreach (Entity e in GameManager.Instance.World.Entities.list) * //{ * // if (e.GetType() == typeof(EntityTrader)) * // { * // TraderData traderData = ((EntityTrader)e).TraderData; * * /** Nothing happens, no errors * * // GameManager.Instance.traderManager.TraderInventoryRequested(traderData, clientInfo.entityId); * * /** Have tried to found packet for such situation but this is the only one that makes any sense to me * * // clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageNPCQuestList>().Setup(e.entityId, clientInfo.entityId)); * // break; * // } * //} * * //GameManager.Instance.World.GetEntity() * //EntityTrader entityTrader = new EntityTrader(); * //GameManager.Instance.World.SpawnEntityInWorld(entityTrader); * /*GameManager.Instance.World.SpawnEntityInWorld(entityTrader); * TraderData trader = new TraderData(); * trader.TraderInfo.Init(); * trader.TraderInfo.UseOpenHours = false; * trader. * ItemValue itemValue = ItemClass.GetItem("gunAK47", true); * ItemStack itemStack = new ItemStack(itemValue, 1); * trader.AddToPrimaryInventory(itemStack, true); * //GameManager.Instance.traderManager.TraderInventoryRequested(entityTrader.TraderData, clientInfo.entityId); * * /*trader.AvailableMoney = 0; * trader.PrimaryInventory.Clear(); * * ItemValue itemValue = ItemClass.GetItem("gunAK47", true); * SdtdConsole.Instance.Output(string.Format("itemValue: {0}", itemValue == null)); * Log.Out(itemValue.ToString()); * ItemStack itemStack = new ItemStack(itemValue, 1); * SdtdConsole.Instance.Output(string.Format("ItemStack: {0}", itemStack == null)); * * //trader.PrimaryInventory.Add(itemStack); * trader.AddToPrimaryInventory(itemStack, true);* * //trader.TraderInfo.AllowBuy = true; * //trader.TraderInfo.AllowBuy = false; * //trader.TraderInfo.UseOpenHours = false; * * // clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageQuestGotoPoint>().Setup(clientInfo.playerId, )); * //foreach (EntityPlayerLocal p in GameManager.Instance.World.GetLocalPlayers()) * //{ * // Log.Out(string.Format("LID: {0} == IID: {1}", p.belongsPlayerId, clientInfo.playerId)); * // GameManager.ShowTooltip(p, "Tomasz Hajto przejechał babe na pasach i nie siedzi."); * //} * } * else if (cmd[0] == "pos") * { * if (cmd.Length < 2) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FFFF33]Ussage /pos (mapID/lobby/get) [enemy/team] [del index].", null, false, null)); * return false; * } * * Vector3i l = GameManager.Instance.World.Players.dict[clientInfo.entityId].GetBlockPosition(); * string currentPos = string.Format("X: {0}, Y: {1}, Z: {2}", l.x, l.y, l.z); * * if (cmd[1] == "get") * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[85144b]You stupid c**t: [FF4136]" + currentPos, null, false, null)); * } * else if (cmd[1] == "lobby") * { * Configs.LobbyPosition = new Vector3(l.x, l.y, l.z); * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[DDDDDD]New lobby position: [FFCC00]" + currentPos, null, false, null)); * } * else * { * string type = "team"; * if (cmd.Length >= 3) * { * type = cmd[2]; * } * * type = type.ToLower().Trim(); * string mapID = cmd[1].ToLower().Trim(); * * if (cmd.Length > 3) * { * int index = int.Parse(cmd[3].Trim()); * * if (!Configs.Maps.ContainsKey(mapID)) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[DDDDDD]Missing map: [FFCC00]" + mapID, null, false, null)); * return false; * } * * * Vector3 ll; * if (type == "team") * { * ll = Configs.Maps[mapID].spawnsForTeams[index]; * Configs.Maps[mapID].spawnsForTeams.RemoveAt(index); * } * else * { * ll = Configs.Maps[mapID].spawnsForTeams[index]; * Configs.Maps[mapID].spawnsForEnemies.RemoveAt(index); * } * * * currentPos = string.Format("X: {0}, Y: {1}, Z: {2}", ll.x, ll.y, ll.z); * * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[DDDDDD]Removed spawn ([FFCC00]" + type + "[DDDDDD]) for map [FFCC00]" + mapID + "[DDDDDD] with position [FFCC00]" + currentPos, null, false, null)); * Configs.Save(); * return false; * } * * if (!Configs.Maps.ContainsKey(mapID)) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[DDDDDD]New map: [FFCC00]" + mapID, null, false, null)); * Configs.Maps.Add(mapID, new Configs.Map(mapID)); * } * * if (type == "team") * { * Configs.Maps[mapID].spawnsForTeams.Add(l.ToVector3()); * } * else * { * Configs.Maps[mapID].spawnsForEnemies.Add(l.ToVector3()); * } * * Configs.Save(); * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[DDDDDD]Added spawn ([FFCC00]" + type + "[DDDDDD]) for map [FFCC00]" + mapID + "[DDDDDD] with position [FFCC00]" + currentPos, null, false, null)); * } * } * else if (cmd[0] == "give") * { * if (cmd.Length < 2) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF3333] To few args.", null, false, null)); * return false; * } * * ItemValue itemValue = new ItemValue(ItemClass.GetItem(cmd[1].Trim().ToLower(), true).type, 6, 6, true, null, 1); * World world = GameManager.Instance.World; * var entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData * { * entityClass = EntityClass.FromString("item"), * id = EntityFactory.nextEntityID++, * itemStack = new ItemStack(itemValue, 1), * pos = world.Players.dict[clientInfo.entityId].position, * rot = new Vector3(20f, 0f, 20f), * lifetime = 60f, * belongsPlayerId = clientInfo.entityId * }); * * if (entityItem == null) * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF3333] You are wrong :c", null, false, null)); * return false; * } * * world.SpawnEntityInWorld(entityItem); * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageEntityCollect>().Setup(entityItem.entityId, clientInfo.entityId)); * world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Despawned); * } * else * { * clientInfo.SendPackage(NetPackageManager.GetPackage<NetPackageChat>().Setup(EChatType.Whisper, _senderId, "[FF3333] Command unknown.", null, false, null)); * } * return false;*/ } } // Returning true allows other listeners to process this message. return(true); }
/// <summary> /// Called when a chat message is sent. /// </summary> /// <param name="client">The <see cref="ClientInfo"/> object representing the client that sent the message.</param> /// <param name="type">The type of chat message.</param> /// <param name="msg">The message text.</param> /// <param name="recipientEntityIds">The list of entity IDs receiving the message.</param> /// <returns><c>true</c> to allow the message to continue propagating; <c>false</c> to consume the message.</returns> private bool OnChatMessage(ClientInfo client, EChatType type, string msg, List <int> recipientEntityIds) { return(ChatHook.HookChatMessage(client, type, msg, recipientEntityIds)); }