1 //////////////////////////////////////////////////////////
6 /////////////////////////////////////////////////////////
8 /////////////////////////////////////////////////////////
11 /////////////////////////////////////////////////////////
13 /////////////////////////////////////////////////////////
17 void(float keynr, float ascii) m_keydown;
19 void(float mode) m_toggle;
22 /////////////////////////////////////////////////////////
24 ///////////////////////////
27 float KEY_UNKNOWN = -1;
30 float KEY_MENU_GRABBED = 3;
32 ///////////////////////////
36 float FILE_APPEND = 1;
39 ///////////////////////////
40 // logical constants (just for completeness)
45 ///////////////////////////
51 ///////////////////////////
54 float MSG_BROADCAST = 0; // unreliable to all
55 float MSG_ONE = 1; // reliable to one (msg_entity)
56 float MSG_ALL = 2; // reliable to all
57 float MSG_INIT = 3; // write to the init string
59 /////////////////////////////
60 // mouse target constants
65 /////////////////////////
66 // client state constants
68 float CS_DEDICATED = 0;
69 float CS_DISCONNECTED = 1;
70 float CS_CONNECTED = 2;
72 ///////////////////////////
75 float DRAWFLAG_NORMAL = 0;
76 float DRAWFLAG_ADDITIVE = 1;
77 float DRAWFLAG_MODULATE = 2;
78 float DRAWFLAG_2XMODULATE = 3;
80 ///////////////////////////
81 // null entity (actually it is the same like the world entity)
85 ///////////////////////////
89 float ERR_CANNOTOPEN = -1; // fopen
90 float ERR_NOTENOUGHFILEHANDLES = -2; // fopen
91 float ERR_INVALIDMODE = -3; // fopen
92 float ERR_BADFILENAME = -4; // fopen
96 float ERR_NULLSTRING = -1;
97 float ERR_BADDRAWFLAG = -2;
98 float ERR_BADSCALE = -3;
99 float ERR_BADSIZE = ERR_BADSCALE;
100 float ERR_NOTCACHED = -4;
103 float SLIST_HOSTCACHEVIEWCOUNT = 0;
104 float SLIST_HOSTCACHETOTALCOUNT = 1;
105 float SLIST_MASTERQUERYCOUNT = 2;
106 float SLIST_MASTERREPLYCOUNT = 3;
107 float SLIST_SERVERQUERYCOUNT = 4;
108 float SLIST_SERVERREPLYCOUNT = 5;
109 float SLIST_SORTFIELD = 6;
110 float SLIST_SORTDESCENDING = 7;
111 float SLIST_LEGACY_LINE1 = 1024;
112 float SLIST_LEGACY_LINE2 = 1025;
113 float SLIST_TEST_CONTAINS = 0;
114 float SLIST_TEST_NOTCONTAIN = 1;
115 float SLIST_TEST_LESSEQUAL = 2;
116 float SLIST_TEST_LESS = 3;
117 float SLIST_TEST_EQUAL = 4;
118 float SLIST_TEST_GREATER = 5;
119 float SLIST_TEST_GREATEREQUAL = 6;
120 float SLIST_TEST_NOTEQUAL = 7;
121 float SLIST_TEST_STARTSWITH = 8;
122 float SLIST_TEST_NOTSTARTSWITH = 9;
123 float SLIST_MASK_AND = 0;
124 float SLIST_MASK_OR = 512;
127 float FONT_DEFAULT = 0;
128 float FONT_CONSOLE = 1;
130 float FONT_NOTIFY = 3;
132 float FONT_CENTERPRINT = 5;
133 float FONT_INFOBAR = 6;
135 float FONT_USER = 8; // add to this the index, like FONT_USER+3 = user3. At least 8 of them are supported.
138 /* not supported at the moment
139 ///////////////////////////
142 float OS_WINDOWS = 0;
156 //////////////////////////////////////////////////
158 //////////////////////////////////////////////////
159 // AK FIXME: Create perhaps a special builtin file for the common cmds
161 void checkextension(string ext) = #1;
164 void error(string err,...) = #2;
165 void objerror(string err,...) = #3;
169 void print(string text,...) = #4;
170 void bprint(string text,...) = #5;
171 void sprint(float clientnum, string text,...) = #6;
172 void centerprint(string text,...) = #7;
176 vector normalize(vector v) = #8;
177 float vlen(vector v) = #9;
178 float vectoyaw(vector v) = #10;
179 vector vectoangles(vector v) = #11;
181 float random(void) = #12;
183 void cmd(string command, ...) = #13;
187 float cvar(string name) = #14;
188 const string str_cvar(string name) = #71;
189 void cvar_set(string name, string value) = #15;
191 void dprint(string text,...) = #16;
193 // conversion functions
195 string ftos(float f) = #17;
196 float fabs(float f) = #18;
197 string vtos(vector v) = #19;
198 string etos(entity e) = #20;
200 float stof(string val,...) = #21;
202 entity spawn(void) = #22;
203 void remove(entity e) = #23;
205 entity find(entity start, .string field, string match) = #24;
206 entity findfloat(entity start, .float field, float match) = #25;
207 entity findentity(entity start, .entity field, entity match) = #25;
209 entity findchainstring(.string field, string match) = #26;
210 entity findchainfloat(.float field, float match) = #27;
211 entity findchainentity(.entity field, entity match) = #27;
213 string precache_file(string file) = #28;
214 string precache_sound(string sample) = #29;
216 void crash(void) = #72;
217 void coredump(void) = #30;
218 void stackdump(void) = #73;
219 void traceon(void) = #31;
220 void traceoff(void) = #32;
222 void eprint(entity e) = #33;
223 float rint(float f) = #34;
224 float floor(float f) = #35;
225 float ceil(float f) = #36;
226 entity nextent(entity e) = #37;
227 float sin(float f) = #38;
228 float cos(float f) = #39;
229 float sqrt(float f) = #40;
230 vector randomvec(void) = #41;
232 float registercvar(string name, string value, float flags) = #42; // returns 1 if success
234 float min(float f,...) = #43;
235 float max(float f,...) = #44;
237 float bound(float min,float value, float max) = #45;
238 float pow(float a, float b) = #46;
240 void copyentity(entity src, entity dst) = #47;
242 float fopen(string filename, float mode) = #48;
243 void fclose(float fhandle) = #49;
244 string fgets(float fhandle) = #50;
245 void fputs(float fhandle, string s) = #51;
247 float strlen(string s) = #52;
248 string strcat(string s1,string s2,...) = #53;
249 string substring(string s, float start, float length) = #54;
251 vector stov(string s) = #55;
253 string strzone(string s) = #56;
254 void strunzone(string s) = #57;
256 float tokenize(string s) = #58
257 string argv(float n) = #59;
259 float isserver(void) = #60;
260 float clientcount(void) = #61;
261 float clientstate(void) = #62;
262 void clientcommand(float client, string s) = #63;
263 void changelevel(string map) = #64;
264 void localsound(string sample) = #65;
265 vector getmousepos(void) = #66;
266 float gettime(void) = #67;
267 void loadfromdata(string data) = #68;
268 void loadfromfile(string file) = #69;
270 float mod(float val, float m) = #70;
272 float search_begin(string pattern, float caseinsensitive, float quiet) = #74;
273 void search_end(float handle) = #75;
274 float search_getsize(float handle) = #76;
275 string search_getfilename(float handle, float num) = #77;
277 string chr(float ascii) = #78;
279 /////////////////////////////////////////////////
281 /////////////////////////////////////////////////
282 void WriteByte(float data, float dest, float desto) = #401;
283 void WriteChar(float data, float dest, float desto) = #402;
284 void WriteShort(float data, float dest, float desto) = #403;
285 void WriteLong(float data, float dest, float desto) = #404;
286 void WriteAngle(float data, float dest, float desto) = #405;
287 void WriteCoord(float data, float dest, float desto) = #406;
288 void WriteString(string data, float dest, float desto)= #407;
289 void WriteEntity(entity data, float dest, float desto) = #408;
291 //////////////////////////////////////////////////
293 //////////////////////////////////////////////////
295 float iscachedpic(string name) = #451;
296 string precache_pic(string name) = #452;
297 void freepic(string name) = #453;
299 float drawcharacter(vector position, float character, vector scale, vector rgb, float alpha, float flag) = #454;
301 float drawstring(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #455;
303 float drawcolorcodedstring(vector position, string text, vector scale, float alpha, float flag) = #467;
305 vector drawcolorcodedstring2(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #467;
307 float drawpic(vector position, string pic, vector size, vector rgb, float alpha, float flag) = #456;
309 float drawfill(vector position, vector size, vector rgb, float alpha, float flag) = #457;
311 void drawsetcliparea(float x, float y, float width, float height) = #458;
313 void drawresetcliparea(void) = #459;
315 vector drawgetimagesize(string pic) = #460;
317 ////////////////////////////////////////////////
319 ////////////////////////////////////////////////
321 void setkeydest(float dest) = #601;
322 float getkeydest(void) = #602;
324 void setmousetarget(float trg) = #603;
325 float getmousetarget(void) = #604;
327 float isfunction(string function_name) = #607;
328 void callfunction(...) = #605;
329 void writetofile(float fhandle, entity ent) = #606;
330 vector getresolution(float number) = #608;
331 string keynumtostring(float keynum) = #609;
333 float gethostcachevalue(float type) = #611;
334 string gethostcachestring(float type, float hostnr) = #612;
337 //idea: daemon, motorsep
338 //darkplaces implementation: divVerent
339 //builtin definitions:
340 string(float key, float bindmap) getkeybind_bindmap = #342;
341 float(float key, string bind, float bindmap) setkeybind_bindmap = #630;
342 vector(void) getbindmaps = #631;
343 float(vector bm) setbindmaps = #632;
344 string(string command, float bindmap) findkeysforcommand = #610;
345 float(string key) stringtokeynum = #341;
346 //<also allowed builtin number to match EXT_CSQC> string(float keynum) keynumtostring = #340;
347 //description: key bind setting/getting including support for switchable
352 //darkplaces implementation: divVerent
353 //field definitions: (MENUQC)
354 string(string serveraddress) crypto_getkeyfp = #633; // retrieves the cached host key's CA fingerprint of a server given by IP address
355 string(string serveraddress) crypto_getidfp = #634; // retrieves the cached host key fingerprint of a server given by IP address
356 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
357 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
358 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
359 float CRYPTO_IDSTATUS_OUTOFRANGE = -1;
360 float CRYPTO_IDSTATUS_EMPTY = 0;
361 float CRYPTO_IDSTATUS_UNSIGNED = 1;
362 float CRYPTO_IDSTATUS_SIGNED = 2;
363 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
364 float(string url, float id, string content_type, string delim, float buf, float keyid) crypto_uri_postbuf = #513;
366 //use -1 as buffer handle to justs end delim as postdata
369 //idea: Res2k, BlackHC
370 //darkplaces implementation: Res2k, BlackHC
371 //constant definitions:
372 float GECKO_BUTTON_DOWN = 0;
373 float GECKO_BUTTON_UP = 1;
374 // either use down and up or just press but not all of them!
375 float GECKO_BUTTON_PRESS = 2;
376 // use this for mouse events if needed?
377 float GECKO_BUTTON_DOUBLECLICK = 3;
378 //builtin definitions:
379 float gecko_create( string name ) = #487;
380 void gecko_destroy( string name ) = #488;
381 void gecko_navigate( string name, string URI ) = #489;
382 float gecko_keyevent( string name, float key, float eventtype ) = #490;
383 void gecko_mousemove( string name, float x, float y ) = #491;
384 void gecko_resize( string name, float w, float h ) = #492;
385 vector gecko_get_texture_extent( string name ) = #493;
386 //engine-called QC prototypes:
387 //string(string name, string query) Qecko_Query;
389 //provides an interface to the offscreengecko library and allows for internet browsing in games
393 //darkplaces implementation: KrimZon
395 //various string manipulation functions
396 float(string str, string sub, float startpos) strstrofs = #221;
397 float(string str, float ofs) str2chr = #222;
398 string(float c, ...) chr2str = #223;
399 string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
400 string(float chars, string s, ...) strpad = #225;
401 string(string info, string key, string value, ...) infoadd = #226;
402 string(string info, string key) infoget = #227;
403 float(string s1, string s2, float len) strncmp = #228;
404 float(string s1, string s2) strcasecmp = #229;
405 float(string s1, string s2, float len) strncasecmp = #230;
409 //darkplaces implementation: div0
410 //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.
411 //When caseinsensitive is set, the CRC is calculated of the lower cased string.
412 float(float caseinsensitive, string s, ...) crc16 = #494;
415 float(string name) cvar_type = #495;
416 float CVAR_TYPEFLAG_EXISTS = 1;
417 float CVAR_TYPEFLAG_SAVED = 2;
418 float CVAR_TYPEFLAG_PRIVATE = 4;
419 float CVAR_TYPEFLAG_ENGINE = 8;
420 float CVAR_TYPEFLAG_HASDESCRIPTION = 16;
421 float CVAR_TYPEFLAG_READONLY = 32;
423 //DP_QC_STRINGBUFFERS
425 //darkplaces implementation: LordHavoc
426 //functions to manage string buffer objects - that is, arbitrary length string arrays that are handled by the engine
427 float() buf_create = #440;
428 void(float bufhandle) buf_del = #441;
429 float(float bufhandle) buf_getsize = #442;
430 void(float bufhandle_from, float bufhandle_to) buf_copy = #443;
431 void(float bufhandle, float sortpower, float backward) buf_sort = #444;
432 string(float bufhandle, string glue) buf_implode = #445;
433 string(float bufhandle, float string_index) bufstr_get = #446;
434 void(float bufhandle, float string_index, string str) bufstr_set = #447;
435 float(float bufhandle, string str, float order) bufstr_add = #448;
436 void(float bufhandle, float string_index) bufstr_free = #449;
437 void(float bufhandle, string pattern, string antipattern) buf_cvarlist = #517;
439 //DP_QC_STRING_CASE_FUNCTIONS
441 //darkplaces implementation: LordHavoc / Dresk
442 //builtin definitions:
443 string(string s) strtolower = #480; // returns the passed in string in pure lowercase form
444 string(string s) strtoupper = #481; // returns the passed in string in pure uppercase form
446 //provides simple string uppercase and lowercase functions
448 //DP_QC_CVAR_DESCRIPTION
450 //DarkPlaces implementation: divVerent
451 //builtin definitions:
452 string(string name) cvar_description = #518;
454 //returns the description of a cvar
457 //idea: motorsep, Spike
458 //DarkPlaces implementation: divVerent
459 //builtin definitions:
460 string(string digest, string data, ...) digest_hex = #639;
462 //returns a given hex digest of given data
463 //the returned digest is always encoded in hexadecimal
464 //only the "MD4" digest is always supported!
465 //if the given digest is not supported, string_null is returned
466 //the digest string is matched case sensitively, use "MD4", not "md4"!
470 //darkplaces implementation: div0
471 //URI::Escape's functionality
472 string(string in) uri_escape = #510;
473 string(string in) uri_unescape = #511;
477 //darkplaces implementation: divVerent
478 //loads text from an URL into a string
479 //returns 1 on success of initiation, 0 if there are too many concurrent
480 //connections already or if the URL is invalid
481 //the following callback will receive the data and MUST exist!
482 // void(float id, float status, string data) URI_Get_Callback;
484 // negative for an internal error,
486 // the HTTP response code on server error (e.g. 404)
487 //if 1 is returned by uri_get, the callback will be called in the future
488 float(string url, float id) uri_get = #513;
491 //darkplaces implementation: divVerent
492 //loads text from an URL into a string after POSTing via HTTP
493 //works like uri_get, but uri_post sends data with Content-Type: content_type to the server
494 //and uri_post sends the string buffer buf, joined using the delimiter delim
495 float(string url, float id, string content_type, string data) uri_post = #513;
496 float(string url, float id, string content_type, string delim, float buf) uri_postbuf = #513;
498 // assorted undocumented extensions
499 string(string, float) netaddress_resolve = #625;
500 string(string search, string replace, string subject) strreplace = #484;
501 string(float uselocaltime, string format, ...) strftime = #478;
502 float(string s) tokenize_console = #514;
503 float(float i) argv_start_index = #515;
504 float(float i) argv_end_index = #516;
505 string(float, float) getgamedirinfo = #626;
506 #define GETGAMEDIRINFO_NAME 0
507 #define GETGAMEDIRINFO_DESCRIPTION 1
508 float log(float f) = #532;
509 string(string format, ...) sprintf = #627;
510 string(string s) strdecolorize = #477;
511 entity findflags(entity start, .float field, float match) = #87;
512 entity findchainflags(.float field, float match) = #88;
513 float(string s, string separator1, ...) tokenizebyseparator = #479;
514 float etof(entity ent) = #79;
515 entity ftoe(float num) = #80;
516 float validstring(string str) = #81;
517 float altstr_count(string str) = #82;
518 string altstr_prepare(string str) = #83;
519 string altstr_get(string str, float num) = #84;
520 string altstr_set(string str, float num, string set) = #85;
521 string altstr_ins(string str, float num, string set) = #86;
522 float isdemo() = #349;
523 float drawsubpic(vector position, vector size, string pic, vector srcPosition, vector srcSize, vector rgb, float alpha, float flag) = #469;
524 //vector getresolution(float number, ...) = #608; // optional argument "isfullscreen"
525 void parseentitydata(entity ent, string data) = #613;
526 void resethostcachemasks(void) = #615;
527 void sethostcachemaskstring(float mask, float fld, string str, float op) = #616;
528 void sethostcachemasknumber(float mask, float fld, float num, float op) = #617;
529 void resorthostcache(void) = #618;
530 void sethostcachesort(float fld, float descending) = #619;
531 void refreshhostcache(void) = #620;
532 float gethostcachenumber(float fld, float hostnr) = #621;
533 float gethostcacheindexforkey(string key) = #622;
534 void addwantedhostcachekey(string key) = #623;
535 string getextresponse(void) = #624;
536 const string cvar_string(string name) = #71;
537 const string cvar_defstring(string name) = #89;
538 float stringwidth(string text, float handleColors, vector size) = #468;