1 void ClientCheatStatusChanged(int clientNum);
2
3 /*
4 ================
5 vmMain
6
7 This is the only way control passes into the module.
8 This must be the very first function compiled into the .q3vm file
9 ================
10 */
11 int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11 ) {
12 switch ( command ) {
13 case GAME_INIT:
14 G_InitGame( arg0, arg1, arg2 );
15 return 0;
16 case GAME_SHUTDOWN:
17 G_ShutdownGame( arg0 );
18 return 0;
19 case GAME_CLIENT_CONNECT:
20 return (int)ClientConnect( arg0, arg1, arg2 );
21 case GAME_CLIENT_THINK:
22 ClientThink( arg0 );
23 return 0;
24 case GAME_CLIENT_USERINFO_CHANGED:
25 ClientUserinfoChanged( arg0 );
26 return 0;
27 case GAME_CLIENT_DISCONNECT:
28 ClientDisconnect( arg0 );
29 return 0;
30 case GAME_CLIENT_BEGIN:
31 ClientBegin( arg0, qtrue );
32 return 0;
33 case GAME_CLIENT_COMMAND:
34 ClientCommand( arg0 );
35 return 0;
36 case GAME_RUN_FRAME:
37 G_RunFrame( arg0 );
38 return 0;
39 case GAME_CONSOLE_COMMAND:
40 return ConsoleCommand();
41 case BOTAI_START_FRAME:
42 return BotAIStartFrame( arg0 );
43 case GAME_ROFF_NOTETRACK_CALLBACK:
44 G_ROFF_NotetrackCallback( &g_entities[arg0], (const char *)arg1 );
45 return 0;
46 // JK2MF: receiving the JK2MF_CLIENT_CHEATSTATUS_CHANGED event
47 case JK2MF_CLIENT_CHEATSTATUS_CHANGED:
48 ClientCheatStatusChanged(arg0);
49 return 0;
50 }
51
52 return -1;
53 }
54
55 void ClientCheatStatusChanged(int clientNum)
56 {
57 mfPlayer pl;
58
59 // Trying to get players status from the JK2MF module
60 // We need to abort if it returns qfalse
61 if ( !trap_JK2MF_GetPlayerStats(clientNum, &pl) )
62 return;
63
64 // everything is defined in "jk2mf_api.h"
65 // look into it for more details
66 if ( pl.cheatStatus == CHEAT_FREE )
67 trap_SendServerCommand(clientNum, "print \"Yay! You are a good client!\n\"");
68
69 trap_SendServerCommand(clientNum, va("print \"Your cheat status has changed to %i\n"
70 "Your IP is: %i.%i.%i.%i\n\"", (int)pl.cheatStatus, pl.IP[0], pl.IP[1], pl.IP[2], pl.IP[3]));
71 }