Example #1
0
        private void OnNpcStrike(NpcStrikeEventArgs args)
        {
            player = TShock.Players[args.Player.whoAmI];
            if (!args.Handled && !(player.TPlayer.FindBuffIndex(130) == -1) && !player.HasPermission("slimydisable.bypass")) //check if player has slimy saddle buff
            {
                timer.Elapsed += ClearStrikes;
#if DEBUG
                Console.WriteLine($"Player {player.Name} has slime buff and hit {args.Npc.netID}");
#endif
                if (args.Npc.netID == 488 || args.Npc.netID == 68) // target dummy and dungeon guardian respectively
                {
                    if ((args.Player.position.Y + 80 > args.Npc.position.Y) && (args.Player.position.Y + 22 < args.Npc.position.Y) && ((args.Player.position.X - args.Npc.position.X < 64) && (args.Npc.position.X - args.Player.position.X < 64)))
                    {
                        strikes++;
#if DEBUG
                        player.SendMessage($"{strikes} strikes were counted", Color.BurlyWood);
                        player.SendMessage($"Player y: {args.Player.position.Y},\nNpc {args.Npc.netID} y: {args.Npc.position.Y}\n Diff y: {args.Player.position.Y - args.Npc.position.Y}", Color.Bisque);
                        player.SendMessage($"Player x: {args.Player.position.X},\nNpc {args.Npc.netID} x: {args.Npc.position.X}\n Diff x: {args.Player.position.X - args.Npc.position.X}", Color.Bisque);
#endif
                        args.Handled = true;
                    }
                    if (strikes >= strikeCap)
                    {
#if DEBUG
                        player.SendMessage("You've been oofed p hard tbh ngl imho.", Color.BurlyWood);
#endif
                        Punishment();
                    }
                }
                timer.Start();
            }
        }
