X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=svvm_cmds.c;h=251ecc4fa4c74b0b8f21bc89d3d32e6bcb1bd336;hb=091718e089617a7d1d24a4b418df3377bc1f6117;hp=21d7150dc039dc538a5deacc9d7084dc1cbf54ac;hpb=0960c1f25d397c09f680454759f4ea747975c8c9;p=xonotic%2Fdarkplaces.git diff --git a/svvm_cmds.c b/svvm_cmds.c index 21d7150d..251ecc4f 100644 --- a/svvm_cmds.c +++ b/svvm_cmds.c @@ -8,6 +8,8 @@ cvar_t sv_aim = {CVAR_SAVE, "sv_aim", "2"}; //"0.93"}; // LordHavoc: disabled au char *vm_sv_extensions = +"DP_CON_EXPANDCVAR " +"DP_CON_ALIASPARAMETERS " "DP_BUTTONCHAT " "DP_BUTTONUSE " "DP_CL_LOADSKY " @@ -24,6 +26,7 @@ char *vm_sv_extensions = "DP_EF_RED " "DP_EF_STARDUST " "DP_ENT_ALPHA " +"DP_ENT_COLORMOD " "DP_ENT_CUSTOMCOLORMAP " "DP_ENT_EXTERIORMODELTOCLIENT " "DP_ENT_GLOW " @@ -68,6 +71,7 @@ char *vm_sv_extensions = "DP_QC_VECTORVECTORS " "DP_QUAKE2_MODEL " "DP_QUAKE2_SPRITE " +"DP_QUAKE3_MAP " "DP_QUAKE3_MODEL " "DP_REGISTERCVAR " "DP_SND_DIRECTIONLESSATTNNONE " @@ -85,10 +89,12 @@ char *vm_sv_extensions = "DP_SV_NODRAWTOCLIENT " "DP_SV_PING " "DP_SV_PLAYERPHYSICS " +"DP_SV_PRECACHEANYTIME " "DP_SV_PUNCHVECTOR " "DP_SV_ROTATINGBMODEL " "DP_SV_SETCOLOR " "DP_SV_SLOWMO " +"DP_SV_WRITEUNTERMINATEDSTRING " "DP_TE_BLOOD " "DP_TE_BLOODSHOWER " "DP_TE_CUSTOMFLASH " @@ -112,7 +118,6 @@ char *vm_sv_extensions = "TENEBRAE_GFX_DLIGHTS " "TW_SV_STEPCONTROL " "NEXUIZ_PLAYERMODEL " -"NEXUIZ_PLAYERSKIN " ; /* @@ -738,63 +743,6 @@ void PF_findradius (void) VM_RETURN_EDICT(chain); } -// LordHavoc: search for flags in float fields -void PF_findflags (void) -{ - int e; - int f; - int s; - prvm_edict_t *ed; - - e = PRVM_G_EDICTNUM(OFS_PARM0); - f = PRVM_G_INT(OFS_PARM1); - s = (int)PRVM_G_FLOAT(OFS_PARM2); - - for (e++ ; e < prog->num_edicts ; e++) - { - prog->xfunction->builtinsprofile++; - ed = PRVM_EDICT_NUM(e); - if (ed->priv.server->free) - continue; - if ((int)PRVM_E_FLOAT(ed,f) & s) - { - VM_RETURN_EDICT(ed); - return; - } - } - - VM_RETURN_EDICT(prog->edicts); -} - -// LordHavoc: chained search for flags in float fields -void PF_findchainflags (void) -{ - int i; - int f; - int s; - prvm_edict_t *ent, *chain; - - chain = (prvm_edict_t *)prog->edicts; - - f = PRVM_G_INT(OFS_PARM0); - s = (int)PRVM_G_FLOAT(OFS_PARM1); - - ent = PRVM_NEXT_EDICT(prog->edicts); - for (i = 1;i < prog->num_edicts;i++, ent = PRVM_NEXT_EDICT(ent)) - { - prog->xfunction->builtinsprofile++; - if (ent->priv.server->free) - continue; - if (!((int)PRVM_E_FLOAT(ent,f) & s)) - continue; - - ent->fields.server->chain = PRVM_EDICT_TO_PROG(chain); - chain = ent; - } - - VM_RETURN_EDICT(chain); -} - void PF_precache_file (void) { // precache_file is only used to copy files with qcc, it does nothing PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0); @@ -916,6 +864,10 @@ void PF_lightstyle (void) style = PRVM_G_FLOAT(OFS_PARM0); val = PRVM_G_STRING(OFS_PARM1); + if( (unsigned) style >= MAX_LIGHTSTYLES ) { + PRVM_ERROR( "PF_lightstyle: style: %i >= 64", style ); + } + // change the string in sv strlcpy(sv.lightstyles[style], val, sizeof(sv.lightstyles[style])); @@ -1181,18 +1133,20 @@ sizebuf_t *WriteDest (void) ent = PRVM_PROG_TO_EDICT(prog->globals.server->msg_entity); entnum = PRVM_NUM_FOR_EDICT(ent); if (entnum < 1 || entnum > svs.maxclients || !svs.clients[entnum-1].active) - Host_Error("WriteDest: tried to write to non-client\n"); - return &svs.clients[entnum-1].message; + { + Con_Printf ("WriteDest: tried to write to non-client\n"); + return &sv.reliable_datagram; + } + else + return &svs.clients[entnum-1].message; + default: + Con_Printf ("WriteDest: bad destination"); case MSG_ALL: return &sv.reliable_datagram; case MSG_INIT: return &sv.signon; - - default: - Host_Error("WriteDest: bad destination"); - break; } return NULL; @@ -1233,6 +1187,11 @@ void PF_WriteString (void) MSG_WriteString (WriteDest(), PRVM_G_STRING(OFS_PARM1)); } +void PF_WriteUnterminatedString (void) +{ + MSG_WriteUnterminatedString (WriteDest(), PRVM_G_STRING(OFS_PARM1)); +} + void PF_WriteEntity (void) { @@ -1837,6 +1796,22 @@ void PF_te_plasmaburn (void) MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[2], sv.protocol); } +void PF_te_flamejet (void) +{ + MSG_WriteByte(&sv.datagram, svc_temp_entity); + MSG_WriteByte(&sv.datagram, TE_FLAMEJET); + // org + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[0], sv.protocol); + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[1], sv.protocol); + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[2], sv.protocol); + // vel + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[0], sv.protocol); + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[1], sv.protocol); + MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[2], sv.protocol); + // count + MSG_WriteByte(&sv.datagram, PRVM_G_FLOAT(OFS_PARM2)); +} + static void clippointtosurface(msurface_t *surface, vec3_t p, vec3_t out) { int i, j, k; @@ -2510,15 +2485,15 @@ VM_search_end, // #445 void(float handle) search_end (DP_FS_SEARCH) VM_search_getsize, // #446 float(float handle) search_getsize (DP_FS_SEARCH) VM_search_getfilename, // #447 string(float handle, float num) search_getfilename (DP_FS_SEARCH) VM_cvar_string, // #448 string(string s) cvar_string (DP_QC_CVAR_STRING) -PF_findflags, // #449 entity(entity start, .float fld, float match) findflags (DP_QC_FINDFLAGS) -PF_findchainflags, // #450 entity(.float fld, float match) findchainflags (DP_QC_FINDCHAINFLAGS) +VM_findflags, // #449 entity(entity start, .float fld, float match) findflags (DP_QC_FINDFLAGS) +VM_findchainflags, // #450 entity(.float fld, float match) findchainflags (DP_QC_FINDCHAINFLAGS) PF_gettagindex, // #451 float(entity ent, string tagname) gettagindex (DP_QC_GETTAGINFO) PF_gettaginfo, // #452 vector(entity ent, float tagindex) gettaginfo (DP_QC_GETTAGINFO) PF_dropclient, // #453 void(entity clent) dropclient (DP_SV_DROPCLIENT) PF_spawnclient, // #454 entity() spawnclient (DP_SV_BOTCLIENT) PF_clienttype, // #455 float(entity clent) clienttype (DP_SV_BOTCLIENT) -NULL, // #456 -NULL, // #457 +PF_WriteUnterminatedString, // #456 void(float to, string s) WriteUnterminatedString (DP_SV_WRITEUNTERMINATEDSTRING) +PF_te_flamejet, // #457 void(vector org, vector vel, float howmany) te_flamejet = #457 (DP_TE_FLAMEJET) NULL, // #458 NULL, // #459 e10, e10, e10, e10 // #460-499 (LordHavoc)