DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
mvm_cmds.c
Go to the documentation of this file.
1#include "quakedef.h"
2
3#include "prvm_cmds.h"
4#include "clvm_cmds.h"
5#include "menu.h"
6#include "csprogs.h"
7
8// TODO check which strings really should be engine strings
9
10//============================================================================
11// Menu
12
13const char *vm_m_extensions[] = {
14"BX_WAL_SUPPORT",
15"DP_CINEMATIC_DPV",
16"DP_COVERAGE",
17"DP_CRYPTO",
18"DP_CSQC_BINDMAPS",
19"DP_GFX_FONTS",
20"DP_GFX_FONTS_FREETYPE",
21"DP_UTF8",
22"DP_FONT_VARIABLEWIDTH",
23"DP_MENU_EXTRESPONSEPACKET",
24"DP_QC_ASINACOSATANATAN2TAN",
25"DP_QC_AUTOCVARS",
26"DP_QC_CMD",
27"DP_QC_CRC16",
28"DP_QC_CVAR_TYPE",
29"DP_QC_CVAR_DESCRIPTION",
30"DP_QC_DIGEST",
31"DP_QC_DIGEST_SHA256",
32"DP_QC_FINDCHAIN_TOFIELD",
33"DP_QC_I18N",
34"DP_QC_LOG",
35"DP_QC_RENDER_SCENE",
36"DP_QC_SPRINTF",
37"DP_QC_STRFTIME",
38"DP_QC_STRINGBUFFERS",
39"DP_QC_STRINGBUFFERS_CVARLIST",
40"DP_QC_STRINGBUFFERS_EXT_WIP",
41"DP_QC_STRINGCOLORFUNCTIONS",
42"DP_QC_STRING_CASE_FUNCTIONS",
43"DP_QC_STRREPLACE",
44"DP_QC_TOKENIZEBYSEPARATOR",
45"DP_QC_TOKENIZE_CONSOLE",
46"DP_QC_UNLIMITEDTEMPSTRINGS",
47"DP_QC_URI_ESCAPE",
48"DP_QC_URI_GET",
49"DP_QC_URI_POST",
50"DP_QC_WHICHPACK",
51"FTE_STRINGS",
52"DP_QC_FS_SEARCH_PACKFILE",
53NULL
54};
55
56qbool MP_ConsoleCommand(const char *text, size_t textlen)
57{
58 prvm_prog_t *prog = MVM_prog;
59 if (setjmp(mp_abort))
60 return false;
61 return PRVM_ConsoleCommand(prog, text, textlen, &prog->funcoffsets.GameCommand, false, -1, 0, "QC function GameCommand is missing");
62}
63
64/*
65=========
66VM_M_setmousetarget
67
68setmousetarget(float target)
69=========
70*/
72{
74
75 switch((int)PRVM_G_FLOAT(OFS_PARM0))
76 {
77 case 1:
78 in_client_mouse = false;
79 break;
80 case 2:
81 in_client_mouse = true;
82 break;
83 default:
84 prog->error_cmd("VM_M_setmousetarget: wrong destination %f !",PRVM_G_FLOAT(OFS_PARM0));
85 }
86}
87
88/*
89=========
90VM_M_getmousetarget
91
92float getmousetarget
93=========
94*/
104
105
106
107/*
108=========
109VM_M_setkeydest
110
111setkeydest(float dest)
112=========
113*/
114static void VM_M_setkeydest(prvm_prog_t *prog)
115{
117
118 switch((int)PRVM_G_FLOAT(OFS_PARM0))
119 {
120 case 0:
121 // key_game
123 break;
124 case 2:
125 // key_menu
127 break;
128 case 3:
129 // key_menu_grabbed
131 break;
132 case 1:
133 // key_message
134 // key_dest = key_message
135 // break;
136 default:
137 prog->error_cmd("VM_M_setkeydest: wrong destination %f !", PRVM_G_FLOAT(OFS_PARM0));
138 }
139}
140
141/*
142=========
143VM_M_getkeydest
144
145float getkeydest
146=========
147*/
148static void VM_M_getkeydest(prvm_prog_t *prog)
149{
151
152 // key_game = 0, key_message = 1, key_menu = 2, key_menu_grabbed = 3, unknown = -1
153 switch(key_dest)
154 {
155 case key_game:
157 break;
158 case key_menu:
160 break;
161 case key_menu_grabbed:
163 break;
164 case key_message:
165 // not supported
166 // PRVM_G_FLOAT(OFS_RETURN) = 1;
167 // break;
168 default:
170 }
171}
172
173
174/*
175=========
176VM_M_getresolution
177
178vector getresolution(float number)
179=========
180*/
182{
183 int nr, fs;
185
187
188 fs = ((prog->argc <= 1) || ((int)PRVM_G_FLOAT(OFS_PARM1)));
189
191 {
195 }
196 else if(nr == -1)
197 {
202 }
203 else
204 {
207 PRVM_G_VECTOR(OFS_RETURN)[1] = r->height;
208 PRVM_G_VECTOR(OFS_RETURN)[2] = r->pixelheight;
209 }
210}
211
213{
214 int nr, item;
215 VM_SAFEPARMCOUNT(2, VM_getgamedirinfo);
216
218 item = (int)PRVM_G_FLOAT(OFS_PARM1);
219
221
222 if(nr >= 0 && nr < fs_all_gamedirs_count)
223 {
224 if(item == 0)
226 else if(item == 1)
227 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, fs_all_gamedirs[nr].description, strlen(fs_all_gamedirs[nr].description));
228 }
229}
230
231/*
232=========
233VM_M_getserverliststat
234
235float getserverliststat(float type)
236=========
237*/
238/*
239 type:
2400 serverlist_viewcount
2411 serverlist_totalcount
2422 masterquerycount
2433 masterreplycount
2444 serverquerycount
2455 serverreplycount
2466 sortfield
2477 sortflags
248*/
250{
251 int type;
253
255
257 switch(type)
258 {
259 case 0:
260 PRVM_G_FLOAT ( OFS_RETURN ) = serverlist_viewcount;
261 return;
262 case 1:
263 PRVM_G_FLOAT ( OFS_RETURN ) = serverlist_cachecount;
264 return;
265 case 2:
267 return;
268 case 3:
270 return;
271 case 4:
273 return;
274 case 5:
276 return;
277 case 6:
278 PRVM_G_FLOAT ( OFS_RETURN ) = serverlist_sortbyfield;
279 return;
280 case 7:
281 PRVM_G_FLOAT ( OFS_RETURN ) = serverlist_sortflags;
282 return;
283 default:
284 VM_Warning(prog, "VM_M_getserverliststat: bad type (%i) passed!\n", type);
285 }
286}
287
288/*
289========================
290VM_M_resetserverlistmasks
291
292resetserverlistmasks()
293========================
294*/
296{
298 ServerList_ResetMasks();
299}
300
301
302/*
303========================
304VM_M_setserverlistmaskstring
305
306setserverlistmaskstring(float mask, float fld, string str, float op)
3070-511 and
308512 - 1024 or
309========================
310*/
312{
313 const char *str;
314 int masknr;
315 serverlist_mask_t *mask;
316 int field;
317
319 str = PRVM_G_STRING( OFS_PARM2 );
320
321 masknr = (int)PRVM_G_FLOAT( OFS_PARM0 );
322 if( masknr >= 0 && masknr < SERVERLIST_ANDMASKCOUNT )
323 mask = &serverlist_andmasks[masknr];
324 else if( masknr >= 512 && masknr - 512 < SERVERLIST_ORMASKCOUNT )
325 mask = &serverlist_ormasks[masknr - 512 ];
326 else
327 {
328 VM_Warning(prog, "VM_M_setserverlistmaskstring: invalid mask number (%i) passed!\n", masknr);
329 return;
330 }
331
332 field = (int) PRVM_G_FLOAT( OFS_PARM1 );
333
334 switch( field )
335 {
336 case SLIF_CNAME:
337 mask->info.cname_len = dp_strlcpy(mask->info.cname, str, sizeof(mask->info.cname));
338 break;
339 case SLIF_NAME:
340 mask->info.name_len = dp_strlcpy(mask->info.name, str, sizeof(mask->info.name));
341 break;
342 case SLIF_QCSTATUS:
343 mask->info.qcstatus_len = dp_strlcpy(mask->info.qcstatus, str, sizeof(mask->info.qcstatus));
344 break;
345 case SLIF_PLAYERS:
346 mask->info.players_len = dp_strlcpy(mask->info.players, str, sizeof(mask->info.players));
347 break;
348 case SLIF_MAP:
349 mask->info.map_len = dp_strlcpy(mask->info.map, str, sizeof(mask->info.map));
350 break;
351 case SLIF_MOD:
352 mask->info.mod_len = dp_strlcpy(mask->info.mod, str, sizeof(mask->info.mod));
353 break;
354 case SLIF_GAME:
355 mask->info.game_len = dp_strlcpy(mask->info.game, str, sizeof(mask->info.game));
356 break;
357 default:
358 VM_Warning(prog, "VM_M_setserverlistmaskstring: Bad field number (%i) passed!\n", field);
359 return;
360 }
361
362 mask->active = true;
363 mask->tests[field] = (serverlist_maskop_t)((int)PRVM_G_FLOAT( OFS_PARM3 ));
364}
365
366/*
367========================
368VM_M_setserverlistmasknumber
369
370setserverlistmasknumber(float mask, float fld, float num, float op)
371
3720-511 and
373512 - 1024 or
374========================
375*/
377{
378 int number;
379 serverlist_mask_t *mask;
380 int masknr;
381 int field;
383
384 masknr = (int)PRVM_G_FLOAT( OFS_PARM0 );
385 if( masknr >= 0 && masknr < SERVERLIST_ANDMASKCOUNT )
386 mask = &serverlist_andmasks[masknr];
387 else if( masknr >= 512 && masknr - 512 < SERVERLIST_ORMASKCOUNT )
388 mask = &serverlist_ormasks[masknr - 512 ];
389 else
390 {
391 VM_Warning(prog, "VM_M_setserverlistmasknumber: invalid mask number (%i) passed!\n", masknr);
392 return;
393 }
394
395 number = (int)PRVM_G_FLOAT( OFS_PARM2 );
396 field = (int) PRVM_G_FLOAT( OFS_PARM1 );
397
398 switch( field )
399 {
400 case SLIF_MAXPLAYERS:
401 mask->info.maxplayers = number;
402 break;
403 case SLIF_NUMPLAYERS:
404 mask->info.numplayers = number;
405 break;
406 case SLIF_NUMBOTS:
407 mask->info.numbots = number;
408 break;
409 case SLIF_NUMHUMANS:
410 mask->info.numhumans = number;
411 break;
412 case SLIF_PING:
413 mask->info.ping = number;
414 break;
415 case SLIF_PROTOCOL:
416 mask->info.protocol = number;
417 break;
418 case SLIF_FREESLOTS:
419 mask->info.freeslots = number;
420 break;
421 case SLIF_CATEGORY:
422 mask->info.category = number;
423 break;
424 case SLIF_ISFAVORITE:
425 mask->info.isfavorite = number != 0;
426 break;
427 default:
428 VM_Warning(prog, "VM_M_setserverlistmasknumber: Bad field number (%i) passed!\n", field);
429 return;
430 }
431
432 mask->active = true;
433 mask->tests[field] = (serverlist_maskop_t)((int)PRVM_G_FLOAT( OFS_PARM3 ));
434}
435
436
437/*
438========================
439VM_M_resortserverlist
440
441resortserverlist
442========================
443*/
445{
447 ServerList_RebuildViewList(NULL);
448}
449
450/*
451=========
452VM_M_getserverliststring
453
454string getserverliststring(float field, float hostnr)
455=========
456*/
458{
459 const serverlist_entry_t *cache;
460 int hostnr;
461
463
465
466 hostnr = (int)PRVM_G_FLOAT(OFS_PARM1);
467
468 if(hostnr == -1 && serverlist_callbackentry)
469 {
471 }
472 else
473 {
474 if(hostnr < 0 || (unsigned)hostnr >= serverlist_viewcount)
475 {
476 VM_Warning(prog, "VM_M_getserverliststring: bad hostnr (%i) passed!\n", hostnr);
477 return;
478 }
479 cache = ServerList_GetViewEntry(hostnr);
480 }
481 switch( (int) PRVM_G_FLOAT(OFS_PARM0) )
482 {
483 case SLIF_CNAME:
484 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.cname, cache->info.cname_len);
485 break;
486 case SLIF_NAME:
487 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.name, cache->info.name_len);
488 break;
489 case SLIF_QCSTATUS:
490 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.qcstatus, cache->info.qcstatus_len);
491 break;
492 case SLIF_PLAYERS:
493 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.players, cache->info.players_len);
494 break;
495 case SLIF_GAME:
496 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.game, cache->info.game_len);
497 break;
498 case SLIF_MOD:
499 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.mod, cache->info.mod_len);
500 break;
501 case SLIF_MAP:
502 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->info.map, cache->info.map_len);
503 break;
504 // TODO remove this again
505 case 1024:
506 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->line1, cache->line1_len);
507 break;
508 case 1025:
509 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cache->line2, cache->line2_len);
510 break;
511 default:
512 VM_Warning(prog, "VM_M_getserverliststring: bad field number (%i) passed!\n", (int)PRVM_G_FLOAT(OFS_PARM0));
513 }
514}
515
516/*
517=========
518VM_M_getserverlistnumber
519
520float getserverlistnumber(float field, float hostnr)
521=========
522*/
524{
525 const serverlist_entry_t *cache;
526 int hostnr;
527
529
531
532 hostnr = (int)PRVM_G_FLOAT(OFS_PARM1);
533
534 if(hostnr == -1 && serverlist_callbackentry)
535 {
537 }
538 else
539 {
540 if(hostnr < 0 || (unsigned)hostnr >= serverlist_viewcount)
541 {
542 VM_Warning(prog, "VM_M_getserverliststring: bad hostnr (%i) passed!\n", hostnr);
543 return;
544 }
545 cache = ServerList_GetViewEntry(hostnr);
546 }
547 switch( (int) PRVM_G_FLOAT(OFS_PARM0) )
548 {
549 case SLIF_MAXPLAYERS:
550 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.maxplayers;
551 break;
552 case SLIF_NUMPLAYERS:
553 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.numplayers;
554 break;
555 case SLIF_NUMBOTS:
556 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.numbots;
557 break;
558 case SLIF_NUMHUMANS:
559 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.numhumans;
560 break;
561 case SLIF_FREESLOTS:
562 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.freeslots;
563 break;
564 case SLIF_PING:
565 // display inf when a listed server times out and net_slist_pause blocks its removal
566 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.ping ? cache->info.ping : INFINITY;
567 break;
568 case SLIF_PROTOCOL:
569 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.protocol;
570 break;
571 case SLIF_CATEGORY:
572 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.category;
573 break;
574 case SLIF_ISFAVORITE:
575 PRVM_G_FLOAT( OFS_RETURN ) = cache->info.isfavorite;
576 break;
577 default:
578 VM_Warning(prog, "VM_M_getserverlistnumber: bad field number (%i) passed!\n", (int)PRVM_G_FLOAT(OFS_PARM0));
579 }
580}
581
582/*
583========================
584VM_M_setserverlistsort
585
586setserverlistsort(float field, float flags)
587========================
588*/
590{
592
593 serverlist_sortbyfield = (serverlist_infofield_t)((int)PRVM_G_FLOAT( OFS_PARM0 ));
594 serverlist_sortflags = (int) PRVM_G_FLOAT( OFS_PARM1 );
595}
596
597/*
598========================
599VM_M_refreshserverlist
600
601refreshserverlist()
602========================
603*/
605{
606 qbool do_reset = false;
608 if (prog->argc >= 1 && PRVM_G_FLOAT(OFS_PARM0))
609 do_reset = true;
610 ServerList_QueryList(do_reset, true, false, false);
611}
612
613/*
614========================
615VM_M_getserverlistindexforkey
616
617float getserverlistindexforkey(string key)
618========================
619*/
621{
622 const char *key;
624
625 key = PRVM_G_STRING( OFS_PARM0 );
626 VM_CheckEmptyString( prog, key );
627
628 if( !strcmp( key, "cname" ) )
629 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_CNAME;
630 else if( !strcmp( key, "ping" ) )
631 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_PING;
632 else if( !strcmp( key, "game" ) )
633 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_GAME;
634 else if( !strcmp( key, "mod" ) )
635 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_MOD;
636 else if( !strcmp( key, "map" ) )
637 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_MAP;
638 else if( !strcmp( key, "name" ) )
639 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_NAME;
640 else if( !strcmp( key, "qcstatus" ) )
641 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_QCSTATUS;
642 else if( !strcmp( key, "players" ) )
643 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_PLAYERS;
644 else if( !strcmp( key, "maxplayers" ) )
645 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_MAXPLAYERS;
646 else if( !strcmp( key, "numplayers" ) )
647 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_NUMPLAYERS;
648 else if( !strcmp( key, "numbots" ) )
649 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_NUMBOTS;
650 else if( !strcmp( key, "numhumans" ) )
651 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_NUMHUMANS;
652 else if( !strcmp( key, "freeslots" ) )
653 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_FREESLOTS;
654 else if( !strcmp( key, "protocol" ) )
655 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_PROTOCOL;
656 else if( !strcmp( key, "category" ) )
657 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_CATEGORY;
658 else if( !strcmp( key, "isfavorite" ) )
659 PRVM_G_FLOAT( OFS_RETURN ) = SLIF_ISFAVORITE;
660 else
661 PRVM_G_FLOAT( OFS_RETURN ) = -1;
662}
663
664/*
665========================
666VM_M_addwantedserverlistkey
667
668addwantedserverlistkey(string key)
669========================
670*/
675
676/*
677===============================================================================
678MESSAGE WRITING
679
680used only for client and menu
681server uses VM_SV_...
682
683Write*(* data, float type, float to)
684
685===============================================================================
686*/
687
688#define MSG_BROADCAST 0 // unreliable to all
689#define MSG_ONE 1 // reliable to one (msg_entity)
690#define MSG_ALL 2 // reliable to all
691#define MSG_INIT 3 // write to the init string
692
694{
695 int dest;
696 int destclient;
697
698 if(!sv.active)
699 prog->error_cmd("VM_M_WriteDest: game is not server (%s)", prog->name);
700
701 dest = (int)PRVM_G_FLOAT(OFS_PARM1);
702 switch (dest)
703 {
704 case MSG_BROADCAST:
705 return &sv.datagram;
706
707 case MSG_ONE:
708 destclient = (int) PRVM_G_FLOAT(OFS_PARM2);
709 if (destclient < 0 || destclient >= svs.maxclients || !svs.clients[destclient].active || !svs.clients[destclient].netconnection)
710 prog->error_cmd("VM_clientcommand: %s: invalid client !", prog->name);
711
712 return &svs.clients[destclient].netconnection->message;
713
714 case MSG_ALL:
715 return &sv.reliable_datagram;
716
717 case MSG_INIT:
718 return &sv.signon;
719
720 default:
721 prog->error_cmd("WriteDest: bad destination");
722 break;
723 }
724
725 return NULL;
726}
727
733
739
745
751
757
763
769
775
776/*
777=================
778VM_M_copyentity
779
780copies data from one entity to another
781
782copyentity(entity src, entity dst)
783=================
784*/
785static void VM_M_copyentity (prvm_prog_t *prog)
786{
787 prvm_edict_t *in, *out;
790 out = PRVM_G_EDICT(OFS_PARM1);
791 memcpy(out->fields.fp, in->fields.fp, prog->entityfields * sizeof(prvm_vec_t));
792}
793
794//#66 vector() getmousepos (EXT_CSQC)
806
808{
810 const char *s;
811 char keyfp[FP64_SIZE + 1];
812
814
816 VM_CheckEmptyString( prog, s );
817
818 if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, keyfp, sizeof(keyfp), NULL, 0, NULL, NULL))
819 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, keyfp, strlen(keyfp));
820 else
822}
824{
826 const char *s;
827 char idfp[FP64_SIZE + 1];
828
830
832 VM_CheckEmptyString( prog, s );
833
834 if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, NULL, 0, idfp, sizeof(idfp), NULL, NULL))
835 PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString( prog, idfp, strlen(idfp));
836 else
838}
840{
842 const char *s;
843 qbool issigned;
844
846
848 VM_CheckEmptyString( prog, s );
849
850 if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, NULL, 0, NULL, 0, NULL, &issigned))
851 PRVM_G_FLOAT( OFS_RETURN ) = issigned ? 2 : 1;
852 else
854}
856{
858 const char *s;
859 int aeslevel;
860 char vabuf[1024];
861
863
865 VM_CheckEmptyString( prog, s );
866
867 if(LHNETADDRESS_FromString(&addr, s, 26000) && Crypto_RetrieveHostKey(&addr, NULL, NULL, 0, NULL, 0, &aeslevel, NULL))
868 {
869 if (aeslevel)
870 {
871 size_t vabuf_len = dpsnprintf(vabuf, sizeof(vabuf), "%d AES128", aeslevel);
872 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, vabuf, vabuf_len);
873 }
874 else
876 }
877 else
879}
881{
882 int i;
883 char keyfp[FP64_SIZE + 1];
884
886
888 switch(Crypto_RetrieveLocalKey(i, keyfp, sizeof(keyfp), NULL, 0, NULL))
889 {
890 case -1:
891 PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(prog, "", 0);
892 break;
893 case 0:
895 break;
896 default:
897 case 1:
898 PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(prog, keyfp, strlen(keyfp));
899 break;
900 }
901}
903{
904 int i;
905 char idfp[FP64_SIZE + 1];
906
908
910 switch(Crypto_RetrieveLocalKey(i, NULL, 0, idfp, sizeof(idfp), NULL))
911 {
912 case -1:
913 PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(prog, "", 0);
914 break;
915 case 0:
917 break;
918 default:
919 case 1:
920 PRVM_G_INT( OFS_RETURN ) = PRVM_SetTempString(prog, idfp, strlen(idfp));
921 break;
922 }
923}
925{
926 int i;
927 qbool issigned;
928
930
932 switch(Crypto_RetrieveLocalKey(i, NULL, 0, NULL, 0, &issigned))
933 {
934 case -1:
935 PRVM_G_FLOAT( OFS_RETURN ) = 0; // have no ID there
936 break;
937 case 0:
938 PRVM_G_FLOAT( OFS_RETURN ) = -1; // out of range
939 break;
940 default:
941 case 1:
942 PRVM_G_FLOAT( OFS_RETURN ) = issigned ? 2 : 1;
943 break;
944 }
945}
946
947// CL_Video interface functions
948
949/*
950========================
951VM_cin_open
952
953float cin_open(string file, string name)
954========================
955*/
957{
958 const char *file;
959 const char *name;
960
962
963 file = PRVM_G_STRING( OFS_PARM0 );
965
966 VM_CheckEmptyString(prog, file );
968
969 if( CL_OpenVideo( file, name, MENUOWNER, "" ) )
971 else
973}
974
975/*
976========================
977VM_cin_close
978
979void cin_close(string name)
980========================
981*/
983{
984 const char *name;
985
987
990
992}
993
994/*
995========================
996VM_cin_setstate
997void cin_setstate(string name, float type)
998========================
999*/
1001{
1002 const char *name;
1003 clvideostate_t state;
1004 clvideo_t *video;
1005
1007
1009 VM_CheckEmptyString(prog, name );
1010
1011 state = (clvideostate_t)((int)PRVM_G_FLOAT( OFS_PARM1 ));
1012
1013 video = CL_GetVideoByName( name );
1014 if( video && state > CLVIDEO_UNUSED && state < CLVIDEO_STATECOUNT )
1015 CL_SetVideoState( video, state );
1016}
1017
1018/*
1019========================
1020VM_cin_getstate
1021
1022float cin_getstate(string name)
1023========================
1024*/
1026{
1027 const char *name;
1028 clvideo_t *video;
1029
1031
1033 VM_CheckEmptyString(prog, name );
1034
1035 video = CL_GetVideoByName( name );
1036 if( video )
1037 PRVM_G_FLOAT( OFS_RETURN ) = (int)video->state;
1038 else
1039 PRVM_G_FLOAT( OFS_RETURN ) = 0;
1040}
1041
1042/*
1043========================
1044VM_cin_restart
1045
1046void cin_restart(string name)
1047========================
1048*/
1050{
1051 const char *name;
1052 clvideo_t *video;
1053
1055
1057 VM_CheckEmptyString(prog, name );
1058
1059 video = CL_GetVideoByName( name );
1060 if( video )
1061 CL_RestartVideo( video );
1062}
1063
1065{
1067 Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
1068}
1069
1071NULL, // #0 NULL function (not callable)
1072VM_checkextension, // #1
1073VM_error, // #2
1074VM_objerror, // #3
1075VM_print, // #4
1076VM_bprint, // #5
1077VM_sprint, // #6
1078VM_centerprint, // #7
1079VM_normalize, // #8
1080VM_vlen, // #9
1081VM_vectoyaw, // #10
1082VM_vectoangles, // #11
1083VM_random, // #12
1084VM_localcmd, // #13
1085VM_cvar, // #14
1086VM_cvar_set, // #15
1087VM_dprint, // #16
1088VM_ftos, // #17
1089VM_fabs, // #18
1090VM_vtos, // #19
1091VM_etos, // #20
1092VM_stof, // #21
1093VM_spawn, // #22
1094VM_remove, // #23
1095VM_find, // #24
1096VM_findfloat, // #25
1097VM_findchain, // #26
1098VM_findchainfloat, // #27
1099VM_precache_file, // #28
1100VM_precache_sound, // #29
1101VM_coredump, // #30
1102VM_traceon, // #31
1103VM_traceoff, // #32
1104VM_eprint, // #33
1105VM_rint, // #34
1106VM_floor, // #35
1107VM_ceil, // #36
1108VM_nextent, // #37
1109VM_sin, // #38
1110VM_cos, // #39
1111VM_sqrt, // #40
1112VM_randomvec, // #41
1113VM_registercvar, // #42
1114VM_min, // #43
1115VM_max, // #44
1116VM_bound, // #45
1117VM_pow, // #46
1118VM_M_copyentity, // #47
1119VM_fopen, // #48
1120VM_fclose, // #49
1121VM_fgets, // #50
1122VM_fputs, // #51
1123VM_strlen, // #52
1124VM_strcat, // #53
1125VM_substring, // #54
1126VM_stov, // #55
1127VM_strzone, // #56
1128VM_strunzone, // #57
1129VM_tokenize, // #58
1130VM_argv, // #59
1131VM_isserver, // #60
1132VM_clientcount, // #61
1133VM_clientstate, // #62
1134NULL, // #63 FIXME
1135VM_changelevel, // #64
1136VM_localsound, // #65
1137VM_M_getmousepos, // #66
1138VM_gettime, // #67
1139VM_loadfromdata, // #68
1140VM_loadfromfile, // #69
1141VM_modulo, // #70
1142VM_cvar_string, // #71
1143VM_crash, // #72
1144VM_stackdump, // #73
1145VM_search_begin, // #74
1146VM_search_end, // #75
1147VM_search_getsize, // #76
1149VM_chr, // #78
1150VM_itof, // #79
1151VM_ftoe, // #80
1152VM_itof, // #81 isString
1153VM_altstr_count, // #82
1154VM_altstr_prepare, // #83
1155VM_altstr_get, // #84
1156VM_altstr_set, // #85
1157VM_altstr_ins, // #86
1158VM_findflags, // #87
1159VM_findchainflags, // #88
1160VM_cvar_defstring, // #89
1161// deactivate support for model rendering in the menu until someone has time to do it right [3/2/2008 Andreas]
1162#if 0
1163VM_CL_setmodel, // #90 void(entity e, string m) setmodel (QUAKE)
1164VM_CL_precache_model, // #91 void(string s) precache_model (QUAKE)
1165VM_CL_setorigin, // #92 void(entity e, vector o) setorigin (QUAKE)
1166#else
1167NULL,
1168NULL,
1169NULL,
1170#endif
1171NULL, // #93
1172NULL, // #94
1173NULL, // #95
1174NULL, // #96
1175NULL, // #97
1176NULL, // #98
1177NULL, // #99
1178NULL, // #100
1179NULL, // #101
1180NULL, // #102
1181NULL, // #103
1182NULL, // #104
1183NULL, // #105
1184NULL, // #106
1185NULL, // #107
1186NULL, // #108
1187NULL, // #109
1188NULL, // #110
1189NULL, // #111
1190NULL, // #112
1191NULL, // #113
1192NULL, // #114
1193NULL, // #115
1194NULL, // #116
1195NULL, // #117
1196NULL, // #118
1197NULL, // #119
1198NULL, // #120
1199NULL, // #121
1200NULL, // #122
1201NULL, // #123
1202NULL, // #124
1203NULL, // #125
1204NULL, // #126
1205NULL, // #127
1206NULL, // #128
1207NULL, // #129
1208NULL, // #130
1209NULL, // #131
1210NULL, // #132
1211NULL, // #133
1212NULL, // #134
1213NULL, // #135
1214NULL, // #136
1215NULL, // #137
1216NULL, // #138
1217NULL, // #139
1218NULL, // #140
1219NULL, // #141
1220NULL, // #142
1221NULL, // #143
1222NULL, // #144
1223NULL, // #145
1224NULL, // #146
1225NULL, // #147
1226NULL, // #148
1227NULL, // #149
1228NULL, // #150
1229NULL, // #151
1230NULL, // #152
1231NULL, // #153
1232NULL, // #154
1233NULL, // #155
1234NULL, // #156
1235NULL, // #157
1236NULL, // #158
1237NULL, // #159
1238NULL, // #160
1239NULL, // #161
1240NULL, // #162
1241NULL, // #163
1242NULL, // #164
1243NULL, // #165
1244NULL, // #166
1245NULL, // #167
1246NULL, // #168
1247NULL, // #169
1248NULL, // #170
1249NULL, // #171
1250NULL, // #172
1251NULL, // #173
1252NULL, // #174
1253NULL, // #175
1254NULL, // #176
1255NULL, // #177
1256NULL, // #178
1257NULL, // #179
1258NULL, // #180
1259NULL, // #181
1260NULL, // #182
1261NULL, // #183
1262NULL, // #184
1263NULL, // #185
1264NULL, // #186
1265NULL, // #187
1266NULL, // #188
1267NULL, // #189
1268NULL, // #190
1269NULL, // #191
1270NULL, // #192
1271NULL, // #193
1272NULL, // #194
1273NULL, // #195
1274NULL, // #196
1275NULL, // #197
1276NULL, // #198
1277NULL, // #199
1278NULL, // #200
1279NULL, // #201
1280NULL, // #202
1281NULL, // #203
1282NULL, // #204
1283NULL, // #205
1284NULL, // #206
1285NULL, // #207
1286NULL, // #208
1287NULL, // #209
1288NULL, // #210
1289NULL, // #211
1290NULL, // #212
1291NULL, // #213
1292NULL, // #214
1293NULL, // #215
1294NULL, // #216
1295NULL, // #217
1296NULL, // #218
1297NULL, // #219
1298NULL, // #220
1299VM_strstrofs, // #221 float(string str, string sub[, float startpos]) strstrofs (FTE_STRINGS)
1300VM_str2chr, // #222 float(string str, float ofs) str2chr (FTE_STRINGS)
1301VM_chr2str, // #223 string(float c, ...) chr2str (FTE_STRINGS)
1302VM_strconv, // #224 string(float ccase, float calpha, float cnum, string s, ...) strconv (FTE_STRINGS)
1303VM_strpad, // #225 string(float chars, string s, ...) strpad (FTE_STRINGS)
1304VM_infoadd, // #226 string(string info, string key, string value, ...) infoadd (FTE_STRINGS)
1305VM_infoget, // #227 string(string info, string key) infoget (FTE_STRINGS)
1306VM_strncmp, // #228 float(string s1, string s2, float len) strncmp (FTE_STRINGS)
1307VM_strncasecmp, // #229 float(string s1, string s2) strcasecmp (FTE_STRINGS)
1308VM_strncasecmp, // #230 float(string s1, string s2, float len) strncasecmp (FTE_STRINGS)
1309NULL, // #231
1310NULL, // #232
1311NULL, // #233
1312NULL, // #234
1313NULL, // #235
1314NULL, // #236
1315NULL, // #237
1316NULL, // #238
1317NULL, // #239
1318NULL, // #240
1319NULL, // #241
1320NULL, // #242
1321NULL, // #243
1322NULL, // #244
1323NULL, // #245
1324NULL, // #246
1325NULL, // #247
1326NULL, // #248
1327NULL, // #249
1328NULL, // #250
1329NULL, // #251
1330NULL, // #252
1331NULL, // #253
1332NULL, // #254
1333NULL, // #255
1334NULL, // #256
1335NULL, // #257
1336NULL, // #258
1337NULL, // #259
1338NULL, // #260
1339NULL, // #261
1340NULL, // #262
1341NULL, // #263
1342NULL, // #264
1343NULL, // #265
1344NULL, // #266
1345NULL, // #267
1346NULL, // #268
1347NULL, // #269
1348NULL, // #270
1349NULL, // #271
1350NULL, // #272
1351NULL, // #273
1352NULL, // #274
1353NULL, // #275
1354NULL, // #276
1355NULL, // #277
1356NULL, // #278
1357NULL, // #279
1358NULL, // #280
1359NULL, // #281
1360NULL, // #282
1361NULL, // #283
1362NULL, // #284
1363NULL, // #285
1364NULL, // #286
1365NULL, // #287
1366NULL, // #288
1367NULL, // #289
1368NULL, // #290
1369NULL, // #291
1370NULL, // #292
1371NULL, // #293
1372NULL, // #294
1373NULL, // #295
1374NULL, // #296
1375NULL, // #297
1376NULL, // #298
1377NULL, // #299
1378// deactivate support for model rendering in the menu until someone has time to do it right [3/2/2008 Andreas]
1379#if 0
1380// CSQC range #300-#399
1381VM_CL_R_ClearScene, // #300 void() clearscene (DP_QC_RENDER_SCENE)
1382VM_CL_R_AddEntities, // #301 void(float mask) addentities (DP_QC_RENDER_SCENE)
1383VM_CL_R_AddEntity, // #302 void(entity ent) addentity (DP_QC_RENDER_SCENE)
1384VM_CL_R_SetView, // #303 float(float property, ...) setproperty (DP_QC_RENDER_SCENE)
1385VM_CL_R_RenderScene, // #304 void() renderscene (DP_QC_RENDER_SCENE)
1386VM_CL_R_AddDynamicLight, // #305 void(vector org, float radius, vector lightcolours) adddynamiclight (DP_QC_RENDER_SCENE)
1387VM_CL_R_PolygonBegin, // #306 void(string texturename, float flag[, float is2d, float lines]) R_BeginPolygon (DP_QC_RENDER_SCENE)
1388VM_CL_R_PolygonVertex, // #307 void(vector org, vector texcoords, vector rgb, float alpha) R_PolygonVertex (DP_QC_RENDER_SCENE)
1389VM_CL_R_PolygonEnd, // #308 void() R_EndPolygon
1390NULL/*VM_CL_R_LoadWorldModel*/, // #309 void(string modelname) R_LoadWorldModel
1391// TODO: rearrange and merge all builtin lists and share as many extensions as possible between all VM instances [1/27/2008 Andreas]
1392VM_CL_setattachment, // #310 void(entity e, entity tagentity, string tagname) setattachment (DP_GFX_QUAKE3MODELTAGS) (DP_QC_RENDER_SCENE)
1393VM_CL_gettagindex, // #311 float(entity ent, string tagname) gettagindex (DP_QC_GETTAGINFO) (DP_QC_RENDER_SCENE)
1394VM_CL_gettaginfo, // #312 vector(entity ent, float tagindex) gettaginfo (DP_QC_GETTAGINFO) (DP_QC_RENDER_SCENE)
1395#else
1396// CSQC range #300-#399
1397NULL,
1398NULL,
1399NULL,
1400NULL,
1401NULL,
1402NULL,
1403NULL,
1404NULL,
1405NULL,
1406NULL,
1407NULL,
1408NULL,
1409NULL,
1410#endif
1411NULL, // #313
1412NULL, // #314
1413NULL, // #315
1414NULL, // #316
1415NULL, // #317
1416NULL, // #318
1417NULL, // #319
1418NULL, // #320
1419NULL, // #321
1420NULL, // #322
1421NULL, // #323
1422NULL, // #324
1423NULL, // #325
1424NULL, // #326
1425NULL, // #327
1426NULL, // #328
1427NULL, // #329
1428NULL, // #330
1429NULL, // #331
1430NULL, // #332
1431NULL, // #333
1432NULL, // #334
1433NULL, // #335
1434NULL, // #336
1435NULL, // #337
1436NULL, // #338
1437NULL, // #339
1438VM_keynumtostring, // #340 string keynumtostring(float keynum)
1439VM_stringtokeynum, // #341 float stringtokeynum(string key)
1440VM_getkeybind, // #342 string(float keynum[, float bindmap]) getkeybind (EXT_CSQC)
1441NULL, // #343
1442NULL, // #344
1443NULL, // #345
1444NULL, // #346
1445NULL, // #347
1446NULL, // #348
1447VM_CL_isdemo, // #349
1448NULL, // #350
1449NULL, // #351
1450VM_M_registercommand, // #352 void(string cmdname)
1451VM_wasfreed, // #353 float(entity ent) wasfreed
1452NULL, // #354
1453VM_CL_videoplaying, // #355
1454VM_findfont, // #356 float(string fontname) loadfont (DP_GFX_FONTS)
1455VM_loadfont, // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS)
1456NULL, // #358
1457NULL, // #359
1458NULL, // #360
1459NULL, // #361
1460NULL, // #362
1461NULL, // #363
1462NULL, // #364
1463NULL, // #365
1464NULL, // #366
1465NULL, // #367
1466NULL, // #368
1467NULL, // #369
1468NULL, // #370
1469NULL, // #371
1470NULL, // #372
1471NULL, // #373
1472NULL, // #374
1473NULL, // #375
1474NULL, // #376
1475NULL, // #377
1476NULL, // #378
1477NULL, // #379
1478NULL, // #380
1479NULL, // #381
1480NULL, // #382
1481NULL, // #383
1482NULL, // #384
1483NULL, // #385
1484NULL, // #386
1485NULL, // #387
1486NULL, // #388
1487NULL, // #389
1488NULL, // #390
1489NULL, // #391
1490NULL, // #392
1491NULL, // #393
1492NULL, // #394
1493NULL, // #395
1494NULL, // #396
1495NULL, // #397
1496NULL, // #398
1497NULL, // #399
1498NULL, // #400
1499VM_M_WriteByte, // #401
1500VM_M_WriteChar, // #402
1501VM_M_WriteShort, // #403
1502VM_M_WriteLong, // #404
1503VM_M_WriteAngle, // #405
1504VM_M_WriteCoord, // #406
1505VM_M_WriteString, // #407
1506VM_M_WriteEntity, // #408
1507NULL, // #409
1508NULL, // #410
1509NULL, // #411
1510NULL, // #412
1511NULL, // #413
1512NULL, // #414
1513NULL, // #415
1514NULL, // #416
1515NULL, // #417
1516NULL, // #418
1517NULL, // #419
1518NULL, // #420
1519NULL, // #421
1520NULL, // #422
1521NULL, // #423
1522NULL, // #424
1523NULL, // #425
1524NULL, // #426
1525NULL, // #427
1526NULL, // #428
1527NULL, // #429
1528NULL, // #430
1529NULL, // #431
1530NULL, // #432
1531NULL, // #433
1532NULL, // #434
1533NULL, // #435
1534NULL, // #436
1535NULL, // #437
1536NULL, // #438
1537NULL, // #439
1538VM_buf_create, // #440 float() buf_create (DP_QC_STRINGBUFFERS)
1539VM_buf_del, // #441 void(float bufhandle) buf_del (DP_QC_STRINGBUFFERS)
1540VM_buf_getsize, // #442 float(float bufhandle) buf_getsize (DP_QC_STRINGBUFFERS)
1541VM_buf_copy, // #443 void(float bufhandle_from, float bufhandle_to) buf_copy (DP_QC_STRINGBUFFERS)
1542VM_buf_sort, // #444 void(float bufhandle, float sortpower, float backward) buf_sort (DP_QC_STRINGBUFFERS)
1543VM_buf_implode, // #445 string(float bufhandle, string glue) buf_implode (DP_QC_STRINGBUFFERS)
1544VM_bufstr_get, // #446 string(float bufhandle, float string_index) bufstr_get (DP_QC_STRINGBUFFERS)
1545VM_bufstr_set, // #447 void(float bufhandle, float string_index, string str) bufstr_set (DP_QC_STRINGBUFFERS)
1546VM_bufstr_add, // #448 float(float bufhandle, string str, float order) bufstr_add (DP_QC_STRINGBUFFERS)
1547VM_bufstr_free, // #449 void(float bufhandle, float string_index) bufstr_free (DP_QC_STRINGBUFFERS)
1548NULL, // #450
1549VM_iscachedpic, // #451 draw functions...
1550VM_precache_pic, // #452
1551VM_freepic, // #453
1552VM_drawcharacter, // #454
1553VM_drawstring, // #455
1554VM_drawpic, // #456
1555VM_drawfill, // #457
1556VM_drawsetcliparea, // #458
1557VM_drawresetcliparea, // #459
1558VM_getimagesize, // #460
1559VM_cin_open, // #461
1560VM_cin_close, // #462
1561VM_cin_setstate, // #463
1562VM_cin_getstate, // #464
1563VM_cin_restart, // #465
1564VM_drawline, // #466
1566VM_stringwidth, // #468
1567VM_drawsubpic, // #469
1568VM_drawrotpic, // #470
1569VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN)
1570VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN)
1571VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN)
1572VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN)
1573VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN)
1574VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting color codes) (DP_QC_STRINGCOLORFUNCTIONS)
1575VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS)
1576VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME)
1577VM_tokenizebyseparator, // #479 float(string s) tokenizebyseparator (DP_QC_TOKENIZEBYSEPARATOR)
1578VM_strtolower, // #480 string(string s) VM_strtolower : DRESK - Return string as lowercase
1579VM_strtoupper, // #481 string(string s) VM_strtoupper : DRESK - Return string as uppercase
1580NULL, // #482
1581NULL, // #483
1582VM_strreplace, // #484 string(string search, string replace, string subject) strreplace (DP_QC_STRREPLACE)
1583VM_strireplace, // #485 string(string search, string replace, string subject) strireplace (DP_QC_STRREPLACE)
1584NULL, // #486
1585VM_gecko_create, // #487 float gecko_create( string name )
1586VM_gecko_destroy, // #488 void gecko_destroy( string name )
1587VM_gecko_navigate, // #489 void gecko_navigate( string name, string URI )
1588VM_gecko_keyevent, // #490 float gecko_keyevent( string name, float key, float eventtype )
1589VM_gecko_movemouse, // #491 void gecko_mousemove( string name, float x, float y )
1590VM_gecko_resize, // #492 void gecko_resize( string name, float w, float h )
1591VM_gecko_get_texture_extent, // #493 vector gecko_get_texture_extent( string name )
1592VM_crc16, // #494 float(float caseinsensitive, string s, ...) crc16 = #494 (DP_QC_CRC16)
1593VM_cvar_type, // #495 float(string name) cvar_type = #495; (DP_QC_CVAR_TYPE)
1594VM_numentityfields, // #496 float() numentityfields = #496; (QP_QC_ENTITYDATA)
1595VM_entityfieldname, // #497 string(float fieldnum) entityfieldname = #497; (DP_QC_ENTITYDATA)
1596VM_entityfieldtype, // #498 float(float fieldnum) entityfieldtype = #498; (DP_QC_ENTITYDATA)
1597VM_getentityfieldstring, // #499 string(float fieldnum, entity ent) getentityfieldstring = #499; (DP_QC_ENTITYDATA)
1598VM_putentityfieldstring, // #500 float(float fieldnum, entity ent, string s) putentityfieldstring = #500; (DP_QC_ENTITYDATA)
1599NULL, // #501
1600NULL, // #502
1601VM_whichpack, // #503 string(string) whichpack = #503;
1602NULL, // #504
1603NULL, // #505
1604NULL, // #506
1605NULL, // #507
1606NULL, // #508
1607NULL, // #509
1608VM_uri_escape, // #510 string(string in) uri_escape = #510;
1609VM_uri_unescape, // #511 string(string in) uri_unescape = #511;
1610VM_etof, // #512 float(entity ent) num_for_edict = #512 (DP_QC_NUM_FOR_EDICT)
1611VM_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)
1612VM_tokenize_console, // #514 float(string str) tokenize_console = #514; (DP_QC_TOKENIZE_CONSOLE)
1613VM_argv_start_index, // #515 float(float idx) argv_start_index = #515; (DP_QC_TOKENIZE_CONSOLE)
1614VM_argv_end_index, // #516 float(float idx) argv_end_index = #516; (DP_QC_TOKENIZE_CONSOLE)
1615VM_buf_cvarlist, // #517 void(float buf, string prefix, string antiprefix) buf_cvarlist = #517; (DP_QC_STRINGBUFFERS_CVARLIST)
1616VM_cvar_description, // #518 float(string name) cvar_description = #518; (DP_QC_CVAR_DESCRIPTION)
1617NULL, // #519
1618NULL, // #520
1619NULL, // #521
1620NULL, // #522
1621NULL, // #523
1622NULL, // #524
1623NULL, // #525
1624NULL, // #526
1625NULL, // #527
1626NULL, // #528
1627NULL, // #529
1628NULL, // #530
1629NULL, // #531
1630VM_log, // #532
1631VM_getsoundtime, // #533 float(entity e, float channel) getsoundtime = #533; (DP_SND_GETSOUNDTIME)
1632VM_soundlength, // #534 float(string sample) soundlength = #534; (DP_SND_GETSOUNDTIME)
1633VM_buf_loadfile, // #535 float(string filename, float bufhandle) buf_loadfile (DP_QC_STRINGBUFFERS_EXT_WIP)
1634VM_buf_writefile, // #536 float(float filehandle, float bufhandle, float startpos, float numstrings) buf_writefile (DP_QC_STRINGBUFFERS_EXT_WIP)
1635VM_bufstr_find, // #537 float(float bufhandle, string match, float matchrule, float startpos) bufstr_find (DP_QC_STRINGBUFFERS_EXT_WIP)
1636VM_matchpattern, // #538 float(string s, string pattern, float matchrule) matchpattern (DP_QC_STRINGBUFFERS_EXT_WIP)
1637NULL, // #539
1638NULL, // #540
1639NULL, // #541
1640NULL, // #542
1641NULL, // #543
1642NULL, // #544
1643NULL, // #545
1644NULL, // #546
1645NULL, // #547
1646NULL, // #548
1647NULL, // #549
1648NULL, // #550
1649NULL, // #551
1650NULL, // #552
1651NULL, // #553
1652NULL, // #554
1653NULL, // #555
1654NULL, // #556
1655NULL, // #557
1656NULL, // #558
1657NULL, // #559
1658NULL, // #560
1659NULL, // #561
1660NULL, // #562
1661NULL, // #563
1662NULL, // #564
1663NULL, // #565
1664NULL, // #566
1665NULL, // #567
1666NULL, // #568
1667NULL, // #569
1668NULL, // #570
1669NULL, // #571
1670NULL, // #572
1671NULL, // #573
1672NULL, // #574
1673NULL, // #575
1674NULL, // #576
1675NULL, // #577
1676NULL, // #578
1677NULL, // #579
1678NULL, // #580
1679NULL, // #581
1680NULL, // #582
1681NULL, // #583
1682NULL, // #584
1683NULL, // #585
1684NULL, // #586
1685NULL, // #587
1686NULL, // #588
1687NULL, // #589
1688NULL, // #590
1689NULL, // #591
1690NULL, // #592
1691NULL, // #593
1692NULL, // #594
1693NULL, // #595
1694NULL, // #596
1695NULL, // #597
1696NULL, // #598
1697NULL, // #599
1698NULL, // #600
1699VM_M_setkeydest, // #601 void setkeydest(float dest)
1700VM_M_getkeydest, // #602 float getkeydest(void)
1701VM_M_setmousetarget, // #603 void setmousetarget(float trg)
1702VM_M_getmousetarget, // #604 float getmousetarget(void)
1703VM_callfunction, // #605 void callfunction(...)
1704VM_writetofile, // #606 void writetofile(float fhandle, entity ent)
1705VM_isfunction, // #607 float isfunction(string function_name)
1706VM_M_getresolution, // #608 vector getresolution(float number, [float forfullscreen])
1707VM_keynumtostring, // #609 string keynumtostring(float keynum)
1708VM_findkeysforcommand, // #610 string findkeysforcommand(string command[, float bindmap])
1709VM_M_getserverliststat, // #611 float gethostcachevalue(float type)
1710VM_M_getserverliststring, // #612 string gethostcachestring(float type, float hostnr)
1711VM_parseentitydata, // #613 void parseentitydata(entity ent, string data)
1712VM_stringtokeynum, // #614 float stringtokeynum(string key)
1713VM_M_resetserverlistmasks, // #615 void resethostcachemasks(void)
1714VM_M_setserverlistmaskstring, // #616 void sethostcachemaskstring(float mask, float fld, string str, float op)
1715VM_M_setserverlistmasknumber, // #617 void sethostcachemasknumber(float mask, float fld, float num, float op)
1716VM_M_resortserverlist, // #618 void resorthostcache(void)
1717VM_M_setserverlistsort, // #619 void sethostcachesort(float fld, float descending)
1718VM_M_refreshserverlist, // #620 void refreshhostcache(void)
1719VM_M_getserverlistnumber, // #621 float gethostcachenumber(float fld, float hostnr)
1720VM_M_getserverlistindexforkey,// #622 float gethostcacheindexforkey(string key)
1721VM_M_addwantedserverlistkey, // #623 void addwantedhostcachekey(string key)
1722VM_CL_getextresponse, // #624 string getextresponse(void)
1723VM_netaddress_resolve, // #625 string netaddress_resolve(string, float)
1724VM_M_getgamedirinfo, // #626 string getgamedirinfo(float n, float prop)
1725VM_sprintf, // #627 string sprintf(string format, ...)
1726NULL, // #628
1727NULL, // #629
1728VM_setkeybind, // #630 float(float key, string bind[, float bindmap]) setkeybind
1729VM_getbindmaps, // #631 vector(void) getbindmap
1730VM_setbindmaps, // #632 float(vector bm) setbindmap
1731VM_M_crypto_getkeyfp, // #633 string(string addr) crypto_getkeyfp
1732VM_M_crypto_getidfp, // #634 string(string addr) crypto_getidfp
1733VM_M_crypto_getencryptlevel, // #635 string(string addr) crypto_getencryptlevel
1734VM_M_crypto_getmykeyfp, // #636 string(float addr) crypto_getmykeyfp
1735VM_M_crypto_getmyidfp, // #637 string(float addr) crypto_getmyidfp
1736NULL, // #638
1737VM_digest_hex, // #639
1738NULL, // #640
1739VM_M_crypto_getmyidstatus, // #641 float(float i) crypto_getmyidstatus
1740VM_coverage, // #642
1741VM_M_crypto_getidstatus, // #643 float(string addr) crypto_getidstatus
1742NULL
1743};
1744
1745const int vm_m_numbuiltins = sizeof(vm_m_builtins) / sizeof(prvm_builtin_t);
1746
1748{
1749 r_refdef_scene_t *scene;
1750
1751 VM_Cmd_Init(prog);
1752 prog->polygonbegin_model = NULL;
1753 prog->polygonbegin_guess2d = 0;
1754
1755 scene = R_GetScenePointer( RST_MENU );
1756
1757 memset (scene, 0, sizeof (*scene));
1758
1759 scene->maxtempentities = 128;
1761
1762 scene->maxentities = MAX_EDICTS + 256 + 512;
1763 scene->entities = (entity_render_t **)Mem_Alloc(prog->progs_mempool, sizeof(entity_render_t *) * scene->maxentities);
1764
1765 // LadyHavoc: what is this for?
1766 scene->ambientintensity = 32.0f;
1767}
1768
1770{
1771 // note: the menu's render entities are automatically freed when the prog's pool is freed
1772
1773 //VM_Cmd_Init();
1774 VM_Cmd_Reset(prog);
1775 prog->polygonbegin_model = NULL;
1776 prog->polygonbegin_guess2d = 0;
1777}
cvar_t vid_conheight
Definition cl_screen.c:57
cvar_t vid_conwidth
Definition cl_screen.c:56
void CL_SetVideoState(clvideo_t *video, clvideostate_t state)
Definition cl_video.c:298
clvideo_t * CL_GetVideoByName(const char *name)
Definition cl_video.c:284
void CL_RestartVideo(clvideo_t *video)
Definition cl_video.c:309
void CL_CloseVideo(clvideo_t *video)
Definition cl_video.c:327
clvideo_t * CL_OpenVideo(const char *filename, const char *name, int owner, const char *subtitlesfile)
Definition cl_video.c:245
#define MENUOWNER
Definition cl_video.h:11
clvideostate_t
Definition cl_video.h:14
@ CLVIDEO_STATECOUNT
Definition cl_video.h:21
@ CLVIDEO_UNUSED
Definition cl_video.h:15
void VM_stringwidth(prvm_prog_t *prog)
Definition clvm_cmds.c:1546
void VM_precache_pic(prvm_prog_t *prog)
Definition clvm_cmds.c:1306
void VM_drawsetcliparea(prvm_prog_t *prog)
Definition clvm_cmds.c:1961
void VM_drawrotpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1819
void VM_drawcolorcodedstring(prvm_prog_t *prog)
Definition clvm_cmds.c:1481
void VM_drawline(prvm_prog_t *prog)
Definition clvm_cmds.c:1260
void VM_drawfill(prvm_prog_t *prog)
Definition clvm_cmds.c:1925
void VM_freepic(prvm_prog_t *prog)
Definition clvm_cmds.c:1339
void VM_drawpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1771
void VM_iscachedpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1287
void VM_drawcharacter(prvm_prog_t *prog)
Definition clvm_cmds.c:1378
void VM_getimagesize(prvm_prog_t *prog)
Definition clvm_cmds.c:2001
void VM_drawresetcliparea(prvm_prog_t *prog)
Definition clvm_cmds.c:1984
void VM_loadfont(prvm_prog_t *prog)
Definition clvm_cmds.c:1630
void VM_findfont(prvm_prog_t *prog)
Definition clvm_cmds.c:1616
void VM_drawstring(prvm_prog_t *prog)
Definition clvm_cmds.c:1431
void VM_drawsubpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1868
void VM_CL_precache_model(void)
void VM_CL_setorigin(void)
void VM_CL_R_SetView(void)
void VM_CL_R_PolygonBegin(void)
void VM_CL_R_AddEntity(void)
void VM_CL_R_ClearScene(void)
void VM_CL_R_RenderScene(void)
void VM_CL_R_PolygonEnd(void)
void VM_CL_gettagindex(void)
void VM_CL_R_PolygonVertex(void)
void VM_CL_gettaginfo(void)
void VM_CL_setattachment(void)
void VM_CL_setmodel(void)
void VM_CL_R_AddDynamicLight(void)
void VM_CL_R_AddEntities(void)
void Cmd_AddCommand(unsigned flags, const char *cmd_name, xcommand_t function, const char *description)
called by the init functions of other parts of the program to register commands and functions to call...
Definition cmd.c:1661
#define CF_CLIENT
cvar/command that only the client can change/execute
Definition cmd.h:48
void MSG_WriteShort(sizebuf_t *sb, int c)
Definition com_msg.c:138
void MSG_WriteString(sizebuf_t *sb, const char *s)
Definition com_msg.c:173
void MSG_WriteLong(sizebuf_t *sb, int c)
Definition com_msg.c:147
void MSG_WriteCoord(sizebuf_t *sb, float f, protocolversion_t protocol)
Definition com_msg.c:202
void MSG_WriteByte(sizebuf_t *sb, int c)
Definition com_msg.c:130
void MSG_WriteAngle(sizebuf_t *sb, float f, protocolversion_t protocol)
Definition com_msg.c:237
void MSG_WriteChar(sizebuf_t *sb, int c)
Definition com_msg.c:122
int dpsnprintf(char *buffer, size_t buffersize, const char *format,...)
Returns the number of printed characters, excluding the final '\0' or returns -1 if the buffer isn't ...
Definition common.c:997
#define dp_strlcpy(dst, src, dsize)
Definition common.h:303
qbool Crypto_RetrieveHostKey(lhnetaddress_t *peeraddress, int *keyid, char *keyfp, size_t keyfplen, char *idfp, size_t idfplen, int *aeslevel, qbool *issigned)
Definition crypto.c:734
int Crypto_RetrieveLocalKey(int keyid, char *keyfp, size_t keyfplen, char *idfp, size_t idfplen, qbool *issigned)
Definition crypto.c:763
#define FP64_SIZE
Definition crypto.h:38
gamedir_t * fs_all_gamedirs
Definition fs.c:452
static int(ZEXPORT *qz_inflate)(z_stream *strm
int fs_all_gamedirs_count
Definition fs.c:453
r_refdef_scene_t * R_GetScenePointer(r_refdef_scene_type_t scenetype)
Definition gl_rmain.c:5588
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
Definition glquake.h:609
const GLchar * name
Definition glquake.h:601
GLenum type
Definition glquake.h:656
qbool in_client_mouse
Definition vid_shared.c:67
float in_windowmouse_y
Definition input.h:32
float in_windowmouse_x
Definition vid_shared.c:71
float in_mouse_y
Definition input.h:33
float in_mouse_x
Definition vid_shared.c:70
keydest_t key_dest
Definition keys.c:37
int key_consoleactive
Definition keys.c:38
@ key_menu
Definition keys.h:372
@ key_game
Definition keys.h:372
@ key_message
Definition keys.h:372
@ key_menu_grabbed
Definition keys.h:372
int LHNETADDRESS_FromString(lhnetaddress_t *vaddress, const char *string, int defaultport)
Definition lhnet.c:204
#define VectorSet(vec, x, y, z)
Definition mathlib.h:96
video_resolution_t * video_resolutions
Definition menu.c:2851
video_resolution_t video_resolutions_hardcoded[]
Definition menu.c:2782
const serverlist_entry_t * serverlist_callbackentry
Definition menu.c:5390
int video_resolutions_count
Definition menu.c:2852
jmp_buf mp_abort
Definition menu.c:5227
int video_resolutions_hardcoded_count
Definition menu.c:2844
float strlen(string s)
static void VM_M_addwantedserverlistkey(prvm_prog_t *prog)
Definition mvm_cmds.c:671
#define MSG_ALL
Definition mvm_cmds.c:690
static void VM_M_WriteCoord(prvm_prog_t *prog)
Definition mvm_cmds.c:758
static void VM_M_crypto_getidfp(prvm_prog_t *prog)
Definition mvm_cmds.c:823
static void VM_M_getserverliststring(prvm_prog_t *prog)
Definition mvm_cmds.c:457
static void VM_M_WriteEntity(prvm_prog_t *prog)
Definition mvm_cmds.c:770
const int vm_m_numbuiltins
Definition mvm_cmds.c:1745
static void VM_M_getgamedirinfo(prvm_prog_t *prog)
Definition mvm_cmds.c:212
static void VM_M_crypto_getencryptlevel(prvm_prog_t *prog)
Definition mvm_cmds.c:855
static void VM_M_WriteByte(prvm_prog_t *prog)
Definition mvm_cmds.c:728
static void VM_M_WriteChar(prvm_prog_t *prog)
Definition mvm_cmds.c:734
static void VM_M_getmousetarget(prvm_prog_t *prog)
Definition mvm_cmds.c:95
static void VM_M_setmousetarget(prvm_prog_t *prog)
Definition mvm_cmds.c:71
static void VM_M_getserverlistindexforkey(prvm_prog_t *prog)
Definition mvm_cmds.c:620
void VM_cin_getstate(prvm_prog_t *prog)
Definition mvm_cmds.c:1025
static void VM_M_WriteString(prvm_prog_t *prog)
Definition mvm_cmds.c:764
#define MSG_INIT
Definition mvm_cmds.c:691
static void VM_M_WriteAngle(prvm_prog_t *prog)
Definition mvm_cmds.c:752
static void VM_M_crypto_getmyidfp(prvm_prog_t *prog)
Definition mvm_cmds.c:902
prvm_builtin_t vm_m_builtins[]
Definition mvm_cmds.c:1070
static void VM_M_getmousepos(prvm_prog_t *prog)
Definition mvm_cmds.c:795
static void VM_M_refreshserverlist(prvm_prog_t *prog)
Definition mvm_cmds.c:604
static void VM_M_resetserverlistmasks(prvm_prog_t *prog)
Definition mvm_cmds.c:295
static void VM_M_getresolution(prvm_prog_t *prog)
Definition mvm_cmds.c:181
#define MSG_ONE
Definition mvm_cmds.c:689
static void VM_M_setserverlistmasknumber(prvm_prog_t *prog)
Definition mvm_cmds.c:376
void MVM_init_cmd(prvm_prog_t *prog)
Definition mvm_cmds.c:1747
void MVM_reset_cmd(prvm_prog_t *prog)
Definition mvm_cmds.c:1769
static void VM_M_setkeydest(prvm_prog_t *prog)
Definition mvm_cmds.c:114
void VM_cin_open(prvm_prog_t *prog)
Definition mvm_cmds.c:956
#define MSG_BROADCAST
Definition mvm_cmds.c:688
static void VM_M_resortserverlist(prvm_prog_t *prog)
Definition mvm_cmds.c:444
static void VM_M_crypto_getkeyfp(prvm_prog_t *prog)
Definition mvm_cmds.c:807
static void VM_M_setserverlistmaskstring(prvm_prog_t *prog)
Definition mvm_cmds.c:311
static void VM_M_getserverlistnumber(prvm_prog_t *prog)
Definition mvm_cmds.c:523
static void VM_M_WriteShort(prvm_prog_t *prog)
Definition mvm_cmds.c:740
static void VM_M_WriteLong(prvm_prog_t *prog)
Definition mvm_cmds.c:746
qbool MP_ConsoleCommand(const char *text, size_t textlen)
Definition mvm_cmds.c:56
void VM_cin_restart(prvm_prog_t *prog)
Definition mvm_cmds.c:1049
static void VM_M_getkeydest(prvm_prog_t *prog)
Definition mvm_cmds.c:148
static void VM_M_crypto_getmykeyfp(prvm_prog_t *prog)
Definition mvm_cmds.c:880
static sizebuf_t * VM_M_WriteDest(prvm_prog_t *prog)
Definition mvm_cmds.c:693
void VM_cin_close(prvm_prog_t *prog)
Definition mvm_cmds.c:982
static void VM_M_crypto_getidstatus(prvm_prog_t *prog)
Definition mvm_cmds.c:839
const char * vm_m_extensions[]
Definition mvm_cmds.c:13
static void VM_M_crypto_getmyidstatus(prvm_prog_t *prog)
Definition mvm_cmds.c:924
static void VM_M_getserverliststat(prvm_prog_t *prog)
Definition mvm_cmds.c:249
static void VM_M_copyentity(prvm_prog_t *prog)
Definition mvm_cmds.c:785
static void VM_M_registercommand(prvm_prog_t *prog)
Definition mvm_cmds.c:1064
static void VM_M_setserverlistsort(prvm_prog_t *prog)
Definition mvm_cmds.c:589
void VM_cin_setstate(prvm_prog_t *prog)
Definition mvm_cmds.c:1000
unsigned serverquerycount
Definition netconn.c:120
unsigned masterquerycount
Definition netconn.c:118
unsigned serverreplycount
Definition netconn.c:121
unsigned masterreplycount
Definition netconn.c:119
#define OFS_NULL
Definition pr_comp.h:32
#define OFS_PARM2
Definition pr_comp.h:36
#define OFS_PARM3
Definition pr_comp.h:37
#define OFS_RETURN
Definition pr_comp.h:33
#define OFS_PARM0
Definition pr_comp.h:34
#define OFS_PARM1
Definition pr_comp.h:35
int PRVM_SetTempString(prvm_prog_t *prog, const char *s, size_t slen)
Takes an strlen (not a buffer size).
void VM_Cmd_Init(prvm_prog_t *prog)
Definition prvm_cmds.c:5265
void VM_Warning(prvm_prog_t *prog, const char *fmt,...) DP_FUNC_PRINTF(2)
Definition prvm_cmds.c:25
void VM_Cmd_Reset(prvm_prog_t *prog)
Definition prvm_cmds.c:5274
#define PRVM_G_EDICTNUM(o)
Definition progsvm.h:885
void(* prvm_builtin_t)(struct prvm_prog_s *prog)
Definition progsvm.h:256
#define PRVM_G_STRING(o)
Definition progsvm.h:887
#define PRVM_G_FLOAT(o)
Definition progsvm.h:882
#define PRVM_G_EDICT(o)
Definition progsvm.h:884
#define PRVM_G_VECTOR(o)
Definition progsvm.h:886
#define PRVM_G_INT(o)
Definition progsvm.h:883
void VM_strunzone(prvm_prog_t *prog)
Definition prvm_cmds.c:2642
void VM_substring(prvm_prog_t *prog)
Definition prvm_cmds.c:2397
void VM_entityfieldname(prvm_prog_t *prog)
Definition prvm_cmds.c:2129
void VM_altstr_prepare(prvm_prog_t *prog)
Definition prvm_cmds.c:3651
void VM_buf_writefile(prvm_prog_t *prog)
Definition prvm_cmds.c:4401
void VM_getsoundtime(prvm_prog_t *prog)
Definition prvm_cmds.c:2994
void VM_objerror(prvm_prog_t *prog)
Definition prvm_cmds.c:403
void VM_fabs(prvm_prog_t *prog)
Definition prvm_cmds.c:899
void VM_isserver(prvm_prog_t *prog)
Definition prvm_cmds.c:2864
void VM_dprint(prvm_prog_t *prog)
Definition prvm_cmds.c:854
void VM_uri_get(prvm_prog_t *prog)
Definition prvm_cmds.c:5427
void VM_chr2str(prvm_prog_t *prog)
Definition prvm_cmds.c:4918
void VM_digest_hex(prvm_prog_t *prog)
Definition prvm_cmds.c:5175
void VM_clientcount(prvm_prog_t *prog)
Definition prvm_cmds.c:2878
void VM_soundlength(prvm_prog_t *prog)
Definition prvm_cmds.c:3023
void VM_strncmp(prvm_prog_t *prog)
Definition prvm_cmds.c:5127
void VM_strtolower(prvm_prog_t *prog)
Definition prvm_cmds.c:2329
void VM_fgets(prvm_prog_t *prog)
Definition prvm_cmds.c:1996
void VM_search_getsize(prvm_prog_t *prog)
Definition prvm_cmds.c:3238
void VM_findkeysforcommand(prvm_prog_t *prog)
Definition prvm_cmds.c:3352
void VM_tan(prvm_prog_t *prog)
Definition prvm_cmds.c:1704
void VM_modulo(prvm_prog_t *prog)
Definition prvm_cmds.c:3116
void VM_sqrt(prvm_prog_t *prog)
Definition prvm_cmds.c:1643
void VM_stov(prvm_prog_t *prog)
Definition prvm_cmds.c:2603
void VM_random(prvm_prog_t *prog)
Definition prvm_cmds.c:611
void VM_gecko_navigate(prvm_prog_t *prog)
Definition prvm_cmds.c:3500
void VM_eprint(prvm_prog_t *prog)
Definition prvm_cmds.c:1494
void VM_precache_sound(prvm_prog_t *prog)
Definition prvm_cmds.c:1381
void VM_CL_getextresponse(prvm_prog_t *prog)
Definition prvm_cmds.c:5612
void VM_buf_getsize(prvm_prog_t *prog)
Definition prvm_cmds.c:4016
void VM_search_end(prvm_prog_t *prog)
Definition prvm_cmds.c:3207
void VM_getentityfieldstring(prvm_prog_t *prog)
Definition prvm_cmds.c:2177
void VM_bufstr_get(prvm_prog_t *prog)
Definition prvm_cmds.c:4172
void VM_altstr_get(prvm_prog_t *prog)
Definition prvm_cmds.c:3683
void VM_gecko_movemouse(prvm_prog_t *prog)
Definition prvm_cmds.c:3523
void VM_cvar_type(prvm_prog_t *prog)
Definition prvm_cmds.c:722
void VM_vlen(prvm_prog_t *prog)
Definition prvm_cmds.c:544
void VM_gecko_destroy(prvm_prog_t *prog)
Definition prvm_cmds.c:3489
void VM_CheckEmptyString(prvm_prog_t *prog, const char *s)
Definition prvm_cmds.c:62
void VM_gecko_get_texture_extent(prvm_prog_t *prog)
Definition prvm_cmds.c:3547
void VM_search_getfilename(prvm_prog_t *prog)
Definition prvm_cmds.c:3266
void VM_itof(prvm_prog_t *prog)
Definition prvm_cmds.c:969
void VM_centerprint(prvm_prog_t *prog)
Definition prvm_cmds.c:499
void VM_coverage(prvm_prog_t *prog)
Definition prvm_cmds.c:6641
void VM_strlennocol(prvm_prog_t *prog)
Definition prvm_cmds.c:2305
void VM_tokenize(prvm_prog_t *prog)
Definition prvm_cmds.c:2663
void VM_numentityfields(prvm_prog_t *prog)
Definition prvm_cmds.c:2115
void VM_vtos(prvm_prog_t *prog)
Definition prvm_cmds.c:917
void VM_argv_start_index(prvm_prog_t *prog)
Definition prvm_cmds.c:2822
void VM_setbindmaps(prvm_prog_t *prog)
Definition prvm_cmds.c:3461
void VM_CL_videoplaying(prvm_prog_t *prog)
Definition prvm_cmds.c:5691
void VM_registercvar(prvm_prog_t *prog)
Definition prvm_cmds.c:1736
void VM_uri_unescape(prvm_prog_t *prog)
Definition prvm_cmds.c:5317
void VM_infoget(prvm_prog_t *prog)
Definition prvm_cmds.c:5110
void VM_randomvec(prvm_prog_t *prog)
Definition prvm_cmds.c:1719
void VM_matchpattern(prvm_prog_t *prog)
Definition prvm_cmds.c:4619
void VM_setkeybind(prvm_prog_t *prog)
Definition prvm_cmds.c:3423
void VM_atan2(prvm_prog_t *prog)
Definition prvm_cmds.c:1692
void VM_etos(prvm_prog_t *prog)
Definition prvm_cmds.c:936
void VM_cvar_defstring(prvm_prog_t *prog)
Definition prvm_cmds.c:786
void VM_stackdump(prvm_prog_t *prog)
Definition prvm_cmds.c:1437
void VM_altstr_count(prvm_prog_t *prog)
Definition prvm_cmds.c:3621
void VM_asin(prvm_prog_t *prog)
Definition prvm_cmds.c:1656
void VM_vectoyaw(prvm_prog_t *prog)
Definition prvm_cmds.c:557
void VM_strlen(prvm_prog_t *prog)
Definition prvm_cmds.c:2265
void VM_strconv(prvm_prog_t *prog)
Definition prvm_cmds.c:5022
void VM_rint(prvm_prog_t *prog)
Definition prvm_cmds.c:1508
void VM_bound(prvm_prog_t *prog)
Definition prvm_cmds.c:1829
void VM_argv_end_index(prvm_prog_t *prog)
Definition prvm_cmds.c:2840
void VM_buf_implode(prvm_prog_t *prog)
Definition prvm_cmds.c:4128
void VM_precache_file(prvm_prog_t *prog)
Definition prvm_cmds.c:1407
void VM_spawn(prvm_prog_t *prog)
Definition prvm_cmds.c:1063
void VM_tokenize_console(prvm_prog_t *prog)
Definition prvm_cmds.c:2694
void VM_sprintf(prvm_prog_t *prog)
Definition prvm_cmds.c:5772
void VM_localsound(prvm_prog_t *prog)
Definition prvm_cmds.c:625
void VM_buf_cvarlist(prvm_prog_t *prog)
Definition prvm_cmds.c:4659
void VM_find(prvm_prog_t *prog)
Definition prvm_cmds.c:1110
void VM_stof(prvm_prog_t *prog)
Definition prvm_cmds.c:954
void VM_fputs(prvm_prog_t *prog)
Definition prvm_cmds.c:2049
void VM_bufstr_add(prvm_prog_t *prog)
Definition prvm_cmds.c:4235
void VM_strdecolorize(prvm_prog_t *prog)
Definition prvm_cmds.c:2282
void VM_uri_escape(prvm_prog_t *prog)
Definition prvm_cmds.c:5284
void VM_findchainflags(prvm_prog_t *prog)
Definition prvm_cmds.c:1334
void VM_netaddress_resolve(prvm_prog_t *prog)
Definition prvm_cmds.c:5590
void VM_writetofile(prvm_prog_t *prog)
Definition prvm_cmds.c:2082
void VM_putentityfieldstring(prvm_prog_t *prog)
Definition prvm_cmds.c:2229
void VM_etof(prvm_prog_t *prog)
Definition prvm_cmds.c:1001
void VM_nextent(prvm_prog_t *prog)
Definition prvm_cmds.c:1556
void VM_parseentitydata(prvm_prog_t *prog)
Definition prvm_cmds.c:3054
void VM_gecko_resize(prvm_prog_t *prog)
Definition prvm_cmds.c:3535
void VM_fclose(prvm_prog_t *prog)
Definition prvm_cmds.c:1963
void VM_ftoe(prvm_prog_t *prog)
Definition prvm_cmds.c:982
void VM_findfloat(prvm_prog_t *prog)
Definition prvm_cmds.c:1155
void VM_strcat(prvm_prog_t *prog)
Definition prvm_cmds.c:2377
void VM_atan(prvm_prog_t *prog)
Definition prvm_cmds.c:1680
void VM_ceil(prvm_prog_t *prog)
Definition prvm_cmds.c:1541
void VM_buf_del(prvm_prog_t *prog)
Definition prvm_cmds.c:3995
void VM_strpad(prvm_prog_t *prog)
Definition prvm_cmds.c:5070
void VM_strtoupper(prvm_prog_t *prog)
Definition prvm_cmds.c:2352
void VM_altstr_ins(prvm_prog_t *prog)
Definition prvm_cmds.c:3775
void VM_normalize(prvm_prog_t *prog)
Definition prvm_cmds.c:515
void VM_tokenizebyseparator(prvm_prog_t *prog)
Definition prvm_cmds.c:2738
void VM_getkeybind(prvm_prog_t *prog)
Definition prvm_cmds.c:3402
void VM_getbindmaps(prvm_prog_t *prog)
Definition prvm_cmds.c:3444
void VM_strftime(prvm_prog_t *prog)
Definition prvm_cmds.c:1014
void VM_floor(prvm_prog_t *prog)
Definition prvm_cmds.c:1527
void VM_cos(prvm_prog_t *prog)
Definition prvm_cmds.c:1630
void VM_whichpack(prvm_prog_t *prog)
Definition prvm_cmds.c:5364
void VM_CL_isdemo(prvm_prog_t *prog)
Definition prvm_cmds.c:5684
void VM_buf_sort(prvm_prog_t *prog)
Definition prvm_cmds.c:4093
void VM_bufstr_find(prvm_prog_t *prog)
Definition prvm_cmds.c:4564
void VM_strzone(prvm_prog_t *prog)
Definition prvm_cmds.c:2621
void VM_cvar_set(prvm_prog_t *prog)
Definition prvm_cmds.c:823
void VM_isfunction(prvm_prog_t *prog)
Definition prvm_cmds.c:5745
void VM_bprint(prvm_prog_t *prog)
Definition prvm_cmds.c:442
void VM_argv(prvm_prog_t *prog)
Definition prvm_cmds.c:2804
void VM_strreplace(prvm_prog_t *prog)
Definition prvm_cmds.c:2469
void VM_min(prvm_prog_t *prog)
Definition prvm_cmds.c:1777
qbool PRVM_ConsoleCommand(prvm_prog_t *prog, const char *text, size_t textlen, int *func, qbool preserve_self, int curself, double ptime, const char *error_message)
Definition prvm_cmds.c:68
void VM_checkextension(prvm_prog_t *prog)
Definition prvm_cmds.c:363
void VM_clientstate(prvm_prog_t *prog)
Definition prvm_cmds.c:2892
void VM_ftos(prvm_prog_t *prog)
Definition prvm_cmds.c:874
void VM_bufstr_set(prvm_prog_t *prog)
Definition prvm_cmds.c:4202
void VM_findflags(prvm_prog_t *prog)
Definition prvm_cmds.c:1294
void VM_acos(prvm_prog_t *prog)
Definition prvm_cmds.c:1668
void VM_loadfromfile(prvm_prog_t *prog)
Definition prvm_cmds.c:3082
void VM_gecko_create(prvm_prog_t *prog)
Definition prvm_cmds.c:3477
void VM_altstr_set(prvm_prog_t *prog)
Definition prvm_cmds.c:3731
void VM_gettime(prvm_prog_t *prog)
Definition prvm_cmds.c:2948
void VM_findchainfloat(prvm_prog_t *prog)
Definition prvm_cmds.c:1248
void VM_findchain(prvm_prog_t *prog)
Definition prvm_cmds.c:1193
void VM_traceon(prvm_prog_t *prog)
Definition prvm_cmds.c:1466
void VM_strstrofs(prvm_prog_t *prog)
Definition prvm_cmds.c:4872
void VM_fopen(prvm_prog_t *prog)
Definition prvm_cmds.c:1899
void VM_max(prvm_prog_t *prog)
Definition prvm_cmds.c:1803
void VM_bufstr_free(prvm_prog_t *prog)
Definition prvm_cmds.c:4282
void VM_buf_copy(prvm_prog_t *prog)
Definition prvm_cmds.c:4039
void VM_cvar_description(prvm_prog_t *prog)
Definition prvm_cmds.c:805
void VM_search_begin(prvm_prog_t *prog)
Definition prvm_cmds.c:3161
void VM_crc16(prvm_prog_t *prog)
Definition prvm_cmds.c:5162
void VM_stringtokeynum(prvm_prog_t *prog)
Definition prvm_cmds.c:3388
void VM_remove(prvm_prog_t *prog)
Definition prvm_cmds.c:1080
void VM_error(prvm_prog_t *prog)
Definition prvm_cmds.c:380
void VM_buf_create(prvm_prog_t *prog)
Definition prvm_cmds.c:3964
void VM_str2chr(prvm_prog_t *prog)
Definition prvm_cmds.c:4896
void VM_print(prvm_prog_t *prog)
Definition prvm_cmds.c:425
void VM_cvar(prvm_prog_t *prog)
Definition prvm_cmds.c:700
void VM_cvar_string(prvm_prog_t *prog)
Definition prvm_cmds.c:762
void VM_gecko_keyevent(prvm_prog_t *prog)
Definition prvm_cmds.c:3511
void VM_changelevel(prvm_prog_t *prog)
Definition prvm_cmds.c:1592
void VM_crash(prvm_prog_t *prog)
Definition prvm_cmds.c:1452
void VM_traceoff(prvm_prog_t *prog)
Definition prvm_cmds.c:1480
void VM_callfunction(prvm_prog_t *prog)
Definition prvm_cmds.c:5705
void VM_infoadd(prvm_prog_t *prog)
Definition prvm_cmds.c:5090
void VM_wasfreed(prvm_prog_t *prog)
Definition prvm_cmds.c:5222
void VM_chr(prvm_prog_t *prog)
Definition prvm_cmds.c:3303
void VM_sprint(prvm_prog_t *prog)
Definition prvm_cmds.c:465
void VM_buf_loadfile(prvm_prog_t *prog)
Definition prvm_cmds.c:4318
void VM_localcmd(prvm_prog_t *prog)
Definition prvm_cmds.c:678
void VM_sin(prvm_prog_t *prog)
Definition prvm_cmds.c:1618
void VM_pow(prvm_prog_t *prog)
Definition prvm_cmds.c:1844
void VM_log(prvm_prog_t *prog)
Definition prvm_cmds.c:1850
void VM_coredump(prvm_prog_t *prog)
Definition prvm_cmds.c:1421
void VM_strireplace(prvm_prog_t *prog)
Definition prvm_cmds.c:2536
void VM_keynumtostring(prvm_prog_t *prog)
Definition prvm_cmds.c:3331
void VM_strncasecmp(prvm_prog_t *prog)
Definition prvm_cmds.c:5145
void VM_loadfromdata(prvm_prog_t *prog)
Definition prvm_cmds.c:3040
void VM_vectoangles(prvm_prog_t *prog)
Definition prvm_cmds.c:586
void VM_entityfieldtype(prvm_prog_t *prog)
Definition prvm_cmds.c:2153
#define VM_SAFEPARMCOUNT(p, f)
Definition prvm_cmds.h:207
#define VM_SAFEPARMCOUNTRANGE(p1, p2, f)
Definition prvm_cmds.h:206
prvm_uint_t addr
int i
#define MAX_EDICTS
max number of objects in game world at once (32768 protocol limit)
Definition qdefs.h:105
#define SERVERLIST_ANDMASKCOUNT
max items in server list AND mask
Definition qdefs.h:161
#define SERVERLIST_ORMASKCOUNT
max items in server list OR mask
Definition qdefs.h:162
#define NULL
Definition qtypes.h:12
bool qbool
Definition qtypes.h:9
float prvm_vec_t
Definition qtypes.h:55
@ RST_MENU
Definition render.h:224
server_t sv
local server
Definition sv_main.c:223
server_static_t svs
persistant server info
Definition sv_main.c:224
dp_FragColor r
clvideostate_t state
Definition cl_video.h:38
int integer
Definition cvar.h:73
prvm_vec_t * fp
Definition progsvm.h:102
union prvm_edict_t::@30 fields
int entityfields
number of vec_t fields in progs (some variables are 3)
Definition progsvm.h:548
prvm_prog_funcoffsets_t funcoffsets
Definition progsvm.h:693
const char * name
name of the prog, e.g. "Server", "Client" or "Menu" (used for text output)
Definition progsvm.h:700
void(* error_cmd)(const char *format,...) DP_FUNC_PRINTF(1) DP_FUNC_NORETURN
[INIT]
Definition progsvm.h:747
struct model_s * polygonbegin_model
this tracks the last polygonbegin's choice of CL_Mesh_CSQC or CL_Mesh_UI for this polygon
Definition progsvm.h:654
mempool_t * progs_mempool
all memory allocations related to this vm_prog (code, edicts, strings)
Definition progsvm.h:602
qbool polygonbegin_guess2d
indicates if polygonbegin should be interpreted as 2d (clearscene sets this to false,...
Definition progsvm.h:661
int maxtempentities
Definition render.h:368
entity_render_t * tempentities
field of temporary entities that is reset each (client) frame
Definition render.h:366
float ambientintensity
Definition render.h:384
entity_render_t ** entities
renderable entities (excluding world)
Definition render.h:361
struct client_s * clients
client slots
Definition server.h:30
int maxclients
number of svs.clients slots (updated by maxplayers command)
Definition server.h:28
qbool active
false if only a net client
Definition server.h:66
sizebuf_t signon
Definition server.h:133
sizebuf_t datagram
Definition server.h:126
sizebuf_t reliable_datagram
Definition server.h:130
protocolversion_t protocol
one of the PROTOCOL_ values
Definition server.h:74
int pixelheight_denom
Definition vid.h:244
int pixelheight_num
Definition vid.h:244
int width
Definition vid.h:243
int height
Definition vid.h:243
int width
Definition vid.h:60
int height
Definition vid.h:61
viddef_mode_t mode
currently active video mode
Definition vid.h:73
vid_mode_t VID_GetDesktopMode(void)
Definition vid_sdl.c:1895
viddef_t vid
global video state
Definition vid_shared.c:64
#define Mem_Alloc(pool, size)
Definition zone.h:92