Пример #1
0
 private static void OnPvPdeath(C3Mod.DeathArgs e)
 {
     if (e.PvPKill)
     {
         if (e.Killer.TSPlayer.IsLoggedIn && e.Killed.TSPlayer.IsLoggedIn)
         {
             EPRPlayer EKiller   = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(e.Killer.TSPlayer.Index);
             EPRPlayer EKilled   = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(e.Killed.TSPlayer.Index);
             int       killerbal = EKiller.DisplayAccount;
             int       killedbal = EKilled.DisplayAccount;
             if (InPointRange(killerbal, killedbal))
             {
                 float gain = (killedbal * (100 - ServerPointSystem.ServerPointSystem.DeathToll) / 100) + PvPKillReward;
                 e.Killer.TSPlayer.SendMessage("You gained " + ((int)gain).ToString() + " " + ServerPointSystem.ServerPointSystem.currname + "(s)!", Color.Green);
                 EPREvents.PointOperate(EKiller, (int)gain, PointOperateReason.PVP);
             }
         }
     }
 }
Пример #2
0
        public static void OnGameEnd(C3Mod.GameEndArgs e)
        {
            int winnings = 0;

            switch (e.GameType.ToLower())
            {
            case "tdm":
            {
                int multiplier = e.WinningTeamScore - e.LosingTeamScore;
                winnings = CEConfig.TDMReward * multiplier;
                break;
            }

            case "ctf":
            {
                winnings = CEConfig.CTFReward;
                break;
            }

            case "1v1":
            {
                winnings = GetCEPlayer(e.WinningTeamPlayers[0].TSPlayer.Index).DuelReward *2;
                break;
            }

            case "oneflag":
            {
                winnings = CEConfig.OFReward;
                break;
            }
            }
            foreach (C3Player player in e.WinningTeamPlayers)
            {
                if (player.TSPlayer.IsLoggedIn)
                {
                    EPREvents.PointOperate(ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(player.Index),
                                           winnings, PointOperateReason.PVPEvent);
                    player.TSPlayer.SendMessage(
                        "You gained " + winnings.ToString() + " " + ServerPointSystem.ServerPointSystem.currname + "s!",
                        Color.Green);
                }
            }
        }
Пример #3
0
        private static void OnPvPdeath(C3Mod.DeathArgs e)
        {
            if (e.PvPKill)
            {
                if (e.Killer.TSPlayer.IsLoggedIn && e.Killed.TSPlayer.IsLoggedIn)
                {
                    EPRPlayer EKiller = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(e.Killer.TSPlayer.Index);
                    EPRPlayer EKilled = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(e.Killed.TSPlayer.Index);

                    int killerbal = EKiller.DisplayAccount;

                    int killedbal = EKilled.DisplayAccount;

                    float gain = (killedbal * ((100f - CEConfig.PVPDeathToll) / 100f));
                    float max  = (killerbal * ((100f - CEConfig.MaxPVPGain) / 100f));

                    int actual = (int)Math.Min(gain, max);

                    int killergets = actual + CEConfig.PvPKillReward;

                    e.Killer.TSPlayer.SendMessage(String.Format("You gained {0} {1}(s)!", (killergets),
                                                                ServerPointSystem.ServerPointSystem.currname), Color.Green);

                    EPREvents.PointOperate(EKiller, killergets, PointOperateReason.PVP);

                    if (!e.Killed.TSPlayer.Group.HasPermission("ignoredeathtax"))
                    {
                        e.Killed.TSPlayer.SendMessage(String.Format("You lost {0} {1}(s)!", actual,
                                                                    ServerPointSystem.ServerPointSystem.currname), Color.Green);
                        EPREvents.PointOperate(EKilled, -((int)actual), PointOperateReason.PVP);
                    }

                    string log = string.Format("{0} killed {1}. {0} received {2} {3}(s) and {1} lost {4} {3}(s)",
                                               e.Killer.PlayerName, e.Killed.PlayerName, killergets,
                                               ServerPointSystem.ServerPointSystem.currname,
                                               (e.Killed.TSPlayer.Group.HasPermission("ignoredeathtax") ? 0 : -actual));

                    Log.ConsoleInfo(log);
                }
            }
        }
