void fs2netd_gameserver_start() { if ( !Logged_in ) { return; } // already been here if (Net_player->flags & NETINFO_FLAG_MT_CONNECTED) { return; } memset(&Multi_tracker_game_data, 0, sizeof(tracker_game_data)); strcpy_s(Multi_tracker_game_data.name, Netgame.name); strcpy_s(Multi_tracker_game_data.mission_name, Netgame.mission_name); strcpy_s(Multi_tracker_game_data.title, Netgame.title); strcpy_s(Multi_tracker_game_data.campaign_name, Netgame.campaign_name); if ( strlen(Multi_fs_tracker_channel) ) { strcpy_s(Multi_tracker_game_data.chat_channel, Multi_fs_tracker_channel); } Multi_tracker_game_data.campaign_mode = (ubyte)Netgame.campaign_mode; Multi_tracker_game_data.flags = Netgame.flags; Multi_tracker_game_data.type_flags = Netgame.type_flags; Multi_tracker_game_data.players = (short)multi_num_players(); Multi_tracker_game_data.max_players = (short)Netgame.max_players; Multi_tracker_game_data.mode = (ubyte)Netgame.mode; Multi_tracker_game_data.rank_base = (ubyte)Netgame.rank_base; Multi_tracker_game_data.game_state = (ubyte)Netgame.game_state; Multi_tracker_game_data.speed = (ubyte)multi_get_connection_speed(); FS2NetD_SendServerStart(); Net_player->flags |= NETINFO_FLAG_MT_CONNECTED; // initial update should be about 2 seconds from now Next_gameserver_update = timer_get_seconds() + 2; ml_string("FS2NetD sent game server start"); }
void FS2NetD_SendServerStart() { int buffer_size; char buffer[550]; ubyte tvar; INIT_PACKET( PCKT_SERVER_START ); PXO_ADD_STRING( Netgame.name ); PXO_ADD_STRING( Netgame.mission_name ); PXO_ADD_STRING( Netgame.title ); PXO_ADD_STRING( Netgame.campaign_name ); tvar = (ubyte)Netgame.campaign_mode; PXO_ADD_DATA( tvar ); PXO_ADD_INT( Netgame.flags ); PXO_ADD_INT( Netgame.type_flags ); PXO_ADD_SHORT( (short)multi_num_players() ); PXO_ADD_SHORT( (short)Netgame.max_players ); tvar = (ubyte)Netgame.mode; PXO_ADD_DATA( tvar ); tvar = (ubyte)Netgame.rank_base; PXO_ADD_DATA( tvar ); tvar = (ubyte)Netgame.game_state; PXO_ADD_DATA( tvar ); tvar = (ubyte)multi_get_connection_speed(); PXO_ADD_DATA( tvar ); PXO_ADD_STRING(Multi_fs_tracker_channel); DONE_PACKET(); FS2NetD_SendData(buffer, buffer_size); }