Example #2
0
        private void OnChat(ServerChatEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            TSPlayer player = TShock.Players[e.Who];

            if (player == null)
            {
                e.Handled = true;
                return;
            }

            if (e.Text.StartsWith("/register") && !TShock.Config.AllowRegisterAnyUsername && !player.IsLoggedIn)
            {
                var user = TShock.Users.GetUserByName(player.Name);
                if (user != null)
                {
                    e.Handled = true;
                    player.SendMessage("We're sorry, but this name is already taken.", Color.DeepPink);
                    if (player.Group.HasPermission("selfname"))
                    {
                        player.SendMessage("Please use /selfname [newname] to change your name.", Color.DeepPink);
                    }
                }
            }
        }
 private void SendGatePortStatesInfo(TSPlayer player, GateStateMetadata gateState)
 {
     player.SendMessage("Top Port: " + this.GatePortStateToString(gateState.PortStates[0]), Color.LightGray);
     player.SendMessage("Left Port: " + this.GatePortStateToString(gateState.PortStates[2]), Color.LightGray);
     player.SendMessage("Bottom Port: " + this.GatePortStateToString(gateState.PortStates[1]), Color.LightGray);
     player.SendMessage("Right Port: " + this.GatePortStateToString(gateState.PortStates[3]), Color.LightGray);
 }
        void OnElapsed(object sender, ElapsedEventArgs e)
        {
            for (int i = 0; i < TPRequests.Length; i++)
            {
                TPRequest tpr = TPRequests[i];
                if (tpr.timeout > 0)
                {
                    TSPlayer dst = TShock.Players[tpr.dst];
                    TSPlayer src = TShock.Players[i];

                    tpr.timeout--;
                    if (tpr.timeout == 0)
                    {
                        src.SendMessage("[Teleport Request] Your teleport request timed out.", Color.LightCoral);
                        dst.SendMessage("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + "'s teleport request timed out.", Color.LightCoral);
                    }
                    else if (!AutoAccept[dst.TPlayer.whoAmI])
                    {
                        string msg = String.Format("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + " is requesting to teleport to you. ({0}tpr yes or {0}tpr no)", Commands.Specifier);
                        if (tpr.dir)
                        {
                            msg = String.Format("[Teleport Request] You are requested to teleport to " + src.Name.Colorize(Color.Yellow) + ". ({0}tpr yes or {0}tpr no)", Commands.Specifier);
                        }
                        dst.SendMessage(msg, Color.LightBlue);
                    }
                    else if (AutoAccept[dst.TPlayer.whoAmI])
                    {
                        if (Config.Timeout - tpr.timeout <= Config.waittime)
                        {
                            if (tpr.dir)
                            {
                                dst.SendMessage("[Teleport Request] You will be teleported to " + src.Name.Colorize(Color.Yellow) + " in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow) + ". Turn off auto-accept to withdraw your consent.", Color.LightBlue);
                            }
                            else
                            {
                                src.SendMessage("[Teleport Request] Teleportation will begin in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow), Color.LightBlue);
                                dst.SendMessage("[Teleport Request] Player " + src.Name.Colorize(Color.Yellow) + " will teleported to you in " + (Config.waittime - (Config.Timeout - tpr.timeout)).ToString().Colorize(Color.Yellow) + ". Turn off auto-accept to withdraw your consent.", Color.LightBlue);
                            }
                            continue;
                        }
                        string msg = String.Format("[Teleport Request] " + src.Name.Colorize(Color.Yellow) + " is requesting to teleport to you. Request is auto-accepted!", Commands.Specifier);
                        if (tpr.dir)
                        {
                            msg = String.Format("[Teleport Request] You are requested to teleport to " + src.Name.Colorize(Color.Yellow) + ". Request is auto-accepted!", Commands.Specifier);
                        }
                        dst.SendMessage(msg, Color.LightBlue);
                        TSPlayer plr1 = tpr.dir ? dst : src;
                        TSPlayer plr2 = tpr.dir ? src : dst;
                        if (plr1.Teleport(plr2.X, plr2.Y))
                        {
                            plr1.SendMessage("[Teleport Request] Teleported to " + plr2.Name.Colorize(Color.Yellow) + ".", Color.LightBlue);
                            plr2.SendMessage("[Teleport Request] " + plr1.Name.Colorize(Color.Yellow) + " teleported to you.", Color.LightBlue);
                        }
                        tpr.timeout = 0;
                        return;
                    }
                }
            }
        }
Example #5
0
        private void QuitGamemode(CommandArgs args)
        {
            TSPlayer player = args.Player;

            if (player.GetGamemode() == default || player.GetGamemode() == "Edit")
            {
                player.SendMessage("You are currently not in a game.", Color.Cyan);
                return;
            }

            player.SendMessage($"You have quit {player.GetGamemode()}", Color.Cyan);
            player.SetGamemode(default);
Example #6
0
        public override void Execute()
        {
            ply.SendMessage("Starting Rollback: Radius:" + args.radius + " Since: " + args.since, Color.Green);

            var    database = LogTile.DB;
            String query    = "SELECT * FROM LogTile WHERE X BETWEEN @0 AND @1 AND Y BETWEEN @2 and @3 AND Date > @4 ORDER BY id ASC;";
            var    events   = new List <TileEvent>();

            using (var reader = database.QueryReader(query, ply.TileX - args.radius, ply.TileX + args.radius, ply.TileY - args.radius,
                                                     ply.TileY + args.radius, (LogTile.helper.GetTime() - args.since)))
            {
                while (reader.Read())
                {
                    var e = new TileEvent(reader.Get <int>("X"), reader.Get <int>("Y"),
                                          LogTile.helper.INTtoString(reader.Get <int>("IP")),
                                          reader.Get <string>("Name"),
                                          LogTile.helper.getAction(reader.Get <int>("Action")),
                                          reader.Get <int>("TileType"),
                                          (long)reader.Get <int>("Date"));
                    events.Add(e);
                }
            }

            List <TileEvent> rollback = new List <TileEvent>();

            foreach (var ev in events)
            {
                if (!rollback.Contains(ev))
                {
                    rollback.Add(ev);
                }
            }

            foreach (var evt in rollback)
            {
                if (LogTile.helper.getAction(evt.GetAction()) == Action.BREAK)
                {
                    Main.tile[evt.GetX(), evt.GetY()].type   = (byte)evt.GetTileType();
                    Main.tile[evt.GetX(), evt.GetY()].active = true;
                }
                else
                {
                    Main.tile[evt.GetX(), evt.GetY()].active = false;
                }

                TSPlayer.All.SendTileSquare(evt.GetX(), evt.GetY(), 1);
            }

            ply.SendMessage("Rollback Complete: Tiles Rolled Back: " + rollback.Count, Color.Green);
        }
        private void TeleportLastDeath(CommandArgs arg)
        {
            TSPlayer player = arg.Player;
            SOSKey   sos    = lastPlaceOfDeathData.GetUserDeathInfo(player.UUID);

            if (sos.deathCount > 0)
            {
                player.Teleport(sos.lastDeathPlaceX, sos.lastDeathPlaceY);
                player.SendMessage("You have teleported to your last corpse.", Color.YellowGreen);
            }
            else
            {
                player.SendMessage("You haven't died yet in the server.", Color.YellowGreen);
            }
        }
Example #8
0
        public static void OnJoin(JoinEventArgs args)
        {
            TSPlayer plr = TShock.Players[args.Who];

            if (plr == null)
            {
                return;
            }

            TempGroupPlayer tgplr = TempGroupDbManage.GetTempGroup(plr.Name);

            if (tgplr.ActualGroup == null)
            {
                return;
            }

            if ((DateTime.Now - tgplr.ExpireDate).TotalMilliseconds > 0)
            {
                plr.Group         = TShock.Groups.GetGroupByName(tgplr.PrimaryGroup);
                plr.Account.Group = tgplr.PrimaryGroup;
                TShock.UserAccounts.SetUserGroup(plr.Account, tgplr.PrimaryGroup);

                TempGroupDbManage.RemoveTempGroup(plr.Name);

                plr.SendMessage($"[c/595959:»]  Waznosc twojej rangi [c/ffff66:{tgplr.ActualGroup}] wygasla.", Color.Gray);
                return;
            }

            Players.Add(plr.Name, tgplr);
        }
Example #9
0
        public static void OnUpdate(EventArgs args)
        {
            foreach (string player in _ = Players.Keys.ToArray())
            {
                if ((DateTime.Now - Players[player].ExpireDate).TotalMilliseconds > 0)
                {
                    TSPlayer plr = TSPlayer.FindByNameOrID(player)[0];

                    if (plr == null || !plr.Active)
                    {
                        return;
                    }

                    plr.Group         = TShock.Groups.GetGroupByName(Players[player].PrimaryGroup);
                    plr.Account.Group = Players[player].PrimaryGroup;
                    TShock.UserAccounts.SetUserGroup(plr.Account, Players[player].PrimaryGroup);

                    TempGroupDbManage.RemoveTempGroup(plr.Name);

                    plr.SendMessage($"[c/595959:»]  Waznosc twojej rangi [c/ffff66:{Players[player].ActualGroup}] wygasla.", Color.Gray);

                    Players.Remove(player);
                }
            }
        }
Example #10
0
        void CheckInfo(CommandArgs args)
        {
            TSPlayer plr = args.Player;

            if (args.Parameters.Count != 1)
            {
                plr.SendErrorMessage("Invalid Syntax! Corrext Syntax: /checkinfo <player>");
                return;
            }
            var foundplr = TShock.Utils.FindPlayer(args.Parameters[0]);

            if (foundplr.Count == 0)
            {
                args.Player.SendErrorMessage("Invalid player!");
                return;
            }
            else
            {
                var    iPlayer     = foundplr[0];
                string name        = iPlayer.Name;
                var    hp          = iPlayer.TPlayer.statLifeMax2;
                var    mana        = iPlayer.TPlayer.statManaMax2;
                var    currenthp   = iPlayer.TPlayer.statLife;
                var    currentmana = iPlayer.TPlayer.statMana;
                var    groupname   = iPlayer.Group.Name;
                var    groupprefix = iPlayer.Group.Prefix;
                string array       = "Name: " + name + "\nHP: " + hp + ", Current HP: " + currenthp + "\nMana: " + mana + ", Current Mana: " + currentmana + "\nGroup: " + groupname + ", Group Prefix: " + groupprefix;
                plr.SendMessage(array, Color.LightSteelBlue);
            }
        }
Example #11
0
        private void searchQuotes(TSPlayer player, string searchterm)
        {
            List <int> quoteresults = new List <int>();

            for (int i = 0; i < quotelist.Count; i++)
            {
                if (quotelist[i].qquote.ToLower().Contains(searchterm.ToLower()))
                {
                    quoteresults.Add(i);
                }
            }

            if (quoteresults.Count < 1)
            {
                player.SendInfoMessage("No quotes matched your search.");
            }
            else if (quoteresults.Count > 1)
            {
                string outputresults = string.Join(", ", quoteresults.Select(p => (p + 1).ToString()));
                player.SendInfoMessage("Multiple quotes matched your search: " + outputresults);
            }
            else
            {
                QuoteClass readQuote = quotelist[quoteresults[0]];
                if (!readQuote.qdeleted)
                {
                    player.SendMessage("[" + readQuote.qtime + "] Quote #" + (quoteresults[0] + 1).ToString() + " by " + readQuote.qauthor + ": " + readQuote.qquote, Color.LawnGreen);
                }
                else
                {
                    player.SendErrorMessage("No quotes matched your search.");
                }
            }
        }
Example #12
0
        public void OnGreetPlayer(GreetPlayerEventArgs e)
        {
            int      count = 0;
            string   ids   = "<";
            TSPlayer ply   = TShock.Players[e.Who];



            using (var reader = MessengerDB.QueryReader("SELECT * FROM Messages"))
            {
                while (reader.Read())
                {
                    if ((reader.Get <string>("Receiver") == ply.Name) && (reader.Get <string>("Status") == "Unread"))
                    {
                        count++;

                        ids = ids + reader.Get <int>("ID") + " | ";
                    }
                }
            }

            if (count != 0)
            {
                ply.SendMessage("[Messenger] You have " + count + " unread message(s). Use /msg " + ids.Remove(ids.Length - 3) + ">", Color.LightBlue);
            }
        }
Example #13
0
        public bool HasPermissionToBuildInRegion(TSPlayer ply)
        {
            if (!ply.IsLoggedIn)
            {
                if (!ply.HasBeenNaggedAboutLoggingIn)
                {
                    ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red);
                    ply.HasBeenNaggedAboutLoggingIn = true;
                }
                return(false);
            }
            if (!DisableBuild)
            {
                return(true);
            }

            for (int i = 0; i < AllowedIDs.Count; i++)
            {
                if (AllowedIDs[i] == ply.UserID)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #14
0
        private void OnChat(ServerChatEventArgs e)
        {
            TSPlayer tSPlayer = TShock.Players[e.Who];

            if (!e.Text.StartsWith(TShock.Config.CommandSpecifier) && !tSPlayer.mute)
            {
                bool flag = false;
                for (int i = 0; i < LexiconPlugin.config.LexiconedGroups.Length; i++)
                {
                    if (LexiconPlugin.config.LexiconedGroups[i] == tSPlayer.Group.Name)
                    {
                        flag = true;
                    }
                }
                if ((tSPlayer.Group.HasPermission("wordreplacement.permalexiconify") && !tSPlayer.Group.HasPermission("*")) || LexiconPlugin.BeingLexiconed[tSPlayer.Index] || flag)
                {
                    e.Handled = true;
                    string text = LexiconClass.Lexiconify(e.Text);
                    if (!TShock.Config.EnableChatAboveHeads)
                    {
                        string text2 = string.Format(TShock.Config.ChatFormat, new object[]
                        {
                            tSPlayer.Group.Name,
                            tSPlayer.Group.Prefix,
                            tSPlayer.Name,
                            tSPlayer.Group.Suffix,
                            text
                        });
                        TShock.Utils.Broadcast(text2, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B);
                    }
                    else
                    {
                        Player player = Main.player[e.Who];
                        string name   = player.name;
                        player.name = string.Format(TShock.Config.ChatAboveHeadsFormat, new object[]
                        {
                            tSPlayer.Group.Name,
                            tSPlayer.Group.Prefix,
                            tSPlayer.Name,
                            tSPlayer.Group.Suffix
                        });
                        NetMessage.SendData(4, -1, -1, player.name, e.Who, 0f, 0f, 0f, 0);
                        player.name = name;
                        string text2 = text;
                        NetMessage.SendData(25, -1, e.Who, text2, e.Who, (float)tSPlayer.Group.R, (float)tSPlayer.Group.G, (float)tSPlayer.Group.B, 0);
                        NetMessage.SendData(4, -1, -1, name, e.Who, 0f, 0f, 0f, 0);
                        string text3 = string.Format("<{0}> {1}", string.Format(TShock.Config.ChatAboveHeadsFormat, new object[]
                        {
                            tSPlayer.Group.Name,
                            tSPlayer.Group.Prefix,
                            tSPlayer.Name,
                            tSPlayer.Group.Suffix
                        }), text2);
                        tSPlayer.SendMessage(text3, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B);
                        TSPlayer.Server.SendMessage(text3, tSPlayer.Group.R, tSPlayer.Group.G, tSPlayer.Group.B);
                        Log.Info(string.Format("Broadcast: {0}", text3));
                    }
                }
            }
        }
Example #15
0
        private static void OnRegionLeft(TSPlayer player, RtRegion region, RtPlayer data)
        {
            if (region.HasEvent(Event.LeaveMsg))
            {
                if (string.IsNullOrWhiteSpace(region.LeaveMsg))
                {
                    player.SendInfoMessage("You have left region {0}", region.Region.Name);
                }
                else
                {
                    player.SendMessage(region.LeaveMsg, Color.White);
                }
            }

            if (region.HasEvent(Event.TempGroup) && player.tempGroup == region.TempGroup)
            {
                player.tempGroup = null;
                player.SendInfoMessage("You are no longer in group {0}.", region.TempGroup.Name);
            }

            if (region.HasEvent(Event.Godmode))
            {
                player.GodMode = false;
                player.SendInfoMessage("You are no longer in godmode!");
            }

            if (region.HasEvent(Event.Pvp) || region.HasEvent(Event.NoPvp) || region.HasEvent(Event.InvariantPvp))
            {
                data.ForcePvP     = null;
                data.CanTogglePvP = true;
                player.SendInfoMessage("You can toggle your PvP status now.");
            }
        }
Example #16
0
 public static void SendErrorEX(this TSPlayer tsp, object text, bool playsound = true)
 {
     tsp.SendMessage(ServerPrefix + text, new Color(195, 83, 83));
     if (playsound)
     {
         NetMessage.PlayNetSound(new NetMessage.NetSoundInfo(tsp.TPlayer.position, 122, -1, 0.62f), tsp.Index);
     }
 }
        //private void SaveMoney(CommandArgs arg)
        //{
        //    TSPlayer player = arg.Player;
        //    lastPlaceOfDeathData.UpdateSaveMoneyUser(player.UUID);
        //    if (lastPlaceOfDeathData.GetUserSavedMoney(player.UUID))
        //        player.SendMessage("Save Money Mode has been Enabled", Color.GreenYellow);
        //    else
        //        player.SendMessage("Save Money Mode has been Disabled", Color.GreenYellow);
        //}

        private void InfoLastDeath(CommandArgs arg)
        {
            TSPlayer player = arg.Player;
            SOSKey   sos    = lastPlaceOfDeathData.GetUserDeathInfo(player.UUID);

            if (sos.deathCount > 0)
            {
                string text = String.Format("Location (X, Y): ({0}, {1})\nDescription: {2}\nDeath Count: {3}",
                                            sos.lastDeathPlaceX, sos.lastDeathPlaceY, sos.lastDeathMessage,
                                            sos.deathCount);
                player.SendMessage(text, Color.YellowGreen);
            }
            else
            {
                player.SendMessage("You haven't died yet in the server.", Color.YellowGreen);
            }
        }
Example #18
0
        public void GetBalance(TSPlayer player)
        {
            BankManager manager = new BankManager(TShock.DB);

            var account = manager.GetBalance(player.UserAccountName);

            player.SendMessage(string.Format("Your account has a balance of: {0}", account.Amount), Color.Green);
        }
Example #19
0
 /// <summary>
 ///     Sends a prefixed message to the specified player.
 /// </summary>
 /// <param name="player">The player.</param>
 /// <param name="message">The message, which must not be <c>null</c>.</param>
 /// <param name="color">The message color.</param>
 /// <exception cref="ArgumentNullException"><paramref name="message" /> is null.</exception>
 private static void SendClansMessage(this TSPlayer player, [NotNull] string message, Color color)
 {
     if (message == null)
     {
         throw new ArgumentNullException(nameof(message));
     }
     player.SendMessage($"[Clans] {message}", color);
 }
Example #20
0
 public static void SendEX(this TSPlayer tsp, object text, bool playsound, Color color = default)
 {
     color = color == default ? new Color(212, 239, 245) : color;
     tsp.SendMessage(ServerPrefix + text, color);
     if (playsound)
     {
         NetMessage.PlayNetSound(new NetMessage.NetSoundInfo(tsp.TPlayer.position, 122, -1, 0.62f), tsp.Index);
     }
 }
Example #21
0
        }     // OnJoin ----------------------------------------------------------------

        // OnGreetPlayer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        void OnGreetPlayer(int playerId,
                           HandledEventArgs eventArgs)
        {
            if (_nameChanged)
            {
                _player.SendMessage("Warning: Your name had invalid characters, it has been changed to: " + _newName,
                                    Color.OrangeRed);
            } // if
        }     // OnGreetPlayer ---------------------------------------------------------
Example #22
0
        public override void Execute()
        {
            var    database = LogTile.DB;
            String query    =
                "SELECT * FROM LogTile WHERE X BETWEEN @0 AND @1 AND Y BETWEEN @2 and @3 AND Date > @4 ORDER BY id DESC;";
            var events = new List <TileEvent>();

            using (var reader = database.QueryReader(query, ply.TileX - args.radius, ply.TileX + args.radius, ply.TileY - args.radius,
                                                     ply.TileY + args.radius, (LogTile.helper.GetTime() - args.since)))
            {
                while (reader.Read())
                {
                    var e = new TileEvent(reader.Get <int>("X"), reader.Get <int>("Y"),
                                          LogTile.helper.INTtoString(reader.Get <int>("IP")),
                                          reader.Get <string>("Name"),
                                          LogTile.helper.getAction(reader.Get <int>("Action")),
                                          reader.Get <int>("TileType"),
                                          reader.Get <int>("Date"));
                    events.Add(e);
                }
            }

            if (args.page <= 0)
            {
                ply.SendMessage("There are " + Math.Ceiling(events.Count / 7.0) + " pages. (" + events.Count + "edits)");
                for (var i = 0; i < Math.Min(6, events.Count); i++)
                {
                    ply.SendMessage(events[i].parseEvent());
                }
            }
            else if (events.Count > 0)
            {
                for (var i = ((args.page - 1) * 7) - 1; i < Math.Min(args.page * 7 - 1, events.Count); i++)
                {
                    ply.SendMessage(events[i].parseEvent());
                }
            }
            else
            {
                ply.SendMessage("No results found.", Color.Green);
            }
            ply.SendMessage("Edits made: " + events.Count, Color.Green);
        }
Example #23
0
        public void Deposit(TSPlayer player, int amount)
        {
            if (!CheckInRegion(player))
            {
                return;
            }

            BankManager manager = new BankManager(TShock.DB);

            var account = manager.GetBalance(player.UserAccountName);

            //// piggy back on the raffle manager to get shards
            //RaffleManager raffleManager = new RaffleManager(TShock.DB);

            //var shards = raffleManager.GetServerPointAccounts(player.UserAccountName);
            try
            {
                var ePlayer = ServerPointSystem.ServerPointSystem.EPRPlayers.Single(p => p.TSPlayer == player);

                if (ePlayer.DisplayAccount < amount)
                {
                    player.SendMessage("You do not have the required shards.", Color.Red);
                }
                else
                {
                    manager.Deposit(player.UserAccountName, amount);

                    ServerPointSystem.EPREvents.PointOperate(ePlayer, -amount, ServerPointSystem.PointOperateReason.Deduct);

                    //ServerPointSystem.ServerPointSystem.Deduct(new CommandArgs("deduct", player, new List<string>()
                    //{
                    //    player.UserAccountName,
                    //    amount.ToString()
                    //}));

                    player.SendMessage("You have successfully deposited into your account.", Color.Green);
                }
            }
            catch (Exception ex)
            {
                player.SendMessage("Could not deposit at this time.", Color.Red);
            }
        }
Example #24
0
        public void OnGreet(GreetPlayerEventArgs args)
        {
            if (TShock.Players[args.Who] == null)
            {
                return;
            }
            TSPlayer player = TShock.Players[args.Who];

            player.SendMessage(getStaff(), Color.Cyan);
            return;
        }
Example #25
0
 public static void AddCommand(AbstractCommand cmd, TSPlayer ply)
 {
     if (ply != null)
     {
         ply.SendMessage(String.Format("There are currently {0} items in the queue.  Your request will be added to the bottom.", queue.Count), Color.Green);
     }
     lock ( queue )
     {
         queue.Add(cmd);
     }
 }
Example #26
0
        public static void Paginate(KeyValuePair <string, Color> header, Dictionary <string, Color> messages, int page, TSPlayer player)
        {
            if (messages.Count <= 7)
            {
                foreach (var Pair in messages)
                {
                    player.SendMessage(Pair.Key, Pair.Value);
                }
            }
            else
            {
                //pagenation:
                const int pagelimit = 6;

                int pagecount = messages.Count / pagelimit;
                if (page > pagecount)
                {
                    player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red);
                    return;
                }
                player.SendMessage(header.Key, header.Value);
                var flines   = new List <string>(messages.Keys);
                var fcolours = new List <Color>(messages.Values);

                var messagelist = new List <string>();
                for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < messages.Count; i++)
                {
                    messagelist.Add(flines[i]);
                }
                var colourlist = new List <Color>();
                for (int i = (page * pagelimit); (i < ((page * pagelimit) + pagelimit)) && i < messages.Count; i++)
                {
                    colourlist.Add(fcolours[i]);
                }

                for (int i = 0; i < messagelist.Count; i++)
                {
                    player.SendMessage(messagelist[i], colourlist[i]);
                }
            }
        }
Example #27
0
 void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
 {
     if (!text.StartsWith("/"))
     {
         TSPlayer plr = TShock.Players[msg.whoAmI];
         if (EBUtils.IsPlayerMuted(plr.Name))
         {
             plr.SendMessage("You are muted!", Color.Red);
             e.Handled = true;
         }
     }
 }
Example #28
0
        public void OnGetNetData(GetDataEventArgs args)
        {
            PacketTypes packetType = args.MsgID;
            // Why the hell do GetDataEventArgs not have an args.Who like the other event args do?!
            TSPlayer player = TShock.Players[args.Msg.whoAmI];

            if (null == player)
            {
                return;
            }

            if (!this.IsLynchable(player.Name))
            {
                return;
            }

            switch (packetType)
            {
            case PacketTypes.TogglePvp:
                TShockExtensions.TShockExtensions.EnablePvP(player);
                player.SendMessage(
                    String.Format("{0}", this.config.denyDisablePvPMessage),
                    this.config.denyDisablePvPMessageRed, this.config.denyDisablePvPMessageGreen, this.config.denyDisablePvPMessageBlue
                    );
                args.Handled = true;
                break;

            // This packet is stupidly weird and bad. Why would it be called PlayerTeam when there's a packet called ToggleParty that doesn't work the way that the name suggests..
            case PacketTypes.PlayerTeam:
                TShockExtensions.TShockExtensions.ForceNoTeam(player);
                player.SendMessage(
                    String.Format("{0}", this.config.denyChangeTeamMessage),
                    this.config.denyChangeTeamMessageRed, this.config.denyChangeTeamMessageGreen, this.config.denyChangeTeamMessageBlue
                    );
                // These handled thingies really worked out, it doesn't spam the chat anymore when you toggle...10/10
                args.Handled = true;
                break;
            }
        }
Example #29
0
        public void Withdraw(TSPlayer player, int amount)
        {
            if (!CheckInRegion(player))
            {
                return;
            }

            BankManager manager = new BankManager(TShock.DB);

            var account = manager.GetBalance(player.UserAccountName);

            if (account.Amount - amount < 0)
            {
                player.SendMessage("You do not have enough to withdraw that amount.", Color.Red);
            }
            else
            {
                try
                {
                    var ePlayer = ServerPointSystem.ServerPointSystem.EPRPlayers.Single(p => p.TSPlayer == player);

                    manager.Withdraw(player.UserAccountName, amount);

                    ServerPointSystem.EPREvents.PointOperate(ePlayer, amount, ServerPointSystem.PointOperateReason.Award);

                    //ServerPointSystem.ServerPointSystem.Award(new CommandArgs("award", player, new List<string>()
                    //{
                    //    player.Name,
                    //    amount.ToString()
                    //}));

                    player.SendMessage("You have successfully withdrawn from your account.", Color.Green);
                }
                catch (Exception ex)
                {
                    player.SendMessage("Could not withdraw shards at this time.", Color.Red);
                }
            }
        }
Example #30
0
        private static void viewBalance(TSPlayer client, int pageNumber)
        {
            const int itemsPerPage = 4;
            var       lines        = new List <string>(BankingPlugin.Instance.Bank.CurrencyManager.Count);

            foreach (var currency in BankingPlugin.Instance.Bank.CurrencyManager)
            {
                var account = BankingPlugin.Instance.GetBankAccount(client.Name, currency.InternalName);

                if (account == null)
                {
                    client.SendErrorMessage($"Unable to find account for currency '{currency.InternalName}'.");
                    return;
                }

                var balance = currency.GetCurrencyConverter().ToString(account.Balance);                //, true);

                lines.Add($"{currency.InternalName} - {balance}");
            }

            var pageCount = lines.PageCount(itemsPerPage);

            if (pageNumber < 1 || pageNumber > pageCount)
            {
                pageNumber = 1;
            }

            var page = lines.GetPage(pageNumber - 1, itemsPerPage);          //we display based off of 1

            client.SendMessage($"Page #{pageNumber} of {pageCount}.", Color.Green);

            foreach (var l in page)
            {
                client.SendInfoMessage(l);
            }

            client.SendMessage("Use /bank bal <page> or /bank bal <currency> to see more.", Color.Green);
        }
Example #31
0
 /// <summary>
 /// Show the RCoins for a given username
 /// </summary>
 /// <param name="player">TSPlayer player</param>
 public void Status(TSPlayer player, string name = "")
 {
     string playername = string.Empty;
     int playingtime = 0;
     double rcoins = 0;
     var user = TShock.Users.GetUserByName(player.Name);
     if (name != "")
     {
         using (var reader = database.QueryReader("SELECT * FROM Users WHERE LOWER (Username) = @0;", name.ToLower()))
         {
             if (reader.Read())
             {
                 playername = reader.Get<string>("Username");
                 playingtime = reader.Get<int>("PlayingTime");
                 rcoins = reader.Get<double>("RCoins");
                 player.SendMessage(string.Format("Player <{0}> have {1} RCoins. Total played time is {2} minutes.", playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen);
                 return;
             }
             else
             {
                 player.SendMessage("No players found", Color.Red);
                 return;
             }
         }
     }
     player.SendMessage("You have " + Math.Round(user.RCoins, 2) + " RCoins.", Color.LightPink);
     player.SendMessage("Your total played time is " + user.PlayingTime + " minutes.", Color.LightGreen);
 }
Example #32
0
        /// <summary>
        /// Show the top of players
        /// </summary>
        /// <param name="player">Tsplayer player</param>
        public void Top(TSPlayer player, bool rc = true)
        {
            string playername = string.Empty;
            int playingtime = 0;
            int count = 0;
            double rcoins = 0;
            var user = TShock.Users.GetUserByName(player.Name);
            try
            {
                if (rc == true)
                {
                    using (var reader = database.QueryReader("SELECT * FROM Users ORDER BY RCoins DESC LIMIT 3"))
                            while (reader.Read())
                        {
                            count++;
                            playername = reader.Get<string>("Username");
                            playingtime = reader.Get<int>("PlayingTime");
                            rcoins = reader.Get<double>("RCoins");

                                if (count == 1)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightPink);
                            if (count == 2)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen);
                            if (count == 3)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightBlue);
                        }
                }
                else
                {
                    using (var reader = database.QueryReader("SELECT * FROM Users ORDER BY PlayingTime DESC LIMIT 3"))
                        while (reader.Read())
                        {
                            count++;
                            playername = reader.Get<string>("Username");
                            playingtime = reader.Get<int>("PlayingTime");
                            rcoins = reader.Get<double>("RCoins");

                            if (count == 1)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightPink);
                            if (count == 2)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightGreen);
                            if (count == 3)
                                player.SendMessage(string.Format("{0} place - <{1}>. Have {2} RCoins. Total played time is {3} minutes.", count, playername, Math.Round(rcoins, 2), playingtime), Color.LightBlue);
                        }
                }

            }
            catch (Exception ex)
            {
                throw new UserManagerException("Top SQL returned an error", ex);
            }
            player.SendMessage("You have " + Math.Round(user.RCoins, 2) + " Rcoins. Total played time is " + user.PlayingTime + " minutes", Color.Yellow);
        }