Пример #4
0
        public void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
        {
            string cmd = text.Split(' ')[0];

            if (cmd == "/duel" && TShockAPI.TShock.Utils.FindPlayer(text.Split(' ')[1]).Count == 1)
            {
                TSPlayer challenged = TShockAPI.TShock.Utils.FindPlayer(text.Split(' ')[1])[0];
                TSPlayer challenger = TShock.Players[ply];
                if (challenger.IsLoggedIn && challenged.IsLoggedIn)
                {
                    int challengerbal =
                        ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(challenger.Index).DisplayAccount;
                    if (challengerbal >= GetCEPlayer(ply).Bet)
                    {
                        GetCEPlayer(ply).challenged = challenged.Index;
                        challenger.SendMessage(
                            "You challenged " + challenged.Name + " to a duel for " + GetCEPlayer(ply).Bet.ToString() +
                            " " + ServerPointSystem.ServerPointSystem.currname + "s", Color.Teal);
                        challenger.SendMessage(
                            challenger.Name + " has  challenged you" + challenged.Name + " to a duel for " +
                            GetCEPlayer(ply).Bet.ToString() + " " + ServerPointSystem.ServerPointSystem.currname + "s",
                            Color.Teal);
                        foreach (CEPlayer ceplayerctr in WhoChallengedThisGuy(challenged.Index))
                        {
                            if (ceplayerctr.ID != ply)
                            {
                                GetCEPlayer(ceplayerctr.ID).challenged = -1;
                            }
                        }
                    }
                    else
                    {
                        e.Handled = true;
                        challenger.SendMessage(
                            "You don't have enough " + ServerPointSystem.ServerPointSystem.currname +
                            "s to do that! Lower your bet", Color.Red);
                    }
                }
                return;
            }
            else if (cmd == "/accept")
            {
                if (WhoChallengedThisGuy(ply).Count > 0)
                {
                    TSPlayer  challenger  = TShock.Players[WhoChallengedThisGuy(ply)[0].ID];
                    TSPlayer  challenged  = TShock.Players[ply];
                    EPRPlayer Echallenger = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(challenger.Index);
                    EPRPlayer Echallenged = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(challenged.Index);
                    if (challenger.IsLoggedIn && challenged.IsLoggedIn)
                    {
                        int challengerbal = Echallenger.DisplayAccount;
                        int challengedbal = Echallenged.DisplayAccount;
                        int wager         = GetCEPlayer(challenger.Index).Bet;
                        if (challengerbal >= wager && challengedbal >= wager)
                        {
                            GetCEPlayer(challenged.Index).DuelReward = wager;
                            GetCEPlayer(challenger.Index).DuelReward = wager;
                            EPREvents.PointUse(Echallenger, wager, PointUsage.Bet);
                            EPREvents.PointUse(Echallenged, wager, PointUsage.Bet);
                        }
                        else
                        {
                            challenger.SendMessage(
                                "Error processing dueling bets. Either you or your opponent does not have enough " +
                                ServerPointSystem.ServerPointSystem.currname + "s", Color.Red);
                            challenged.SendMessage(
                                "Error processing dueling bets. Either you or your opponent does not have enough " +
                                ServerPointSystem.ServerPointSystem.currname + "s", Color.Red);
                            e.Handled = true;
                        }
                    }
                }
                return;
            }
            return;
        }
