Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global prefix = "!";
- global ranks = Dynamic_Object();
- ranks["DayDun"] = 2; // Owner
- ranks["MeanDean"] = 1; // Trusted
- def string::getRank() {
- if (ranks.has_attr(this)) {
- return ranks[this];
- }
- return 0;
- }
- def parseSelector(player, selector) {
- var out = [];
- if (selector == "@a") {
- for (var i=0; i<CountPlayers(); ++i) {
- out.push_back(GetPlayerAtIndex(i));
- }
- } else if (selector == "@me") {
- out.push_back(player);
- } else {
- out.push_back(selector);
- }
- return out;
- }
- class Command {
- var rank;
- var usage;
- var func;
- def Command(rank, usage, func) {
- this.rank = rank;
- this.usage = usage;
- this.func = func;
- }
- }
- global commands = Dynamic_Object();
- commands["help"] = Command(0, "!help (<cmd>)", fun(player, args) {
- if (args.size() >= 1) {
- if (!commands.has_attr(args[0])) {
- return false;
- }
- ConsoleMessage(player, "Usage: " + commands[args[0]].usage);
- } else {
- var cmds = [];
- var range = commands.get_attrs().range();
- while(!range.empty()) {
- cmds.push_back(prefix + range.front().first());
- range.pop_front();
- }
- ConsoleMessage(player, cmds.join(", "));
- }
- return true;
- });
- commands["tint"] = Command(0, "!tint <selector> <color>", fun(player, args) {
- if (args.size() != 2) {
- return false;
- }
- var players = parseSelector(player, args[0]);
- var color = to_int(args[1]);
- if (color < 0 || color > 9) {
- return false;
- }
- for (var i=0; i<players.size(); ++i) {
- TintPlayer(players[i], color);
- }
- return true;
- });
- commands["gravity"] = Command(1, "!gravity <value>", fun(player, args) {
- if (args.size() != 1) {
- return false;
- }
- var value = to_float(args[0]);
- if (value < 0.5 || value > 1.0) {
- return false;
- }
- Gravity(value);
- return true;
- });
- commands["players"] = Command(0, "!players", fun(player, args) {
- var out = [];
- for (var i=0; i<CountPlayers(); ++i) {
- var p = GetPlayerAtIndex(i);
- out.push_back("^3${p} ^7[^1${GetPlayerHealth(p)}^7] (${GetPlayerX(p)}, ${GetPlayerY(p)})");
- }
- ConsoleMessage(player, out.join(", "));
- return true;
- });
- commands["tp"] = Command(1, "!tp <selector> (<x> <y>|<player>)", fun(player, args) {
- if (args.size() != 2 && args.size() != 3) {
- return false;
- }
- var players = parseSelector(player, args[0]);
- var x;
- var y;
- if (args.size() == 2) {
- x = GetPlayerX(args[1]);
- y = GetPlayerY(args[1]);
- } else {
- x = to_int(args[1]);
- y = to_int(args[2]);
- }
- for (var i=0; i<players.size(); ++i) {
- TeleportPlayer(players[i], x, y);
- }
- return true;
- });
- commands["big"] = Command(1, "!big <selector> <message>", fun(player, args) {
- if (args.size() < 2) {
- return false;
- }
- var players = parseSelector(player, args[0]);
- args.erase_at(0);
- var msg = args.join(" ");
- for (var i=0; i<players.size(); ++i) {
- BigMessage(players[i], msg);
- }
- return true;
- });
- commands["console"] = Command(1, "!console <selector> <message>", fun(player, args) {
- if (args.size() < 2) {
- return false;
- }
- var players = parseSelector(player, args[0]);
- args.erase_at(0);
- var msg = args.join(" ");
- for (var i=0; i<players.size(); ++i) {
- ConsoleMessage(players[i], msg);
- }
- return true;
- });
- def string::split(delim) {
- var out = [];
- var delimSize = delim.size()
- var i = 0;
- while (true) {
- var next = this.find(delim, i);
- out.push_back(this.substr(i, next - i));
- if (next == -1) {
- break;
- }
- i = next + delimSize;
- }
- return out;
- }
- def OnPlayerChat(player, input) {
- if (input.find(prefix) == 0) {
- var args = input.substr(1, input.size()).split(" ");
- if (commands.has_attr(args[0])) {
- var cmd = commands[args[0]];
- args.erase_at(0);
- var rank = player.getRank();
- if (rank >= cmd.rank) {
- var result := cmd.func(player, args);
- if (result != true) {
- var err = "^1Usage: " + cmd.usage;
- ConsoleMessage(player, err);
- }
- } else {
- var err = "^1You are not permitted to use this command!";
- ConsoleMessage(player, err);
- }
- } else {
- var err = "^1Unknown command! Type !help for help";
- ConsoleMessage(player, err);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement