+void ClientCommand_wpeditor(entity caller, int request, int argc)
+{
+ switch (request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ if (!autocvar_g_waypointeditor)
+ {
+ sprint(caller, "ERROR: this command works only if the waypoint editor is on\n");
+ return;
+ }
+
+ if (argv(1) != "")
+ {
+ if (argv(1) == "spawn")
+ {
+ if (!IS_PLAYER(caller))
+ sprint(caller, "ERROR: this command works only if you are player\n");
+ else
+ waypoint_spawn_fromeditor(caller, (argv(2) == "crosshair"));
+ return;
+ }
+ else if (argv(1) == "remove")
+ {
+ if (!IS_PLAYER(caller))
+ sprint(caller, "ERROR: this command works only if you are player\n");
+ else
+ waypoint_remove_fromeditor(caller);
+ return;
+ }
+ else if (argv(1) == "unreachable")
+ {
+ if (!IS_PLAYER(caller))
+ sprint(caller, "ERROR: this command works only if you are player\n");
+ else
+ waypoint_unreachable(caller);
+ return;
+ }
+ else if (argv(1) == "saveall")
+ {
+ waypoint_saveall();
+ return;
+ }
+ else if (argv(1) == "relinkall")
+ {
+ waypoint_schedulerelinkall();
+ return;
+ }
+ else if (argv(1) == "symaxis")
+ {
+ if (argv(2) == "set" || argv(2) == "get")
+ {
+ waypoint_getSymmetricalAxis_cmd(caller, (argv(2) == "set"), 3);
+ return;
+ }
+ }
+ else if (argv(1) == "symorigin")
+ {
+ if (argv(2) == "set" || argv(2) == "get")
+ {
+ waypoint_getSymmetricalOrigin_cmd(caller, (argv(2) == "set"), 3);
+ return;
+ }
+ }
+ }
+ }
+
+ default:
+ sprint(caller, "Incorrect parameters for ^2wpeditor^7\n");
+ case CMD_REQUEST_USAGE:
+ {
+ sprint(caller, "\nUsage:^3 cmd wpeditor action\n");
+ sprint(caller, " Where 'action' can be: spawn, remove, unreachable, saveall, relinkall,\n");
+ sprint(caller, " symorigin get|set\n");
+ sprint(caller, " symorigin get|set p1 p2 ... pX\n");
+ sprint(caller, " symaxis get|set p1 p2\n");
+ sprint(caller, " where p1 p2 ... pX are positions \"x y z\" (z can be omitted)\n");
+ sprint(caller, " symorigin and symaxis commands are useful to determine origin/axis of symmetry"
+ " on maps without ctf flags or where flags aren't perfectly symmetrical\n");
+ return;
+ }
+ }
+}
+
+void ClientCommand_join(entity caller, int request)