//============================================================================
// 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 "
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)
{
- VM_SAFEPARMCOUNT(0, VM_M_isdemo);
- PRVM_G_FLOAT(OFS_RETURN) = cls.demoplayback;
+ 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)
+{
+ 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[] = {
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
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
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
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)
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
};