int customizeentityforclient; // ssqc
int dimension_hit; // ssqc / csqc
int dimension_solid; // ssqc / csqc
+ int disableclientprediction; // ssqc
int dphitcontentsmask; // ssqc / csqc
int drawonlytoclient; // ssqc
int effects; // ssqc / csqc
int items2; // ssqc
int lerpfrac; // csqc
int light_lev; // ssqc
+ int message; // csqc
+ int modelflags; // ssqc
int movement; // ssqc
int nextthink; // common - used by OP_STATE
+ int netaddress; // ssqc
int nodrawtoclient; // ssqc
int pflags; // ssqc
int ping; // ssqc
int v_forward; // ssqc / csqc
int v_right; // ssqc / csqc
int v_up; // ssqc / csqc
+ int view_angles; // csqc
int trace_allsolid; // ssqc / csqc
int trace_startsolid; // ssqc / csqc
int trace_fraction; // ssqc / csqc
int trace_dphitq3surfaceflags; // ssqc / csqc
int trace_dphittexturename; // ssqc / csqc
int trace_dpstartcontents; // ssqc / csqc
+ int intermission; // csqc
+ int coop; // csqc
+ int deathmatch; // csqc
+ int dmg_take; // csqc
+ int dmg_save; // csqc
+ int dmg_origin; // csqc
+ int sb_showscores; // csqc
+
}
prvm_prog_globaloffsets_t;
func_t CSQC_Ent_Remove; // csqc
func_t CSQC_Ent_Update; // csqc
func_t CSQC_Event; // csqc [515]: engine call this for its own needs so csqc can do some things according to what engine it's running on. example: to say about edicts increase, whatever...
+ func_t CSQC_Event_Sound; // csqc : called by engine when an incoming sound packet arrives so CSQC can act on it
func_t CSQC_Init; // csqc
func_t CSQC_InputEvent; // csqc
func_t CSQC_Parse_CenterPrint; // csqc
func_t SV_ChangeTeam; // ssqc
func_t SV_ParseClientCommand; // ssqc
func_t SV_PlayerPhysics; // ssqc
+ func_t SV_OnEntityNoSpawnFunction; // ssqc
+ func_t GameCommand; // any
// menu qc only uses some functions, nothing else
func_t m_display; // mqc
int PRVM_ED_FindFieldOffset(const char *name);
int PRVM_ED_FindGlobalOffset(const char *name);
func_t PRVM_ED_FindFunctionOffset(const char *name);
+#define PRVM_ED_FindFieldOffset_FromStruct(st, field) prog->fieldoffsets . field = ((int *)(&((st *)NULL)-> field ) - ((int *)NULL))
+#define PRVM_ED_FindGlobalOffset_FromStruct(st, field) prog->globaloffsets . field = ((int *)(&((st *)NULL)-> field ) - ((int *)NULL))
void PRVM_MEM_IncreaseEdicts(void);
void PRVM_ED_ClearEdict (prvm_edict_t *e);
void PRVM_PrintFunctionStatements (const char *name);
-void PRVM_ED_Print(prvm_edict_t *ed);
+void PRVM_ED_Print(prvm_edict_t *ed, const char *wildcard_fieldname);
void PRVM_ED_Write (qfile_t *f, prvm_edict_t *ed);
const char *PRVM_ED_ParseEdict (const char *data, prvm_edict_t *ent);
void PRVM_ED_LoadFromFile (const char *data);
prvm_edict_t *PRVM_EDICT_NUM_ERROR(int n, char *filename, int fileline);
-#define PRVM_EDICT_NUM(n) (((n) >= 0 && (n) < prog->max_edicts) ? prog->edicts + (n) : PRVM_EDICT_NUM_ERROR(n, __FILE__, __LINE__))
-#define PRVM_EDICT_NUM_UNSIGNED(n) (((n) < prog->max_edicts) ? prog->edicts + (n) : PRVM_EDICT_NUM_ERROR(n, __FILE__, __LINE__))
+#define PRVM_EDICT_NUM(n) (((unsigned)(n) < (unsigned int)prog->max_edicts) ? prog->edicts + (n) : PRVM_EDICT_NUM_ERROR(n, __FILE__, __LINE__))
//int NUM_FOR_EDICT_ERROR(prvm_edict_t *e);
#define PRVM_NUM_FOR_EDICT(e) ((int)((prvm_edict_t *)(e) - prog->edicts))
void PRVM_Init_Exec(void);
void PRVM_ED_PrintEdicts_f (void);
-void PRVM_ED_PrintNum (int ent);
+void PRVM_ED_PrintNum (int ent, const char *wildcard_fieldname);
const char *PRVM_GetString(int num);
int PRVM_SetEngineString(const char *s);