X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=mvm_cmds.c;h=41c476cf035e329271230fb032ad99ba66d64d61;hp=07424f80e26d24f6b72cb2c7da119d48c8c5bc92;hb=f575e5ad7f9eab64e89b714e75ff5dd92e49f373;hpb=6cdadc176fb4ec59e84b28c80e463fa035fca11b diff --git a/mvm_cmds.c b/mvm_cmds.c index 07424f80..41c476cf 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -9,9 +9,14 @@ //============================================================================ // Menu -char *vm_m_extensions = +const char *vm_m_extensions = "BX_WAL_SUPPORT " "DP_CINEMATIC_DPV " +"DP_CSQC_BINDMAPS " +"DP_CRYPTO " +"DP_GFX_FONTS " +"DP_GFX_FONTS_FREETYPE " +"DP_UTF8 " "DP_FONT_VARIABLEWIDTH " "DP_GECKO_SUPPORT " "DP_MENU_EXTRESPONSEPACKET " @@ -36,6 +41,7 @@ char *vm_m_extensions = "DP_QC_UNLIMITEDTEMPSTRINGS " "DP_QC_URI_ESCAPE " "DP_QC_URI_GET " +"DP_QC_URI_POST " "DP_QC_WHICHPACK " "FTE_STRINGS " ; @@ -233,6 +239,7 @@ void VM_M_getserverliststat( void ) return; case 1: PRVM_G_FLOAT ( OFS_RETURN ) = serverlist_cachecount; + return; case 2: PRVM_G_FLOAT ( OFS_RETURN ) = masterquerycount; return; @@ -304,25 +311,25 @@ void VM_M_setserverlistmaskstring( void ) switch( field ) { case SLIF_CNAME: - strlcpy( mask->info.cname, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.cname) ); + strlcpy( mask->info.cname, str, sizeof(mask->info.cname) ); break; case SLIF_NAME: - strlcpy( mask->info.name, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.name) ); + strlcpy( mask->info.name, str, sizeof(mask->info.name) ); break; case SLIF_QCSTATUS: - strlcpy( mask->info.qcstatus, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.qcstatus) ); + strlcpy( mask->info.qcstatus, str, sizeof(mask->info.qcstatus) ); break; case SLIF_PLAYERS: - strlcpy( mask->info.players, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.players) ); + strlcpy( mask->info.players, str, sizeof(mask->info.players) ); break; case SLIF_MAP: - strlcpy( mask->info.map, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.map) ); + strlcpy( mask->info.map, str, sizeof(mask->info.map) ); break; case SLIF_MOD: - strlcpy( mask->info.mod, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.mod) ); + strlcpy( mask->info.mod, str, sizeof(mask->info.mod) ); break; case SLIF_GAME: - strlcpy( mask->info.game, PRVM_G_STRING( OFS_PARM2 ), sizeof(mask->info.game) ); + strlcpy( mask->info.game, str, sizeof(mask->info.game) ); break; default: VM_Warning( "VM_M_setserverlistmaskstring: Bad field number %i passed!\n", field ); @@ -745,11 +752,97 @@ static void VM_M_getmousepos(void) VectorSet(PRVM_G_VECTOR(OFS_RETURN), in_mouse_x * vid_conwidth.integer / vid.width, in_mouse_y * vid_conheight.integer / vid.height, 0); } -//#349 float() isdemo (EXT_CSQC) -static void VM_M_isdemo (void) +void VM_M_crypto_getkeyfp(void) +{ + lhnetaddress_t addr; + const char *s; + char keyfp[FP64_SIZE + 1]; + + VM_SAFEPARMCOUNT(1,VM_M_crypto_getkeyfp); + + s = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString( s ); + + if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, keyfp, sizeof(keyfp), NULL, 0, NULL)) + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( keyfp ); + else + PRVM_G_INT( OFS_RETURN ) = OFS_NULL; +} +void VM_M_crypto_getidfp(void) +{ + lhnetaddress_t addr; + const char *s; + char idfp[FP64_SIZE + 1]; + + VM_SAFEPARMCOUNT(1,VM_M_crypto_getidfp); + + s = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString( s ); + + if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, NULL, 0, idfp, sizeof(idfp), NULL)) + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( idfp ); + else + PRVM_G_INT( OFS_RETURN ) = OFS_NULL; +} +void VM_M_crypto_getencryptlevel(void) +{ + lhnetaddress_t addr; + const char *s; + int aeslevel; + + VM_SAFEPARMCOUNT(1,VM_M_crypto_getencryptlevel); + + s = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString( s ); + + if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, NULL, 0, NULL, 0, &aeslevel)) + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(aeslevel ? va("%d AES128", aeslevel) : "0"); + else + PRVM_G_INT( OFS_RETURN ) = OFS_NULL; +} +void VM_M_crypto_getmykeyfp(void) { - VM_SAFEPARMCOUNT(0, VM_M_isdemo); - PRVM_G_FLOAT(OFS_RETURN) = cls.demoplayback; + int i; + char keyfp[FP64_SIZE + 1]; + + VM_SAFEPARMCOUNT(1,VM_M_crypto_getmykey); + + i = PRVM_G_FLOAT( OFS_PARM0 ); + switch(Crypto_RetrieveLocalKey(i, keyfp, sizeof(keyfp), NULL, 0)) + { + case -1: + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(""); + break; + case 0: + PRVM_G_INT( OFS_RETURN ) = OFS_NULL; + break; + default: + case 1: + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(keyfp); + break; + } +} +void VM_M_crypto_getmyidfp(void) +{ + int i; + char idfp[FP64_SIZE + 1]; + + VM_SAFEPARMCOUNT(1,VM_M_crypto_getmykey); + + i = PRVM_G_FLOAT( OFS_PARM0 ); + switch(Crypto_RetrieveLocalKey(i, NULL, 0, idfp, sizeof(idfp))) + { + case -1: + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(""); + break; + case 0: + PRVM_G_INT( OFS_RETURN ) = OFS_NULL; + break; + default: + case 1: + PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(idfp); + break; + } } prvm_builtin_t vm_m_builtins[] = { @@ -1120,24 +1213,24 @@ NULL, // #336 NULL, // #337 NULL, // #338 NULL, // #339 -NULL, // #340 -NULL, // #341 -NULL, // #342 +VM_keynumtostring, // #340 string keynumtostring(float keynum) +VM_stringtokeynum, // #341 float stringtokeynum(string key) +VM_getkeybind, // #342 string(float keynum[, float bindmap]) getkeybind (EXT_CSQC) NULL, // #343 NULL, // #344 NULL, // #345 NULL, // #346 NULL, // #347 NULL, // #348 -VM_M_isdemo, // #349 +VM_CL_isdemo, // #349 NULL, // #350 NULL, // #351 NULL, // #352 -NULL, // #353 +VM_wasfreed, // #353 float(entity ent) wasfreed NULL, // #354 -NULL, // #355 -NULL, // #356 -NULL, // #357 +VM_CL_videoplaying, // #355 +VM_findfont, // #356 float(string fontname) loadfont (DP_GFX_FONTS) +VM_loadfont, // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS) NULL, // #358 NULL, // #359 NULL, // #360 @@ -1293,7 +1386,7 @@ NULL, // #509 VM_uri_escape, // #510 string(string in) uri_escape = #510; VM_uri_unescape, // #511 string(string in) uri_unescape = #511; VM_etof, // #512 float(entity ent) num_for_edict = #512 (DP_QC_NUM_FOR_EDICT) -VM_uri_get, // #513 float(string uril, float id) uri_get = #513; (DP_QC_URI_GET) +VM_uri_get, // #513 float(string uri, float id, [string post_contenttype, string post_delim, [float buf]]) uri_get = #513; (DP_QC_URI_GET, DP_QC_URI_POST) VM_tokenize_console, // #514 float(string str) tokenize_console = #514; (DP_QC_TOKENIZE_CONSOLE) VM_argv_start_index, // #515 float(float idx) argv_start_index = #515; (DP_QC_TOKENIZE_CONSOLE) VM_argv_end_index, // #516 float(float idx) argv_end_index = #516; (DP_QC_TOKENIZE_CONSOLE) @@ -1313,8 +1406,8 @@ NULL, // #529 NULL, // #530 NULL, // #531 VM_log, // #532 -NULL, // #533 -NULL, // #534 +VM_getsoundtime, // #533 float(entity e, float channel) getsoundtime = #533; (DP_SND_GETSOUNDTIME) +VM_soundlength, // #534 float(string sample) soundlength = #534; (DP_SND_GETSOUNDTIME) NULL, // #535 NULL, // #536 NULL, // #537 @@ -1390,7 +1483,7 @@ VM_writetofile, // #606 void writetofile(float fhandle, entity ent) 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) +VM_findkeysforcommand, // #610 string findkeysforcommand(string command[, float bindmap]) VM_M_getserverliststat, // #611 float gethostcachevalue(float type) VM_M_getserverliststring, // #612 string gethostcachestring(float type, float hostnr) VM_parseentitydata, // #613 void parseentitydata(entity ent, string data) @@ -1408,6 +1501,16 @@ 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, // #628 +NULL, // #629 +VM_setkeybind, // #630 float(float key, string bind[, float bindmap]) setkeybind +VM_getbindmaps, // #631 vector(void) getbindmap +VM_setbindmaps, // #632 float(vector bm) setbindmap +VM_M_crypto_getkeyfp, // #633 string(string addr) crypto_getkeyfp +VM_M_crypto_getidfp, // #634 string(string addr) crypto_getidfp +VM_M_crypto_getencryptlevel, // #635 string(string addr) crypto_getencryptlevel +VM_M_crypto_getmykeyfp, // #636 string(float addr) crypto_getmykeyfp +VM_M_crypto_getmyidfp, // #637 string(float addr) crypto_getmyidfp NULL };