Sharing my AFK command, inspired by THS.Shiniri command reworked it for my uses.
Features
- Paid AFK command ($10,000 per minute).
- If the player moves, they are refunded for the remaining time, and AFK mode is canceled.
cmd_afk(args){
assert(string::to_lower(args[0]) == "!afk");
if (args.size < 2){
self tell("Usage: !afk <minutes>");
return;
}
if (int(args[1]) < 0){
self tell("You can't be afk for negative time");
return;
}
if (!isNumeric(args[1])) {
self tell("Invalid input! Please enter a valid number.");
return;
}
if (int(args[1]) * 10000 > self.score){
self tell("You don't have enough money to be afk for that long");
return;
}
self.score -= int(args[1]) * 10000;
seconds_to_be_afk = int(args[1]) * 60;
if (seconds_to_be_afk > 1800) {
self tell("You can't be afk for more than 30 minutes");
return;
}
counter = 0;
for (i = 3; i > 0; i--) {
self tell("Going AFK in " + i + "...");
wait 1;
}
old_origin = self.origin;
old_angles = self getPlayerAngles();
for(;;) {
if (counter == 0) {
self.ignoreme = 1; // Zombies wont find the player
self enableInvulnerability(); // God mode is on
say(self.name + " is ^1AFK for " + args[1] + " minute(s)");
} else if (counter == seconds_to_be_afk) {
self.ignoreme = 0;
self disableInvulnerability();
say (self.name + " is no longer AFK");
break;
} else if (seconds_to_be_afk - counter <= 10) {
self tell("Time afk left: " + (seconds_to_be_afk - counter) + " seconds");
} else if ((seconds_to_be_afk - counter) % 10 == 0) {
self tell("Time afk left: " + (seconds_to_be_afk - counter) + " seconds");
}
// Check if the player has moved
if (self.origin != old_origin || self getPlayerAngles() != old_angles) {
remaining_seconds_afk = seconds_to_be_afk - counter;
self.ignoreme = 0;
self disableInvulnerability();
self tell("You moved! AFK disabled. Refunding remaining time.");
self.score += remaining_seconds_afk * 166;
say (self.name + " is no longer AFK");
break;
}
counter++;
wait 1;
}
}
isNumeric(str) {
if (!isDefined(str) || str == "") {
return false;
}
for (i = 0; i < str.size; i++) {
if (str[i] < "0" || str[i] > "9") {
return false;
}
}
return true;
}