Ejemplo n.º 1
0
        /// <summary>
        /// Updates a player's vortex status.
        /// </summary>
        /// <param Name="sender"></param>
        /// <param Name="e"></param>
        private void OnPlayerUpdated(object sender, PlayerUpdateArgs e)
        {
            e.Player.TPlayer.vortexStealthActive = (e.Pulley & 8) == 8;

            if (!PvPController.Config.EnablePlugin)
            {
                return;
            }

            if (e.Player.PreviousSelectedItem != e.SelectedSlot)
            {
                e.Player.PreviousSelectedItem = e.SelectedSlot;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Handles player updates.
        /// </summary>
        private void OnPlayerUpdate(object sender, PlayerUpdateArgs e)
        {
            if (!PvPModifier.Config.EnablePlugin)
            {
                return;
            }
            if (e.Player.TPlayer.dead)
            {
                return;
            }

            //If the player has their pvp turned on without sending a TogglePvP packet (ex. through a /pvp command),
            //The plugin will detect it here and send the modified items.
            if (e.Player.TPlayer.hostile && !e.Player.InvTracker.StartForcePvPInventoryCheck)
            {
                e.Player.InvTracker.StartForcePvPInventoryCheck = true;
                PvPUtils.SendCustomItems(e.Player);
            }

            if (!e.Player.TPlayer.hostile && e.Player.InvTracker.StartForcePvPInventoryCheck)
            {
                PvPUtils.RefreshInventory(e.Player);
                e.Player.InvTracker.Clear();
                e.Player.InvTracker.StartForcePvPInventoryCheck = false;
            }

            //If the player tries to use a modified item in their hand, it will be dumped back into their inventory
            if ((e.PlayerAction & 32) == 32)
            {
                if (e.Player.TPlayer.hostile)
                {
                    Item item = e.Player.TPlayer.inventory[58];

                    if (item.netID != 0 && PvPUtils.IsModifiedItem(item.netID) && e.Player.CanModInventory())
                    {
                        SSCUtils.SetItem(e.Player, 58, 0);
                        CustomWeaponDropper.DropItem(e.Player, new CustomWeapon {
                            ItemNetId     = (short)item.netID, Prefix = item.prefix, Stack = (short)item.stack,
                            DropAreaWidth = short.MaxValue, DropAreaHeight = short.MaxValue
                        });
                        e.Player.SendErrorMessage("You cannot use this weapon in your hand!");
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public override void OnPlayerData(TerrariaPacket e)
        {
            CTFArena       arena      = ActiveArena as CTFArena;
            PlayerTeamArgs playerTeam = e as PlayerTeamArgs;

            if (playerTeam != null)
            {
                if (RedTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(1);
                }
                else if (BlueTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(3);
                }
            }

            PlayerUpdateArgs playerUpdate = e as PlayerUpdateArgs;

            if (playerUpdate != null)
            {
                // Picking up flags
                if (_redFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && BlueTeam.Contains(e.Player))
                {
                    _redFlagHolder = e.Player;
                    SendMessageToAllPlayers($"{_redFlagHolder.Name} has picked up the red flag!", Color.OrangeRed);
                }
                else if (_blueFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && RedTeam.Contains(e.Player))
                {
                    _blueFlagHolder = e.Player;
                    SendMessageToAllPlayers($"{_blueFlagHolder.Name} has picked up the blue flag!", Color.Turquoise);
                }

                // Placing flags at base flag
                if (_redFlagHolder != null && _redFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && BlueTeam.Contains(e.Player) && !e.Player.TPlayer.dead)
                {
                    SendMessageToAllPlayers($"{_redFlagHolder.Name} has scored for the blue team!", Color.Turquoise);
                    _redFlagHolder = null;
                    _blueScore    += 1;
                    SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan);
                }
                else if (_blueFlagHolder != null && _blueFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && RedTeam.Contains(e.Player) && !e.Player.TPlayer.dead)
                {
                    SendMessageToAllPlayers($"{_blueFlagHolder.Name} has scored for the red team!", Color.OrangeRed);
                    _blueFlagHolder = null;
                    _redScore      += 1;
                    SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan);
                }
            }

            PlayerDeathArgs playerDeath = e as PlayerDeathArgs;

            if (playerDeath != null)
            {
                if (e.Player == _redFlagHolder)
                {
                    _redFlagHolder = null;
                    SendMessageToAllPlayers($"{e.Player.Name} has dropped the red flag!", Color.OrangeRed);
                }

                if (e.Player == _blueFlagHolder)
                {
                    _blueFlagHolder = null;
                    SendMessageToAllPlayers($"{e.Player.Name} has dropped the blue flag!", Color.Turquoise);
                }
            }
        }