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 }