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 }