X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=mvm_cmds.c;h=33412190dd0beb817b9934cb832afdbe5ea976c9;hp=657568e191dc2a95bbef91d2d6dc24366d3efb8c;hb=10523a94c80615aeccfa84c81bbffe11335ca4a7;hpb=9183da25c5d5aec366ee91198d4ed42099102d14 diff --git a/mvm_cmds.c b/mvm_cmds.c index 657568e1..33412190 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -4,7 +4,12 @@ // Menu char *vm_m_extensions = -"DP_CINEMATIC_DPV"; +"BX_WAL_SUPPORT " +"DP_CINEMATIC_DPV " +"DP_MENU_EXTRESPONSEPACKET " +"DP_QC_ASINACOSATANATAN2TAN " +"DP_QC_STRINGCOLORFUNCTIONS " +"DP_QC_UNLIMITEDTEMPSTRINGS"; /* ========= @@ -178,9 +183,6 @@ void VM_M_callfunction(void) s = PRVM_G_STRING(OFS_PARM0 + (prog->argc - 1)); - if(!s) - PRVM_ERROR("VM_M_callfunction: null string !"); - VM_CheckEmptyString(s); func = PRVM_ED_FindFunction(s); @@ -222,9 +224,6 @@ void VM_M_isfunction(void) s = PRVM_G_STRING(OFS_PARM0); - if(!s) - PRVM_ERROR("VM_M_isfunction: null string !"); - VM_CheckEmptyString(s); func = PRVM_ED_FindFunction(s); @@ -259,7 +258,7 @@ void VM_M_writetofile(void) ent = PRVM_G_EDICT(OFS_PARM1); if(ent->priv.required->free) { - VM_Warning("VM_M_writetofile: %s: entity %i is free !\n", PRVM_NAME, PRVM_EDICT_NUM(OFS_PARM1)); + VM_Warning("VM_M_writetofile: %s: entity %i is free !\n", PRVM_NAME, PRVM_NUM_FOR_EDICT(ent)); return; } @@ -302,7 +301,7 @@ void M_FindKeysForCommand(const char *command, int *keys); void VM_M_findkeysforcommand(void) { const char *cmd; - char *ret; + char ret[VM_STRINGTEMP_LENGTH]; int keys[NUMKEYS]; int i; @@ -312,14 +311,13 @@ void VM_M_findkeysforcommand(void) VM_CheckEmptyString(cmd); - (ret = VM_GetTempString())[0] = 0; - M_FindKeysForCommand(cmd, keys); + ret[0] = 0; for(i = 0; i < NUMKEYS; i++) - ret = strcat(ret, va(" \'%i\'", keys[i])); + strlcat(ret, va(" \'%i\'", keys[i]), sizeof(ret)); - PRVM_G_INT(OFS_RETURN) = PRVM_SetEngineString(ret); + PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(ret); } /* @@ -409,8 +407,6 @@ void VM_M_setserverlistmaskstring( void ) VM_SAFEPARMCOUNT( 4, VM_M_setserverlistmaskstring ); str = PRVM_G_STRING( OFS_PARM2 ); - if( !str ) - PRVM_ERROR( "VM_M_setserverlistmaskstring: null string passed!" ); masknr = (int)PRVM_G_FLOAT( OFS_PARM0 ); if( masknr >= 0 && masknr <= SERVERLIST_ANDMASKCOUNT ) @@ -427,19 +423,19 @@ void VM_M_setserverlistmaskstring( void ) switch( field ) { case SLIF_CNAME: - strncpy( mask->info.cname, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.cname) ); + strlcpy( mask->info.cname, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.cname) ); break; case SLIF_NAME: - strncpy( mask->info.name, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.name) ); + strlcpy( mask->info.name, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.name) ); break; case SLIF_MAP: - strncpy( mask->info.map, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.map) ); + strlcpy( mask->info.map, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.map) ); break; case SLIF_MOD: - strncpy( mask->info.mod, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.mod) ); + strlcpy( mask->info.mod, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.mod) ); break; case SLIF_GAME: - strncpy( mask->info.game, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.game) ); + strlcpy( mask->info.game, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.game) ); break; default: VM_Warning( "VM_M_setserverlistmaskstring: Bad field number %i passed!\n", field ); @@ -531,7 +527,7 @@ void VM_M_getserverliststring(void) VM_SAFEPARMCOUNT(2, VM_M_getserverliststring); - PRVM_G_INT(OFS_RETURN) = 0; + PRVM_G_INT(OFS_RETURN) = OFS_NULL; hostnr = (int)PRVM_G_FLOAT(OFS_PARM1); @@ -583,7 +579,7 @@ void VM_M_getserverlistnumber(void) VM_SAFEPARMCOUNT(2, VM_M_getserverliststring); - PRVM_G_INT(OFS_RETURN) = 0; + PRVM_G_INT(OFS_RETURN) = OFS_NULL; hostnr = (int)PRVM_G_FLOAT(OFS_PARM1); @@ -780,6 +776,22 @@ void VM_M_WriteEntity (void) MSG_WriteShort (VM_WriteDest(), PRVM_G_EDICTNUM(OFS_PARM0)); } +//string(void) getextresponse = #624; // returns the next extResponse packet that was sent to this client +void VM_M_getextresponse (void) +{ + VM_SAFEPARMCOUNT(0,VM_argv); + + if (net_extresponse_count <= 0) + PRVM_G_INT(OFS_RETURN) = OFS_NULL; + else + { + int first; + --net_extresponse_count; + first = (net_extresponse_last + NET_EXTRESPONSE_MAX - net_extresponse_count) % NET_EXTRESPONSE_MAX; + PRVM_G_INT(OFS_RETURN) = PRVM_SetEngineString(net_extresponse[first]); + } +} + prvm_builtin_t vm_m_builtins[] = { 0, // to be consistent with the old vm // common builtings (mostly) @@ -862,7 +874,7 @@ prvm_builtin_t vm_m_builtins[] = { VM_search_getfilename, // 77 VM_chr, VM_itof, - VM_ftoi, // 80 + VM_ftoe, // 80 VM_itof, // isString VM_altstr_count, VM_altstr_prepare, @@ -910,7 +922,14 @@ prvm_builtin_t vm_m_builtins[] = { VM_cin_restart, // 465 VM_drawline, // 466 0,0,0,0, // 470 - e10, // 480 + VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN) + VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN) + VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN) + VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN) + VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) + VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting color codes) (DP_QC_STRINGCOLORFUNCTIONS) + VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS) + 0,0,0, // 480 e10, // 490 e10, // 500 e100, // 600 @@ -937,7 +956,8 @@ prvm_builtin_t vm_m_builtins[] = { VM_M_refreshserverlist, VM_M_getserverlistnumber, VM_M_getserverlistindexforkey, - VM_M_addwantedserverlistkey // 623 + VM_M_addwantedserverlistkey, // 623 + VM_M_getextresponse }; const int vm_m_numbuiltins = sizeof(vm_m_builtins) / sizeof(prvm_builtin_t);