1 //////////////////////////////////////////////////
\r
3 //////////////////////////////////////////////////
\r
4 // AK FIXME: Create perhaps a special builtin file for the common cmds
\r
6 //#define PROFILESTRZONE
\r
9 float checkextension(string ext) = #1;
\r
12 void error(string err,...) = #2;
\r
13 void objerror(string err,...) = #3;
\r
17 void print(string text,...) = #4;
\r
18 void bprint(string text,...) = #5;
\r
19 void sprint(float clientnum, string text,...) = #6;
\r
20 void centerprint(string text,...) = #7;
\r
24 vector normalize(vector v) = #8;
\r
25 float vlen(vector v) = #9;
\r
26 float vectoyaw(vector v) = #10;
\r
27 vector vectoangles(vector v) = #11;
\r
29 float random(void) = #12;
\r
31 void cmd(string command, ...) = #13;
\r
35 float cvar(string name) = #14;
\r
36 const string cvar_string(string name) = #71;
\r
37 const string cvar_defstring(string name) = #89;
\r
38 void cvar_set(string name, string value) = #15;
\r
40 void dprint(string text,...) = #16;
\r
42 // conversion functions
\r
44 string ftos(float f) = #17;
\r
45 float fabs(float f) = #18;
\r
46 string vtos(vector v) = #19;
\r
47 string etos(entity e) = #20;
\r
49 float stof(string val,...) = #21;
\r
51 entity spawn(void) = #22;
\r
52 void remove(entity e) = #23;
\r
54 entity findstring(entity start, .string _field, string match) = #24;
\r
55 entity findfloat(entity start, .float _field, float match) = #25;
\r
56 entity findentity(entity start, .entity _field, entity match) = #25;
\r
58 entity findchainstring(.string _field, string match) = #26;
\r
59 entity findchainfloat(.float _field, float match) = #27;
\r
60 entity findchainentity(.entity _field, entity match) = #27;
\r
62 entity findflags(entity start, .float field, float match) = #87;
\r
63 entity findchainflags(.float field, float match) = #88;
\r
65 string precache_file(string file) = #28;
\r
66 string precache_sound(string sample) = #29;
\r
68 void crash(void) = #72;
\r
69 void coredump(void) = #30;
\r
70 void stackdump(void) = #73;
\r
71 void traceon(void) = #31;
\r
72 void traceoff(void) = #32;
\r
74 void eprint(entity e) = #33;
\r
75 float rint(float f) = #34;
\r
76 float floor(float f) = #35;
\r
77 float ceil(float f) = #36;
\r
78 entity nextent(entity e) = #37;
\r
79 float sin(float f) = #38;
\r
80 float cos(float f) = #39;
\r
81 float sqrt(float f) = #40;
\r
82 vector randomvec(void) = #41;
\r
84 float registercvar(string name, string value, float flags) = #42; // returns 1 if success
\r
85 float min(float f,...) = #43;
\r
86 float (float a, float b, float c) min3 = #43;
\r
87 float (float a, float b, float c, float d) min4 = #43;
\r
88 float (float a, float b, float c, float d, float e) min5 = #43;
\r
89 float (float a, float b, float c, float d, float e, float f) min6 = #43;
\r
90 float (float a, float b, float c, float d, float e, float f, float g) min7 = #43;
\r
91 float (float a, float b, float c, float d, float e, float f, float g, float h) min8 = #43;
\r
92 float max(float f,...) = #44;
\r
93 float (float a, float b, float c) max3 = #44;
\r
94 float (float a, float b, float c, float d) max4 = #44;
\r
95 float (float a, float b, float c, float d, float e) max5 = #44;
\r
96 float (float a, float b, float c, float d, float e, float f) max6 = #44;
\r
97 float (float a, float b, float c, float d, float e, float f, float g) max7 = #44;
\r
98 float (float a, float b, float c, float d, float e, float f, float g, float h) max8 = #44;
\r
99 float bound(float min,float value, float max) = #45;
\r
100 float pow(float a, float b) = #46;
\r
101 void copyentity(entity src, entity dst) = #47;
\r
104 float _fopen( string filename, float mode ) = #48;
\r
106 float fopen(string filename, float mode) = #48;
\r
108 void fclose(float fhandle) = #49;
\r
109 string fgets(float fhandle) = #50;
\r
110 void fputs(float fhandle, string s) = #51;
\r
112 float strlen(string s) = #52;
\r
113 //string strcat(string s1,string s2,...) = #53;
\r
114 string strcat(string s1, ...) = #53;
\r
115 string substring(string s, float start, float length) = #54;
\r
117 vector stov(string s) = #55;
\r
119 #ifdef PROFILESTRZONE
\r
120 string _strzone(string s) = #56;
\r
121 void _strunzone(string s) = #57;
\r
123 string( string s ) strzone =
\r
125 return _strzone( s );
\r
128 void( string s ) strunzone =
\r
130 return _strunzone( s );
\r
133 string strzone(string s) = #56;
\r
134 void strunzone(string s) = #57;
\r
137 float tokenize(string s) = #58;
\r
138 float(string s, string separator1, ...) tokenizebyseparator = #479;
\r
139 string argv(float n) = #59;
\r
141 float isserver(void) = #60;
\r
142 float clientcount(void) = #61;
\r
143 float clientstate(void) = #62;
\r
144 void clientcommand(float client, string s) = #63;
\r
145 void changelevel(string map) = #64;
\r
146 void localsound(string sample) = #65;
\r
147 vector getmousepos(void) = #66;
\r
148 float gettime(void) = #67;
\r
149 void loadfromdata(string data) = #68;
\r
150 void loadfromfile(string file) = #69;
\r
152 float mod(float val, float m) = #70;
\r
154 float search_begin(string pattern, float caseinsensitive, float quiet) = #74;
\r
155 void search_end(float handle) = #75;
\r
156 float search_getsize(float handle) = #76;
\r
157 string search_getfilename(float handle, float num) = #77;
\r
159 string chr(float ascii) = #78;
\r
161 float etof(entity ent) = #79;
\r
162 entity ftoe(float num) = #80;
\r
164 float validstring(string str) = #81;
\r
166 float altstr_count(string str) = #82;
\r
167 string altstr_prepare(string str) = #83;
\r
168 string altstr_get(string str, float num) = #84;
\r
169 string altstr_set(string str, float num, string set) = #85;
\r
170 string altstr_ins(string str, float num, string set) = #86;
\r
172 float isdemo() = #349;
\r
174 /////////////////////////////////////////////////
\r
175 // Write* Functions
\r
176 /////////////////////////////////////////////////
\r
177 void WriteByte(float data, float dest, float desto) = #401;
\r
178 void WriteChar(float data, float dest, float desto) = #402;
\r
179 void WriteShort(float data, float dest, float desto) = #403;
\r
180 void WriteLong(float data, float dest, float desto) = #404;
\r
181 void WriteAngle(float data, float dest, float desto) = #405;
\r
182 void WriteCoord(float data, float dest, float desto) = #406;
\r
183 void WriteString(string data, float dest, float desto)= #407;
\r
184 void WriteEntity(entity data, float dest, float desto) = #408;
\r
186 //////////////////////////////////////////////////
\r
188 //////////////////////////////////////////////////
\r
190 float iscachedpic(string name) = #451;
\r
191 string precache_pic(string name) = #452;
\r
192 void freepic(string name) = #453;
\r
194 float drawcharacter(vector position, float character, vector scale, vector rgb, float alpha, float flag) = #454;
\r
196 float drawstring(vector position, string text, vector scale, vector rgb, float alpha, float flag) = #455;
\r
197 float drawcolorcodedstring(vector position, string text, vector scale, float alpha, float flag) = #467;
\r
198 float stringwidth(string text, float handleColors, vector size) = #468;
\r
200 float drawpic(vector position, string pic, vector size, vector rgb, float alpha, float flag) = #456;
\r
201 float drawsubpic(vector position, vector size, string pic, vector srcPosition, vector srcSize, vector rgb, float alpha, float flag) = #469;
\r
203 float drawfill(vector position, vector size, vector rgb, float alpha, float flag) = #457;
\r
205 void drawsetcliparea(float x, float y, float width, float height) = #458;
\r
207 void drawresetcliparea(void) = #459;
\r
209 vector drawgetimagesize(string pic) = #460;
\r
211 float cin_open(string file, string name) = #461;
\r
212 void cin_close(string name) = #462;
\r
213 void cin_setstate(string name, float type) = #463;
\r
214 float cin_getstate(string name) = #464;
\r
216 ////////////////////////////////////////////////
\r
218 ////////////////////////////////////////////////
\r
220 void setkeydest(float dest) = #601;
\r
221 float getkeydest(void) = #602;
\r
223 void setmousetarget(float trg) = #603;
\r
224 float getmousetarget(void) = #604;
\r
226 float isfunction(string function_name) = #607;
\r
227 void callfunction(...) = #605;
\r
228 void writetofile(float fhandle, entity ent) = #606;
\r
229 vector getresolution(float number, ...) = #608; // optional argument "isfullscreen"
\r
230 string keynumtostring(float keynum) = #609;
\r
231 string findkeysforcommand(string command) = #610;
\r
233 float gethostcachevalue(float type) = #611;
\r
234 string gethostcachestring(float type, float hostnr) = #612;
\r
236 void parseentitydata(entity ent, string data) = #613;
\r
238 float stringtokeynum(string key) = #614;
\r
240 void resethostcachemasks(void) = #615;
\r
241 void sethostcachemaskstring(float mask, float fld, string str, float op) = #616;
\r
242 void sethostcachemasknumber(float mask, float fld, float num, float op) = #617;
\r
243 void resorthostcache(void) = #618;
\r
244 void sethostcachesort(float fld, float descending) = #619;
\r
245 void refreshhostcache(void) = #620;
\r
246 float gethostcachenumber(float fld, float hostnr) = #621;
\r
247 float gethostcacheindexforkey(string key) = #622;
\r
248 void addwantedhostcachekey(string key) = #623;
\r
249 string getextresponse(void) = #624;
\r
251 // AK the builtin numbers may change - the code might be removed again
\r
252 float gecko_create( string name ) = #487;
\r
253 void gecko_destroy( string name ) = #488;
\r
254 void gecko_navigate( string name, string URI ) = #489;
\r
255 float gecko_keyevent( string name, float key, float eventtype ) = #490;
\r
256 void gecko_mousemove( string name, float x, float y ) = #491;
\r
257 void gecko_resize( string name, float w, float h ) = #492;
\r
258 vector gecko_get_texture_extent( string name ) = #493;
\r
262 //darkplaces implementation: KrimZon
\r
264 //various string manipulation functions
\r
265 float(string str, string sub, float startpos) strstrofs = #221;
\r
266 float(string str, float ofs) str2chr = #222;
\r
267 string(float c, ...) chr2str = #223;
\r
268 string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
\r
269 string(float chars, string s, ...) strpad = #225;
\r
270 string(string info, string key, string value, ...) infoadd = #226;
\r
271 string(string info, string key) infoget = #227;
\r
272 float(string s1, string s2, float len) strncmp = #228;
\r
273 float(string s1, string s2) strcasecmp = #229;
\r
274 float(string s1, string s2, float len) strncasecmp = #230;
\r
276 string(string s) strdecolorize = #477;
\r
278 //DP_QC_STRINGBUFFERS
\r
280 //darkplaces implementation: LordHavoc
\r
281 //functions to manage string buffer objects - that is, arbitrary length string arrays that are handled by the engine
\r
282 float() buf_create = #440;
\r
283 void(float bufhandle) buf_del = #441;
\r
284 float(float bufhandle) buf_getsize = #442;
\r
285 void(float bufhandle_from, float bufhandle_to) buf_copy = #443;
\r
286 void(float bufhandle, float sortpower, float backward) buf_sort = #444;
\r
287 string(float bufhandle, string glue) buf_implode = #445;
\r
288 string(float bufhandle, float string_index) bufstr_get = #446;
\r
289 void(float bufhandle, float string_index, string str) bufstr_set = #447;
\r
290 float(float bufhandle, string str, float order) bufstr_add = #448;
\r
291 void(float bufhandle, float string_index) bufstr_free = #449;
\r
292 void(float bufhandle, string pattern, string antipattern) buf_cvarlist = #517;
\r
293 string(string name) cvar_description = #518;
\r
297 //darkplaces implementation: div0
\r
298 //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.
\r
299 //When caseinsensitive is set, the CRC is calculated of the lower cased string.
\r
300 float(float caseinsensitive, string s, ...) crc16 = #494;
\r
303 float(string name) cvar_type = #495;
\r
304 float CVAR_TYPEFLAG_EXISTS = 1;
\r
305 float CVAR_TYPEFLAG_SAVED = 2;
\r
306 float CVAR_TYPEFLAG_PRIVATE = 4;
\r
307 float CVAR_TYPEFLAG_ENGINE = 8;
\r
308 float CVAR_TYPEFLAG_HASDESCRIPTION = 16;
\r
309 float CVAR_TYPEFLAG_READONLY = 32;
\r
313 //darkplaces implementation: div0
\r
314 //URI::Escape's functionality
\r
315 string(string in) uri_escape = #510;
\r
316 string(string in) uri_unescape = #511;
\r
318 string(string, float) netaddress_resolve = #625;
\r
319 string(string search, string replace, string subject) strreplace = #484;
\r
321 string(float uselocaltime, string format, ...) strftime = #478;
\r
324 float fopen( string filename, float mode ) =
\r
326 local float handle;
\r
327 if( mode == FILE_READ ) {
\r
328 return _fopen( filename, mode );
\r
332 filename = strzone( filename );
\r
333 if( substring( filename, 0, 5 ) != "data/" ) {
\r
334 print( "menu: fopen: all output must go into data/!\n" );
\r
337 handle = _fopen( substring( filename, 5, 10000 ), mode );
\r
338 strunzone( filename );
\r
343 float(string s) tokenize_console = #514;
\r
344 float(float i) argv_start_index = #515;
\r
345 float(float i) argv_end_index = #516;
\r
347 string(float, float) getgamedirinfo = #626;
\r
348 #define GETGAMEDIRINFO_NAME 0
\r
349 #define GETGAMEDIRINFO_DESCRIPTION 1
\r
350 float log(float f) = #532;
\r
352 string(string format, ...) sprintf = #627;
\r