]> git.xonotic.org Git - xonotic/darkplaces.git/blob - dpdefs/menudefs.qc
4eee19ed10f2d7d827ff8891fcf10d9d0c9d5ed6
[xonotic/darkplaces.git] / dpdefs / menudefs.qc
1 //////////////////////////////////////////////////////////
2 // sys globals
3
4 entity self;
5
6 /////////////////////////////////////////////////////////
7 void            end_sys_globals;
8 /////////////////////////////////////////////////////////
9 // sys fields
10
11 /////////////////////////////////////////////////////////
12 void            end_sys_fields;
13 /////////////////////////////////////////////////////////
14 // sys functions
15
16 void() m_init;
17 void(float keynr, float ascii) m_keydown;
18 void(string cvarName, string oldValue, string newValue) m_cvar_changed;
19 void(float width, float height) m_draw;
20 void(float mode) m_toggle;
21 void() m_shutdown;
22 // optional: float(float) m_gethostcachecategory;
23
24 /////////////////////////////////////////////////////////
25 // sys constants
26 ///////////////////////////
27 // key dest constants
28
29 float KEY_UNKNOWN       =       -1;
30 float KEY_GAME          =       0;
31 float KEY_MENU          =       2;
32 float KEY_MENU_GRABBED  =       3;
33
34 ///////////////////////////
35 // file constants
36
37 float FILE_READ = 0;
38 float FILE_APPEND = 1;
39 float FILE_WRITE = 2;
40
41 ///////////////////////////
42 // logical constants (just for completeness)
43
44 float TRUE      = 1;
45 float FALSE = 0;
46
47 ///////////////////////////
48 // boolean constants
49
50 float true = 1;
51 float false = 0;
52
53 ///////////////////////////
54 // msg constants
55
56 float MSG_BROADCAST             = 0;            // unreliable to all
57 float MSG_ONE                   = 1;            // reliable to one (msg_entity)
58 float MSG_ALL                   = 2;            // reliable to all
59 float MSG_INIT                  = 3;            // write to the init string
60
61 /////////////////////////////
62 // mouse target constants
63
64 float MT_MENU = 1;
65 float MT_CLIENT = 2;
66
67 /////////////////////////
68 // client state constants
69
70 float CS_DEDICATED              = 0;
71 float CS_DISCONNECTED   = 1;
72 float CS_CONNECTED              = 2;
73
74 ///////////////////////////
75 // blend flags
76
77 float DRAWFLAG_NORMAL           = 0;
78 float DRAWFLAG_ADDITIVE         = 1;
79 float DRAWFLAG_MODULATE         = 2;
80 float DRAWFLAG_2XMODULATE   = 3;
81
82 ///////////////////////////
83 // null entity (actually it is the same like the world entity)
84
85 entity null_entity;
86
87 ///////////////////////////
88 // error constants
89
90 // file handling
91 float ERR_CANNOTOPEN                    = -1; // fopen
92 float ERR_NOTENOUGHFILEHANDLES  = -2; // fopen
93 float ERR_INVALIDMODE                   = -3; // fopen
94 float ERR_BADFILENAME                   = -4; // fopen
95
96 // drawing functions
97
98 float ERR_NULLSTRING                    = -1;
99 float ERR_BADDRAWFLAG                   = -2;
100 float ERR_BADSCALE                              = -3;
101 float ERR_BADSIZE                               = -3; // same as ERR_BADSCALE
102 float ERR_NOTCACHED                             = -4;
103
104 // server list stuff
105 float SLIST_HOSTCACHEVIEWCOUNT  = 0;
106 float SLIST_HOSTCACHETOTALCOUNT = 1;
107 float SLIST_MASTERQUERYCOUNT    = 2;
108 float SLIST_MASTERREPLYCOUNT    = 3;
109 float SLIST_SERVERQUERYCOUNT    = 4;
110 float SLIST_SERVERREPLYCOUNT    = 5;
111 float SLIST_SORTFIELD           = 6;
112 float SLIST_SORTDESCENDING      = 7;
113 float SLIST_LEGACY_LINE1        = 1024;
114 float SLIST_LEGACY_LINE2        = 1025;
115 float SLIST_TEST_CONTAINS       = 0;
116 float SLIST_TEST_NOTCONTAIN     = 1;
117 float SLIST_TEST_LESSEQUAL      = 2;
118 float SLIST_TEST_LESS           = 3;
119 float SLIST_TEST_EQUAL          = 4;
120 float SLIST_TEST_GREATER        = 5;
121 float SLIST_TEST_GREATEREQUAL   = 6;
122 float SLIST_TEST_NOTEQUAL       = 7;
123 float SLIST_TEST_STARTSWITH     = 8;
124 float SLIST_TEST_NOTSTARTSWITH  = 9;
125 float SLIST_MASK_AND = 0;
126 float SLIST_MASK_OR  = 512;
127
128 // font stuff
129 float FONT_DEFAULT     = 0;
130 float FONT_CONSOLE     = 1;
131 float FONT_SBAR        = 2;
132 float FONT_NOTIFY      = 3;
133 float FONT_CHAT        = 4;
134 float FONT_CENTERPRINT = 5;
135 float FONT_INFOBAR     = 6;
136 float FONT_MENU        = 7;
137 float FONT_USER        = 8; // add to this the index, like FONT_USER+3 = user3. At least 8 of them are supported.
138 float drawfont;
139
140 /* not supported at the moment
141 ///////////////////////////
142 // os constants
143
144 float OS_WINDOWS        = 0;
145 float OS_LINUX          = 1;
146 float OS_MAC            = 2;
147 */
148
149
150
151
152
153
154
155
156
157
158 //////////////////////////////////////////////////
159 // common cmd
160 //////////////////////////////////////////////////
161 // AK FIXME: Create perhaps a special builtin file for the common cmds
162
163 void    checkextension(string ext)      = #1;
164
165 // error cmds
166 void    error(string err,...)           = #2;
167 void    objerror(string err,...)        = #3;
168
169 // print
170
171 void    print(string text,...)                   = #4;
172 void    bprint(string text,...)                  = #5;
173 void    sprint(float clientnum, string text,...) = #6;
174 void    centerprint(string text,...)             = #7;
175
176 // vector stuff
177
178 vector  normalize(vector v)             = #8;
179 float   vlen(vector v)                  = #9;
180 float   vectoyaw(vector v)              = #10;
181 vector  vectoangles(vector v)           = #11;
182
183 float   random(void)  = #12;
184
185 void    cmd(string command, ...) = #13;
186
187 // cvar cmds
188
189 float   cvar(string name)                       = #14;
190 const string str_cvar(string name)              = #71;
191 void    cvar_set(string name, string value)     = #15;
192
193 void    dprint(string text,...) = #16;
194
195 // conversion functions
196
197 string  ftos(float f)   = #17;
198 float   fabs(float f)   = #18;
199 string  vtos(vector v)  = #19;
200 string  etos(entity e)  = #20;
201
202 float   stof(string val,...)  = #21;
203
204 entity  spawn(void)             = #22;
205 void    remove(entity e)        = #23;
206
207 entity  find(entity start, .string field, string match)         = #24;
208 entity  findfloat(entity start, .float field, float match)      = #25;
209 entity  findentity(entity start, .entity field, entity match)   = #25;
210
211 entity  findchainstring(.string field, string match)    = #26;
212 entity  findchainfloat(.float field, float match)       = #27;
213 entity  findchainentity(.entity field, entity match)    = #27;
214
215 string  precache_file(string file)      = #28;
216 string  precache_sound(string sample)   = #29;
217
218 void    crash(void)     = #72;
219 void    coredump(void)  = #30;
220 void    stackdump(void) = #73;
221 void    traceon(void)   = #31;
222 void    traceoff(void)  = #32;
223
224 void    eprint(entity e)        = #33;
225 float   rint(float f)           = #34;
226 float   floor(float f)          = #35;
227 float   ceil(float f)           = #36;
228 entity  nextent(entity e)       = #37;
229 float   sin(float f)            = #38;
230 float   cos(float f)            = #39;
231 float   sqrt(float f)           = #40;
232 vector  randomvec(void)         = #41;
233
234 float   registercvar(string name, string value, float flags)  = #42; // returns 1 if success
235
236 float   min(float f,...)  = #43;
237 float   max(float f,...)  = #44;
238
239 float   bound(float min,float value, float max)  = #45;
240 float   pow(float a, float b)  = #46;
241
242 void    copyentity(entity src, entity dst)  = #47;
243
244 float   fopen(string filename, float mode)  = #48;
245 void    fclose(float fhandle)  = #49;
246 string  fgets(float fhandle)  = #50;
247 void    fputs(float fhandle, string s)  = #51;
248
249 float   strlen(string s)  = #52;
250 string  strcat(string s1,string s2,...)  = #53;
251 string  substring(string s, float start, float length)  = #54;
252
253 vector  stov(string s)  = #55;
254
255 string  strzone(string s)  = #56;
256 void    strunzone(string s) = #57;
257
258 float   tokenize(string s)  = #58;
259 string  argv(float n)  = #59;
260
261 float   isserver(void)  = #60;
262 float   clientcount(void)  = #61;
263 float   clientstate(void)  = #62;
264 void    clientcommand(float client, string s)  = #63;
265 void    changelevel(string map)  = #64;
266 void    localsound(string sample)  = #65;
267 vector  getmousepos(void)       = #66;
268 float   gettime(void)           = #67;
269 void    loadfromdata(string data) = #68;
270 void    loadfromfile(string file) = #69;
271
272 float   mod(float val, float m) = #70;
273
274 float   search_begin(string pattern, float caseinsensitive, float quiet) = #74;
275 void    search_end(float handle) = #75;
276 float   search_getsize(float handle) = #76;
277 string  search_getfilename(float handle, float num) = #77;
278
279 string  chr(float ascii) = #78;
280
281 /////////////////////////////////////////////////
282 // Write* Functions
283 /////////////////////////////////////////////////
284 void    WriteByte(float data, float dest, float desto)  = #401;
285 void    WriteChar(float data, float dest, float desto)  = #402;
286 void    WriteShort(float data, float dest, float desto) = #403;
287 void    WriteLong(float data, float dest, float desto)  = #404;
288 void    WriteAngle(float data, float dest, float desto) = #405;
289 void    WriteCoord(float data, float dest, float desto) = #406;
290 void    WriteString(string data, float dest, float desto)= #407;
291 void    WriteEntity(entity data, float dest, float desto) = #408;
292
293 //////////////////////////////////////////////////
294 // Draw funtions
295 //////////////////////////////////////////////////
296
297 float   iscachedpic(string name)        = #451;
298 string  precache_pic(string name, ...)  = #452;
299 void    freepic(string name)            = #453;
300
301 float   drawcharacter(vector position, float character, vector scale, vector rgb, float alpha, float flag) = #454;
302
303 float   drawstring(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #455;
304
305 float   drawcolorcodedstring(vector position, string text, vector scale, float alpha, float flag) = #467;
306
307 vector  drawcolorcodedstring2(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #467;
308  
309 float   drawpic(vector position, string pic, vector size, vector rgb, float alpha, float flag) = #456;
310
311 float   drawfill(vector position, vector size, vector rgb, float alpha, float flag) = #457;
312
313 void    drawsetcliparea(float x, float y, float width, float height) = #458;
314
315 void    drawresetcliparea(void) = #459;
316
317 vector  drawgetimagesize(string pic) = #460;
318
319 ////////////////////////////////////////////////
320 // Menu functions
321 ////////////////////////////////////////////////
322
323 void    setkeydest(float dest)  = #601;
324 float   getkeydest(void)        = #602;
325
326 void    setmousetarget(float trg) = #603;
327 float   getmousetarget(void)      = #604;
328
329 float   isfunction(string function_name) = #607;
330 void    callfunction(...) = #605;
331 void    writetofile(float fhandle, entity ent) = #606;
332 vector  getresolution(float number) = #608;
333 string  keynumtostring(float keynum) = #609;
334
335 float   gethostcachevalue(float type) = #611;
336 string  gethostcachestring(float type, float hostnr) = #612;
337
338 //DP_CSQC_BINDMAPS
339 //idea: daemon, motorsep
340 //darkplaces implementation: divVerent
341 //builtin definitions:
342 string(float key, float bindmap) getkeybind_bindmap = #342;
343 float(float key, string bind, float bindmap) setkeybind_bindmap = #630;
344 vector(void) getbindmaps = #631;
345 float(vector bm) setbindmaps = #632;
346 string(string command, float bindmap) findkeysforcommand = #610;
347 float(string key) stringtokeynum = #341;
348 //<also allowed builtin number to match EXT_CSQC> string(float keynum) keynumtostring = #340;
349 //description: key bind setting/getting including support for switchable
350 //bindmaps.
351
352 //DP_CRYPTO
353 //idea: divVerent
354 //darkplaces implementation: divVerent
355 //field definitions: (MENUQC)
356 string(string serveraddress) crypto_getkeyfp = #633; // retrieves the cached host key's CA fingerprint of a server given by IP address
357 string(string serveraddress) crypto_getidfp = #634; // retrieves the cached host key fingerprint of a server given by IP address
358 float(string serveraddress) crypto_getidstatus = #643; // retrieves the cached host key's key status. See below for CRYPTO_IDSTATUS_ defines.
359 string(string serveraddress) crypto_getencryptlevel = #635; // 0 if never encrypting, 1 supported, 2 requested, 3 required, appended by list of allowed methods in order of preference ("AES128"), preceded by a space each
360 string(float i) crypto_getmykeyfp = #636; // retrieves the CA key fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
361 string(float i) crypto_getmyidfp = #637; // retrieves the ID fingerprint of a given CA slot, or "" if slot is unused but more to come, or string_null if end of list
362 float CRYPTO_IDSTATUS_OUTOFRANGE = -1;
363 float CRYPTO_IDSTATUS_EMPTY = 0;
364 float CRYPTO_IDSTATUS_UNSIGNED = 1;
365 float CRYPTO_IDSTATUS_SIGNED = 2;
366 float(float i) crypto_getmyidstatus = #641; // retrieves the ID's status of a given CA slot, or 0 if slot is unused but more to come, or -1 if end of list
367 float(string url, float id, string content_type, string delim, float buf, float keyid) crypto_uri_postbuf = #513;
368 //description:
369 //use -1 as buffer handle to justs end delim as postdata
370
371 //DP_GECKO_SUPPORT
372 //idea: Res2k, BlackHC
373 //darkplaces implementation: Res2k, BlackHC
374 //constant definitions:
375 float GECKO_BUTTON_DOWN         = 0;
376 float GECKO_BUTTON_UP           = 1;
377 // either use down and up or just press but not all of them!
378 float GECKO_BUTTON_PRESS        = 2;
379 // use this for mouse events if needed?
380 float GECKO_BUTTON_DOUBLECLICK  = 3;
381 //builtin definitions:
382 float gecko_create( string name ) = #487;
383 void gecko_destroy( string name ) = #488;
384 void gecko_navigate( string name, string URI ) = #489;
385 float gecko_keyevent( string name, float key, float eventtype ) = #490;
386 void gecko_mousemove( string name, float x, float y ) = #491;
387 void gecko_resize( string name, float w, float h ) = #492;
388 vector gecko_get_texture_extent( string name ) = #493;
389 //engine-called QC prototypes:
390 //string(string name, string query) Qecko_Query;
391 //description:
392 //provides an interface to the offscreengecko library and allows for internet browsing in games
393
394 //FTE_STRINGS
395 //idea: many
396 //darkplaces implementation: KrimZon
397 //description:
398 //various string manipulation functions
399 float(string str, string sub, float startpos) strstrofs = #221;
400 float(string str, float ofs) str2chr = #222;
401 string(float c, ...) chr2str = #223;
402 string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
403 string(float chars, string s, ...) strpad = #225;
404 string(string info, string key, string value, ...) infoadd = #226;
405 string(string info, string key) infoget = #227;
406 float(string s1, string s2) strcmp = #228;
407 float(string s1, string s2, float len) strncmp = #228;
408 float(string s1, string s2) strcasecmp = #229;
409 float(string s1, string s2, float len) strncasecmp = #230;
410
411 //DP_PRECACHE_PIC_FLAGS
412 //idea: divVerent
413 //darkplaces implementation: divVerent
414 //constant definitions:
415 float PRECACHE_PIC_FROMWAD = 1; // this one actually is part of EXT_CSQC
416 float PRECACHE_PIC_NOTPERSISTENT = 2; // picture may get deallocated when unused
417 float PRECACHE_PIC_MIPMAP = 8; // mipmap the texture for possibly better downscaling at memory expense
418 //notes: these constants are given as optional second argument to precache_pic()
419
420 //DP_QC_CRC16
421 //idea: div0
422 //darkplaces implementation: div0
423 //Some hash function to build hash tables with. This has to be be the CRC-16-CCITT that is also required for the QuakeWorld download protocol.
424 //When caseinsensitive is set, the CRC is calculated of the lower cased string.
425 float(float caseinsensitive, string s, ...) crc16 = #494;
426
427 //DP_QC_CVAR_TYPE
428 float(string name) cvar_type = #495;
429 float CVAR_TYPEFLAG_EXISTS = 1;
430 float CVAR_TYPEFLAG_SAVED = 2;
431 float CVAR_TYPEFLAG_PRIVATE = 4;
432 float CVAR_TYPEFLAG_ENGINE = 8;
433 float CVAR_TYPEFLAG_HASDESCRIPTION = 16;
434 float CVAR_TYPEFLAG_READONLY = 32;
435
436 //DP_QC_STRINGBUFFERS
437 //idea: ??
438 //darkplaces implementation: LordHavoc
439 //functions to manage string buffer objects - that is, arbitrary length string arrays that are handled by the engine
440 float() buf_create = #440;
441 void(float bufhandle) buf_del = #441;
442 float(float bufhandle) buf_getsize = #442;
443 void(float bufhandle_from, float bufhandle_to) buf_copy = #443;
444 void(float bufhandle, float sortpower, float backward) buf_sort = #444;
445 string(float bufhandle, string glue) buf_implode = #445;
446 string(float bufhandle, float string_index) bufstr_get = #446;
447 void(float bufhandle, float string_index, string str) bufstr_set = #447;
448 float(float bufhandle, string str, float order) bufstr_add = #448;
449 void(float bufhandle, float string_index) bufstr_free = #449;
450 void(float bufhandle, string pattern, string antipattern) buf_cvarlist = #517;
451
452 //DP_QC_STRING_CASE_FUNCTIONS
453 //idea: Dresk
454 //darkplaces implementation: LordHavoc / Dresk
455 //builtin definitions:
456 string(string s) strtolower = #480; // returns the passed in string in pure lowercase form
457 string(string s) strtoupper = #481; // returns the passed in string in pure uppercase form
458 //description:
459 //provides simple string uppercase and lowercase functions
460
461 //DP_QC_CVAR_DESCRIPTION
462 //idea: divVerent
463 //DarkPlaces implementation: divVerent
464 //builtin definitions:
465 string(string name) cvar_description = #518;
466 //description:
467 //returns the description of a cvar
468
469 //DP_QC_DIGEST
470 //idea: motorsep, Spike
471 //DarkPlaces implementation: divVerent
472 //builtin definitions:
473 string(string digest, string data, ...) digest_hex = #639;
474 //description:
475 //returns a given hex digest of given data
476 //the returned digest is always encoded in hexadecimal
477 //only the "MD4" digest is always supported!
478 //if the given digest is not supported, string_null is returned
479 //the digest string is matched case sensitively, use "MD4", not "md4"!
480
481 //DP_QC_URI_ESCAPE
482 //idea: div0
483 //darkplaces implementation: div0
484 //URI::Escape's functionality
485 string(string in) uri_escape = #510;
486 string(string in) uri_unescape = #511;
487
488 //DP_QC_URI_GET
489 //idea: divVerent
490 //darkplaces implementation: divVerent
491 //loads text from an URL into a string
492 //returns 1 on success of initiation, 0 if there are too many concurrent
493 //connections already or if the URL is invalid
494 //the following callback will receive the data and MUST exist!
495 //  void(float id, float status, string data) URI_Get_Callback;
496 //status is either
497 //  negative for an internal error,
498 //  0 for success, or
499 //  the HTTP response code on server error (e.g. 404)
500 //if 1 is returned by uri_get, the callback will be called in the future
501 float(string url, float id) uri_get = #513;
502 //DP_QC_URI_POST
503 //idea: divVerent
504 //darkplaces implementation: divVerent
505 //loads text from an URL into a string after POSTing via HTTP
506 //works like uri_get, but uri_post sends data with Content-Type: content_type to the server
507 //and uri_post sends the string buffer buf, joined using the delimiter delim
508 float(string url, float id, string content_type, string data) uri_post = #513;
509 float(string url, float id, string content_type, string delim, float buf) uri_postbuf = #513;
510
511 //DP_QC_ENTITYDATA
512 //idea: KrimZon
513 //darkplaces implementation: KrimZon
514 //builtin definitions:
515 float() numentityfields = #496;
516 string(float fieldnum) entityfieldname = #497;
517 float(float fieldnum) entityfieldtype = #498;
518 string(float fieldnum, entity ent) getentityfieldstring = #499;
519 float(float fieldnum, entity ent, string s) putentityfieldstring = #500;
520 //constants:
521 //Returned by entityfieldtype
522 float FIELD_STRING   = 1;
523 float FIELD_FLOAT    = 2;
524 float FIELD_VECTOR   = 3;
525 float FIELD_ENTITY   = 4;
526 float FIELD_FUNCTION = 6;
527 //description:
528 //Versatile functions intended for storing data from specific entities between level changes, but can be customized for some kind of partial savegame.
529 //WARNING: .entity fields cannot be saved and restored between map loads as they will leave dangling pointers.
530 //numentityfields returns the number of entity fields. NOT offsets. Vectors comprise 4 fields: v, v_x, v_y and v_z.
531 //entityfieldname returns the name as a string, eg. "origin" or "classname" or whatever.
532 //entityfieldtype returns a value that the constants represent, but the field may be of another type in more exotic progs.dat formats or compilers.
533 //getentityfieldstring returns data as would be written to a savegame, eg... "0.05" (float), "0 0 1" (vector), or "Hello World!" (string). Function names can also be returned.
534 //putentityfieldstring puts the data returned by getentityfieldstring back into the entity.
535
536 //DP_COVERAGE
537 //idea: divVerent
538 //darkplaces implementation: divVerent
539 //function definitions:
540 void coverage() = #642;  // Reports a coverage event. The engine counts for each of the calls to this builtin whether it has been called.
541
542 // assorted undocumented extensions
543 string(string, float) netaddress_resolve = #625;
544 string(string search, string replace, string subject) strreplace = #484;
545 string(float uselocaltime, string format, ...) strftime = #478;
546 float(string s) tokenize_console = #514;
547 float(float i) argv_start_index = #515;
548 float(float i) argv_end_index = #516;
549 string(float, float) getgamedirinfo = #626;
550 #define GETGAMEDIRINFO_NAME 0
551 #define GETGAMEDIRINFO_DESCRIPTION 1
552 float log(float f) = #532;
553 string(string format, ...) sprintf = #627;
554 string(string s) strdecolorize = #477;
555 entity  findflags(entity start, .float field, float match) = #87;
556 entity  findchainflags(.float field, float match) = #88;
557 float(string s, string separator1, ...) tokenizebyseparator = #479;
558 float   etof(entity ent) = #79;
559 entity  ftoe(float num)  = #80;
560 float   validstring(string str) = #81;
561 float   altstr_count(string str) = #82;
562 string  altstr_prepare(string str) = #83;
563 string  altstr_get(string str, float num) = #84;
564 string  altstr_set(string str, float num, string set) = #85;
565 string  altstr_ins(string str, float num, string set) = #86;
566 float   isdemo() = #349;
567 float   drawsubpic(vector position, vector size, string pic, vector srcPosition, vector srcSize, vector rgb, float alpha, float flag) = #469;
568 //vector        getresolution(float number, ...) = #608; // optional argument "isfullscreen"
569 void    parseentitydata(entity ent, string data) = #613;
570 void    resethostcachemasks(void) = #615;
571 void    sethostcachemaskstring(float mask, float fld, string str, float op) = #616;
572 void    sethostcachemasknumber(float mask, float fld, float num, float op) = #617;
573 void    resorthostcache(void) = #618;
574 float SLSF_DESCENDING = 1;
575 float SLSF_FAVORITES = 2;
576 float SLSF_CATEGORIES = 4;
577 void    sethostcachesort(float fld, float slsf) = #619;
578 void    refreshhostcache(...) = #620;  // optional boolean argument "clear_list"
579 float   gethostcachenumber(float fld, float hostnr) = #621;
580 float   gethostcacheindexforkey(string key) = #622;
581 void    addwantedhostcachekey(string key) = #623;
582 string  getextresponse(void) = #624;
583 const string cvar_string(string name) = #71;
584 const string cvar_defstring(string name) = #89;
585 float   stringwidth(string text, float handleColors, vector size) = #468;