Пример #5
0
        private static void Rank(CommandArgs args)
        {
            if (args.Parameters.Count > 0)
            {
                if (args.Player.IsLoggedIn)
                {
                    string cmd = "help";
                    cmd = args.Parameters[0].ToLower();
                    switch (cmd)
                    {
                    case "change":
                    {
                        if (!args.Player.Group.HasPermission("dontrankme"))
                        {
                            if (args.Parameters.Count > 1)
                            {
                                int RankLineID = GetRankLineIDByLineName(args.Parameters[1]);
                                if (RankLineID >= 0)
                                {
                                    if (!RankConfig.RankLineRestrictons[RankLineID])
                                    {
                                        Group           Group = TShockAPI.TShock.Utils.GetGroup(RankConfig.Ranks[RankLineID][0]);
                                        List <SqlValue> list  = new List <SqlValue>();
                                        List <SqlValue> where = new List <SqlValue>();
                                        where.Add(new SqlValue("Username", "'" + args.Player.UserAccountName + "'"));
                                        list.Add(new SqlValue("Usergroup", "'" + Group.Name + "'"));
                                        SQLEditor.UpdateValues("Users", list, where);
                                        args.Player.SendMessage("You changed rank from " + args.Player.Group.Name + " to " + Group.Name, Color.Green);
                                        args.Player.Group = Group;
                                    }
                                    else
                                    {
                                        args.Player.SendMessage("That Rank Line is Restricted!", Color.Red);
                                    }
                                }
                                else
                                {
                                    args.Player.SendMessage("There is no such rank line!", Color.Red);
                                }
                            }
                            else
                            {
                                args.Player.SendMessage("/rank change [Rank Line]", Color.Yellow);
                                args.Player.SendMessage("Warning this will transfer you to the lowest rank in that Rank Line", Color.Yellow);
                            }
                        }
                        else
                        {
                            args.Player.SendMessage("You cannot change your Rank Line", Color.Red);
                        }

                        break;
                    }

                    case "check":
                    {
                        int RankLineID = GetRankLineIDByRank(args.Player.Group.Name);
                        int RankID     = -1;
                        if (RankLineID >= 0)
                        {
                            RankID = GetRankID(args.Player.Group.Name, RankLineID);
                        }
                        if (RankID >= 0)
                        {
                            args.Player.SendMessage(RankConfig.RankCheckMessage[RankLineID][RankID], Color.AntiqueWhite);
                        }
                        else
                        {
                            args.Player.SendMessage("Your group: " + args.Player.Group.Name + " isn't part of the ranking system", Color.Red);
                        }
                        break;
                    }

                    case "up":
                    {
                        EPRPlayer       player = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(args.Player.Index);
                        List <SqlValue> where2 = new List <SqlValue>();
                        where2.Add(new SqlValue("Username", "'" + args.Player.UserAccountName.ToString() + "'"));
                        int currbal    = player.DisplayAccount;
                        int RankLineID = GetRankLineIDByRank(args.Player.Group.Name);
                        int RankID     = -1;
                        if (RankLineID >= 0)
                        {
                            RankID = GetRankID(args.Player.Group.Name, RankLineID);
                        }
                        if (RankID >= 0 && RankID < (RankConfig.Ranks[RankLineID].Length - 1))
                        {
                            int RankUpCost = RankConfig.RankUpCost[RankLineID][RankID];
                            if (currbal >= RankUpCost)
                            {
                                EPREvents.PointUse(player, RankUpCost, PointUsage.Rank);
                                List <SqlValue> list2 = new List <SqlValue>();
                                list2.Add(new SqlValue("Usergroup", "'" + RankConfig.Ranks[RankLineID][RankID + 1] + "'"));
                                SQLEditor.UpdateValues("Users", list2, where2);
                                args.Player.SendMessage(RankConfig.RankUpMessage[RankLineID][RankID], Color.AntiqueWhite);
                                args.Player.Group = TShockAPI.TShock.Utils.GetGroup(RankConfig.Ranks[RankLineID][RankID + 1]);
                            }
                            else
                            {
                                args.Player.SendMessage(RankConfig.RankCheckMessage[RankLineID][RankID], Color.AntiqueWhite);
                            }
                        }
                        else if (RankID >= 0 && RankID == (RankConfig.Ranks[RankLineID].Length - 1))
                        {
                            args.Player.SendMessage(RankConfig.RankCheckMessage[RankLineID][RankID], Color.AntiqueWhite);
                        }
                        else
                        {
                            args.Player.SendMessage("Your group: " + args.Player.Group.Name + " isn't part of the ranking system", Color.Red);
                        }
                        break;
                    }

                    default:
                        args.Player.SendMessage("Invalid Syntax! try:/rank up or /rank check or /rank change", Color.Yellow);
                        break;
                    }
                }
                else
                {
                    args.Player.SendMessage("You must be logged in to do that!", Color.Red);
                }
            }
            else
            {
                args.Player.SendMessage("Invalid Syntax! try:/rank up or /rank check or /rank change", Color.Yellow);
            }
        }
