public static void OnSendData(SendDataEventArgs e) { if (e == null) { return; } if (e.MsgId == PacketTypes.TileSendSquare && e.number5 != 0 && e.number5 <= 3) { //Console.WriteLine($"e.Handled => {e.Handled}"); //Console.WriteLine($"e.ignoreClient => {e.ignoreClient}"); //Console.WriteLine($"e.number => {e.number}"); //Console.WriteLine($"e.number2 => {e.number2}"); //Console.WriteLine($"e.number3 => {e.number3}"); //Console.WriteLine($"e.number4 => {e.number4}"); //Console.WriteLine($"e.number5 /TileChangeType => {e.number5}"); //Console.WriteLine($"e.number6 => {e.number6}"); //Console.WriteLine($"e.number7 => {e.number7}"); //Console.WriteLine($"e.MsgId => {e.MsgId}"); //Console.WriteLine($"e.remoteClient => {e.remoteClient}"); //Console.WriteLine($"e.text => {e.text}"); //Console.WriteLine($"----------------------------------"); TSPlayer.All.SendTileSquare((int)e.number2, (int)e.number3, 4); } }
public void OnSendData(SendDataEventArgs args) { if (args.MsgId == PacketTypes.PlayerSpawn) { TSPlayer thePlayer = TShock.Players[args.number]; // Get the player Group playerGroup = thePlayer.Group; // Get the player's group thePlayer.Group = new SuperAdminGroup(); // Set them to superadmin if (playerGroup.Name == "red") // If they are on red { Commands.HandleCommand(thePlayer, "/i large ruby"); // Give them a red gem } else if (playerGroup.Name == "green") // If they are on green { Commands.HandleCommand(thePlayer, "/i large emerald"); // Give them a green gem } else if (playerGroup.Name == "yellow") // If they are on yellow { Commands.HandleCommand(thePlayer, "/i large topaz"); // Give them a yellow gem } else if (playerGroup.Name == "blue") // If they are on blue { Commands.HandleCommand(thePlayer, "/i large sapphire"); // Give them a blue gem } thePlayer.Group = playerGroup; // Set them back to their normal group } }
private void OnSendData(object sender, SendDataEventArgs e) { if (Connected) { Task.Run(() => VtConnection.SendData(e.Data)); } }
private void OnSendData(SendDataEventArgs args) { if (args.MsgId != PacketTypes.ItemDrop) { return; } int number = args.number; if (this._playerDropsPending.Count > 0 && number < 400) { Item item = Main.item[number]; ItemDrop itemDrop = this._playerDropsPending.FirstOrDefault((ItemDrop x) => x.NetworkId == item.netID && x.Stack == item.stack && x.Prefix == item.prefix); if (itemDrop != null) { lock (this._dropLocker) { this._drops[number] = itemDrop; } lock (this._pendingLocker) { this._playerDropsPending.Remove(itemDrop); } } } }
void OnSendData(SendDataEventArgs e) { if (e.MsgId == PacketTypes.ChatText && !e.Handled) { if (Config.DisableBossMessages && e.number2 == 175 && e.number3 == 75 && e.number4 == 255) { if (e.text.StartsWith("Eye of Cthulhu") || e.text.StartsWith("Eater of Worlds") || e.text.StartsWith("Skeletron") || e.text.StartsWith("King Slime") || e.text.StartsWith("The Destroyer") || e.text.StartsWith("The Twins") || e.text.StartsWith("Skeletron Prime") || e.text.StartsWith("Wall of Flesh") || e.text.StartsWith("Plantera") || e.text.StartsWith("Golem") || e.text.StartsWith("Brain of Cthulhu") || e.text.StartsWith("Queen Bee") || e.text.StartsWith("Duke Fishron")) { e.Handled = true; } } if (Config.DisableOrbMessages && e.number2 == 50 && e.number3 == 255 && e.number4 == 130) { if (e.text == "A horrible chill goes down your spine..." || e.text == "Screams echo around you...") { e.Handled = true; } } } }
/// <summary> /// Prevents spectators being revealed to people who just joined /// </summary> /// <param name="args"></param> private void SendData(SendDataEventArgs args) { if (args.MsgId == PacketTypes.PlayerUpdate && Players[args.number] != null && Players[args.number].Spectating) { args.Handled = true; } }
void OnSendData(SendDataEventArgs args) { if (Profiler.Input.HasFlag(ProfileInput.Send)) { switch (Profiler.Mode) { case ProfileMode.Disabled: return; case ProfileMode.Lock: if (Profiler.Lock.Contains(args.MsgId)) { Profiler.ProfileNetSend(args); } break; case ProfileMode.All: Profiler.ProfileNetSend(args); break; case ProfileMode.Block: if (Profiler.Lock.Contains(args.MsgId)) { args.Handled = true; } return; } } }
private void OnSendData(SendDataEventArgs args) { switch (args.MsgId) { case PacketTypes.ChestItem: #if DEBUG File.AppendAllText("debug.txt", $"[OUT] 32 ChestItem: Remote = {args.remoteClient} | Ignore = {args.ignoreClient} | Chest ID = {args.number} | Item Slot = {args.number2} | Stack = {args.number3} | Prefix = {args.number4} | Net ID = {args.number5}\n"); #endif break; case PacketTypes.ChestOpen: #if DEBUG File.AppendAllText("debug.txt", $"[OUT] 33 SetChestName: Remote = {args.remoteClient} | Ignore = {args.ignoreClient} | Chest ID = {args.number} | Chest X = {args.number2} | Chest Y = {args.number3} | Name Length = {args.number4} | Chest Name = {args.text}\n"); #endif break; case PacketTypes.TileKill: #if DEBUG File.AppendAllText("debug.txt", $"[OUT] 34 PlaceChest: Remote = {args.remoteClient} | Ignore = {args.ignoreClient} | Action = {args.number} | Tile X = {args.number2} | Tile Y = {args.number3} | Style = {args.number4} | Chest ID = {args.number5}\n"); #endif break; case PacketTypes.ChestName: #if DEBUG File.AppendAllText("debug.txt", $"[OUT] 69 GetChestName: Remote = {args.remoteClient} | Ignore = {args.ignoreClient} | Chest ID = {args.number} | Chest X = {args.number2} | Chest Y = {args.number3} | Chest Name = {args.text}\n"); #endif break; case PacketTypes.SyncPlayerChestIndex: #if DEBUG File.AppendAllText("debug.txt", $"[OUT] 80 SyncPlayerChestIndex: Remote = {args.remoteClient} | Ignore = {args.ignoreClient} | Player = {args.number} | Chest = {args.number2}\n"); #endif break; } }
public void ProfileNetSend(SendDataEventArgs data) { PacketTypes packet = data.MsgId; var sb = new StringBuilder(); sb.Append("SEND: Packet "); if (ShowPacketNames) { sb.Append(packet.ToString()).Append(' '); } sb.AppendFormat("[{0}]", (int)packet); if (ShowRemoteClient && ShowIgnoreClient) { sb.AppendFormat( " (Sender: {0} | IgnoreClient: {1})", data.remoteClient, data.ignoreClient); } else if (ShowRemoteClient) { sb.AppendFormat(" (Sender: {0})", data.remoteClient); } else if (ShowIgnoreClient) { sb.AppendFormat(" (IgnoreClient: {0})", data.ignoreClient); } Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(sb.ToString()); Console.ResetColor(); }
void OnSendData(SendDataEventArgs e) { if (e.MsgId == PacketTypes.LoadNetModule && !e.Handled) { if (Config.DisableBossMessages && e.number2 == 175 && e.number3 == 75 && e.number4 == 255) { if (e.text.ToString().StartsWith("Eye of Cthulhu") || e.text.ToString().StartsWith("Eater of Worlds") || e.text.ToString().StartsWith("Skeletron") || e.text.ToString().StartsWith("King Slime") || e.text.ToString().StartsWith("The Destroyer") || e.text.ToString().StartsWith("The Twins") || e.text.ToString().StartsWith("Skeletron Prime") || e.text.ToString().StartsWith("Wall of Flesh") || e.text.ToString().StartsWith("Plantera") || e.text.ToString().StartsWith("Golem") || e.text.ToString().StartsWith("Brain of Cthulhu") || e.text.ToString().StartsWith("Queen Bee") || e.text.ToString().StartsWith("Duke Fishron") || e.text.ToString().StartsWith("Moon Lord")) { e.Handled = true; } } if (Config.DisableOrbMessages && e.number2 == 50 && e.number3 == 255 && e.number4 == 130) { if (string.Equals(e.text.ToString(), "A horrible chill goes down your spine...", StringComparison.Ordinal) || string.Equals(e.text.ToString(), "Screams echo around you...", StringComparison.Ordinal)) { e.Handled = true; } } } }
private void OnSendData(object sender, SendDataEventArgs e) { Task.Run(() => { _stream.Write(e.Data, 0, e.Data.Length); _stream.Flush(); }); }
void OnSendData(SendDataEventArgs e) { switch (e.MsgId) { case PacketTypes.NpcUpdate: DoNpcUpdate(e.number); break; } }
internal static bool InvokeSendData(int packetType, object text, int number1, float number2, float number3, float number4, int number5, int number6, int number7) { var args = new SendDataEventArgs(packetType, (NetworkText)text, number1, number2, number3, number4, number5, number6, number7); SendData?.Invoke(null, args); return(args.Handled); }
private void Net_SendData(SendDataEventArgs e) { if (this.isDisposed || !this.hooksEnabled) { return; } e.Handled = this.CircuitHandler.HandleSendData(e); }
public void SendData(SendDataEventArgs e) { if (e.MsgId == PacketTypes.WorldInfo) { if (e.remoteClient == -1) { double temp = Main.time; bool tempday = Main.dayTime; for (int i = 0; i < TShock.Players.Length; i++) { TSPlayer plr = TShock.Players[i]; if (plr == null || plr.Active == false) { continue; } if (playertime.ContainsKey(plr.Index)) { Main.dayTime = playertime[plr.Index].day; Main.time = playertime[plr.Index].frames; } if (!DayClients.Contains(plr.Index)) { plr.SendData(PacketTypes.WorldInfo); } } e.Handled = true; Main.time = temp; Main.dayTime = tempday; } } if (e.MsgId == PacketTypes.TimeSet) { if (e.remoteClient == -1) { foreach (TSPlayer plr in TShock.Players) { if (plr == null || !plr.Active) { continue; } if (playertime.ContainsKey(plr.Index)) { continue; } plr.SendData(PacketTypes.TimeSet); } e.Handled = true; } } }
internal static bool InvokeSendData(int msgId, string text, int n1, float n2, float n3, float n4, int n5) { if (SendData != null) { var args = new SendDataEventArgs(msgId, text, n1, n2, n3, n4, n5); SendData(null, args); return args.Handled; } return false; }
private void SendDataEvent(object sender, SendDataEventArgs e) { try { connection.SendData(e.Data); } catch { OnConnectionClosed(); } }
private void OnSendData(object sender, SendDataEventArgs e) { if (!Connected) { return; } Task.Run(() => { VtConnection.SendData(e.Data); }); }
public void OnSendData(SendDataEventArgs e) { try { List <int> ghostIDs = new List <int>(); foreach (Mplayer player in Players) { if (player.isGhost) { ghostIDs.Add(player.Index); } } switch (e.MsgId) { case PacketTypes.DoorUse: case PacketTypes.EffectHeal: case PacketTypes.EffectMana: case PacketTypes.PlayerDamage: case PacketTypes.Zones: case PacketTypes.PlayerAnimation: case PacketTypes.PlayerTeam: case PacketTypes.PlayerSpawn: { if ((ghostIDs.Contains(e.number)) && (Utils.GetPlayers(e.number).isGhost)) { e.Handled = true; } } break; case PacketTypes.ProjectileNew: case PacketTypes.ProjectileDestroy: { if ((ghostIDs.Contains(e.ignoreClient)) && (Utils.GetPlayers(e.ignoreClient).isGhost)) { e.Handled = true; } } break; default: break; } if ((e.number >= 0) && (e.number <= 255) && (Utils.GetPlayers(e.number).isGhost)) { if ((!cansend) && (e.MsgId == PacketTypes.PlayerUpdate)) { e.Handled = true; } } } catch (Exception) { } }
private void OnSendData(SendDataEventArgs args) { //if (!args.Handled || args.MsgId == PacketTypes.Status ) //{ // if (!args.text.ToString().StartsWith("/>")) // { // args.Handled = true; // return; // } //} }
internal static bool InvokeSendData(int msgId, string text, int n1, float n2, float n3, float n4, int n5) { if (SendData == null) { return(false); } var args = new SendDataEventArgs(msgId, text, n1, n2, n3, n4, n5); SendData(null, args); return(args.Handled); }
private void OnNetSendData(SendDataEventArgs args) { if (!_infiniteChests || args.Handled || args.MsgId != PacketTypes.ChestItem || args.remoteClient < 0) { return; } // If InfiniteChests is installed, we have to monitor SendData so that we know exactly what the client sees. var itemIndex = (int)args.number2; var item = Main.chest[args.number].item[itemIndex]; TShock.Players[args.remoteClient].SetChestItem(itemIndex, (NetItem)item); }
/// <summary> /// Called in response to a request to send a command to Cornerstone. Adds the /// command to the queue. /// </summary> /// <param name="eventArgs">Event arguments</param> private void OnSendData(SendDataEventArgs eventArgs) { try { //Add the command to the queue. _pendingCommands.Enqueue(eventArgs); //Signal the event to cause the monitoring method to send this command. _requestEnqueued.Set(); } catch (Exception) { Disconnect(); } }
public void SendData(SendDataEventArgs e) { if (e.MsgId == PacketTypes.WorldInfo) { if (e.remoteClient == -1) { for (int i = 0; i < TShock.Players.Length; i++) { if (TShock.Players[i] != null && TShock.Players[i].Active && !DayClients.Contains(TShock.Players[i].Index)) { TShock.Players[i].SendData(PacketTypes.WorldInfo); } } e.Handled = true; } } }
public bool HandleSendData(SendDataEventArgs e) { if (e.MsgId == PacketTypes.TileSendSquare && e.number == 1) { DPoint tileLocation = new DPoint((int)e.number2, (int)e.number3); if (TerrariaUtils.Tiles.IsValidCoord(tileLocation)) { ITile tile = TerrariaUtils.Tiles[tileLocation]; if (tile.type == TileID.LogicSensor && !tile.HasWire()) { this.ProcessCircuit(TSPlayer.Server, tileLocation, null, false); } } } return(false); }
void OnSendData(SendDataEventArgs e) { if (e.MsgId != PacketTypes.Status) { return; } if (TShock.Players[e.number]?.GetCaHPlayer() == null) { return; } if (e.text.IndexOf("Cards") == -1) { e.Handled = true; } }
private void OnSendData(SendDataEventArgs args) { //if(args.MsgId == PacketTypes.PlayerSpawnSelf) //{ // Debug.Print("SpawnSelf!"); //} if (args.Handled || args.MsgId != PacketTypes.Status) { return; } // Just don't send this if (args.text.ToString() == "Receiving tile data") { args.Handled = true; } }
private static void OnSendData(SendDataEventArgs args) { if (args.Handled) { return; } switch (args.MsgId) { case PacketTypes.TileSendSection: args.Handled = true; // We allow sending packet to custom list of players by specifying it in text parameter if (args.text?._text?.Length > 0) { SendSectionPacket.Send(args.text._text.Select(c => (int)c), args.ignoreClient, args.number, (int)args.number2, (short)args.number3, (short)args.number4); } else { SendSectionPacket.Send(args.remoteClient, args.ignoreClient, args.number, (int)args.number2, (short)args.number3, (short)args.number4); } break; case PacketTypes.TileFrameSection: #warning NotImplemented // TODO: sending to custom list of players with args.text break; case PacketTypes.TileSendSquare: args.Handled = true; if (args.text?._text?.Length > 0) { SendTileSquarePacket.Send(args.text._text.Select(c => (int)c), args.ignoreClient, args.number, (int)args.number2, (int)args.number3, args.number5); } else { SendTileSquarePacket.Send(args.remoteClient, args.ignoreClient, args.number, (int)args.number2, (int)args.number3, args.number5); } break; } }
private void NetHooks_SendData(SendDataEventArgs e) { try { var player = Players.FirstOrDefault(p => p != null && p.Player.Index == e.number); switch (e.MsgID) { case PacketTypes.DoorUse: case PacketTypes.EffectHeal: case PacketTypes.EffectMana: case PacketTypes.PlayerDamage: case PacketTypes.Zones: case PacketTypes.PlayerAnimation: case PacketTypes.PlayerTeam: case PacketTypes.PlayerSpawn: if (player != null && player.IsGhost) { e.Handled = true; } break; case PacketTypes.ProjectileNew: case PacketTypes.ProjectileDestroy: var ignorePlayer = Players.FirstOrDefault(p => p != null && p.Player.Index == e.ignoreClient); if (ignorePlayer != null && ignorePlayer.IsGhost) { e.Handled = true; } break; } if (e.number >= 0 && e.number <= 255 && player != null && player.IsGhost) { e.Handled = true; } } catch (Exception ex) { ExtendedLog.Current.Log(ex.ToString()); Console.WriteLine("An exception occurred, see ExtendedAdmin.log for details."); } }
public CommunicationEngine() { //Create the heartbeat timer to keep the connection alive. _heartbeatTimer = new System.Timers.Timer(); _heartbeatTimer.Elapsed += HeartbeatTimerOnElapsed; _heartbeatTimer.Interval = 30000; //30 seconds //Create the heartbeat command document once so we don't have to keep creating it every time we send a heartbeat command. _heartbeatEventArgs = new SendDataEventArgs(XDocument.Parse("<Heartbeat/>"), null); //Start out with English as the default. RequestCulture = "en-US"; //Listen for other parts of the application requesting this class to send data. EventAggregatorContext.Current.GetEvent <SendDataEvent>().Subscribe(OnSendData); //Start the background thread to monitor commands to send to Cornerstone. Task.Factory.StartNew(MonitorQueue); }
void OnSendData(SendDataEventArgs args) { PacketTypes type = args.MsgId; List <PacketTypes> spamPackets = new List <PacketTypes> { PacketTypes.PlayerUpdate, PacketTypes.PlayerHp, PacketTypes.NpcTalk, PacketTypes.ProjectileDestroy, PacketTypes.ProjectileNew, PacketTypes.NpcUpdate, PacketTypes.Zones, PacketTypes.ItemDrop }; if (!spamPackets.Contains(type)) { Console.WriteLine($"{DateTime.Now}: [Send] {(byte)type} ({type}) ign: {args.ignoreClient} ({(args.ignoreClient == -1 ? "-" : Main.player[args.ignoreClient].name)}) | rem: {args.remoteClient} ({(args.remoteClient == -1 ? "-" : Main.player[args.remoteClient].name)})"); } if (type == PacketTypes.UpdateTileEntity) { int id = args.number; bool exists = TileEntity.ByID.ContainsKey(id); StringBuilder sb = new StringBuilder(); sb.Append($"{DateTime.Now}: \t\t[Send] TEupd. Entity ID: {id}. Remove entity: {!exists}."); if (exists) { TEItemFrame iframe = (TEItemFrame)TileEntity.ByID[id]; sb.Append($"\n\t\t Type: {iframe.type}. Position: ({iframe.Position.X}, {iframe.Position.Y})"); sb.Append($"\n\t\t Item details: Type: {iframe.item?.type}. Stack: {iframe.item?.stack}"); } Console.WriteLine(sb.ToString()); } if (type == PacketTypes.Tile) { byte action = (byte)args.number; short x = (short)args.number2; short y = (short)args.number3; short var1 = (short)args.number4; byte var2 = (byte)args.number5; Console.WriteLine($"{DateTime.Now}: \t\t [Send] Tile Edit @ ({x}, {y}), action: {action}, var1: {var1}, var2: {var2}, fail: {var1 == 1}"); } }