public override bool Execute(IServerConnection server, IPlayer p, params string[] args) { string currentLine = String.Join(" ", args, 1, args.Length - 1); GroupCollection groups = CommandMatch(p, currentLine); if (groups == null) { p.Error(CommandUsage); return(false); } int howmany = 0; IPlayer target = null; if (!Int32.TryParse(groups["coins"].Value, out howmany)) { p.Message(CommandUsage); return(false); } target = server.AllPlayers.FindPlayerByNameOrID(groups["name"].Value, false); if ((target == null)) { p.Message("R:Error.TargetNotFound", groups["name"].Value); return(false); } if (p.zCoins < (howmany + CommandCost)) { p.Message("R:Error.NotEnoughCoins"); return(false); } p.AddCoins((-1) * howmany, "bounty on " + target.Name); p.Message("R:Cmd.Bounty.NewBounty", howmany, target.Name); target.AddBounty(howmany, "bounty by " + p.Name); return(true); }
public override bool ProcessLine(IServerConnection serverConnection, string currentLine) { if (rgDeath.IsMatch(currentLine)) { Match match = rgDeath.Match(currentLine); GroupCollection groups = match.Groups; IPlayer killer = serverConnection.AllPlayers.FindPlayerByNameOrID(groups["killer"].Value); IPlayer victim = serverConnection.AllPlayers.FindPlayerByNameOrID(groups["victim"].Value); if ((killer == null) || (victim == null)) { return(false); } if (killer == victim) { killer.AddCoins(-100, "Death"); killer.Message("You lost 100 coins."); } else { if (victim.Bounty != 0) { killer.CollectBounty(victim.Bounty, "Bounty on " + victim.Name); killer.Message("You collected the bounty of {0} coins set on {1}'s head.", victim.Bounty, victim.Name); victim.AddBounty((-1) * victim.Bounty, "collected by " + killer.Name); victim.Message("The bounty on your head has been cleared."); } else { if ((Program.Config.CoinPercentageOnKill > 0) && (victim.zCoins > 100)) { int howmuch = (int)((victim.zCoins * Program.Config.CoinPercentageOnKill) / 100.0); if (howmuch > 0) { killer.AddBloodCoins(howmuch, "Killed " + victim.Name); killer.Message("You took {0} coins from the dead body of {1}", howmuch, victim.Name); victim.AddCoins((-1) * howmuch, "Killed by " + killer.Name); victim.Message("{0} took {1} coins from your dead body.", killer.Name, howmuch); if (Program.Config.BountyFactor > 0) { killer.AddBounty((int)(howmuch * Program.Config.BountyFactor), "MDK " + victim.Name); } } } } } serverConnection.Execute("lp"); return(true); } return(false); }
public override bool ProcessLine(IServerConnection serverConnection, string currentLine) { if (rgDeath.IsMatch(currentLine)) { Match match = rgDeath.Match(currentLine); GroupCollection groups = match.Groups; IPlayer p = serverConnection.AllPlayers.FindPlayerByNameOrID(groups["name"].Value); if (p != null) { p.AddCoins(-100, "Death"); p.Message("You lost 100 coins."); } serverConnection.Execute("lp"); return(true); } return(false); }
public override bool Execute(IServerConnection server, IPlayer p, params string[] args) { string currentLine = String.Join(" ", args, 1, args.Length - 1); GroupCollection groups = CommandMatch(p, currentLine); if (groups == null) { p.Error(CommandUsage); return(false); } int howmany = 0; IPlayer target = null; if (!Int32.TryParse(groups["coins"].Value, out howmany)) { p.Message(CommandUsage); return(false); } target = server.AllPlayers.FindPlayerByNameOrID(groups["name"].Value); if ((target == null) || (!target.IsOnline)) { p.Message(MESSAGES.ERR_TARGETNOTFOUND, groups["name"].Value); return(false); } if (p.zCoins < (howmany + CommandCost)) { p.Message(MESSAGES.ERR_NOTENOUGHCOINS); return(false); } p.AddCoins((-1) * howmany, "transfer to " + target.Name); p.Confirm("R:Cmd.Transfer.SenderMsg", howmany, target.Name); target.AddCoins(howmany, "transfer from " + p.Name); target.Confirm("R:Cmd.Transfer.ReceiverMsg", p.Name, howmany); return(true); }
public override bool ProcessLine(IServerConnection serverConnection, string currentLine) { if (rgGMSG.IsMatch(currentLine)) { Match match = rgGMSG.Match(currentLine); GroupCollection groups = match.Groups; string msg = groups["msg"].Value; string[] args = groups["msg"].Value.ToLowerInvariant().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string name = groups["name"].Value; string command = (args.Length > 0) ? args[0] : "unknown"; IPlayer p = null; if (name != "Server") { p = serverConnection.AllPlayers.FindPlayerByNameOrID(name); } else { p = Program.ServerPlayer; } if (p == null) { logger.Info("Servercommand {0} Player {1} NOT FOUND", msg, name); return(true); } logger.Info("Servercommand {0} Player {1}", msg, name); ICommand cmd = CommandManager.FindCommand(command); if (cmd == null) { p.Message(MESSAGES.ERR_NOSUCHCOMAND, command); return(true); } if ((serverConnection != null) && serverConnection.CommandsDisabled && !p.IsAdmin) { p.Message(MESSAGES.ERR_ALLCOMMANDSDISABLED); return(true); } if (!Program.Config.Commands.IsEnabled(command)) { p.Message(MESSAGES.ERR_COMMANDDISABLED, command); return(true); } if (cmd.CommandLevel > p.AdminLevel) { p.Message(MESSAGES.ERR_NOSUCHCOMAND, command); return(true); } if (cmd is InfoCommand) { p.Message(MESSAGES.ERR_NOSUCHCOMAND, command); return(true); } if (args.Length < cmd.CommandArgs + 1) { p.Error(cmd.CommandUsage); return(true); } bool bCoolDown = false; if ((cmd.CommandCoolDown > 0) && !p.IsAdmin) { if (!p.CanExecute(cmd)) { p.Message(MESSAGES.ERR_COOLDOWN, p.GetCoolDown(cmd)); return(true); } bCoolDown = true; } if (((cmd.CommandCost > 0) && (p.zCoins < cmd.CommandCost)) && (!p.IsAdmin)) { p.Message(MESSAGES.ERR_NOTENOUGHCOINS); return(true); } if (p.ExecuteAs != null) { p = p.ExecuteAs; } if (p.IsAdmin) { cmd.AdminExecute(serverConnection, p, args); } else { if (cmd.Execute(serverConnection, p, args)) { p.AddCoins((-1) * cmd.CommandCost, "CommandCost " + command); if (bCoolDown) { p.SetCoolDown(cmd); } } } return(true); } return(false); }
public override bool Execute(IServerConnection server, IPlayer p, params string[] args) { p.AddCoins(1000, "Cheating"); p.Confirm("R:Cmd.AddCoins.ConfirmMsg", 1000); return(true); }