예제 #1
0
        private void onInitialize(EventArgs args)
        {
            pvpConfig = PvPConfig.Read();
            ffaStartTimer.Interval = pvpConfig.ffaSignupTime * 1000;
            ffaStartTimer.Elapsed += onFFAStart;

            Commands.ChatCommands.Add(new Command("duel.start", DuelCMD, "duel"));
            Commands.ChatCommands.Add(new Command("ffa.start", FFACMD, "ffa"));
            Commands.ChatCommands.Add(new Command("pvp.reload", EventReload, "eventreload", "ereload"));
        }
예제 #2
0
        public static PvPConfig Read()
        {
            if (!File.Exists(Path.Combine(TShock.SavePath, "pvpconfig.json")))
            {
                TShock.Log.ConsoleInfo("PvPConfig.json not found. Creating new one...");
                PvPConfig pvpc = new PvPConfig();
                File.WriteAllText(Path.Combine(TShock.SavePath, "pvpconfig.json"), JsonConvert.SerializeObject(pvpc, Formatting.Indented));
                return(pvpc);
            }

            try
            {
                string    raw  = File.ReadAllText(Path.Combine(TShock.SavePath, "pvpconfig.json"));
                PvPConfig pvpc = JsonConvert.DeserializeObject <PvPConfig>(raw);
                return(pvpc);
            }
            catch
            {
                TShock.Log.ConsoleError("PvPConfig.json not valid. Creating new one...");
                PvPConfig pvpc = new PvPConfig();
                File.WriteAllText(Path.Combine(TShock.SavePath, "pvpconfig.json"), JsonConvert.SerializeObject(pvpc, Formatting.Indented));
                return(pvpc);
            }
        }
