X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=host_cmd.c;h=f2737124f97d6926cddb0ac4cc097afff20a3cf5;hb=038ff8d79bb5044145cc2f87a8df1ce732209e4d;hp=bd209df64949f1b82b94af9a16a3633772156cb4;hpb=6fb3daf04a26ac42b15c02c2276f6820ffe795a8;p=xonotic%2Fdarkplaces.git diff --git a/host_cmd.c b/host_cmd.c index bd209df6..f2737124 100644 --- a/host_cmd.c +++ b/host_cmd.c @@ -24,7 +24,7 @@ int current_skill; char sv_spawnmap[MAX_QPATH]; char sv_loadgame[MAX_OSPATH]; -dfunction_t *ED_FindFunction (char *name); +mfunction_t *ED_FindFunction (char *name); /* ================== @@ -379,7 +379,7 @@ Host_Savegame_f void Host_Savegame_f (void) { char name[256]; - QFile *f; + qfile_t *f; int i; char comment[SAVEGAME_COMMENT_LENGTH+1]; @@ -425,34 +425,35 @@ void Host_Savegame_f (void) } } - sprintf (name, "%s/%s", com_gamedir, Cmd_Argv(1)); - COM_DefaultExtension (name, ".sav"); + strncpy (name, Cmd_Argv(1), sizeof (name) - 1); + name[sizeof (name) - 1] = '\0'; + FS_DefaultExtension (name, ".sav"); Con_Printf ("Saving game to %s...\n", name); - f = Qopen (name, "w"); + f = FS_Open (name, "w", false); if (!f) { Con_Printf ("ERROR: couldn't open.\n"); return; } - Qprintf (f, "%i\n", SAVEGAME_VERSION); + FS_Printf (f, "%i\n", SAVEGAME_VERSION); Host_SavegameComment (comment); - Qprintf (f, "%s\n", comment); + FS_Printf (f, "%s\n", comment); for (i=0 ; ispawn_parms[i]); - Qprintf (f, "%d\n", current_skill); - Qprintf (f, "%s\n", sv.name); - Qprintf (f, "%f\n",sv.time); + FS_Printf (f, "%f\n", svs.clients->spawn_parms[i]); + FS_Printf (f, "%d\n", current_skill); + FS_Printf (f, "%s\n", sv.name); + FS_Printf (f, "%f\n",sv.time); // write the light styles for (i=0 ; iv, 0, progs->entityfields * 4); - ent->free = false; + ent->e->free = false; ED_ParseEdict (start, ent); // link it into the bsp tree - if (!ent->free) + if (!ent->e->free) SV_LinkEdict (ent, false); } @@ -615,7 +616,7 @@ void Host_PerformLoadGame(char *name) sv.num_edicts = entnum; sv.time = time; - Qclose (f); + FS_Close (f); for (i = 0;i < NUM_SPAWN_PARMS;i++) svs.clients->spawn_parms[i] = spawn_parms[i]; @@ -664,7 +665,7 @@ void Host_Name_f (void) if (strcmp(host_client->name, newName) != 0) Con_Printf ("%s renamed to %s\n", host_client->name, newName); strcpy (host_client->name, newName); - host_client->edict->v->netname = host_client->name - pr_strings; + sv_player->v->netname = PR_SetString(host_client->name); // send notification to all clients @@ -821,7 +822,7 @@ void Host_Tell_f(void) { if (!client->active || !client->spawned) continue; - if (Q_strcasecmp(client->name, Cmd_Argv(1))) + if (strcasecmp(client->name, Cmd_Argv(1))) continue; host_client = client; SV_ClientPrintf("%s", text); @@ -840,7 +841,7 @@ void Host_Color_f(void) { int top, bottom; int playercolor; - dfunction_t *f; + mfunction_t *f; func_t SV_ChangeTeam; if (Cmd_Argc() == 1) @@ -882,13 +883,13 @@ void Host_Color_f(void) Con_DPrintf("Calling SV_ChangeTeam\n"); pr_global_struct->time = sv.time; pr_globals[OFS_PARM0] = playercolor; - pr_global_struct->self = EDICT_TO_PROG(host_client->edict); + pr_global_struct->self = EDICT_TO_PROG(sv_player); PR_ExecuteProgram (SV_ChangeTeam, ""); } else { host_client->colors = playercolor; - host_client->edict->v->team = bottom + 1; + sv_player->v->team = bottom + 1; // send notification to all clients MSG_WriteByte (&sv.reliable_datagram, svc_updatecolors); @@ -917,7 +918,7 @@ void Host_Kill_f (void) } 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->ClientKill, "QC function ClientKill is missing"); } @@ -943,11 +944,11 @@ void Host_Pause_f (void) if (sv.paused) { - SV_BroadcastPrintf ("%s paused the game\n", pr_strings + sv_player->v->netname); + SV_BroadcastPrintf ("%s paused the game\n", PR_GetString(sv_player->v->netname)); } else { - SV_BroadcastPrintf ("%s unpaused the game\n",pr_strings + sv_player->v->netname); + SV_BroadcastPrintf ("%s unpaused the game\n", PR_GetString(sv_player->v->netname)); } // send notification to all clients @@ -995,7 +996,7 @@ void Host_Spawn_f (void) client_t *client; edict_t *ent; func_t RestoreGame; - dfunction_t *f; + mfunction_t *f; if (cmd_source == src_command) { @@ -1013,6 +1014,8 @@ void Host_Spawn_f (void) // send all current names, colors, and frag counts SZ_Clear (&host_client->message); + ent = sv_player; + // run the entrance script if (sv.loadgame) { @@ -1033,13 +1036,11 @@ void Host_Spawn_f (void) { eval_t *val; // set up the edict - ent = host_client->edict; - - memset (ent->v, 0, progs->entityfields * 4); + ED_ClearEdict(ent); ent->v->colormap = NUM_FOR_EDICT(ent); ent->v->team = (host_client->colors & 15) + 1; - ent->v->netname = host_client->name - pr_strings; - if ((val = GETEDICTFIELDVALUE(host_client->edict, eval_pmodel))) + ent->v->netname = PR_SetString(host_client->name); + if ((val = GETEDICTFIELDVALUE(ent, eval_pmodel))) val->_float = host_client->pmodel; // copy spawn parms out of the client_t @@ -1109,7 +1110,6 @@ void Host_Spawn_f (void) // in a state where it is expecting the client to correct the angle // and it won't happen if the game was just loaded, so you wind up // with a permanent head tilt - ent = EDICT_NUM( 1 + (host_client - svs.clients) ); MSG_WriteByte (&host_client->message, svc_setangle); for (i=0 ; i < 2 ; i++) MSG_WriteAngle (&host_client->message, ent->v->angles[i] ); @@ -1185,7 +1185,7 @@ void Host_Kick_f (void) { if (!host_client->active) continue; - if (Q_strcasecmp(host_client->name, Cmd_Argv(1)) == 0) + if (strcasecmp(host_client->name, Cmd_Argv(1)) == 0) break; } } @@ -1224,7 +1224,7 @@ void Host_Kick_f (void) SV_ClientPrintf ("Kicked by %s: %s\n", who, message); else SV_ClientPrintf ("Kicked by %s\n", who); - SV_DropClient (false); + SV_DropClient (false); // kicked } host_client = save; @@ -1403,7 +1403,7 @@ edict_t *FindViewthing (void) for (i=0 ; iv->classname, "viewthing") ) + if (!strcmp (PR_GetString(e->v->classname), "viewthing")) return e; } Con_Printf ("No viewthing on map\n");