if (gamemode == GAME_DELUXEQUAKE)
Cvar_Set(&cvars_all, "warpmark", "");
if (gamemode == GAME_DELUXEQUAKE)
Cvar_Set(&cvars_all, "warpmark", "");
svs.serverflags = 0; // haven't completed an episode yet
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
svs.serverflags = 0; // haven't completed an episode yet
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
SV_SaveSpawnparms ();
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
SV_SaveSpawnparms ();
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
print ("version: %s build %s (gamename %s)\n", gamename, buildstring, gamenetworkfiltername);
print ("protocol: %i (%s)\n", Protocol_NumberForEnum(sv.protocol), Protocol_NameForEnum(sv.protocol));
print ("map: %s\n", sv.name);
print ("version: %s build %s (gamename %s)\n", gamename, buildstring, gamenetworkfiltername);
print ("protocol: %i (%s)\n", Protocol_NumberForEnum(sv.protocol), Protocol_NameForEnum(sv.protocol));
print ("map: %s\n", sv.name);
- SV_ClientPrintf("Kicked by %s: %s\n", who, message);
+ SV_DropClient (false, va(reason, sizeof(reason), "Kicked by %s: %s", who, message)); // kicked
+ //SV_ClientPrintf("Kicked by %s: %s\n", who, message);
- SV_ClientPrintf("Kicked by %s\n", who);
- SV_DropClient (false); // kicked
+ //SV_ClientPrintf("Kicked by %s\n", who);
+ SV_DropClient (false, va(reason, sizeof(reason), "Kicked by %s", who)); // kicked
- if(!(key = PRVM_ED_FindField(prog, Cmd_Argv(cmd, i))))
- {
- print("Key %s not found!\n", Cmd_Argv(cmd, i));
- PRVM_ED_Free(prog, ed);
- return;
- }
+ print("Key %s not found!\n", Cmd_Argv(cmd, i));
+ PRVM_ED_Free(prog, ed);
+ return;
+ }
- /*
- * This is mostly for dedicated server console, but if the
- * player gave a custom origin, we can ignore the traceline.
- */
- if(!strcmp(Cmd_Argv(cmd, i), "origin"))
- haveorigin = true;
+ /*
+ * This is mostly for dedicated server console, but if the
+ * player gave a custom origin, we can ignore the traceline.
+ */
+ if(!strcmp(Cmd_Argv(cmd, i), "origin"))
+ haveorigin = true;
- expectval = true;
- }
- else
- {
- PRVM_ED_ParseEpair(prog, ed, key, Cmd_Argv(cmd, i), false);
- expectval = false;
- }
+ if (i + 1 < Cmd_Argc(cmd))
+ PRVM_ED_ParseEpair(prog, ed, key, Cmd_Argv(cmd, i+1), false);
{
print("Removed a \"%s\"\n", PRVM_GetString(prog, PRVM_serveredictstring(ed, classname)));
PRVM_ED_ClearEdict(prog, ed);
{
print("Removed a \"%s\"\n", PRVM_GetString(prog, PRVM_serveredictstring(ed, classname)));
PRVM_ED_ClearEdict(prog, ed);
for (i = 0, rmcount = 0, ed = PRVM_EDICT_NUM(i); i < prog->num_edicts; i++, ed = PRVM_NEXT_EDICT(ed))
{
for (i = 0, rmcount = 0, ed = PRVM_EDICT_NUM(i); i < prog->num_edicts; i++, ed = PRVM_NEXT_EDICT(ed))
{
- if(!ed->priv.required->free && !strcmp(PRVM_GetString(prog, PRVM_serveredictstring(ed, classname)), Cmd_Argv(cmd, 1)))
+ if(!ed->free && !strcmp(PRVM_GetString(prog, PRVM_serveredictstring(ed, classname)), Cmd_Argv(cmd, 1)))
Cmd_AddCommand(CF_SHARED, "viewnext", SV_Viewnext_f, "change to next animation frame of viewthing entity in current level");
Cmd_AddCommand(CF_SHARED, "viewprev", SV_Viewprev_f, "change to previous animation frame of viewthing entity in current level");
Cmd_AddCommand(CF_SHARED, "maxplayers", SV_MaxPlayers_f, "sets limit on how many players (or bots) may be connected to the server at once");
Cmd_AddCommand(CF_SHARED, "viewnext", SV_Viewnext_f, "change to next animation frame of viewthing entity in current level");
Cmd_AddCommand(CF_SHARED, "viewprev", SV_Viewprev_f, "change to previous animation frame of viewthing entity in current level");
Cmd_AddCommand(CF_SHARED, "maxplayers", SV_MaxPlayers_f, "sets limit on how many players (or bots) may be connected to the server at once");
- // commands that do not have automatic forwarding from cmd_client, these are internal details of the network protocol and not of interest to users (if they know what they are doing they can still use a generic "cmd prespawn" or similar)
+ // commands that do not have automatic forwarding from cmd_local, these are internal details of the network protocol and not of interest to users (if they know what they are doing they can still use a generic "cmd prespawn" or similar)
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "prespawn", SV_PreSpawn_f, "internal use - signon 1 (client acknowledges that server information has been received)");
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "spawn", SV_Spawn_f, "internal use - signon 2 (client has sent player information, and is asking server to send scoreboard rankings)");
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "begin", SV_Begin_f, "internal use - signon 3 (client asks server to start sending entities, and will go to signon 4 (playing) when the first entity update is received)");
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "prespawn", SV_PreSpawn_f, "internal use - signon 1 (client acknowledges that server information has been received)");
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "spawn", SV_Spawn_f, "internal use - signon 2 (client has sent player information, and is asking server to send scoreboard rankings)");
Cmd_AddCommand(CF_SERVER_FROM_CLIENT, "begin", SV_Begin_f, "internal use - signon 3 (client asks server to start sending entities, and will go to signon 4 (playing) when the first entity update is received)");