diff --git a/engine/server/pr_cmds.c b/engine/server/pr_cmds.c index 5d7a42f45..7fea8227c 100644 --- a/engine/server/pr_cmds.c +++ b/engine/server/pr_cmds.c @@ -533,7 +533,7 @@ void PR_LoadGlabalStruct(void) #define globalstring(need,name) ((nqglobalvars_t*)pr_globals)->name = (int *)PR_FindGlobal(svprogfuncs, #name, 0, NULL); if (need && !((nqglobalvars_t*)pr_globals)->name) SV_Error("Could not find export \""#name"\" in progs\n"); #define globalvec(need,name) ((nqglobalvars_t*)pr_globals)->V_##name = (vec3_t *)PR_FindGlobal(svprogfuncs, #name, 0, NULL); if (need && !((nqglobalvars_t*)pr_globals)->V_##name) SV_Error("Could not find export \""#name"\" in progs\n"); #define globalvec_(need,name) ((nqglobalvars_t*)pr_globals)->name = (vec3_t *)PR_FindGlobal(svprogfuncs, #name, 0, NULL); if (need && !((nqglobalvars_t*)pr_globals)->name) SV_Error("Could not find export \""#name"\" in progs\n"); -#define globalfunc(need,name) ((nqglobalvars_t*)pr_globals)->name = (func_t *)PR_FindGlobal(svprogfuncs, #name, 0, NULL); if (need && !((nqglobalvars_t*)pr_globals)->name) {static func_t strippedout; strippedout = PR_FindFunction(svprogfuncs, #name, 0); if (strippedout) ((nqglobalvars_t*)pr_globals)->name = &strippedout; else SV_Error("Could not find function \""#name"\" in progs\n"); } +#define globalfunc(need,name) ((nqglobalvars_t*)pr_globals)->name = (func_t *)PR_FindGlobal(svprogfuncs, #name, 0, NULL); if (!((nqglobalvars_t*)pr_globals)->name) {static func_t stripped##name; stripped##name = PR_FindFunction(svprogfuncs, #name, 0); if (stripped##name) ((nqglobalvars_t*)pr_globals)->name = &stripped##name; else if (need) SV_Error("Could not find function \""#name"\" in progs\n"); } // globalint(pad); globalint (true, self); //we need the qw ones, but any in standard quake and not quakeworld, we don't really care about. globalint (true, other); @@ -1596,6 +1596,7 @@ qboolean PR_KrimzonParseCommand(char *s) return false; } +int tokenizeqc(char *str, qboolean dpfuckage); qboolean PR_UserCmd(char *s) { globalvars_t *pr_globals; @@ -1650,6 +1651,8 @@ qboolean PR_UserCmd(char *s) pr_global_struct->time = sv.world.physicstime; pr_global_struct->self = EDICT_TO_PROG(svprogfuncs, sv_player); + tokenizeqc(s, true); + G_INT(OFS_PARM0) = (int)PR_TempString(svprogfuncs, s); PR_ExecuteProgram (svprogfuncs, gfuncs.UserCmd); return !!G_FLOAT(OFS_RETURN); @@ -9467,7 +9470,11 @@ void PR_ResetBuiltins(progstype_t type) //fix all nulls to PF_FIXME and add any if (type == PROG_QW && pr_imitatemvdsv.value>0) //pretend to be mvdsv for a bit. { - if (PR_EnableEBFSBuiltin("teamfield", 87) != 87 || + if (PR_EnableEBFSBuiltin("executecommand", 83) != 83 || + PR_EnableEBFSBuiltin("mvdtokenize", 84) != 84 || + PR_EnableEBFSBuiltin("mvdargc", 85) != 85 || + PR_EnableEBFSBuiltin("mvdargv", 86) != 86 || + PR_EnableEBFSBuiltin("teamfield", 87) != 87 || PR_EnableEBFSBuiltin("substr", 88) != 88 || PR_EnableEBFSBuiltin("mvdstrcat", 89) != 89 || PR_EnableEBFSBuiltin("mvdstrlen", 90) != 90 ||