-
Notifications
You must be signed in to change notification settings - Fork 646
/
Copy pathAPIProxy.h
939 lines (880 loc) · 50.7 KB
/
APIProxy.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
#ifndef __APIPROXY__
#define __APIPROXY__
#include "archtypes.h" // DAL
#include "netadr.h"
#include "Sequence.h"
#ifndef _WIN32
#include "enums.h"
#endif
#define MAX_ALIAS_NAME 32
typedef struct cmdalias_s
{
struct cmdalias_s *next;
char name[MAX_ALIAS_NAME];
char *value;
} cmdalias_t;
// ********************************************************
// Functions exported by the client .dll
// ********************************************************
// Function type declarations for client exports
typedef int (*INITIALIZE_FUNC) ( struct cl_enginefuncs_s*, int );
typedef void (*HUD_INIT_FUNC) ( void );
typedef int (*HUD_VIDINIT_FUNC) ( void );
typedef int (*HUD_REDRAW_FUNC) ( float, int );
typedef int (*HUD_UPDATECLIENTDATA_FUNC) ( struct client_data_s*, float );
typedef void (*HUD_RESET_FUNC) ( void );
typedef void (*HUD_CLIENTMOVE_FUNC)( struct playermove_s *ppmove, qboolean server );
typedef void (*HUD_CLIENTMOVEINIT_FUNC)( struct playermove_s *ppmove );
typedef char (*HUD_TEXTURETYPE_FUNC)( char *name );
typedef void (*HUD_IN_ACTIVATEMOUSE_FUNC) ( void );
typedef void (*HUD_IN_DEACTIVATEMOUSE_FUNC) ( void );
typedef void (*HUD_IN_MOUSEEVENT_FUNC) ( int mstate );
typedef void (*HUD_IN_CLEARSTATES_FUNC) ( void );
typedef void (*HUD_IN_ACCUMULATE_FUNC ) ( void );
typedef void (*HUD_CL_CREATEMOVE_FUNC) ( float frametime, struct usercmd_s *cmd, int active );
typedef int (*HUD_CL_ISTHIRDPERSON_FUNC) ( void );
typedef void (*HUD_CL_GETCAMERAOFFSETS_FUNC )( float *ofs );
typedef struct kbutton_s * (*HUD_KB_FIND_FUNC) ( const char *name );
typedef void ( *HUD_CAMTHINK_FUNC )( void );
typedef void ( *HUD_CALCREF_FUNC ) ( struct ref_params_s *pparams );
typedef int ( *HUD_ADDENTITY_FUNC ) ( int type, struct cl_entity_s *ent, const char *modelname );
typedef void ( *HUD_CREATEENTITIES_FUNC ) ( void );
typedef void ( *HUD_DRAWNORMALTRIS_FUNC ) ( void );
typedef void ( *HUD_DRAWTRANSTRIS_FUNC ) ( void );
typedef void ( *HUD_STUDIOEVENT_FUNC ) ( const struct mstudioevent_s *event, const struct cl_entity_s *entity );
typedef void ( *HUD_POSTRUNCMD_FUNC ) ( struct local_state_s *from, struct local_state_s *to, struct usercmd_s *cmd, int runfuncs, double time, unsigned int random_seed );
typedef void ( *HUD_SHUTDOWN_FUNC ) ( void );
typedef void ( *HUD_TXFERLOCALOVERRIDES_FUNC )( struct entity_state_s *state, const struct clientdata_s *client );
typedef void ( *HUD_PROCESSPLAYERSTATE_FUNC )( struct entity_state_s *dst, const struct entity_state_s *src );
typedef void ( *HUD_TXFERPREDICTIONDATA_FUNC ) ( struct entity_state_s *ps, const struct entity_state_s *pps, struct clientdata_s *pcd, const struct clientdata_s *ppcd, struct weapon_data_s *wd, const struct weapon_data_s *pwd );
typedef void ( *HUD_DEMOREAD_FUNC ) ( int size, unsigned char *buffer );
typedef int ( *HUD_CONNECTIONLESS_FUNC )( const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size );
typedef int ( *HUD_GETHULLBOUNDS_FUNC ) ( int hullnumber, float *mins, float *maxs );
typedef void (*HUD_FRAME_FUNC) ( double );
typedef int (*HUD_KEY_EVENT_FUNC ) ( int eventcode, int keynum, const char *pszCurrentBinding );
typedef void (*HUD_TEMPENTUPDATE_FUNC) ( double frametime, double client_time, double cl_gravity, struct tempent_s **ppTempEntFree, struct tempent_s **ppTempEntActive, int ( *Callback_AddVisibleEntity )( struct cl_entity_s *pEntity ), void ( *Callback_TempEntPlaySound )( struct tempent_s *pTemp, float damp ) );
typedef struct cl_entity_s *(*HUD_GETUSERENTITY_FUNC ) ( int index );
typedef void (*HUD_VOICESTATUS_FUNC)(int entindex, qboolean bTalking);
typedef void (*HUD_DIRECTORMESSAGE_FUNC)( int iSize, void *pbuf );
typedef int ( *HUD_STUDIO_INTERFACE_FUNC )( int version, struct r_studio_interface_s **ppinterface, struct engine_studio_api_s *pstudio );
typedef void (*HUD_CHATINPUTPOSITION_FUNC)( int *x, int *y );
typedef int (*HUD_GETPLAYERTEAM)(int iplayer);
typedef void *(*CLIENTFACTORY)(); // this should be CreateInterfaceFn but that means including interface.h
// which is a C++ file and some of the client files a C only...
// so we return a void * which we then do a typecast on later.
// Pointers to the exported client functions themselves
typedef struct
{
INITIALIZE_FUNC pInitFunc;
HUD_INIT_FUNC pHudInitFunc;
HUD_VIDINIT_FUNC pHudVidInitFunc;
HUD_REDRAW_FUNC pHudRedrawFunc;
HUD_UPDATECLIENTDATA_FUNC pHudUpdateClientDataFunc;
HUD_RESET_FUNC pHudResetFunc;
HUD_CLIENTMOVE_FUNC pClientMove;
HUD_CLIENTMOVEINIT_FUNC pClientMoveInit;
HUD_TEXTURETYPE_FUNC pClientTextureType;
HUD_IN_ACTIVATEMOUSE_FUNC pIN_ActivateMouse;
HUD_IN_DEACTIVATEMOUSE_FUNC pIN_DeactivateMouse;
HUD_IN_MOUSEEVENT_FUNC pIN_MouseEvent;
HUD_IN_CLEARSTATES_FUNC pIN_ClearStates;
HUD_IN_ACCUMULATE_FUNC pIN_Accumulate;
HUD_CL_CREATEMOVE_FUNC pCL_CreateMove;
HUD_CL_ISTHIRDPERSON_FUNC pCL_IsThirdPerson;
HUD_CL_GETCAMERAOFFSETS_FUNC pCL_GetCameraOffsets;
HUD_KB_FIND_FUNC pFindKey;
HUD_CAMTHINK_FUNC pCamThink;
HUD_CALCREF_FUNC pCalcRefdef;
HUD_ADDENTITY_FUNC pAddEntity;
HUD_CREATEENTITIES_FUNC pCreateEntities;
HUD_DRAWNORMALTRIS_FUNC pDrawNormalTriangles;
HUD_DRAWTRANSTRIS_FUNC pDrawTransparentTriangles;
HUD_STUDIOEVENT_FUNC pStudioEvent;
HUD_POSTRUNCMD_FUNC pPostRunCmd;
HUD_SHUTDOWN_FUNC pShutdown;
HUD_TXFERLOCALOVERRIDES_FUNC pTxferLocalOverrides;
HUD_PROCESSPLAYERSTATE_FUNC pProcessPlayerState;
HUD_TXFERPREDICTIONDATA_FUNC pTxferPredictionData;
HUD_DEMOREAD_FUNC pReadDemoBuffer;
HUD_CONNECTIONLESS_FUNC pConnectionlessPacket;
HUD_GETHULLBOUNDS_FUNC pGetHullBounds;
HUD_FRAME_FUNC pHudFrame;
HUD_KEY_EVENT_FUNC pKeyEvent;
HUD_TEMPENTUPDATE_FUNC pTempEntUpdate;
HUD_GETUSERENTITY_FUNC pGetUserEntity;
HUD_VOICESTATUS_FUNC pVoiceStatus; // Possibly null on old client dlls.
HUD_DIRECTORMESSAGE_FUNC pDirectorMessage; // Possibly null on old client dlls.
HUD_STUDIO_INTERFACE_FUNC pStudioInterface; // Not used by all clients
HUD_CHATINPUTPOSITION_FUNC pChatInputPosition; // Not used by all clients
HUD_GETPLAYERTEAM pGetPlayerTeam; // Not used by all clients
CLIENTFACTORY pClientFactory;
} cldll_func_t;
// Function type declarations for client destination functions
typedef void (*DST_INITIALIZE_FUNC) ( struct cl_enginefuncs_s**, int *);
typedef void (*DST_HUD_INIT_FUNC) ( void );
typedef void (*DST_HUD_VIDINIT_FUNC) ( void );
typedef void (*DST_HUD_REDRAW_FUNC) ( float*, int* );
typedef void (*DST_HUD_UPDATECLIENTDATA_FUNC) ( struct client_data_s**, float* );
typedef void (*DST_HUD_RESET_FUNC) ( void );
typedef void (*DST_HUD_CLIENTMOVE_FUNC)( struct playermove_s **, qboolean * );
typedef void (*DST_HUD_CLIENTMOVEINIT_FUNC)( struct playermove_s ** );
typedef void (*DST_HUD_TEXTURETYPE_FUNC)( char ** );
typedef void (*DST_HUD_IN_ACTIVATEMOUSE_FUNC) ( void );
typedef void (*DST_HUD_IN_DEACTIVATEMOUSE_FUNC) ( void );
typedef void (*DST_HUD_IN_MOUSEEVENT_FUNC) ( int * );
typedef void (*DST_HUD_IN_CLEARSTATES_FUNC) ( void );
typedef void (*DST_HUD_IN_ACCUMULATE_FUNC ) ( void );
typedef void (*DST_HUD_CL_CREATEMOVE_FUNC) ( float *, struct usercmd_s **, int * );
typedef void (*DST_HUD_CL_ISTHIRDPERSON_FUNC) ( void );
typedef void (*DST_HUD_CL_GETCAMERAOFFSETS_FUNC )( float ** );
typedef void (*DST_HUD_KB_FIND_FUNC) ( const char ** );
typedef void (*DST_HUD_CAMTHINK_FUNC )( void );
typedef void (*DST_HUD_CALCREF_FUNC ) ( struct ref_params_s ** );
typedef void (*DST_HUD_ADDENTITY_FUNC ) ( int *, struct cl_entity_s **, const char ** );
typedef void (*DST_HUD_CREATEENTITIES_FUNC ) ( void );
typedef void (*DST_HUD_DRAWNORMALTRIS_FUNC ) ( void );
typedef void (*DST_HUD_DRAWTRANSTRIS_FUNC ) ( void );
typedef void (*DST_HUD_STUDIOEVENT_FUNC ) ( const struct mstudioevent_s **, const struct cl_entity_s ** );
typedef void (*DST_HUD_POSTRUNCMD_FUNC ) ( struct local_state_s **, struct local_state_s **, struct usercmd_s **, int *, double *, unsigned int * );
typedef void (*DST_HUD_SHUTDOWN_FUNC ) ( void );
typedef void (*DST_HUD_TXFERLOCALOVERRIDES_FUNC )( struct entity_state_s **, const struct clientdata_s ** );
typedef void (*DST_HUD_PROCESSPLAYERSTATE_FUNC )( struct entity_state_s **, const struct entity_state_s ** );
typedef void (*DST_HUD_TXFERPREDICTIONDATA_FUNC ) ( struct entity_state_s **, const struct entity_state_s **, struct clientdata_s **, const struct clientdata_s **, struct weapon_data_s **, const struct weapon_data_s ** );
typedef void (*DST_HUD_DEMOREAD_FUNC ) ( int *, unsigned char ** );
typedef void (*DST_HUD_CONNECTIONLESS_FUNC )( const struct netadr_s **, const char **, char **, int ** );
typedef void (*DST_HUD_GETHULLBOUNDS_FUNC ) ( int *, float **, float ** );
typedef void (*DST_HUD_FRAME_FUNC) ( double * );
typedef void (*DST_HUD_KEY_EVENT_FUNC ) ( int *, int *, const char ** );
typedef void (*DST_HUD_TEMPENTUPDATE_FUNC) ( double *, double *, double *, struct tempent_s ***, struct tempent_s ***, int ( **Callback_AddVisibleEntity )( struct cl_entity_s *pEntity ), void ( **Callback_TempEntPlaySound )( struct tempent_s *pTemp, float damp ) );
typedef void (*DST_HUD_GETUSERENTITY_FUNC ) ( int * );
typedef void (*DST_HUD_VOICESTATUS_FUNC)(int *, qboolean *);
typedef void (*DST_HUD_DIRECTORMESSAGE_FUNC)( int *, void ** );
typedef void (*DST_HUD_STUDIO_INTERFACE_FUNC ) ( int *, struct r_studio_interface_s ***, struct engine_studio_api_s ** );
typedef void (*DST_HUD_CHATINPUTPOSITION_FUNC)( int **, int ** );
typedef void (*DST_HUD_GETPLAYERTEAM)(int);
// Pointers to the client destination functions
typedef struct
{
DST_INITIALIZE_FUNC pInitFunc;
DST_HUD_INIT_FUNC pHudInitFunc;
DST_HUD_VIDINIT_FUNC pHudVidInitFunc;
DST_HUD_REDRAW_FUNC pHudRedrawFunc;
DST_HUD_UPDATECLIENTDATA_FUNC pHudUpdateClientDataFunc;
DST_HUD_RESET_FUNC pHudResetFunc;
DST_HUD_CLIENTMOVE_FUNC pClientMove;
DST_HUD_CLIENTMOVEINIT_FUNC pClientMoveInit;
DST_HUD_TEXTURETYPE_FUNC pClientTextureType;
DST_HUD_IN_ACTIVATEMOUSE_FUNC pIN_ActivateMouse;
DST_HUD_IN_DEACTIVATEMOUSE_FUNC pIN_DeactivateMouse;
DST_HUD_IN_MOUSEEVENT_FUNC pIN_MouseEvent;
DST_HUD_IN_CLEARSTATES_FUNC pIN_ClearStates;
DST_HUD_IN_ACCUMULATE_FUNC pIN_Accumulate;
DST_HUD_CL_CREATEMOVE_FUNC pCL_CreateMove;
DST_HUD_CL_ISTHIRDPERSON_FUNC pCL_IsThirdPerson;
DST_HUD_CL_GETCAMERAOFFSETS_FUNC pCL_GetCameraOffsets;
DST_HUD_KB_FIND_FUNC pFindKey;
DST_HUD_CAMTHINK_FUNC pCamThink;
DST_HUD_CALCREF_FUNC pCalcRefdef;
DST_HUD_ADDENTITY_FUNC pAddEntity;
DST_HUD_CREATEENTITIES_FUNC pCreateEntities;
DST_HUD_DRAWNORMALTRIS_FUNC pDrawNormalTriangles;
DST_HUD_DRAWTRANSTRIS_FUNC pDrawTransparentTriangles;
DST_HUD_STUDIOEVENT_FUNC pStudioEvent;
DST_HUD_POSTRUNCMD_FUNC pPostRunCmd;
DST_HUD_SHUTDOWN_FUNC pShutdown;
DST_HUD_TXFERLOCALOVERRIDES_FUNC pTxferLocalOverrides;
DST_HUD_PROCESSPLAYERSTATE_FUNC pProcessPlayerState;
DST_HUD_TXFERPREDICTIONDATA_FUNC pTxferPredictionData;
DST_HUD_DEMOREAD_FUNC pReadDemoBuffer;
DST_HUD_CONNECTIONLESS_FUNC pConnectionlessPacket;
DST_HUD_GETHULLBOUNDS_FUNC pGetHullBounds;
DST_HUD_FRAME_FUNC pHudFrame;
DST_HUD_KEY_EVENT_FUNC pKeyEvent;
DST_HUD_TEMPENTUPDATE_FUNC pTempEntUpdate;
DST_HUD_GETUSERENTITY_FUNC pGetUserEntity;
DST_HUD_VOICESTATUS_FUNC pVoiceStatus; // Possibly null on old client dlls.
DST_HUD_DIRECTORMESSAGE_FUNC pDirectorMessage; // Possibly null on old client dlls.
DST_HUD_STUDIO_INTERFACE_FUNC pStudioInterface; // Not used by all clients
DST_HUD_CHATINPUTPOSITION_FUNC pChatInputPosition; // Not used by all clients
DST_HUD_GETPLAYERTEAM pGetPlayerTeam; // Not used by all clients
} cldll_func_dst_t;
// ********************************************************
// Functions exported by the engine
// ********************************************************
// Function type declarations for engine exports
typedef HSPRITE (*pfnEngSrc_pfnSPR_Load_t ) ( const char *szPicName );
typedef int (*pfnEngSrc_pfnSPR_Frames_t ) ( HSPRITE hPic );
typedef int (*pfnEngSrc_pfnSPR_Height_t ) ( HSPRITE hPic, int frame );
typedef int (*pfnEngSrc_pfnSPR_Width_t ) ( HSPRITE hPic, int frame );
typedef void (*pfnEngSrc_pfnSPR_Set_t ) ( HSPRITE hPic, int r, int g, int b );
typedef void (*pfnEngSrc_pfnSPR_Draw_t ) ( int frame, int x, int y, const struct rect_s *prc );
typedef void (*pfnEngSrc_pfnSPR_DrawHoles_t ) ( int frame, int x, int y, const struct rect_s *prc );
typedef void (*pfnEngSrc_pfnSPR_DrawAdditive_t ) ( int frame, int x, int y, const struct rect_s *prc );
typedef void (*pfnEngSrc_pfnSPR_EnableScissor_t ) ( int x, int y, int width, int height );
typedef void (*pfnEngSrc_pfnSPR_DisableScissor_t ) ( void );
typedef struct client_sprite_s * (*pfnEngSrc_pfnSPR_GetList_t ) ( char *psz, int *piCount );
typedef void (*pfnEngSrc_pfnFillRGBA_t ) ( int x, int y, int width, int height, int r, int g, int b, int a );
typedef int (*pfnEngSrc_pfnGetScreenInfo_t ) ( struct SCREENINFO_s *pscrinfo );
typedef void (*pfnEngSrc_pfnSetCrosshair_t ) ( HSPRITE hspr, wrect_t rc, int r, int g, int b );
typedef struct cvar_s * (*pfnEngSrc_pfnRegisterVariable_t ) ( char *szName, char *szValue, int flags );
typedef float (*pfnEngSrc_pfnGetCvarFloat_t ) ( char *szName );
typedef char* (*pfnEngSrc_pfnGetCvarString_t ) ( char *szName );
typedef int (*pfnEngSrc_pfnAddCommand_t ) ( char *cmd_name, void (*pfnEngSrc_function)(void) );
typedef int (*pfnEngSrc_pfnHookUserMsg_t ) ( char *szMsgName, pfnUserMsgHook pfn );
typedef int (*pfnEngSrc_pfnServerCmd_t ) ( char *szCmdString );
typedef int (*pfnEngSrc_pfnClientCmd_t ) ( char *szCmdString );
typedef void (*pfnEngSrc_pfnPrimeMusicStream_t ) ( char *szFilename, int looping );
typedef void (*pfnEngSrc_pfnGetPlayerInfo_t ) ( int ent_num, struct hud_player_info_s *pinfo );
typedef void (*pfnEngSrc_pfnPlaySoundByName_t ) ( char *szSound, float volume );
typedef void (*pfnEngSrc_pfnPlaySoundByNameAtPitch_t ) ( char *szSound, float volume, int pitch );
typedef void (*pfnEngSrc_pfnPlaySoundVoiceByName_t ) ( char *szSound, float volume, int pitch );
typedef void (*pfnEngSrc_pfnPlaySoundByIndex_t ) ( int iSound, float volume );
typedef void (*pfnEngSrc_pfnAngleVectors_t ) ( const float * vecAngles, float * forward, float * right, float * up );
typedef struct client_textmessage_s*(*pfnEngSrc_pfnTextMessageGet_t ) ( const char *pName );
typedef int (*pfnEngSrc_pfnDrawCharacter_t ) ( int x, int y, int number, int r, int g, int b );
typedef int (*pfnEngSrc_pfnDrawConsoleString_t ) ( int x, int y, char *string );
typedef void (*pfnEngSrc_pfnDrawSetTextColor_t ) ( float r, float g, float b );
typedef void (*pfnEngSrc_pfnDrawConsoleStringLen_t )( const char *string, int *length, int *height );
typedef void (*pfnEngSrc_pfnConsolePrint_t ) ( const char *string );
typedef void (*pfnEngSrc_pfnCenterPrint_t ) ( const char *string );
typedef int (*pfnEngSrc_GetWindowCenterX_t ) ( void );
typedef int (*pfnEngSrc_GetWindowCenterY_t ) ( void );
typedef void (*pfnEngSrc_GetViewAngles_t ) ( float * );
typedef void (*pfnEngSrc_SetViewAngles_t ) ( float * );
typedef int (*pfnEngSrc_GetMaxClients_t ) ( void );
typedef void (*pfnEngSrc_Cvar_SetValue_t ) ( char *cvar, float value );
typedef int (*pfnEngSrc_Cmd_Argc_t) (void);
typedef char * (*pfnEngSrc_Cmd_Argv_t ) ( int arg );
typedef void (*pfnEngSrc_Con_Printf_t ) ( char *fmt, ... );
typedef void (*pfnEngSrc_Con_DPrintf_t ) ( char *fmt, ... );
typedef void (*pfnEngSrc_Con_NPrintf_t ) ( int pos, char *fmt, ... );
typedef void (*pfnEngSrc_Con_NXPrintf_t ) ( struct con_nprint_s *info, char *fmt, ... );
typedef const char * (*pfnEngSrc_PhysInfo_ValueForKey_t ) ( const char *key );
typedef const char * (*pfnEngSrc_ServerInfo_ValueForKey_t )( const char *key );
typedef float (*pfnEngSrc_GetClientMaxspeed_t ) ( void );
typedef int (*pfnEngSrc_CheckParm_t ) ( char *parm, char **ppnext );
typedef void (*pfnEngSrc_Key_Event_t ) ( int key, int down );
typedef void (*pfnEngSrc_GetMousePosition_t ) ( int *mx, int *my );
typedef int (*pfnEngSrc_IsNoClipping_t ) ( void );
typedef struct cl_entity_s * (*pfnEngSrc_GetLocalPlayer_t ) ( void );
typedef struct cl_entity_s * (*pfnEngSrc_GetViewModel_t ) ( void );
typedef struct cl_entity_s * (*pfnEngSrc_GetEntityByIndex_t ) ( int idx );
typedef float (*pfnEngSrc_GetClientTime_t ) ( void );
typedef void (*pfnEngSrc_V_CalcShake_t ) ( void );
typedef void (*pfnEngSrc_V_ApplyShake_t ) ( float *origin, float *angles, float factor );
typedef int (*pfnEngSrc_PM_PointContents_t ) ( float *point, int *truecontents );
typedef int (*pfnEngSrc_PM_WaterEntity_t ) ( float *p );
typedef struct pmtrace_s * (*pfnEngSrc_PM_TraceLine_t ) ( float *start, float *end, int flags, int usehull, int ignore_pe );
typedef struct model_s * (*pfnEngSrc_CL_LoadModel_t ) ( const char *modelname, int *index );
typedef int (*pfnEngSrc_CL_CreateVisibleEntity_t ) ( int type, struct cl_entity_s *ent );
typedef const struct model_s * (*pfnEngSrc_GetSpritePointer_t ) ( HSPRITE hSprite );
typedef void (*pfnEngSrc_pfnPlaySoundByNameAtLocation_t ) ( char *szSound, float volume, float *origin );
typedef unsigned short (*pfnEngSrc_pfnPrecacheEvent_t ) ( int type, const char* psz );
typedef void (*pfnEngSrc_pfnPlaybackEvent_t ) ( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
typedef void (*pfnEngSrc_pfnWeaponAnim_t ) ( int iAnim, int body );
typedef float (*pfnEngSrc_pfnRandomFloat_t ) ( float flLow, float flHigh );
typedef int32 (*pfnEngSrc_pfnRandomLong_t ) ( int32 lLow, int32 lHigh );
typedef void (*pfnEngSrc_pfnHookEvent_t ) ( char *name, void ( *pfnEvent )( struct event_args_s *args ) );
typedef int (*pfnEngSrc_Con_IsVisible_t) ();
typedef const char * (*pfnEngSrc_pfnGetGameDirectory_t ) ( void );
typedef struct cvar_s * (*pfnEngSrc_pfnGetCvarPointer_t ) ( const char *szName );
typedef const char * (*pfnEngSrc_Key_LookupBinding_t ) ( const char *pBinding );
typedef const char * (*pfnEngSrc_pfnGetLevelName_t ) ( void );
typedef void (*pfnEngSrc_pfnGetScreenFade_t ) ( struct screenfade_s *fade );
typedef void (*pfnEngSrc_pfnSetScreenFade_t ) ( struct screenfade_s *fade );
typedef void * (*pfnEngSrc_VGui_GetPanel_t ) ( );
typedef void (*pfnEngSrc_VGui_ViewportPaintBackground_t ) (int extents[4]);
typedef byte* (*pfnEngSrc_COM_LoadFile_t ) ( char *path, int usehunk, int *pLength );
typedef char* (*pfnEngSrc_COM_ParseFile_t ) ( char *data, char *token );
typedef void (*pfnEngSrc_COM_FreeFile_t) ( void *buffer );
typedef struct triangleapi_s * pTriAPI;
typedef struct efx_api_s * pEfxAPI;
typedef struct event_api_s * pEventAPI;
typedef struct demo_api_s * pDemoAPI;
typedef struct net_api_s * pNetAPI;
typedef struct IVoiceTweak_s * pVoiceTweak;
typedef int (*pfnEngSrc_IsSpectateOnly_t ) ( void );
typedef struct model_s * (*pfnEngSrc_LoadMapSprite_t ) ( const char *filename );
typedef void (*pfnEngSrc_COM_AddAppDirectoryToSearchPath_t ) ( const char *pszBaseDir, const char *appName );
typedef int (*pfnEngSrc_COM_ExpandFilename_t) ( const char *fileName, char *nameOutBuffer, int nameOutBufferSize );
typedef const char * (*pfnEngSrc_PlayerInfo_ValueForKey_t )( int playerNum, const char *key );
typedef void (*pfnEngSrc_PlayerInfo_SetValueForKey_t )( const char *key, const char *value );
typedef qboolean (*pfnEngSrc_GetPlayerUniqueID_t)(int iPlayer, char playerID[16]);
typedef int (*pfnEngSrc_GetTrackerIDForPlayer_t)(int playerSlot);
typedef int (*pfnEngSrc_GetPlayerForTrackerID_t)(int trackerID);
typedef int (*pfnEngSrc_pfnServerCmdUnreliable_t )( char *szCmdString );
typedef void (*pfnEngSrc_GetMousePos_t )(struct tagPOINT *ppt);
typedef void (*pfnEngSrc_SetMousePos_t )(int x, int y);
typedef void (*pfnEngSrc_SetMouseEnable_t)(qboolean fEnable);
typedef struct cvar_s * (*pfnEngSrc_GetFirstCVarPtr_t)();
typedef unsigned int (*pfnEngSrc_GetFirstCmdFunctionHandle_t)();
typedef unsigned int (*pfnEngSrc_GetNextCmdFunctionHandle_t)(unsigned int cmdhandle);
typedef const char * (*pfnEngSrc_GetCmdFunctionName_t)(unsigned int cmdhandle);
typedef float (*pfnEngSrc_GetClientOldTime_t)();
typedef float (*pfnEngSrc_GetServerGravityValue_t)();
typedef struct model_s * (*pfnEngSrc_GetModelByIndex_t)( int index );
typedef void (*pfnEngSrc_pfnSetFilterMode_t )( int mode );
typedef void (*pfnEngSrc_pfnSetFilterColor_t )( float r, float g, float b );
typedef void (*pfnEngSrc_pfnSetFilterBrightness_t )( float brightness );
typedef sequenceEntry_s* (*pfnEngSrc_pfnSequenceGet_t )( const char *fileName, const char* entryName );
typedef void (*pfnEngSrc_pfnSPR_DrawGeneric_t )( int frame, int x, int y, const struct rect_s *prc, int src, int dest, int w, int h );
typedef sentenceEntry_s* (*pfnEngSrc_pfnSequencePickSentence_t )( const char *sentenceName, int pickMethod, int* entryPicked );
// draw a complete string
typedef int (*pfnEngSrc_pfnDrawString_t ) ( int x, int y, const char *str, int r, int g, int b );
typedef int (*pfnEngSrc_pfnDrawStringReverse_t ) ( int x, int y, const char *str, int r, int g, int b );
typedef const char * (*pfnEngSrc_LocalPlayerInfo_ValueForKey_t )( const char *key );
typedef int (*pfnEngSrc_pfnVGUI2DrawCharacter_t ) ( int x, int y, int ch, unsigned int font );
typedef int (*pfnEngSrc_pfnVGUI2DrawCharacterAdd_t ) ( int x, int y, int ch, int r, int g, int b, unsigned int font);
typedef unsigned int (*pfnEngSrc_COM_GetApproxWavePlayLength ) ( const char * filename);
typedef void * (*pfnEngSrc_pfnGetCareerUI_t)();
typedef void (*pfnEngSrc_Cvar_Set_t ) ( char *cvar, char *value );
typedef int (*pfnEngSrc_pfnIsPlayingCareerMatch_t)();
typedef double (*pfnEngSrc_GetAbsoluteTime_t) ( void );
typedef void (*pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t)(int *buffer, int bufferLength);
typedef void (*pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t)(int *buffer, int bufferLength);
typedef void (*pfnEngSrc_pfnResetTutorMessageDecayData_t)();
typedef void (*pfnEngSrc_pfnFillRGBABlend_t ) ( int x, int y, int width, int height, int r, int g, int b, int a );
typedef int (*pfnEngSrc_pfnGetAppID_t) ( void );
typedef cmdalias_t* (*pfnEngSrc_pfnGetAliases_t) ( void );
typedef void (*pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t) ( int *x, int *y );
// Pointers to the exported engine functions themselves
typedef struct cl_enginefuncs_s
{
pfnEngSrc_pfnSPR_Load_t pfnSPR_Load;
pfnEngSrc_pfnSPR_Frames_t pfnSPR_Frames;
pfnEngSrc_pfnSPR_Height_t pfnSPR_Height;
pfnEngSrc_pfnSPR_Width_t pfnSPR_Width;
pfnEngSrc_pfnSPR_Set_t pfnSPR_Set;
pfnEngSrc_pfnSPR_Draw_t pfnSPR_Draw;
pfnEngSrc_pfnSPR_DrawHoles_t pfnSPR_DrawHoles;
pfnEngSrc_pfnSPR_DrawAdditive_t pfnSPR_DrawAdditive;
pfnEngSrc_pfnSPR_EnableScissor_t pfnSPR_EnableScissor;
pfnEngSrc_pfnSPR_DisableScissor_t pfnSPR_DisableScissor;
pfnEngSrc_pfnSPR_GetList_t pfnSPR_GetList;
pfnEngSrc_pfnFillRGBA_t pfnFillRGBA;
pfnEngSrc_pfnGetScreenInfo_t pfnGetScreenInfo;
pfnEngSrc_pfnSetCrosshair_t pfnSetCrosshair;
pfnEngSrc_pfnRegisterVariable_t pfnRegisterVariable;
pfnEngSrc_pfnGetCvarFloat_t pfnGetCvarFloat;
pfnEngSrc_pfnGetCvarString_t pfnGetCvarString;
pfnEngSrc_pfnAddCommand_t pfnAddCommand;
pfnEngSrc_pfnHookUserMsg_t pfnHookUserMsg;
pfnEngSrc_pfnServerCmd_t pfnServerCmd;
pfnEngSrc_pfnClientCmd_t pfnClientCmd;
pfnEngSrc_pfnGetPlayerInfo_t pfnGetPlayerInfo;
pfnEngSrc_pfnPlaySoundByName_t pfnPlaySoundByName;
pfnEngSrc_pfnPlaySoundByIndex_t pfnPlaySoundByIndex;
pfnEngSrc_pfnAngleVectors_t pfnAngleVectors;
pfnEngSrc_pfnTextMessageGet_t pfnTextMessageGet;
pfnEngSrc_pfnDrawCharacter_t pfnDrawCharacter;
pfnEngSrc_pfnDrawConsoleString_t pfnDrawConsoleString;
pfnEngSrc_pfnDrawSetTextColor_t pfnDrawSetTextColor;
pfnEngSrc_pfnDrawConsoleStringLen_t pfnDrawConsoleStringLen;
pfnEngSrc_pfnConsolePrint_t pfnConsolePrint;
pfnEngSrc_pfnCenterPrint_t pfnCenterPrint;
pfnEngSrc_GetWindowCenterX_t GetWindowCenterX;
pfnEngSrc_GetWindowCenterY_t GetWindowCenterY;
pfnEngSrc_GetViewAngles_t GetViewAngles;
pfnEngSrc_SetViewAngles_t SetViewAngles;
pfnEngSrc_GetMaxClients_t GetMaxClients;
pfnEngSrc_Cvar_SetValue_t Cvar_SetValue;
pfnEngSrc_Cmd_Argc_t Cmd_Argc;
pfnEngSrc_Cmd_Argv_t Cmd_Argv;
pfnEngSrc_Con_Printf_t Con_Printf;
pfnEngSrc_Con_DPrintf_t Con_DPrintf;
pfnEngSrc_Con_NPrintf_t Con_NPrintf;
pfnEngSrc_Con_NXPrintf_t Con_NXPrintf;
pfnEngSrc_PhysInfo_ValueForKey_t PhysInfo_ValueForKey;
pfnEngSrc_ServerInfo_ValueForKey_t ServerInfo_ValueForKey;
pfnEngSrc_GetClientMaxspeed_t GetClientMaxspeed;
pfnEngSrc_CheckParm_t CheckParm;
pfnEngSrc_Key_Event_t Key_Event;
pfnEngSrc_GetMousePosition_t GetMousePosition;
pfnEngSrc_IsNoClipping_t IsNoClipping;
pfnEngSrc_GetLocalPlayer_t GetLocalPlayer;
pfnEngSrc_GetViewModel_t GetViewModel;
pfnEngSrc_GetEntityByIndex_t GetEntityByIndex;
pfnEngSrc_GetClientTime_t GetClientTime;
pfnEngSrc_V_CalcShake_t V_CalcShake;
pfnEngSrc_V_ApplyShake_t V_ApplyShake;
pfnEngSrc_PM_PointContents_t PM_PointContents;
pfnEngSrc_PM_WaterEntity_t PM_WaterEntity;
pfnEngSrc_PM_TraceLine_t PM_TraceLine;
pfnEngSrc_CL_LoadModel_t CL_LoadModel;
pfnEngSrc_CL_CreateVisibleEntity_t CL_CreateVisibleEntity;
pfnEngSrc_GetSpritePointer_t GetSpritePointer;
pfnEngSrc_pfnPlaySoundByNameAtLocation_t pfnPlaySoundByNameAtLocation;
pfnEngSrc_pfnPrecacheEvent_t pfnPrecacheEvent;
pfnEngSrc_pfnPlaybackEvent_t pfnPlaybackEvent;
pfnEngSrc_pfnWeaponAnim_t pfnWeaponAnim;
pfnEngSrc_pfnRandomFloat_t pfnRandomFloat;
pfnEngSrc_pfnRandomLong_t pfnRandomLong;
pfnEngSrc_pfnHookEvent_t pfnHookEvent;
pfnEngSrc_Con_IsVisible_t Con_IsVisible;
pfnEngSrc_pfnGetGameDirectory_t pfnGetGameDirectory;
pfnEngSrc_pfnGetCvarPointer_t pfnGetCvarPointer;
pfnEngSrc_Key_LookupBinding_t Key_LookupBinding;
pfnEngSrc_pfnGetLevelName_t pfnGetLevelName;
pfnEngSrc_pfnGetScreenFade_t pfnGetScreenFade;
pfnEngSrc_pfnSetScreenFade_t pfnSetScreenFade;
pfnEngSrc_VGui_GetPanel_t VGui_GetPanel;
pfnEngSrc_VGui_ViewportPaintBackground_t VGui_ViewportPaintBackground;
pfnEngSrc_COM_LoadFile_t COM_LoadFile;
pfnEngSrc_COM_ParseFile_t COM_ParseFile;
pfnEngSrc_COM_FreeFile_t COM_FreeFile;
struct triangleapi_s *pTriAPI;
struct efx_api_s *pEfxAPI;
struct event_api_s *pEventAPI;
struct demo_api_s *pDemoAPI;
struct net_api_s *pNetAPI;
struct IVoiceTweak_s *pVoiceTweak;
pfnEngSrc_IsSpectateOnly_t IsSpectateOnly;
pfnEngSrc_LoadMapSprite_t LoadMapSprite;
pfnEngSrc_COM_AddAppDirectoryToSearchPath_t COM_AddAppDirectoryToSearchPath;
pfnEngSrc_COM_ExpandFilename_t COM_ExpandFilename;
pfnEngSrc_PlayerInfo_ValueForKey_t PlayerInfo_ValueForKey;
pfnEngSrc_PlayerInfo_SetValueForKey_t PlayerInfo_SetValueForKey;
pfnEngSrc_GetPlayerUniqueID_t GetPlayerUniqueID;
pfnEngSrc_GetTrackerIDForPlayer_t GetTrackerIDForPlayer;
pfnEngSrc_GetPlayerForTrackerID_t GetPlayerForTrackerID;
pfnEngSrc_pfnServerCmdUnreliable_t pfnServerCmdUnreliable;
pfnEngSrc_GetMousePos_t pfnGetMousePos;
pfnEngSrc_SetMousePos_t pfnSetMousePos;
pfnEngSrc_SetMouseEnable_t pfnSetMouseEnable;
pfnEngSrc_GetFirstCVarPtr_t GetFirstCvarPtr;
pfnEngSrc_GetFirstCmdFunctionHandle_t GetFirstCmdFunctionHandle;
pfnEngSrc_GetNextCmdFunctionHandle_t GetNextCmdFunctionHandle;
pfnEngSrc_GetCmdFunctionName_t GetCmdFunctionName;
pfnEngSrc_GetClientOldTime_t hudGetClientOldTime;
pfnEngSrc_GetServerGravityValue_t hudGetServerGravityValue;
pfnEngSrc_GetModelByIndex_t hudGetModelByIndex;
pfnEngSrc_pfnSetFilterMode_t pfnSetFilterMode;
pfnEngSrc_pfnSetFilterColor_t pfnSetFilterColor;
pfnEngSrc_pfnSetFilterBrightness_t pfnSetFilterBrightness;
pfnEngSrc_pfnSequenceGet_t pfnSequenceGet;
pfnEngSrc_pfnSPR_DrawGeneric_t pfnSPR_DrawGeneric;
pfnEngSrc_pfnSequencePickSentence_t pfnSequencePickSentence;
pfnEngSrc_pfnDrawString_t pfnDrawString;
pfnEngSrc_pfnDrawStringReverse_t pfnDrawStringReverse;
pfnEngSrc_LocalPlayerInfo_ValueForKey_t LocalPlayerInfo_ValueForKey;
pfnEngSrc_pfnVGUI2DrawCharacter_t pfnVGUI2DrawCharacter;
pfnEngSrc_pfnVGUI2DrawCharacterAdd_t pfnVGUI2DrawCharacterAdd;
pfnEngSrc_COM_GetApproxWavePlayLength COM_GetApproxWavePlayLength;
pfnEngSrc_pfnGetCareerUI_t pfnGetCareerUI;
pfnEngSrc_Cvar_Set_t Cvar_Set;
pfnEngSrc_pfnIsPlayingCareerMatch_t pfnIsCareerMatch;
pfnEngSrc_pfnPlaySoundVoiceByName_t pfnPlaySoundVoiceByName;
pfnEngSrc_pfnPrimeMusicStream_t pfnPrimeMusicStream;
pfnEngSrc_GetAbsoluteTime_t GetAbsoluteTime;
pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t pfnProcessTutorMessageDecayBuffer;
pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t pfnConstructTutorMessageDecayBuffer;
pfnEngSrc_pfnResetTutorMessageDecayData_t pfnResetTutorMessageDecayData;
pfnEngSrc_pfnPlaySoundByNameAtPitch_t pfnPlaySoundByNameAtPitch;
pfnEngSrc_pfnFillRGBABlend_t pfnFillRGBABlend;
pfnEngSrc_pfnGetAppID_t pfnGetAppID;
pfnEngSrc_pfnGetAliases_t pfnGetAliasList;
pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t pfnVguiWrap2_GetMouseDelta;
} cl_enginefunc_t;
// Function type declarations for engine destination functions
typedef void (*pfnEngDst_pfnSPR_Load_t ) ( const char ** );
typedef void (*pfnEngDst_pfnSPR_Frames_t ) ( HSPRITE * );
typedef void (*pfnEngDst_pfnSPR_Height_t ) ( HSPRITE *, int * );
typedef void (*pfnEngDst_pfnSPR_Width_t ) ( HSPRITE *, int * );
typedef void (*pfnEngDst_pfnSPR_Set_t ) ( HSPRITE *, int *, int *, int * );
typedef void (*pfnEngDst_pfnSPR_Draw_t ) ( int *, int *, int *, const struct rect_s ** );
typedef void (*pfnEngDst_pfnSPR_DrawHoles_t ) ( int *, int *, int *, const struct rect_s ** );
typedef void (*pfnEngDst_pfnSPR_DrawAdditive_t ) ( int *, int *, int *, const struct rect_s ** );
typedef void (*pfnEngDst_pfnSPR_EnableScissor_t ) ( int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnSPR_DisableScissor_t ) ( void );
typedef void (*pfnEngDst_pfnSPR_GetList_t ) ( char **, int ** );
typedef void (*pfnEngDst_pfnFillRGBA_t ) ( int *, int *, int *, int *, int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnGetScreenInfo_t ) ( struct SCREENINFO_s ** );
typedef void (*pfnEngDst_pfnSetCrosshair_t ) ( HSPRITE *, struct rect_s *, int *, int *, int * );
typedef void (*pfnEngDst_pfnRegisterVariable_t ) ( char **, char **, int * );
typedef void (*pfnEngDst_pfnGetCvarFloat_t ) ( char ** );
typedef void (*pfnEngDst_pfnGetCvarString_t ) ( char ** );
typedef void (*pfnEngDst_pfnAddCommand_t ) ( char **, void (**pfnEngDst_function)(void) );
typedef void (*pfnEngDst_pfnHookUserMsg_t ) ( char **, pfnUserMsgHook * );
typedef void (*pfnEngDst_pfnServerCmd_t ) ( char ** );
typedef void (*pfnEngDst_pfnClientCmd_t ) ( char ** );
typedef void (*pfnEngDst_pfnPrimeMusicStream_t ) ( char **, int *);
typedef void (*pfnEngDst_pfnGetPlayerInfo_t ) ( int *, struct hud_player_info_s ** );
typedef void (*pfnEngDst_pfnPlaySoundByName_t ) ( char **, float * );
typedef void (*pfnEngDst_pfnPlaySoundByNameAtPitch_t ) ( char **, float *, int * );
typedef void (*pfnEngDst_pfnPlaySoundVoiceByName_t ) (char **, float * );
typedef void (*pfnEngDst_pfnPlaySoundByIndex_t ) ( int *, float * );
typedef void (*pfnEngDst_pfnAngleVectors_t ) ( const float * *, float * *, float * *, float * * );
typedef void (*pfnEngDst_pfnTextMessageGet_t ) ( const char ** );
typedef void (*pfnEngDst_pfnDrawCharacter_t ) ( int *, int *, int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnDrawConsoleString_t ) ( int *, int *, char ** );
typedef void (*pfnEngDst_pfnDrawSetTextColor_t ) ( float *, float *, float * );
typedef void (*pfnEngDst_pfnDrawConsoleStringLen_t ) ( const char **, int **, int ** );
typedef void (*pfnEngDst_pfnConsolePrint_t ) ( const char ** );
typedef void (*pfnEngDst_pfnCenterPrint_t ) ( const char ** );
typedef void (*pfnEngDst_GetWindowCenterX_t ) ( void );
typedef void (*pfnEngDst_GetWindowCenterY_t ) ( void );
typedef void (*pfnEngDst_GetViewAngles_t ) ( float ** );
typedef void (*pfnEngDst_SetViewAngles_t ) ( float ** );
typedef void (*pfnEngDst_GetMaxClients_t ) ( void );
typedef void (*pfnEngDst_Cvar_SetValue_t ) ( char **, float * );
typedef void (*pfnEngDst_Cmd_Argc_t) (void);
typedef void (*pfnEngDst_Cmd_Argv_t ) ( int * );
typedef void (*pfnEngDst_Con_Printf_t ) ( char **);
typedef void (*pfnEngDst_Con_DPrintf_t ) ( char **);
typedef void (*pfnEngDst_Con_NPrintf_t ) ( int *, char ** );
typedef void (*pfnEngDst_Con_NXPrintf_t ) ( struct con_nprint_s **, char **);
typedef void (*pfnEngDst_PhysInfo_ValueForKey_t ) ( const char ** );
typedef void (*pfnEngDst_ServerInfo_ValueForKey_t ) ( const char ** );
typedef void (*pfnEngDst_GetClientMaxspeed_t ) ( void );
typedef void (*pfnEngDst_CheckParm_t ) ( char **, char *** );
typedef void (*pfnEngDst_Key_Event_t ) ( int *, int * );
typedef void (*pfnEngDst_GetMousePosition_t ) ( int **, int ** );
typedef void (*pfnEngDst_IsNoClipping_t ) ( void );
typedef void (*pfnEngDst_GetLocalPlayer_t ) ( void );
typedef void (*pfnEngDst_GetViewModel_t ) ( void );
typedef void (*pfnEngDst_GetEntityByIndex_t ) ( int * );
typedef void (*pfnEngDst_GetClientTime_t ) ( void );
typedef void (*pfnEngDst_V_CalcShake_t ) ( void );
typedef void (*pfnEngDst_V_ApplyShake_t ) ( float **, float **, float * );
typedef void (*pfnEngDst_PM_PointContents_t ) ( float **, int ** );
typedef void (*pfnEngDst_PM_WaterEntity_t ) ( float ** );
typedef void (*pfnEngDst_PM_TraceLine_t ) ( float **, float **, int *, int *, int * );
typedef void (*pfnEngDst_CL_LoadModel_t ) ( const char **, int ** );
typedef void (*pfnEngDst_CL_CreateVisibleEntity_t ) ( int *, struct cl_entity_s ** );
typedef void (*pfnEngDst_GetSpritePointer_t ) ( HSPRITE * );
typedef void (*pfnEngDst_pfnPlaySoundByNameAtLocation_t ) ( char **, float *, float ** );
typedef void (*pfnEngDst_pfnPrecacheEvent_t ) ( int *, const char* * );
typedef void (*pfnEngDst_pfnPlaybackEvent_t ) ( int *, const struct edict_s **, unsigned short *, float *, float **, float **, float *, float *, int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnWeaponAnim_t ) ( int *, int * );
typedef void (*pfnEngDst_pfnRandomFloat_t ) ( float *, float * );
typedef void (*pfnEngDst_pfnRandomLong_t ) ( int32 *, int32 * );
typedef void (*pfnEngDst_pfnHookEvent_t ) ( char **, void ( **pfnEvent )( struct event_args_s *args ) );
typedef void (*pfnEngDst_Con_IsVisible_t) ();
typedef void (*pfnEngDst_pfnGetGameDirectory_t ) ( void );
typedef void (*pfnEngDst_pfnGetCvarPointer_t ) ( const char ** );
typedef void (*pfnEngDst_Key_LookupBinding_t ) ( const char ** );
typedef void (*pfnEngDst_pfnGetLevelName_t ) ( void );
typedef void (*pfnEngDst_pfnGetScreenFade_t ) ( struct screenfade_s ** );
typedef void (*pfnEngDst_pfnSetScreenFade_t ) ( struct screenfade_s ** );
typedef void (*pfnEngDst_VGui_GetPanel_t ) ( );
typedef void (*pfnEngDst_VGui_ViewportPaintBackground_t ) (int **);
typedef void (*pfnEngDst_COM_LoadFile_t ) ( char **, int *, int ** );
typedef void (*pfnEngDst_COM_ParseFile_t ) ( char **, char ** );
typedef void (*pfnEngDst_COM_FreeFile_t) ( void ** );
typedef void (*pfnEngDst_IsSpectateOnly_t ) ( void );
typedef void (*pfnEngDst_LoadMapSprite_t ) ( const char ** );
typedef void (*pfnEngDst_COM_AddAppDirectoryToSearchPath_t ) ( const char **, const char ** );
typedef void (*pfnEngDst_COM_ExpandFilename_t) ( const char **, char **, int * );
typedef void (*pfnEngDst_PlayerInfo_ValueForKey_t ) ( int *, const char ** );
typedef void (*pfnEngDst_PlayerInfo_SetValueForKey_t )( const char **, const char ** );
typedef void (*pfnEngDst_GetPlayerUniqueID_t) (int *, char **);
typedef void (*pfnEngDst_GetTrackerIDForPlayer_t) (int *);
typedef void (*pfnEngDst_GetPlayerForTrackerID_t) (int *);
typedef void (*pfnEngDst_pfnServerCmdUnreliable_t ) ( char ** );
typedef void (*pfnEngDst_GetMousePos_t ) (struct tagPOINT **);
typedef void (*pfnEngDst_SetMousePos_t ) (int *, int *);
typedef void (*pfnEngDst_SetMouseEnable_t ) (qboolean *);
typedef void (*pfnEngDst_pfnSetFilterMode_t) ( int * );
typedef void (*pfnEngDst_pfnSetFilterColor_t) ( float *, float *, float * );
typedef void (*pfnEngDst_pfnSetFilterBrightness_t) ( float * );
typedef void (*pfnEngDst_pfnSequenceGet_t ) ( const char**, const char** );
typedef void (*pfnEngDst_pfnSPR_DrawGeneric_t ) ( int *, int *, int *, const struct rect_s **, int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnSequencePickSentence_t ) ( const char**, int *, int ** );
typedef void (*pfnEngDst_pfnDrawString_t ) ( int *, int *, const char *, int *, int *, int * );
typedef void (*pfnEngDst_pfnDrawStringReverse_t ) ( int *, int *, const char *, int *, int *, int * );
typedef void (*pfnEngDst_LocalPlayerInfo_ValueForKey_t )( const char **);
typedef void (*pfnEngDst_pfnVGUI2DrawCharacter_t ) ( int *, int *, int *, unsigned int * );
typedef void (*pfnEngDst_pfnVGUI2DrawCharacterAdd_t ) ( int *, int *, int *, int *, int *, int *, unsigned int *);
typedef void (*pfnEngDst_pfnProcessTutorMessageDecayBuffer_t )(int **, int *);
typedef void (*pfnEngDst_pfnConstructTutorMessageDecayBuffer_t )(int **, int *);
typedef void (*pfnEngDst_pfnResetTutorMessageDecayData_t)();
typedef void (*pfnEngDst_pfnFillRGBABlend_t ) ( int *, int *, int *, int *, int *, int *, int *, int * );
typedef void (*pfnEngDst_pfnGetAppID_t ) ( void );
typedef void (*pfnEngDst_pfnGetAliases_t ) ( void );
typedef void (*pfnEngDst_pfnVguiWrap2_GetMouseDelta_t) ( int *x, int *y );
// Pointers to the engine destination functions
typedef struct
{
pfnEngDst_pfnSPR_Load_t pfnSPR_Load;
pfnEngDst_pfnSPR_Frames_t pfnSPR_Frames;
pfnEngDst_pfnSPR_Height_t pfnSPR_Height;
pfnEngDst_pfnSPR_Width_t pfnSPR_Width;
pfnEngDst_pfnSPR_Set_t pfnSPR_Set;
pfnEngDst_pfnSPR_Draw_t pfnSPR_Draw;
pfnEngDst_pfnSPR_DrawHoles_t pfnSPR_DrawHoles;
pfnEngDst_pfnSPR_DrawAdditive_t pfnSPR_DrawAdditive;
pfnEngDst_pfnSPR_EnableScissor_t pfnSPR_EnableScissor;
pfnEngDst_pfnSPR_DisableScissor_t pfnSPR_DisableScissor;
pfnEngDst_pfnSPR_GetList_t pfnSPR_GetList;
pfnEngDst_pfnFillRGBA_t pfnFillRGBA;
pfnEngDst_pfnGetScreenInfo_t pfnGetScreenInfo;
pfnEngDst_pfnSetCrosshair_t pfnSetCrosshair;
pfnEngDst_pfnRegisterVariable_t pfnRegisterVariable;
pfnEngDst_pfnGetCvarFloat_t pfnGetCvarFloat;
pfnEngDst_pfnGetCvarString_t pfnGetCvarString;
pfnEngDst_pfnAddCommand_t pfnAddCommand;
pfnEngDst_pfnHookUserMsg_t pfnHookUserMsg;
pfnEngDst_pfnServerCmd_t pfnServerCmd;
pfnEngDst_pfnClientCmd_t pfnClientCmd;
pfnEngDst_pfnGetPlayerInfo_t pfnGetPlayerInfo;
pfnEngDst_pfnPlaySoundByName_t pfnPlaySoundByName;
pfnEngDst_pfnPlaySoundByIndex_t pfnPlaySoundByIndex;
pfnEngDst_pfnAngleVectors_t pfnAngleVectors;
pfnEngDst_pfnTextMessageGet_t pfnTextMessageGet;
pfnEngDst_pfnDrawCharacter_t pfnDrawCharacter;
pfnEngDst_pfnDrawConsoleString_t pfnDrawConsoleString;
pfnEngDst_pfnDrawSetTextColor_t pfnDrawSetTextColor;
pfnEngDst_pfnDrawConsoleStringLen_t pfnDrawConsoleStringLen;
pfnEngDst_pfnConsolePrint_t pfnConsolePrint;
pfnEngDst_pfnCenterPrint_t pfnCenterPrint;
pfnEngDst_GetWindowCenterX_t GetWindowCenterX;
pfnEngDst_GetWindowCenterY_t GetWindowCenterY;
pfnEngDst_GetViewAngles_t GetViewAngles;
pfnEngDst_SetViewAngles_t SetViewAngles;
pfnEngDst_GetMaxClients_t GetMaxClients;
pfnEngDst_Cvar_SetValue_t Cvar_SetValue;
pfnEngDst_Cmd_Argc_t Cmd_Argc;
pfnEngDst_Cmd_Argv_t Cmd_Argv;
pfnEngDst_Con_Printf_t Con_Printf;
pfnEngDst_Con_DPrintf_t Con_DPrintf;
pfnEngDst_Con_NPrintf_t Con_NPrintf;
pfnEngDst_Con_NXPrintf_t Con_NXPrintf;
pfnEngDst_PhysInfo_ValueForKey_t PhysInfo_ValueForKey;
pfnEngDst_ServerInfo_ValueForKey_t ServerInfo_ValueForKey;
pfnEngDst_GetClientMaxspeed_t GetClientMaxspeed;
pfnEngDst_CheckParm_t CheckParm;
pfnEngDst_Key_Event_t Key_Event;
pfnEngDst_GetMousePosition_t GetMousePosition;
pfnEngDst_IsNoClipping_t IsNoClipping;
pfnEngDst_GetLocalPlayer_t GetLocalPlayer;
pfnEngDst_GetViewModel_t GetViewModel;
pfnEngDst_GetEntityByIndex_t GetEntityByIndex;
pfnEngDst_GetClientTime_t GetClientTime;
pfnEngDst_V_CalcShake_t V_CalcShake;
pfnEngDst_V_ApplyShake_t V_ApplyShake;
pfnEngDst_PM_PointContents_t PM_PointContents;
pfnEngDst_PM_WaterEntity_t PM_WaterEntity;
pfnEngDst_PM_TraceLine_t PM_TraceLine;
pfnEngDst_CL_LoadModel_t CL_LoadModel;
pfnEngDst_CL_CreateVisibleEntity_t CL_CreateVisibleEntity;
pfnEngDst_GetSpritePointer_t GetSpritePointer;
pfnEngDst_pfnPlaySoundByNameAtLocation_t pfnPlaySoundByNameAtLocation;
pfnEngDst_pfnPrecacheEvent_t pfnPrecacheEvent;
pfnEngDst_pfnPlaybackEvent_t pfnPlaybackEvent;
pfnEngDst_pfnWeaponAnim_t pfnWeaponAnim;
pfnEngDst_pfnRandomFloat_t pfnRandomFloat;
pfnEngDst_pfnRandomLong_t pfnRandomLong;
pfnEngDst_pfnHookEvent_t pfnHookEvent;
pfnEngDst_Con_IsVisible_t Con_IsVisible;
pfnEngDst_pfnGetGameDirectory_t pfnGetGameDirectory;
pfnEngDst_pfnGetCvarPointer_t pfnGetCvarPointer;
pfnEngDst_Key_LookupBinding_t Key_LookupBinding;
pfnEngDst_pfnGetLevelName_t pfnGetLevelName;
pfnEngDst_pfnGetScreenFade_t pfnGetScreenFade;
pfnEngDst_pfnSetScreenFade_t pfnSetScreenFade;
pfnEngDst_VGui_GetPanel_t VGui_GetPanel;
pfnEngDst_VGui_ViewportPaintBackground_t VGui_ViewportPaintBackground;
pfnEngDst_COM_LoadFile_t COM_LoadFile;
pfnEngDst_COM_ParseFile_t COM_ParseFile;
pfnEngDst_COM_FreeFile_t COM_FreeFile;
struct triangleapi_s *pTriAPI;
struct efx_api_s *pEfxAPI;
struct event_api_s *pEventAPI;
struct demo_api_s *pDemoAPI;
struct net_api_s *pNetAPI;
struct IVoiceTweak_s *pVoiceTweak;
pfnEngDst_IsSpectateOnly_t IsSpectateOnly;
pfnEngDst_LoadMapSprite_t LoadMapSprite;
pfnEngDst_COM_AddAppDirectoryToSearchPath_t COM_AddAppDirectoryToSearchPath;
pfnEngDst_COM_ExpandFilename_t COM_ExpandFilename;
pfnEngDst_PlayerInfo_ValueForKey_t PlayerInfo_ValueForKey;
pfnEngDst_PlayerInfo_SetValueForKey_t PlayerInfo_SetValueForKey;
pfnEngDst_GetPlayerUniqueID_t GetPlayerUniqueID;
pfnEngDst_GetTrackerIDForPlayer_t GetTrackerIDForPlayer;
pfnEngDst_GetPlayerForTrackerID_t GetPlayerForTrackerID;
pfnEngDst_pfnServerCmdUnreliable_t pfnServerCmdUnreliable;
pfnEngDst_GetMousePos_t pfnGetMousePos;
pfnEngDst_SetMousePos_t pfnSetMousePos;
pfnEngDst_SetMouseEnable_t pfnSetMouseEnable;
pfnEngDst_pfnSetFilterMode_t pfnSetFilterMode ;
pfnEngDst_pfnSetFilterColor_t pfnSetFilterColor ;
pfnEngDst_pfnSetFilterBrightness_t pfnSetFilterBrightness ;
pfnEngDst_pfnSequenceGet_t pfnSequenceGet;
pfnEngDst_pfnSPR_DrawGeneric_t pfnSPR_DrawGeneric;
pfnEngDst_pfnSequencePickSentence_t pfnSequencePickSentence;
pfnEngDst_pfnDrawString_t pfnDrawString;
pfnEngDst_pfnDrawString_t pfnDrawStringReverse;
pfnEngDst_LocalPlayerInfo_ValueForKey_t LocalPlayerInfo_ValueForKey;
pfnEngDst_pfnVGUI2DrawCharacter_t pfnVGUI2DrawCharacter;
pfnEngDst_pfnVGUI2DrawCharacterAdd_t pfnVGUI2DrawCharacterAdd;
pfnEngDst_pfnPlaySoundVoiceByName_t pfnPlaySoundVoiceByName;
pfnEngDst_pfnPrimeMusicStream_t pfnPrimeMusicStream;
pfnEngDst_pfnProcessTutorMessageDecayBuffer_t pfnProcessTutorMessageDecayBuffer;
pfnEngDst_pfnConstructTutorMessageDecayBuffer_t pfnConstructTutorMessageDecayBuffer;
pfnEngDst_pfnResetTutorMessageDecayData_t pfnResetTutorMessageDecayData;
pfnEngDst_pfnPlaySoundByNameAtPitch_t pfnPlaySoundByNameAtPitch;
pfnEngDst_pfnFillRGBABlend_t pfnFillRGBABlend;
pfnEngDst_pfnGetAppID_t pfnGetAppID;
pfnEngDst_pfnGetAliases_t pfnGetAliasList;
pfnEngDst_pfnVguiWrap2_GetMouseDelta_t pfnVguiWrap2_GetMouseDelta;
} cl_enginefunc_dst_t;
// ********************************************************
// Functions exposed by the engine to the module
// ********************************************************
// Functions for ModuleS
typedef void (*PFN_KICKPLAYER)(int nPlayerSlot, int nReason);
typedef struct modshelpers_s
{
PFN_KICKPLAYER m_pfnKickPlayer;
// reserved for future expansion
int m_nVoid1;
int m_nVoid2;
int m_nVoid3;
int m_nVoid4;
int m_nVoid5;
int m_nVoid6;
int m_nVoid7;
int m_nVoid8;
int m_nVoid9;
} modshelpers_t;
// Functions for moduleC
typedef struct modchelpers_s
{
// reserved for future expansion
int m_nVoid0;
int m_nVoid1;
int m_nVoid2;
int m_nVoid3;
int m_nVoid4;
int m_nVoid5;
int m_nVoid6;
int m_nVoid7;
int m_nVoid8;
int m_nVoid9;
} modchelpers_t;
// ********************************************************
// Information about the engine
// ********************************************************
typedef struct engdata_s
{
cl_enginefunc_t *pcl_enginefuncs; // functions exported by the engine
cl_enginefunc_dst_t *pg_engdstAddrs; // destination handlers for engine exports
cldll_func_t *pcl_funcs; // client exports
cldll_func_dst_t *pg_cldstAddrs; // client export destination handlers
struct modfuncs_s *pg_modfuncs; // engine's pointer to module functions
struct cmd_function_s **pcmd_functions; // list of all registered commands
void *pkeybindings; // all key bindings (not really a void *, but easier this way)
void (*pfnConPrintf)(char *, ...); // dump to console
struct cvar_s **pcvar_vars; // pointer to head of cvar list
struct glwstate_t *pglwstate; // OpenGl information
void *(*pfnSZ_GetSpace)(struct sizebuf_s *, int); // pointer to SZ_GetSpace
struct modfuncs_s *pmodfuncs; // &g_modfuncs
void *pfnGetProcAddress; // &GetProcAddress
void *pfnGetModuleHandle; // &GetModuleHandle
struct server_static_s *psvs; // &svs
struct client_static_s *pcls; // &cls
void (*pfnSV_DropClient)(struct client_s *, qboolean, char *, ...); // pointer to SV_DropClient
void (*pfnNetchan_Transmit)(struct netchan_s *, int, byte *); // pointer to Netchan_Transmit
void (*pfnNET_SendPacket)(enum netsrc_s sock, int length, void *data, netadr_t to); // &NET_SendPacket
struct cvar_s *(*pfnCvarFindVar)(const char *pchName); // pointer to Cvar_FindVar
int *phinstOpenGlEarly; // &g_hinstOpenGlEarly
// Reserved for future expansion
void *pVoid0; // reserved for future expan
void *pVoid1; // reserved for future expan
void *pVoid2; // reserved for future expan
void *pVoid3; // reserved for future expan
void *pVoid4; // reserved for future expan
void *pVoid5; // reserved for future expan
void *pVoid6; // reserved for future expan
void *pVoid7; // reserved for future expan
void *pVoid8; // reserved for future expan
void *pVoid9; // reserved for future expan
} engdata_t;
// ********************************************************
// Functions exposed by the security module
// ********************************************************
typedef void (*PFN_LOADMOD)(char *pchModule);
typedef void (*PFN_CLOSEMOD)(void);
typedef int (*PFN_NCALL)(int ijump, int cnArg, ...);
typedef void (*PFN_GETCLDSTADDRS)(cldll_func_dst_t *pcldstAddrs);
typedef void (*PFN_GETENGDSTADDRS)(cl_enginefunc_dst_t *pengdstAddrs);
typedef void (*PFN_MODULELOADED)(void);
typedef void (*PFN_PROCESSOUTGOINGNET)(struct netchan_s *pchan, struct sizebuf_s *psizebuf);
typedef qboolean (*PFN_PROCESSINCOMINGNET)(struct netchan_s *pchan, struct sizebuf_s *psizebuf);
typedef void (*PFN_TEXTURELOAD)(char *pszName, int dxWidth, int dyHeight, char *pbData);
typedef void (*PFN_MODELLOAD)(struct model_s *pmodel, void *pvBuf);
typedef void (*PFN_FRAMEBEGIN)(void);
typedef void (*PFN_FRAMERENDER1)(void);
typedef void (*PFN_FRAMERENDER2)(void);
typedef void (*PFN_SETMODSHELPERS)(modshelpers_t *pmodshelpers);
typedef void (*PFN_SETMODCHELPERS)(modchelpers_t *pmodchelpers);
typedef void (*PFN_SETENGDATA)(engdata_t *pengdata);
typedef void (*PFN_CONNECTCLIENT)(int iPlayer);
typedef void (*PFN_RECORDIP)(unsigned int pnIP);
typedef void (*PFN_PLAYERSTATUS)(unsigned char *pbData, int cbData);
typedef void (*PFN_SETENGINEVERSION)(int nVersion);
// typedef class CMachine *(*PFN_PCMACHINE)(void);
typedef int (*PFN_PCMACHINE)(void);
typedef void (*PFN_SETIP)(int ijump);
typedef void (*PFN_EXECUTE)(void);
typedef struct modfuncs_s
{
// Functions for the pcode interpreter
PFN_LOADMOD m_pfnLoadMod;
PFN_CLOSEMOD m_pfnCloseMod;
PFN_NCALL m_pfnNCall;
// API destination functions
PFN_GETCLDSTADDRS m_pfnGetClDstAddrs;
PFN_GETENGDSTADDRS m_pfnGetEngDstAddrs;
// Miscellaneous functions
PFN_MODULELOADED m_pfnModuleLoaded; // Called right after the module is loaded
// Functions for processing network traffic
PFN_PROCESSOUTGOINGNET m_pfnProcessOutgoingNet; // Every outgoing packet gets run through this
PFN_PROCESSINCOMINGNET m_pfnProcessIncomingNet; // Every incoming packet gets run through this
// Resource functions
PFN_TEXTURELOAD m_pfnTextureLoad; // Called as each texture is loaded
PFN_MODELLOAD m_pfnModelLoad; // Called as each model is loaded
// Functions called every frame
PFN_FRAMEBEGIN m_pfnFrameBegin; // Called at the beginning of each frame cycle
PFN_FRAMERENDER1 m_pfnFrameRender1; // Called at the beginning of the render loop
PFN_FRAMERENDER2 m_pfnFrameRender2; // Called at the end of the render loop
// Module helper transfer
PFN_SETMODSHELPERS m_pfnSetModSHelpers;
PFN_SETMODCHELPERS m_pfnSetModCHelpers;
PFN_SETENGDATA m_pfnSetEngData;
// Which version of the module is this?
int m_nVersion;
// Miscellaneous game stuff
PFN_CONNECTCLIENT m_pfnConnectClient; // Called whenever a new client connects
PFN_RECORDIP m_pfnRecordIP; // Secure master has reported a new IP for us
PFN_PLAYERSTATUS m_pfnPlayerStatus; // Called whenever we receive a PlayerStatus packet
// Recent additions
PFN_SETENGINEVERSION m_pfnSetEngineVersion; // 1 = patched engine
// reserved for future expansion
int m_nVoid2;
int m_nVoid3;
int m_nVoid4;
int m_nVoid5;
int m_nVoid6;
int m_nVoid7;
int m_nVoid8;
int m_nVoid9;
} modfuncs_t;
#define k_nEngineVersion15Base 0
#define k_nEngineVersion15Patch 1
#define k_nEngineVersion16Base 2
#define k_nEngineVersion16Validated 3 // 1.6 engine with built-in validation
typedef struct validator_s
{
int m_nRandomizer; // Random number to be XOR'd into all subsequent fields
int m_nSignature1; // First signature that identifies this structure
int m_nSignature2; // Second signature
int m_pbCode; // Beginning of the code block
int m_cbCode; // Size of the code block
int m_nChecksum; // Checksum of the code block
int m_nSpecial; // For engine, 1 if hw.dll, 0 if sw.dll. For client, pclfuncs checksum
int m_nCompensator; // Keeps the checksum correct
} validator_t;
#define k_nChecksumCompensator 0x36a8f09c // Don't change this value: it's hardcorded in cdll_int.cpp,
#define k_nModuleVersionCur 0x43210004
#endif // __APIPROXY__