X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=mvm_cmds.c;h=07424f80e26d24f6b72cb2c7da119d48c8c5bc92;hb=f9ded58b753c4144d9ac31a345b65a6b6bdf1a51;hp=9b832d7c91baf4afcfddd5de3373c174fc7705bd;hpb=ad7963df934abe79c4c9a7a0a184f3fe637109d5;p=xonotic%2Fdarkplaces.git diff --git a/mvm_cmds.c b/mvm_cmds.c index 9b832d7c..07424f80 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -16,12 +16,15 @@ char *vm_m_extensions = "DP_GECKO_SUPPORT " "DP_MENU_EXTRESPONSEPACKET " "DP_QC_ASINACOSATANATAN2TAN " +"DP_QC_AUTOCVARS " "DP_QC_CMD " "DP_QC_CRC16 " "DP_QC_CVAR_TYPE " "DP_QC_CVAR_DESCRIPTION " "DP_QC_FINDCHAIN_TOFIELD " +"DP_QC_LOG " "DP_QC_RENDER_SCENE " +"DP_QC_SPRINTF " "DP_QC_STRFTIME " "DP_QC_STRINGBUFFERS " "DP_QC_STRINGBUFFERS_CVARLIST " @@ -146,74 +149,6 @@ void VM_M_getkeydest(void) } } -/* -========= -VM_M_callfunction - - callfunction(...,string function_name) -Extension: pass -========= -*/ -mfunction_t *PRVM_ED_FindFunction (const char *name); -void VM_M_callfunction(void) -{ - mfunction_t *func; - const char *s; - - VM_SAFEPARMCOUNTRANGE(1, 8, VM_M_callfunction); - - s = PRVM_G_STRING(OFS_PARM0+(prog->argc - 1)*3); - - VM_CheckEmptyString(s); - - func = PRVM_ED_FindFunction(s); - - if(!func) - PRVM_ERROR("VM_M_callfunciton: function %s not found !", s); - else if (func->first_statement < 0) - { - // negative statements are built in functions - int builtinnumber = -func->first_statement; - prog->xfunction->builtinsprofile++; - if (builtinnumber < prog->numbuiltins && prog->builtins[builtinnumber]) - prog->builtins[builtinnumber](); - else - PRVM_ERROR("No such builtin #%i in %s; most likely cause: outdated engine build. Try updating!", builtinnumber, PRVM_NAME); - } - else if(func - prog->functions > 0) - { - prog->argc--; - PRVM_ExecuteProgram(func - prog->functions,""); - prog->argc++; - } -} - -/* -========= -VM_M_isfunction - -float isfunction(string function_name) -========= -*/ -mfunction_t *PRVM_ED_FindFunction (const char *name); -void VM_M_isfunction(void) -{ - mfunction_t *func; - const char *s; - - VM_SAFEPARMCOUNT(1, VM_M_isfunction); - - s = PRVM_G_STRING(OFS_PARM0); - - VM_CheckEmptyString(s); - - func = PRVM_ED_FindFunction(s); - - if(!func) - PRVM_G_FLOAT(OFS_RETURN) = false; - else - PRVM_G_FLOAT(OFS_RETURN) = true; -} /* ========= @@ -239,9 +174,10 @@ void VM_M_getresolution(void) } else { - PRVM_G_VECTOR(OFS_RETURN)[0] = (fs ? video_resolutions : video_resolutions_hardcoded)[nr].width; - PRVM_G_VECTOR(OFS_RETURN)[1] = (fs ? video_resolutions : video_resolutions_hardcoded)[nr].height; - PRVM_G_VECTOR(OFS_RETURN)[2] = 0; + video_resolution_t *r = &((fs ? video_resolutions : video_resolutions_hardcoded)[nr]); + PRVM_G_VECTOR(OFS_RETURN)[0] = r->width; + PRVM_G_VECTOR(OFS_RETURN)[1] = r->height; + PRVM_G_VECTOR(OFS_RETURN)[2] = r->pixelheight; } } @@ -258,9 +194,9 @@ void VM_M_getgamedirinfo(void) if(nr >= 0 && nr < fs_all_gamedirs_count) { if(item == 0) - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( fs_all_gamedirs[nr].name ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( fs_all_gamedirs[nr].name ); else if(item == 1) - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( fs_all_gamedirs[nr].description ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( fs_all_gamedirs[nr].description ); } } @@ -452,7 +388,7 @@ void VM_M_setserverlistmasknumber( void ) mask->info.freeslots = number; break; case SLIF_ISFAVORITE: - mask->info.isfavorite = number; + mask->info.isfavorite = number != 0; break; default: VM_Warning( "VM_M_setserverlistmasknumber: Bad field number %i passed!\n", field ); @@ -500,35 +436,35 @@ void VM_M_getserverliststring(void) Con_Print("VM_M_getserverliststring: bad hostnr passed!\n"); return; } - cache = serverlist_viewlist[hostnr]; + cache = ServerList_GetViewEntry(hostnr); switch( (int) PRVM_G_FLOAT(OFS_PARM0) ) { case SLIF_CNAME: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->info.cname ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->info.cname ); break; case SLIF_NAME: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->info.name ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->info.name ); break; case SLIF_QCSTATUS: - PRVM_G_INT (OFS_RETURN ) = PRVM_SetEngineString (cache->info.qcstatus ); + PRVM_G_INT (OFS_RETURN ) = PRVM_SetTempString (cache->info.qcstatus ); break; case SLIF_PLAYERS: - PRVM_G_INT (OFS_RETURN ) = PRVM_SetEngineString (cache->info.players ); + PRVM_G_INT (OFS_RETURN ) = PRVM_SetTempString (cache->info.players ); break; case SLIF_GAME: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->info.game ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->info.game ); break; case SLIF_MOD: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->info.mod ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->info.mod ); break; case SLIF_MAP: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->info.map ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->info.map ); break; // TODO remove this again case 1024: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->line1 ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->line1 ); break; case 1025: - PRVM_G_INT( OFS_RETURN ) = PRVM_SetEngineString( cache->line2 ); + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( cache->line2 ); break; default: Con_Print("VM_M_getserverliststring: bad field number passed!\n"); @@ -558,7 +494,7 @@ void VM_M_getserverlistnumber(void) Con_Print("VM_M_getserverliststring: bad hostnr passed!\n"); return; } - cache = serverlist_viewlist[hostnr]; + cache = ServerList_GetViewEntry(hostnr); switch( (int) PRVM_G_FLOAT(OFS_PARM0) ) { case SLIF_MAXPLAYERS: PRVM_G_FLOAT( OFS_RETURN ) = cache->info.maxplayers; @@ -1376,7 +1312,7 @@ NULL, // #528 NULL, // #529 NULL, // #530 NULL, // #531 -NULL, // #532 +VM_log, // #532 NULL, // #533 NULL, // #534 NULL, // #535 @@ -1449,9 +1385,9 @@ VM_M_setkeydest, // #601 void setkeydest(float dest) VM_M_getkeydest, // #602 float getkeydest(void) VM_M_setmousetarget, // #603 void setmousetarget(float trg) VM_M_getmousetarget, // #604 float getmousetarget(void) -VM_M_callfunction, // #605 void callfunction(...) +VM_callfunction, // #605 void callfunction(...) VM_writetofile, // #606 void writetofile(float fhandle, entity ent) -VM_M_isfunction, // #607 float isfunction(string function_name) +VM_isfunction, // #607 float isfunction(string function_name) VM_M_getresolution, // #608 vector getresolution(float number, [float forfullscreen]) VM_keynumtostring, // #609 string keynumtostring(float keynum) VM_findkeysforcommand, // #610 string findkeysforcommand(string command) @@ -1468,9 +1404,10 @@ VM_M_refreshserverlist, // #620 void refreshhostcache(void) VM_M_getserverlistnumber, // #621 float gethostcachenumber(float fld, float hostnr) VM_M_getserverlistindexforkey,// #622 float gethostcacheindexforkey(string key) VM_M_addwantedserverlistkey, // #623 void addwantedhostcachekey(string key) -VM_getextresponse, // #624 string getextresponse(void) +VM_CL_getextresponse, // #624 string getextresponse(void) VM_netaddress_resolve, // #625 string netaddress_resolve(string, float) VM_M_getgamedirinfo, // #626 string getgamedirinfo(float n, float prop) +VM_sprintf, // #627 string sprintf(string format, ...) NULL };