int eval_button6;
int eval_button7;
int eval_button8;
+int eval_buttonuse;
+int eval_buttonchat;
int eval_glow_size;
int eval_glow_trail;
int eval_glow_color;
int eval_color;
int eval_style;
int eval_pflags;
+int eval_cursor_active;
+int eval_cursor_screen;
+int eval_cursor_trace_start;
+int eval_cursor_trace_endpos;
+int eval_cursor_trace_ent;
+int eval_colormod;
+int eval_playermodel;
+int eval_playerskin;
mfunction_t *SV_PlayerPhysicsQC;
mfunction_t *EndFrameQC;
eval_button6 = FindFieldOffset("button6");
eval_button7 = FindFieldOffset("button7");
eval_button8 = FindFieldOffset("button8");
+ eval_buttonuse = FindFieldOffset("buttonuse");
+ eval_buttonchat = FindFieldOffset("buttonchat");
eval_glow_size = FindFieldOffset("glow_size");
eval_glow_trail = FindFieldOffset("glow_trail");
eval_glow_color = FindFieldOffset("glow_color");
eval_color = FindFieldOffset("color");
eval_style = FindFieldOffset("style");
eval_pflags = FindFieldOffset("pflags");
+ eval_cursor_active = FindFieldOffset("cursor_active");
+ eval_cursor_screen = FindFieldOffset("cursor_screen");
+ eval_cursor_trace_start = FindFieldOffset("cursor_trace_start");
+ eval_cursor_trace_endpos = FindFieldOffset("cursor_trace_endpos");
+ eval_cursor_trace_ent = FindFieldOffset("cursor_trace_ent");
+ eval_colormod = FindFieldOffset("colormod");
+ eval_playermodel = FindFieldOffset("playermodel");
+ eval_playerskin = FindFieldOffset("playerskin");
// LordHavoc: allowing QuakeC to override the player movement code
SV_PlayerPhysicsQC = ED_FindFunction ("SV_PlayerPhysics");
e->v->netname = PR_SetString(svs.clients[num].name);
if ((val = GETEDICTFIELDVALUE(e, eval_clientcolors)))
val->_float = svs.clients[num].colors;
+ // NEXUIZ_PLAYERMODEL and NEXUIZ_PLAYERSKIN
+ if( eval_playermodel )
+ GETEDICTFIELDVALUE(host_client->edict, eval_playermodel)->string = PR_SetString(svs.clients[num].playermodel);
+ if( eval_playerskin )
+ GETEDICTFIELDVALUE(host_client->edict, eval_playerskin)->string = PR_SetString(svs.clients[num].playerskin);
}
}
Con_DPrintf("ED_ParseEpair: Can't find field %s\n", s);
return false;
}
- //val->_int = G_INT(def->ofs); AK Please check this - seems to be an org. quake bug
+ //val->_int = G_INT(def->ofs); // AK Please check this - seems to be an org. quake bug
val->_int = def->ofs;
break;
dpfield_t dpfields[] =
{
- {ev_float, "gravity"},
+ {ev_entity, "cursor_trace_ent"},
+ {ev_entity, "drawonlytoclient"},
+ {ev_entity, "exteriormodeltoclient"},
+ {ev_entity, "nodrawtoclient"},
+ {ev_entity, "tag_entity"},
+ {ev_entity, "viewmodelforclient"},
+ {ev_float, "alpha"},
+ {ev_float, "ammo_cells1"},
+ {ev_float, "ammo_lava_nails"},
+ {ev_float, "ammo_multi_rockets"},
+ {ev_float, "ammo_nails1"},
+ {ev_float, "ammo_plasma"},
+ {ev_float, "ammo_rockets1"},
+ {ev_float, "ammo_shells1"},
{ev_float, "button3"},
{ev_float, "button4"},
{ev_float, "button5"},
{ev_float, "button6"},
{ev_float, "button7"},
{ev_float, "button8"},
+ {ev_float, "buttonchat"},
+ {ev_float, "buttonuse"},
+ {ev_float, "clientcolors"},
+ {ev_float, "cursor_active"},
+ {ev_float, "fullbright"},
+ {ev_float, "glow_color"},
{ev_float, "glow_size"},
{ev_float, "glow_trail"},
- {ev_float, "glow_color"},
- {ev_float, "items2"},
- {ev_float, "scale"},
- {ev_float, "alpha"},
- {ev_float, "renderamt"},
- {ev_float, "rendermode"},
- {ev_float, "fullbright"},
- {ev_float, "ammo_shells1"},
- {ev_float, "ammo_nails1"},
- {ev_float, "ammo_lava_nails"},
- {ev_float, "ammo_rockets1"},
- {ev_float, "ammo_multi_rockets"},
- {ev_float, "ammo_cells1"},
- {ev_float, "ammo_plasma"},
+ {ev_float, "gravity"},
{ev_float, "idealpitch"},
- {ev_float, "pitch_speed"},
- {ev_entity, "viewmodelforclient"},
- {ev_entity, "nodrawtoclient"},
- {ev_entity, "exteriormodeltoclient"},
- {ev_entity, "drawonlytoclient"},
+ {ev_float, "items2"},
+ {ev_float, "light_lev"},
+ {ev_float, "pflags"},
{ev_float, "ping"},
- {ev_vector, "movement"},
+ {ev_float, "pitch_speed"},
{ev_float, "pmodel"},
- {ev_vector, "punchvector"},
- {ev_float, "clientcolors"},
- {ev_entity, "tag_entity"},
+ {ev_float, "renderamt"}, // HalfLife support
+ {ev_float, "rendermode"}, // HalfLife support
+ {ev_float, "scale"},
+ {ev_float, "style"},
{ev_float, "tag_index"},
- {ev_float, "light_lev"},
+ {ev_float, "viewzoom"},
{ev_vector, "color"},
- {ev_float, "style"},
- {ev_float, "pflags"}
+ {ev_vector, "colormod"},
+ {ev_vector, "cursor_screen"},
+ {ev_vector, "cursor_trace_endpos"},
+ {ev_vector, "cursor_trace_start"},
+ {ev_vector, "movement"},
+ {ev_vector, "punchvector"},
+ {ev_string, "playermodel"},
+ {ev_string, "playerskin"}
};
/*
===============
*/
extern void PR_Cmd_Reset (void);
-void PR_LoadProgs (void)
+void PR_LoadProgs (const char *progsname)
{
int i;
dstatement_t *st;
ddef_t *infielddefs;
dfunction_t *dfunctions;
+ if (!progsname || !*progsname)
+ Host_Error("PR_LoadProgs: passed empty progsname");
+
// flush the non-C variable lookup cache
for (i=0 ; i<GEFV_CACHESIZE ; i++)
gefvCache[i].field[0] = 0;
Mem_EmptyPool(progs_mempool);
Mem_EmptyPool(edictstring_mempool);
- progs = (dprograms_t *)FS_LoadFile ("progs.dat", progs_mempool, false);
+ progs = (dprograms_t *)FS_LoadFile (progsname, progs_mempool, false);
if (!progs)
- Host_Error ("PR_LoadProgs: couldn't load progs.dat");
+ Host_Error ("PR_LoadProgs: couldn't load %s", progsname);
Con_DPrintf("Programs occupy %iK.\n", fs_filesize/1024);