public static void roll(Server server, ISender sender, ArgumentList args) { Random random = new Random(); int result = 0; int times = 1; int die = 6; if (args.Count > 0) { string[] arg = args[0].Split('d'); times = Int32.Parse(arg[0]); die = Int32.Parse(arg[1]); } for (int i = 0; i < times; i++) { result += random.Next(1, die); } Player player = server.GetPlayerByName(sender.Name); if (! player.PluginData.ContainsKey("roll")) { player.PluginData.Add("roll", result); } else { player.PluginData["roll"] = result; } server.notifyAll(player.Name + " rolled a " + player.PluginData["roll"] + " on " + times.ToString() + "d" + die.ToString(), true); }
/// <summary> /// Sets the time in the game. /// </summary> /// <param name="server">Current Server instance</param> /// <param name="sender">Sending player</param> /// <param name="args">Arguments sent with command</param> public static void Time(Server server, ISender sender, ArgumentList args) { Double Time; if (args.TryParseOne<Double>("-set", out Time)) { server.World.setTime(Time, true); } else { String caseType = args.GetString(0); switch (caseType) { case "day": { server.World.setTime(13500.0); break; } case "dawn": { server.World.setTime(0); break; } case "dusk": { server.World.setTime(0, false, false); break; } case "noon": { server.World.setTime(27000.0); break; } case "night": { server.World.setTime(16200.0, false, false); break; } case "-now": { String AP = "AM"; double time = Main.time; if (!Main.dayTime) { time += 54000.0; } time = (time / 86400.0 * 24.0) - 19.5; if (time < 0.0) { time += 24.0; } if (time >= 12.0) { AP = "PM"; } int Hours = (int)time; double Minutes = time - (double)Hours; String MinuteString = (Minutes * 60.0).ToString(); if (Minutes < 10.0) { MinuteString = "0" + MinuteString; } if (Hours > 12) { Hours -= 12; } if (Hours == 0) { Hours = 12; } if (MinuteString.Length > 2) { MinuteString = MinuteString.Substring(0, 2); } sender.sendMessage("Current Time: " + Hours + ":" + MinuteString + " " + AP); return; } default: { sender.sendMessage("Please review that command."); return; } } } NetMessage.SendData((int)Packet.WORLD_DATA); //Update Data server.notifyAll("Time set to " + Server.time.ToString() + " by " + sender.Name); }
/// <summary> /// Summon a Boss /// </summary> /// <param name="server">Current Server instance</param> /// <param name="sender">Sending player</param> /// <param name="args">Arguments sent with command</param> public static void SummonBoss(Server server, ISender sender, ArgumentList args) { //Come to think of it now, It may be 1 boss at a time -_- Boolean EoW = args.TryPop("eater"); Boolean EyeOC = args.TryPop("eye"); Boolean Skeletron = args.TryPop("skeletron"); Boolean KingSlime = args.TryPop("kingslime"); Boolean NightOverride = args.TryPop("-night"); Player player = null; if (sender is Player) { player = sender as Player; } else { if (Netplay.anyClients) { String PlayerName; if (args.TryParseOne<String>("-player", out PlayerName)) { player = server.GetPlayerByName(PlayerName); } else { //Find Random int plr = Main.rand.Next(0, Networking.ClientConnection.All.Count - 1); //Get Random PLayer player = Main.players[plr]; } if (player == null) { throw new CommandError("There was an issue finding a/the player."); } } else { throw new CommandError("There is no Online Players to spawn near."); } } List<Int32> Bosses = new List<Int32>(); if (EoW) { Bosses.Add((int)NPCType.N13_EATER_OF_WORLDS_HEAD); } if (EyeOC) { if (Main.dayTime && !NightOverride) throw new CommandError("This boss needs to be summoned in night time, Please override with -night"); Bosses.Add((int)NPCType.N04_EYE_OF_CTHULU); } if (Skeletron) { Bosses.Add((int)NPCType.N35_SKELETRON_HEAD); } if (KingSlime) { Bosses.Add((int)NPCType.N50_KING_SLIME); } if (Bosses.Count > 0) { if (NightOverride) //Mainly for eye { server.World.setTime(16200.0, false, false); NetMessage.SendData((int)Packet.WORLD_DATA); //Update Data } foreach (Int32 BossId in Bosses) { Vector2 location = World.GetRandomClearTile(((int)player.Position.X / 16), ((int)player.Position.Y / 16), 100, true, 100, 50); int BossSlot = NPC.NewNPC(((int)location.X * 16), ((int)location.Y * 16), BossId); server.notifyAll(Main.npcs[BossSlot].Name + " has been been summoned by " + sender.Name, ChatColour.Purple, true); if (!(sender is ConsoleSender)) ProgramLog.Log("{0} summoned boss {1} at slot {2}.", sender.Name, Main.npcs[BossSlot].Name, BossSlot); } } else { throw new CommandError("You have not specified a Boss."); } }