Example #33
0
        public bool HasPermissionToBuildInRegion(TSPlayer ply)
        {
            if (!ply.IsLoggedIn)
            {
                if (!ply.HasBeenNaggedAboutLoggingIn)
                {
                    ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red);
                    ply.HasBeenNaggedAboutLoggingIn = true;
                }
                return false;
            }
            if (!DisableBuild)
            {
                return true;
            }

            for (int i = 0; i < AllowedIDs.Count; i++)
            {
                if (AllowedIDs[i] == ply.UserID)
                {
                    return true;
                }
            }
            return false;
        }
Example #34
0
        /// <summary>
        /// Checks if a given player has permission to build in the region
        /// </summary>
        /// <param name="ply">Player to check permissions with</param>
        /// <returns>Whether the player has permission</returns>
        public bool HasPermissionToBuildInRegion(TSPlayer ply)
        {
            if (!DisableBuild)
            {
                return true;
            }
            if (!ply.IsLoggedIn)
            {
                if (!ply.HasBeenNaggedAboutLoggingIn)
                {
                    ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red);
                    ply.HasBeenNaggedAboutLoggingIn = true;
                }
                return false;
            }

            return ply.HasPermission(Permissions.editregion) || AllowedIDs.Contains(ply.User.ID) || AllowedGroups.Contains(ply.Group.Name) || Owner == ply.User.Name;
        }
Example #35
0
        public bool HasPermissionToBuildInRegion(TSPlayer ply, out string CoOwner)
        {
            CoOwner = string.Empty;

            if (!ply.IsLoggedIn)
            {
                    ply.SendMessage("You must be logged in to take advantage of protected regions.", Color.Red);
                return false;
            }
            if (!DisableBuild)
            {
                return true;
            }

            try
            {
                for (int i = 0; i < AllowedIDs.Count; i++)
                {
                    CoOwner = string.Format("{0} {1}", CoOwner, TShock.Users.GetNameForID((int)AllowedIDs[i]));
                }
                CoOwner = CoOwner.Remove(0, 1);
            }
            catch
            {
                CoOwner = "";
                return false;
            }

            for (int i = 0; i < AllowedIDs.Count; i++)
            {
                if (AllowedIDs[i] == ply.UserID)
                {
                    return true;
                }
            }
            return false;
        }