X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fgamecommand.qc;h=74dc541a6751dd35cb4e531ffe7b54502736a12c;hb=2b2f4843f735c217616212640a58e88f5dc2a5f0;hp=d40bc9ec38837ac364a1d8493e72407811cc4acd;hpb=040e249f10a88765465fc8d7279a666e68760f91;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/gamecommand.qc b/qcsrc/server/gamecommand.qc index d40bc9ec3..74dc541a6 100644 --- a/qcsrc/server/gamecommand.qc +++ b/qcsrc/server/gamecommand.qc @@ -1,6 +1,6 @@ // ===================================================== // Server side game commands code, reworked by Samual -// Last updated: November 8th, 2011 +// Last updated: November 30th, 2011 // ===================================================== #define GC_REQUEST_COMMAND 1 @@ -203,7 +203,7 @@ void GameCommand_allspec(float request, float argc) string reason = argv(1); float i; - FOR_EACH_PLAYER(client) + FOR_EACH_REALPLAYER(client) { self = client; PutObserverInServer(); @@ -622,7 +622,7 @@ void GameCommand_defer_clear_all(float request) GameCommand_defer_clear(GC_REQUEST_COMMAND, argc); ++i; } - if(i) { bprint(strcat("Successfully stuffed defer clear to all clients (", ftos(i), ")\n")); } // should a message be added if no players were found? + if(i) { print(strcat("Successfully stuffed defer clear to all clients (", ftos(i), ")\n")); } // should a message be added if no players were found? return; } @@ -947,7 +947,9 @@ void GameCommand_lockteams(float request) bprint("^1The teams are now locked.\n"); } else - bprint("That command can only be used in a team-based gamemode.\n"); + { + bprint("lockteams command can only be used in a team-based gamemode.\n"); + } return; } @@ -1121,7 +1123,7 @@ void GameCommand_moveplayer(float request, float argc) } if(successful) - print("Successfully moved players ", successful, " to destination ", destination, ".\n"); + bprint("Successfully moved players ", successful, " to destination ", destination, ".\n"); else print("No players given (", original_targets, ") are able to move.\n"); @@ -1214,7 +1216,7 @@ void GameCommand_playerdemo(float request, float argc) // UNTESTED case "read": { // TODO: Create a general command for looking this up, save a lot of space everywhere in this file - entno = stof(argv(2)); + entno = GetFilteredNumber(argv(2)); if((entno < 1) | (entno > maxclients)) { print("Player ", argv(2), " doesn't exist\n"); return; @@ -1231,7 +1233,7 @@ void GameCommand_playerdemo(float request, float argc) // UNTESTED case "write": { - entno = stof(argv(2)); + entno = GetFilteredNumber(argv(2)); if((entno < 1) | (entno > maxclients)) { print("Player ", argv(2), " doesn't exist\n"); return; @@ -1245,7 +1247,7 @@ void GameCommand_playerdemo(float request, float argc) // UNTESTED case "auto_read_and_write": { s = argv(2); - n = stof(argv(3)); + n = GetFilteredNumber(argv(3)); cvar_set("bot_number", ftos(n)); localcmd("wait; wait; wait\n"); for(i = 0; i < n; ++i) @@ -1257,7 +1259,7 @@ void GameCommand_playerdemo(float request, float argc) // UNTESTED case "auto_read": { s = argv(2); - n = stof(argv(3)); + n = GetFilteredNumber(argv(3)); cvar_set("bot_number", ftos(n)); localcmd("wait; wait; wait\n"); for(i = 0; i < n; ++i) @@ -1396,16 +1398,17 @@ void GameCommand_setbots(float request, float argc) { case GC_REQUEST_COMMAND: { - if(argc >= 3 && argv(1) == "setbots") + if(argc >= 2) { cvar_settemp("minplayers", "0"); - cvar_settemp("bot_number", argv(2)); + cvar_settemp("bot_number", argv(1)); bot_fixcount(); return; } } default: + print("Incorrect parameters for ^2setbots^7\n"); case GC_REQUEST_USAGE: { print("\nUsage:^3 sv_cmd setbots botnumber\n"); @@ -1425,7 +1428,7 @@ void GameCommand_shuffleteams(float request) if(teamplay) { entity tmp_player; - float i, x, z, t_teams, t_players, random_number, team_color; + float i, x, z, t_teams, t_players, team_color; // count the total amount of players and total amount of teams FOR_EACH_PLAYER(tmp_player) @@ -1445,15 +1448,15 @@ void GameCommand_shuffleteams(float request) { for(;;) { - random_number = bound(1, floor(random() * maxclients) + 1, maxclients); + i = bound(1, floor(random() * maxclients) + 1, maxclients); - if(shuffleteams_players[random_number]) + if(shuffleteams_players[i]) { continue; // a player is already assigned to this slot } else { - shuffleteams_players[random_number] = num_for_edict(tmp_player); + shuffleteams_players[i] = num_for_edict(tmp_player); break; } } @@ -1470,24 +1473,28 @@ void GameCommand_shuffleteams(float request) // sort through the random list of players made earlier for(z = 1; z <= maxclients; ++z) - { - if(shuffleteams_teams[i] >= x) - break; // move on to next team - - if not(shuffleteams_players[z]) - continue; // not a player, move on to next random slot - - self = edict_num(shuffleteams_players[z]); // TODO: add sanity checks for this entity to make sure it's okay and not some error. - if(self.team != team_color) + { + if not(shuffleteams_teams[i] >= x) { - MoveToTeam(self, team_color, 6, 0); + if not(shuffleteams_players[z]) + continue; // not a player, move on to next random slot + + self = edict_num(shuffleteams_players[z]); // TODO: add sanity checks for this entity to make sure it's okay and not some error. + + if(self.team != team_color) + MoveToTeam(self, team_color, 6, 0); + shuffleteams_players[z] = 0; shuffleteams_teams[i] = shuffleteams_teams[i] + 1; } + else + { + break; // move on to next team + } } } - print("Successfully shuffled the players around randomly.\n"); + bprint("Successfully shuffled the players around randomly.\n"); // clear the buffers now for (i=0; i