diff --git a/chat_commands/zm/README.md b/chat_commands/zm/README.md index 7a985d5..29f76e2 100644 --- a/chat_commands/zm/README.md +++ b/chat_commands/zm/README.md @@ -4,17 +4,19 @@ These scripts go in `scripts\zm` ## chat_command_points.gsc -3 related commands in one file: +4 related commands in one file: - Set points - Add points - Take/remove points +- Give/transfer points | Name | Description | Arguments expected | Example | Permission level | |---|---|---|---|---| | setpoints | Changes how much points the targeted player has | (1) the name of the targeted player (2) the new amount of points to set | `!setpoints me 50000` | 3 | | addpoints | Gives points to the targeted player | (1) the name of the targeted player (2) the amount of points to give | `!addpoints Resxt 2500` | 3 | | takepoints | Takes/removes points from the targeted player | (1) the name of the targeted player (2) the amount of points to take from the player | `!takepoints Resxt 500` | 3 | +| givepoints | Gives/transfers points from the player running the command to the targeted player | (1) the name of the targeted player (2) the amount of points to give | `!givepoints Resxt 2500` | 2 | ## chat_command_rounds.gsc diff --git a/chat_commands/zm/chat_command_points.gsc b/chat_commands/zm/chat_command_points.gsc index ad3e98f..e926f40 100644 --- a/chat_commands/zm/chat_command_points.gsc +++ b/chat_commands/zm/chat_command_points.gsc @@ -5,6 +5,7 @@ Init() CreateCommand(level.chat_commands["ports"], "setpoints", "function", ::SetPointsCommand, 3); CreateCommand(level.chat_commands["ports"], "addpoints", "function", ::AddPointsCommand, 3); CreateCommand(level.chat_commands["ports"], "takepoints", "function", ::TakePointsCommand, 3); + CreateCommand(level.chat_commands["ports"], "givepoints", "function", ::GivePointsCommand, 2, [], array("pay", "transferpoints")); } @@ -56,6 +57,21 @@ TakePointsCommand(args) } } +GivePointsCommand(args) +{ + if (args.size < 2) + { + return NotEnoughArgsError(2); + } + + error = GivePoints(args[0], args[1]); + + if (IsDefined(error)) + { + return error; + } +} + /* Logic section */ @@ -94,4 +110,29 @@ TakePlayerPoints(playerName, points) } player.score -= int(points); +} + +GivePoints(playerName, points) +{ + player = FindPlayerByName(playerName); + + if (!IsDefined(player)) + { + return PlayerDoesNotExistError(playerName); + } + + if (int(points) <= 0) + { + return; + } + + if (int(self.score) >= int(points)) + { + self.score -= int(points); + player.score += int(points); + } + else + { + return NotEnoughPointsError(); + } } \ No newline at end of file