X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=host_cmd.c;h=80b62d1c13da9f1a236090990b61a18f594d5f61;hp=91aefcb1c71c6933cf9408b838b203364d50231f;hb=29779ce432d34c9f0bc8878761d07c194162e6d0;hpb=d75e1bf156002b55459871d19724428f5ac465cb diff --git a/host_cmd.c b/host_cmd.c index 91aefcb1..80b62d1c 100644 --- a/host_cmd.c +++ b/host_cmd.c @@ -75,6 +75,7 @@ void Host_Status_f (void) case PROTOCOL_DARKPLACES3: protocolname = "PROTOCOL_DARKPLACES3";break; case PROTOCOL_DARKPLACES4: protocolname = "PROTOCOL_DARKPLACES4";break; case PROTOCOL_DARKPLACES5: protocolname = "PROTOCOL_DARKPLACES5";break; + case PROTOCOL_DARKPLACES6: protocolname = "PROTOCOL_DARKPLACES6";break; default: protocolname = "PROTOCOL_UNKNOWN";break; } print ("protocol: %i (%s)\n", sv.protocol, protocolname); @@ -116,17 +117,14 @@ void Host_God_f (void) return; } - if (!sv_player) - return; - if (!allowcheats) { SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n"); return; } - sv_player->v->flags = (int)sv_player->v->flags ^ FL_GODMODE; - if (!((int)sv_player->v->flags & FL_GODMODE) ) + host_client->edict->v->flags = (int)host_client->edict->v->flags ^ FL_GODMODE; + if (!((int)host_client->edict->v->flags & FL_GODMODE) ) SV_ClientPrint("godmode OFF\n"); else SV_ClientPrint("godmode ON\n"); @@ -140,17 +138,14 @@ void Host_Notarget_f (void) return; } - if (!sv_player) - return; - if (!allowcheats) { SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n"); return; } - sv_player->v->flags = (int)sv_player->v->flags ^ FL_NOTARGET; - if (!((int)sv_player->v->flags & FL_NOTARGET) ) + host_client->edict->v->flags = (int)host_client->edict->v->flags ^ FL_NOTARGET; + if (!((int)host_client->edict->v->flags & FL_NOTARGET) ) SV_ClientPrint("notarget OFF\n"); else SV_ClientPrint("notarget ON\n"); @@ -166,25 +161,22 @@ void Host_Noclip_f (void) return; } - if (!sv_player) - return; - if (!allowcheats) { SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n"); return; } - if (sv_player->v->movetype != MOVETYPE_NOCLIP) + if (host_client->edict->v->movetype != MOVETYPE_NOCLIP) { noclip_anglehack = true; - sv_player->v->movetype = MOVETYPE_NOCLIP; + host_client->edict->v->movetype = MOVETYPE_NOCLIP; SV_ClientPrint("noclip ON\n"); } else { noclip_anglehack = false; - sv_player->v->movetype = MOVETYPE_WALK; + host_client->edict->v->movetype = MOVETYPE_WALK; SV_ClientPrint("noclip OFF\n"); } } @@ -204,23 +196,20 @@ void Host_Fly_f (void) return; } - if (!sv_player) - return; - if (!allowcheats) { SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n"); return; } - if (sv_player->v->movetype != MOVETYPE_FLY) + if (host_client->edict->v->movetype != MOVETYPE_FLY) { - sv_player->v->movetype = MOVETYPE_FLY; + host_client->edict->v->movetype = MOVETYPE_FLY; SV_ClientPrint("flymode ON\n"); } else { - sv_player->v->movetype = MOVETYPE_WALK; + host_client->edict->v->movetype = MOVETYPE_WALK; SV_ClientPrint("flymode OFF\n"); } } @@ -648,8 +637,9 @@ void Host_Loadgame_f (void) // load the edicts out of the savegame file // -1 is the globals entnum = -1; - while (!FS_Eof (f)) + for (;;) { + r = EOF; for (i = 0;i < (int)sizeof(buf) - 1;i++) { r = FS_Getc (f); @@ -662,6 +652,8 @@ void Host_Loadgame_f (void) break; } } + if (r == EOF) + break; if (i == sizeof(buf)-1) Host_Error ("Loadgame buffer overflow"); buf[i] = 0; @@ -837,7 +829,7 @@ void Host_Say(qboolean teamonly) SV_ClientPrint(text); host_client = save; - Sys_Print(&text[1]); + //Con_Print(&text[1]); } @@ -963,22 +955,22 @@ void Host_Color_f(void) return; } - if (sv_player && (f = ED_FindFunction ("SV_ChangeTeam")) && (SV_ChangeTeam = (func_t)(f - pr_functions))) + if (host_client->edict && (f = ED_FindFunction ("SV_ChangeTeam")) && (SV_ChangeTeam = (func_t)(f - pr_functions))) { Con_DPrint("Calling SV_ChangeTeam\n"); pr_global_struct->time = sv.time; pr_globals[OFS_PARM0] = playercolor; - pr_global_struct->self = EDICT_TO_PROG(sv_player); + pr_global_struct->self = EDICT_TO_PROG(host_client->edict); PR_ExecuteProgram (SV_ChangeTeam, "QC function SV_ChangeTeam is missing"); } else { eval_t *val; - if (sv_player) + if (host_client->edict) { - if ((val = GETEDICTFIELDVALUE(sv_player, eval_clientcolors))) + if ((val = GETEDICTFIELDVALUE(host_client->edict, eval_clientcolors))) val->_float = playercolor; - sv_player->v->team = bottom + 1; + host_client->edict->v->team = bottom + 1; } host_client->colors = playercolor; if (host_client->old_colors != host_client->colors) @@ -1030,7 +1022,7 @@ void Host_Kill_f (void) return; } - if (!sv_player || sv_player->v->health <= 0) + if (host_client->edict->v->health <= 0) { SV_ClientPrint("Can't suicide -- already dead!\n"); return; @@ -1096,7 +1088,7 @@ static void Host_PModel_f (void) return; } - if (sv_player && (val = GETEDICTFIELDVALUE(sv_player, eval_pmodel))) + if (host_client->edict && (val = GETEDICTFIELDVALUE(host_client->edict, eval_pmodel))) val->_float = i; } @@ -1142,6 +1134,7 @@ void Host_Spawn_f (void) client_t *client; func_t RestoreGame; mfunction_t *f; + int stats[MAX_CL_STATS]; if (cmd_source == src_command) { @@ -1155,12 +1148,6 @@ void Host_Spawn_f (void) return; } - if (!sv_player) - { - Con_Print("Host_Spawn: no edict??\n"); - return; - } - // reset name change timer again because they might want to change name // again in the first 5 seconds after connecting host_client->nametime = 0; @@ -1181,16 +1168,16 @@ void Host_Spawn_f (void) { Con_DPrint("Calling RestoreGame\n"); pr_global_struct->time = sv.time; - pr_global_struct->self = EDICT_TO_PROG(sv_player); + pr_global_struct->self = EDICT_TO_PROG(host_client->edict); PR_ExecuteProgram (RestoreGame, "QC function RestoreGame is missing"); } } else { // set up the edict - ED_ClearEdict(sv_player); + ED_ClearEdict(host_client->edict); - //Con_Printf("Host_Spawn_f: host_client->edict->netname = %s, sv_player->netname = %s, host_client->name = %s\n", PR_GetString(host_client->edict->v->netname), PR_GetString(sv_player->v->netname), host_client->name); + //Con_Printf("Host_Spawn_f: host_client->edict->netname = %s, host_client->edict->netname = %s, host_client->name = %s\n", PR_GetString(host_client->edict->v->netname), PR_GetString(host_client->edict->v->netname), host_client->name); // copy spawn parms out of the client_t for (i=0 ; i< NUM_SPAWN_PARMS ; i++) @@ -1198,11 +1185,11 @@ void Host_Spawn_f (void) // call the spawn function pr_global_struct->time = sv.time; - pr_global_struct->self = EDICT_TO_PROG(sv_player); + pr_global_struct->self = EDICT_TO_PROG(host_client->edict); PR_ExecuteProgram (pr_global_struct->ClientConnect, "QC function ClientConnect is missing"); if ((Sys_DoubleTime() - host_client->connecttime) <= sv.time) - Sys_Printf("%s entered the game\n", host_client->name); + Con_Printf("%s entered the game\n", host_client->name); PR_ExecuteProgram (pr_global_struct->PutClientInServer, "QC function PutClientInServer is missing"); } @@ -1258,11 +1245,11 @@ void Host_Spawn_f (void) // and it won't happen if the game was just loaded, so you wind up // with a permanent head tilt MSG_WriteByte (&host_client->message, svc_setangle); - MSG_WriteAngle (&host_client->message, sv_player->v->angles[0], sv.protocol); - MSG_WriteAngle (&host_client->message, sv_player->v->angles[1], sv.protocol); + MSG_WriteAngle (&host_client->message, host_client->edict->v->angles[0], sv.protocol); + MSG_WriteAngle (&host_client->message, host_client->edict->v->angles[1], sv.protocol); MSG_WriteAngle (&host_client->message, 0, sv.protocol); - SV_WriteClientdataToMessage (sv_player, &host_client->message); + SV_WriteClientdataToMessage (host_client, host_client->edict, &host_client->message, stats); MSG_WriteByte (&host_client->message, svc_signonnum); MSG_WriteByte (&host_client->message, 3); @@ -1391,9 +1378,6 @@ void Host_Give_f (void) return; } - if (!sv_player) - return; - if (!allowcheats) { SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n"); @@ -1421,113 +1405,113 @@ void Host_Give_f (void) if (t[0] == '6') { if (t[1] == 'a') - sv_player->v->items = (int)sv_player->v->items | HIT_PROXIMITY_GUN; + host_client->edict->v->items = (int)host_client->edict->v->items | HIT_PROXIMITY_GUN; else - sv_player->v->items = (int)sv_player->v->items | IT_GRENADE_LAUNCHER; + host_client->edict->v->items = (int)host_client->edict->v->items | IT_GRENADE_LAUNCHER; } else if (t[0] == '9') - sv_player->v->items = (int)sv_player->v->items | HIT_LASER_CANNON; + host_client->edict->v->items = (int)host_client->edict->v->items | HIT_LASER_CANNON; else if (t[0] == '0') - sv_player->v->items = (int)sv_player->v->items | HIT_MJOLNIR; + host_client->edict->v->items = (int)host_client->edict->v->items | HIT_MJOLNIR; else if (t[0] >= '2') - sv_player->v->items = (int)sv_player->v->items | (IT_SHOTGUN << (t[0] - '2')); + host_client->edict->v->items = (int)host_client->edict->v->items | (IT_SHOTGUN << (t[0] - '2')); } else { if (t[0] >= '2') - sv_player->v->items = (int)sv_player->v->items | (IT_SHOTGUN << (t[0] - '2')); + host_client->edict->v->items = (int)host_client->edict->v->items | (IT_SHOTGUN << (t[0] - '2')); } break; case 's': - if (gamemode == GAME_ROGUE && (val = GETEDICTFIELDVALUE(sv_player, eval_ammo_shells1))) + if (gamemode == GAME_ROGUE && (val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_shells1))) val->_float = v; - sv_player->v->ammo_shells = v; + host_client->edict->v->ammo_shells = v; break; case 'n': if (gamemode == GAME_ROGUE) { - if ((val = GETEDICTFIELDVALUE(sv_player, eval_ammo_nails1))) + if ((val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_nails1))) { val->_float = v; - if (sv_player->v->weapon <= IT_LIGHTNING) - sv_player->v->ammo_nails = v; + if (host_client->edict->v->weapon <= IT_LIGHTNING) + host_client->edict->v->ammo_nails = v; } } else { - sv_player->v->ammo_nails = v; + host_client->edict->v->ammo_nails = v; } break; case 'l': if (gamemode == GAME_ROGUE) { - val = GETEDICTFIELDVALUE(sv_player, eval_ammo_lava_nails); + val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_lava_nails); if (val) { val->_float = v; - if (sv_player->v->weapon > IT_LIGHTNING) - sv_player->v->ammo_nails = v; + if (host_client->edict->v->weapon > IT_LIGHTNING) + host_client->edict->v->ammo_nails = v; } } break; case 'r': if (gamemode == GAME_ROGUE) { - val = GETEDICTFIELDVALUE(sv_player, eval_ammo_rockets1); + val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_rockets1); if (val) { val->_float = v; - if (sv_player->v->weapon <= IT_LIGHTNING) - sv_player->v->ammo_rockets = v; + if (host_client->edict->v->weapon <= IT_LIGHTNING) + host_client->edict->v->ammo_rockets = v; } } else { - sv_player->v->ammo_rockets = v; + host_client->edict->v->ammo_rockets = v; } break; case 'm': if (gamemode == GAME_ROGUE) { - val = GETEDICTFIELDVALUE(sv_player, eval_ammo_multi_rockets); + val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_multi_rockets); if (val) { val->_float = v; - if (sv_player->v->weapon > IT_LIGHTNING) - sv_player->v->ammo_rockets = v; + if (host_client->edict->v->weapon > IT_LIGHTNING) + host_client->edict->v->ammo_rockets = v; } } break; case 'h': - sv_player->v->health = v; + host_client->edict->v->health = v; break; case 'c': if (gamemode == GAME_ROGUE) { - val = GETEDICTFIELDVALUE(sv_player, eval_ammo_cells1); + val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_cells1); if (val) { val->_float = v; - if (sv_player->v->weapon <= IT_LIGHTNING) - sv_player->v->ammo_cells = v; + if (host_client->edict->v->weapon <= IT_LIGHTNING) + host_client->edict->v->ammo_cells = v; } } else { - sv_player->v->ammo_cells = v; + host_client->edict->v->ammo_cells = v; } break; case 'p': if (gamemode == GAME_ROGUE) { - val = GETEDICTFIELDVALUE(sv_player, eval_ammo_plasma); + val = GETEDICTFIELDVALUE(host_client->edict, eval_ammo_plasma); if (val) { val->_float = v; - if (sv_player->v->weapon > IT_LIGHTNING) - sv_player->v->ammo_cells = v; + if (host_client->edict->v->weapon > IT_LIGHTNING) + host_client->edict->v->ammo_cells = v; } } break; @@ -1678,7 +1662,7 @@ void Host_Startdemos_f (void) Con_Printf("Max %i demos in demoloop\n", MAX_DEMOS); c = MAX_DEMOS; } - Con_DPrintf("%i demo(s) in loop\n", c); + Con_Printf("%i demo(s) in loop\n", c); for (i=1 ; i