Пример #6
0
        public void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
        {
            string cmd = text;

            if (TShock.Players[ply].IsLoggedIn && text.StartsWith("/"))
            {
                Command chckcmd = TShockAPI.Commands.ChatCommands.Find(fcmd => fcmd.Names.Contains(cmd.Split(' ')[0].Remove(0, 1)));
                if (chckcmd != null)
                {
                    if (TShock.Players[ply].Group.HasPermission(chckcmd.Permission))
                    {
                        EPRPlayer player = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(ply);
                        bool      block  = false;
                        bool      charge = false;
                        int       cost   = 0;
                        foreach (CommandParser cmdprsr in CommandParserList)
                        {
                            if (cmdprsr.BlockType == BlockType.BlockStartsWith && !TShock.Players[ply].Group.HasPermission(cmdprsr.BlockOverridePermission) && cmdprsr.BlockOverridePermission != "" && cmd.ToLower().StartsWith(cmdprsr.Command.ToLower()))
                            {
                                block = true;
                            }
                            else if (cmdprsr.BlockType == BlockType.BlockEqualsTo && !TShock.Players[ply].Group.HasPermission(cmdprsr.BlockOverridePermission) && cmdprsr.BlockOverridePermission != "" && cmd.ToLower().Equals(cmdprsr.Command.ToLower()))
                            {
                                block = true;
                            }

                            if (cmdprsr.ChargeType == ChargeType.StartsWith && cmd.ToLower().StartsWith(cmdprsr.Command.ToLower()))
                            {
                                charge = true;
                                if (cmdprsr.Cost > 0)
                                {
                                    cost = cmdprsr.Cost;
                                }
                                if (TShock.Players[ply].Group.HasPermission(cmdprsr.CostOverridePermission.ToLower()) && cmdprsr.CostOverridePermission != "")
                                {
                                    cost = 0;
                                }
                            }
                            else if (cmdprsr.ChargeType == ChargeType.EqualsTo && cmd.ToLower().Equals(cmdprsr.Command.ToLower()))
                            {
                                charge = true;
                                if (cmdprsr.Cost > 0)
                                {
                                    cost = cmdprsr.Cost;
                                }
                                if (TShock.Players[ply].Group.HasPermission(cmdprsr.CostOverridePermission.ToLower()) && cmdprsr.CostOverridePermission != "")
                                {
                                    cost = 0;
                                }
                            }
                        }
                        if (block)
                        {
                            e.Handled = true;
                            return;
                        }
                        else if (!block && charge && cost > 0)
                        {
                            if (player.DisplayAccount >= cost)
                            {
                                EPREvents.PointUse(player, cost, PointUsage.Command);
                                player.TSPlayer.SendMessage(string.Format("Command cost you {0} {1}s. You have {2} {1}(s) left", cost, ServerPointSystem.ServerPointSystem.currname, (player.DisplayAccount)), Color.Red);
                                return;
                            }
                            else
                            {
                                player.TSPlayer.SendMessage(string.Format("You do not have enough {0}s to use that command", ServerPointSystem.ServerPointSystem.currname), Color.Red);
                                e.Handled = true;
                                return;
                            }
                        }
                    }
                }
            }
            return;
        }