예제 #3
0
        //#region Commands
        //private void DuelCMD(CommandArgs args)
        //{
        //	/*
        //	 * /duel <player name>
        //	 * /duel accept/decline
        //	 * /duel quit
        //	 * /duel stop
        //	 */

        //	if (DuelEvent.disabled)
        //	{
        //		args.Player.SendErrorMessage("Dueling is currently disabled.");
        //		return;
        //	}

        //	if (args.Parameters.Count == 0 || args.Parameters[0].ToLower() == "help")
        //	{
        //		args.Player.SendErrorMessage("Invalid syntax:");
        //		args.Player.SendErrorMessage("/duel <player name>");
        //		args.Player.SendErrorMessage("/duel accept/decline");
        //		args.Player.SendErrorMessage("/duel quit");
        //		if (args.Player.HasPermission("pvp.mod"))
        //			args.Player.SendErrorMessage("/duel stop");
        //		return;
        //	}
        //	switch (args.Parameters[0].ToLower())
        //	{
        //		case "accept":
        //			var result = from Tuple<int, int> t in duelChallenges where t.Item2 == args.Player.Index select t;
        //			if (result.Count() == 0)
        //				args.Player.SendErrorMessage("You do not have any pending challenges!");
        //			else if (FFAEvent.state != FFAState.inactive && FFAEvent.containsPlayer(args.Player.Index))
        //				args.Player.SendErrorMessage("You cannot accept duel invitations while you are in FFA!");
        //			else if (ffaPlayers.Contains(args.Player.Index))
        //				args.Player.SendErrorMessage("You cannot accept duel invitaitons while signed up for FFA!");
        //			else
        //			{
        //				int p1 = result.First().Item1;
        //				duelChallenges.Clear();
        //				DuelEvent.StartPreDuel(TShock.Players[p1], args.Player);
        //			}
        //			break;
        //		case "decline":
        //			result = from Tuple<int, int> t in duelChallenges where t.Item2 == args.Player.Index select t;
        //			if (result.Count() == 0)
        //				args.Player.SendErrorMessage("You do not have any pending challenges!");
        //			else
        //			{
        //				int p1 = result.First().Item1;
        //				args.Player.SendSuccessMessage($"You have declined the challenge from {TShock.Players[p1].Name}");
        //			}
        //			break;
        //		case "quit":
        //			if (DuelEvent.state == DuelState.inactive)
        //				args.Player.SendErrorMessage("You are not in a duel!");
        //			else if (DuelEvent.player1.tsplayer.Index != args.Player.Index && DuelEvent.player2.tsplayer.Index != args.Player.Index)
        //				args.Player.SendErrorMessage("You are not in a duel!");
        //			else
        //				DuelEvent.endMatch(Endings.playerQuit, args.Player.Name);
        //			break;
        //		case "stop":
        //			if (!args.Player.HasPermission("pvp.mod"))
        //				args.Player.SendErrorMessage("You do not have access to this command.");
        //			else if (DuelEvent.state == DuelState.inactive)
        //				args.Player.SendErrorMessage("There is no ongoing duel!");
        //			else
        //			{
        //				args.Player.SendSuccessMessage("You have ended the duel.");
        //				DuelEvent.endMatch(Endings.forceEnd, args.Player.Name);
        //			}
        //			break;
        //		default:
        //			if (DuelEvent.state != DuelState.inactive)
        //			{
        //				args.Player.SendErrorMessage("There is already an ongoing duel!");
        //				return;
        //			}
        //			else if (FFAEvent.state != FFAState.inactive && FFAEvent.containsPlayer(args.Player.Index))
        //			{
        //				args.Player.SendErrorMessage("You cannot send duel invitations while you are playing FFA!");
        //				return;
        //			}
        //			else if (ffaPlayers.Contains(args.Player.Index))
        //			{
        //				args.Player.SendErrorMessage("You cannot send duel invitaitons while you are signed up to play FFA!");
        //				return;
        //			}
        //			string playername = string.Join(" ", args.Parameters);

        //			var plist = TShock.Utils.FindPlayer(playername);

        //			if (plist.Count == 0)
        //			{
        //				args.Player.SendErrorMessage("No players found by that name.");
        //				return;
        //			}
        //			else if (plist.Count > 1)
        //			{
        //				TShock.Utils.SendMultipleMatchError(args.Player, plist.Select(p => p.Name));
        //				return;
        //			}
        //			else if (plist[0].Index == args.Player.Index)
        //			{
        //				args.Player.SendErrorMessage("You cannot duel yourself!");
        //				return;
        //			}

        //			result = from Tuple<int, int> t in duelChallenges where t.Item2 == args.Player.Index && t.Item1 == plist[0].Index select t;

        //			if (result.Count() == 1)
        //			{
        //				duelChallenges.Clear();
        //				DuelEvent.StartPreDuel(TShock.Players[result.First().Item1], args.Player);
        //				return;
        //			}

        //			args.Player.SendSuccessMessage($"{plist[0].Name} has been sent a duel challenge!");
        //			plist[0].SendInfoMessage($"{args.Player.Name} has challenged you to a duel! Use /duel accept to duel, or /duel decline to reject the challenge.");
        //			duelChallenges.RemoveAll(p => p.Item1 == args.Player.Index);
        //			duelChallenges.Add(new Tuple<int, int>(args.Player.Index, plist[0].Index));
        //			break;
        //	}
        //}

        //private void FFACMD(CommandArgs args)
        //{
        //	if (FFAEvent.disabled)
        //	{
        //		args.Player.SendErrorMessage("FFA is currently disabled.");
        //		return;
        //	}

        //	// ffa start
        //	// ffa join
        //	// ffa quit
        //	// ffa stop
        //	if (args.Parameters.Count == 0 || args.Parameters[0].ToLower() == "help")
        //	{
        //		if (args.Parameters.Count == 0)
        //			args.Player.SendErrorMessage("Invalid syntax:");
        //		args.Player.SendErrorMessage("/ffa start");
        //		args.Player.SendErrorMessage("/ffa join");
        //		args.Player.SendErrorMessage("/ffa quit");
        //		if (args.Player.HasPermission("pvp.mod"))
        //			args.Player.SendErrorMessage("/ffa stop");
        //		return;
        //	}
        //	switch (args.Parameters[0].ToLower())
        //	{
        //		case "start":
        //			if (FFAEvent.state != FFAState.inactive)
        //				args.Player.SendErrorMessage("There is already an ongoing FFA event!");
        //			else if (ffaPlayers.Count != 0)
        //				args.Player.SendErrorMessage("An FFA event is already in sign-ups! Use '/ffa join' to join!");
        //			else if (DuelEvent.state != DuelState.inactive && DuelEvent.containsPlayer(args.Player.Index))
        //				args.Player.SendErrorMessage("You cannot join FFA while you are dueling!");
        //			else
        //			{
        //				ffaPlayers.Add(args.Player.Index);
        //				ffaStartTimer.Start();
        //				TSPlayer.All.SendInfoMessage($"{args.Player.Name} has started a game of FFA! Use '/ffa join' to join!");
        //			}
        //			break;
        //		case "join":
        //			if (ffaPlayers.Count == 0)
        //				args.Player.SendErrorMessage("There is no FFA event in signups!");
        //			else if (ffaPlayers.Contains(args.Player.Index))
        //				args.Player.SendErrorMessage("You have already signed up for this FFA match!");
        //			else
        //			{
        //				ffaPlayers.Add(args.Player.Index);
        //				TSPlayer.All.SendInfoMessage($"{args.Player.Name} has joined the FFA match!");
        //			}
        //			break;
        //		case "quit":
        //			if (FFAEvent.state != FFAState.inactive && FFAEvent.containsPlayer(args.Player.Index))
        //			{
        //				FFAEvent.onPlayerLeave(null, new FFALeaveEventArgs(args.Player.Index));
        //				args.Player.SendSuccessMessage($"You have left the FFA match.");
        //			}
        //			else if (ffaPlayers.Contains(args.Player.Index))
        //			{
        //				args.Player.SendSuccessMessage($"You have left the FFA match.");
        //				ffaPlayers.Remove(args.Player.Index);
        //			}
        //			else
        //				args.Player.SendErrorMessage($"You are not currently in an FFA match!");
        //			break;
        //		case "stop":
        //			if (FFAEvent.state != FFAState.inactive)
        //			{
        //				args.Player.SendSuccessMessage($"Stopped the FFA event.");
        //				FFAEvent.endMatch(Endings.forceEnd, args.Player.Name);
        //			}
        //			else if (ffaPlayers.Count > 0)
        //			{
        //				ffaPlayers.Clear();
        //				args.Player.SendSuccessMessage($"Stopped the FFA event.");
        //				ffaStartTimer.Stop();
        //			}
        //			else
        //				args.Player.SendErrorMessage("No FFA event to end!");
        //			break;
        //		default:
        //			args.Player.SendErrorMessage("Invalid syntax:");
        //			args.Player.SendErrorMessage("/ffa start");
        //			args.Player.SendErrorMessage("/ffa join");
        //			args.Player.SendErrorMessage("/ffa quit");
        //			if (args.Player.HasPermission("pvp.mod"))
        //				args.Player.SendErrorMessage("/ffa stop");
        //			break;
        //	}
        //}

        private void EventReload(CommandArgs args)
        {
            pvpConfig = PvPConfig.Read();

            args.Player.SendSuccessMessage("PvP Events reloaded.");
        }