Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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
            }
        }
Ejemplo n.º 3
0
 private void OnSendData(object sender, SendDataEventArgs e)
 {
     if (Connected)
     {
         Task.Run(() => VtConnection.SendData(e.Data));
     }
 }
Ejemplo n.º 4
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 5
0
 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;
             }
         }
     }
 }
Ejemplo n.º 6
0
 /// <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;
     }
 }
Ejemplo n.º 7
0
        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;
                }
            }
        }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
 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;
             }
         }
     }
 }
Ejemplo n.º 11
0
 private void OnSendData(object sender, SendDataEventArgs e)
 {
     Task.Run(() =>
     {
         _stream.Write(e.Data, 0, e.Data.Length);
         _stream.Flush();
     });
 }
Ejemplo n.º 12
0
 void OnSendData(SendDataEventArgs e)
 {
     switch (e.MsgId)
     {
     case PacketTypes.NpcUpdate:
         DoNpcUpdate(e.number);
         break;
     }
 }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 15
0
        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;
                }
            }
        }
Ejemplo n.º 16
0
 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;
 }
Ejemplo n.º 17
0
 private void SendDataEvent(object sender, SendDataEventArgs e)
 {
     try
     {
         connection.SendData(e.Data);
     }
     catch
     {
         OnConnectionClosed();
     }
 }
Ejemplo n.º 18
0
 private void OnSendData(object sender, SendDataEventArgs e)
 {
     if (!Connected)
     {
         return;
     }
     Task.Run(() =>
     {
         VtConnection.SendData(e.Data);
     });
 }
Ejemplo n.º 19
0
        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) { }
        }
Ejemplo n.º 20
0
 private void OnSendData(SendDataEventArgs args)
 {
     //if (!args.Handled || args.MsgId == PacketTypes.Status )
     //{
     //	if (!args.text.ToString().StartsWith("/>"))
     //	{
     //		args.Handled = true;
     //		return;
     //	}
     //}
 }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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();
     }
 }
Ejemplo n.º 24
0
 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;
         }
     }
 }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
        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;
            }
        }
Ejemplo n.º 27
0
        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;
            }
        }
Ejemplo n.º 28
0
        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;
            }
        }
Ejemplo n.º 29
0
        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}");
            }
        }