Пример #7
0
        public void OnChat(messageBuffer msg, int ply, string text, HandledEventArgs e)
        {
            string cmd = text.Split(' ')[0];

            if (TShock.Players[ply].IsLoggedIn)
            {
                EPRPlayer player = ServerPointSystem.ServerPointSystem.GetEPRPlayerByIndex(ply);
                if (cmd == "/warp")
                {
                    if (text.Split(' ').Length > 1)
                    {
                        if (TShock.Warps.FindWarp(text.Split(' ')[1]).WarpPos != Vector2.Zero)
                        {
                            if (!TShock.Players[ply].Group.HasPermission("freewarp"))
                            {
                                int             warpcosttemp = warpcost;
                                int             currbal      = player.DisplayAccount;
                                string          warpname     = text.Split(' ')[1];
                                List <SqlValue> where2       = new List <SqlValue>();
                                where2.Add(new SqlValue("Command", "'" + "warp " + warpname + "'"));
                                if (SQLEditor.ReadColumn("CommandCosts", "Cost", where2).Count == 1)
                                {
                                    warpcosttemp = Int32.Parse(SQLEditor.ReadColumn("CommandCosts", "Cost", where2)[0].ToString());
                                }
                                if (currbal < warpcosttemp)
                                {
                                    TShock.Players[ply].SendMessage("You do not have enough " + ServerPointSystem.ServerPointSystem.currname + "s!", Color.Red);
                                    TShock.Players[ply].SendMessage("You need " + warpcosttemp + " " + ServerPointSystem.ServerPointSystem.currname + "s to use that command", Color.Red);
                                    e.Handled = true;
                                    return;
                                }
                                else
                                {
                                    EPREvents.PointUse(player, warpcosttemp, PointUsage.Command);
                                    player.TSPlayer.SendMessage(string.Format("Warped to {0} for {1} {2}(s)", warpname, warpcosttemp, ServerPointSystem.ServerPointSystem.currname), Color.Yellow);
                                    return;
                                }
                            }
                            //else
                            //    return;
                        }
                        //else
                        //    return;
                    }
                    //else
                    return;
                }
                else if (cmd == "/heal")
                {
                    if (!TShock.Players[ply].Group.HasPermission("freeheal"))
                    {
                        int currbal = player.DisplayAccount;
                        if (currbal < healcost)
                        {
                            TShock.Players[ply].SendMessage("You do not have enough " + ServerPointSystem.ServerPointSystem.currname + "s!", Color.Red);
                            TShock.Players[ply].SendMessage("You need " + healcost + " " + ServerPointSystem.ServerPointSystem.currname + "s to use that command", Color.Red);
                            e.Handled = true;
                            return;
                        }
                        else
                        {
                            EPREvents.PointUse(player, healcost, PointUsage.Command);
                            return;
                        }
                    }
                }
                else if (cmd == "/tp")
                {
                    if (!TShock.Players[ply].Group.HasPermission("freetp"))
                    {
                        int currbal = player.DisplayAccount;
                        if (currbal < tpcost)
                        {
                            TShock.Players[ply].SendMessage("You do not have enough " + ServerPointSystem.ServerPointSystem.currname + "s!", Color.Red);
                            TShock.Players[ply].SendMessage("You need " + tpcost + " " + ServerPointSystem.ServerPointSystem.currname + "s to use that command", Color.Red);
                            e.Handled = true;
                            return;
                        }
                        else
                        {
                            EPREvents.PointUse(player, tpcost, PointUsage.Command);
                            return;
                        }
                    }
                }
                else if (cmd == "/buff")
                {
                    if (!TShock.Players[ply].Group.HasPermission("freebuff"))
                    {
                        int currbal = player.DisplayAccount;
                        if (currbal < buffcost)
                        {
                            TShock.Players[ply].SendMessage("You do not have enough " + ServerPointSystem.ServerPointSystem.currname + "s!", Color.Red);
                            TShock.Players[ply].SendMessage("You need " + buffcost + " " + ServerPointSystem.ServerPointSystem.currname + "s to use that command", Color.Red);
                            e.Handled = true;
                            return;
                        }
                        else
                        {
                            EPREvents.PointUse(player, buffcost, PointUsage.Command);
                        }
                    }
                }
            }
            return;
        }