version 1.5 | | version 1.6 |
---|
| | |
mprintf((0, "Got add player request!\n")); | | mprintf((0, "Got add player request!\n")); |
| | |
for (i=0; i<N_players; i++ ) { | | for (i=0; i<N_players; i++ ) { |
if ( !memcmp( Netgame.players[i].node, p->player.node, 6) && !memcmp(Netgame.players[i].server, p->player.server, 4)) | | if ( !memcmp( Netgame.players[i].node, p->player.node, 6) && !memcmp(Netgame.players[i].server, p->player.server, 4)){ |
| | mprintf((0, "already have em as player %i!\n",i)); |
return; // already got them | | return; // already got them |
} | | } |
| | } |
| | |
if ( N_players >= MAX_PLAYERS ) | | if ( N_players >= MAX_PLAYERS ) { |
| | mprintf((0, "too many players %i!\n",N_players)); |
return; // too many of em | | return; // too many of em |
| | } |
| | |
memcpy( Netgame.players[N_players].callsign, p->player.callsign, CALLSIGN_LEN+1 ); | | memcpy( Netgame.players[N_players].callsign, p->player.callsign, CALLSIGN_LEN+1 ); |
memcpy( Netgame.players[N_players].node, p->player.node, 6 ); | | memcpy( Netgame.players[N_players].node, p->player.node, 6 ); |
| | |
case PID_REQUEST: | | case PID_REQUEST: |
mprintf( (0, "Got REQUEST from '%s'\n", their->player.callsign )); | | mprintf( (0, "Got REQUEST from '%s'\n", their->player.callsign )); |
| | |
| | if (!ipx_check_ready_to_join(their->player.server,their->player.node)) |
| | break; |
| | |
//added on 2/1/99 by Victor Rachels for bans | | //added on 2/1/99 by Victor Rachels for bans |
if(checkban(their->player.node)) | | if(checkban(their->player.node)) |
{ | | { |
| | |
return(0); | | return(0); |
} | | } |
| | |
| | //moved 2000/02/07 Matt Mueller - clipped stuff from network_join_game into new network_do_join_game to allow easy joining from other funcs too. |
| | int network_do_join_game(netgame_info *jgame){ |
| | if (jgame->game_status == NETSTAT_ENDLEVEL) |
| | { |
| | nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_NET_GAME_BETWEEN2); |
| | return 0; |
| | } |
| | |
| | if ((jgame->protocol_version != MULTI_PROTO_VERSION) && |
| | (jgame->protocol_version != MULTI_PROTO_D1X_VER)) |
| | { |
| | nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_VERSION_MISMATCH); |
| | return 0; |
| | } |
| | #ifndef SHAREWARE |
| | if (jgame->protocol_version == MULTI_PROTO_D1X_VER && |
| | jgame->required_subprotocol > MULTI_PROTO_D1X_MINOR) |
| | { |
| | nm_messagebox(TXT_SORRY, 1, TXT_OK, "This game uses features\nnot present in this version."); |
| | return 0; |
| | } |
| | { |
| | // Check for valid mission name |
| | mprintf((0, "Loading mission:%s.\n", jgame->mission_name)); |
| | if (!load_mission_by_name(jgame->mission_name)) |
| | { |
| | nm_messagebox(NULL, 1, TXT_OK, TXT_MISSION_NOT_FOUND); |
| | |
| | //add getlevel functionality here - Victor Rachels |
| | |
| | return 0; |
| | } |
| | } |
| | #endif |
| | |
| | if (!can_join_netgame(jgame)) |
| | { |
| | if (jgame->numplayers == jgame->max_numplayers) |
| | nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_GAME_FULL); |
| | else |
| | nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_IN_PROGRESS); |
| | return 0; |
| | } |
| | |
| | // Choice is valid, prepare to join in |
| | |
| | memcpy(&Netgame, jgame, sizeof(netgame_info)); |
| | |
| | Difficulty_level = Netgame.difficulty; |
| | MaxNumNetPlayers = Netgame.max_numplayers; |
| | change_playernum_to(1); |
| | |
| | network_set_game_mode(Netgame.gamemode); |
| | |
| | StartNewLevel(Netgame.levelnum); |
| | |
| | return 1; // look ma, we're in a game!!! |
| | } |
| | |
void network_join_game() | | void network_join_game() |
{ | | { |
int choice; | | int choice; |
| | |
| | |
// Choice has been made and looks legit | | // Choice has been made and looks legit |
| | |
if (Active_games[choice].game_status == NETSTAT_ENDLEVEL) | | |
{ | | |
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_NET_GAME_BETWEEN2); | | |
goto remenu; | | |
} | | |
| | |
if ((Active_games[choice].protocol_version != MULTI_PROTO_VERSION) && | | |
(Active_games[choice].protocol_version != MULTI_PROTO_D1X_VER)) | | |
{ | | |
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_VERSION_MISMATCH); | | |
goto remenu; | | |
} | | |
#ifndef SHAREWARE | | |
if (Active_games[choice].protocol_version == MULTI_PROTO_D1X_VER && | | |
Active_games[choice].required_subprotocol > MULTI_PROTO_D1X_MINOR) | | |
{ | | |
nm_messagebox(TXT_SORRY, 1, TXT_OK, "This game uses features\nnot present in this version."); | | |
goto remenu; | | |
} | | |
{ | | |
// Check for valid mission name | | |
mprintf((0, "Loading mission:%s.\n", Active_games[choice].mission_name)); | | |
if (!load_mission_by_name(Active_games[choice].mission_name)) | | |
{ | | |
nm_messagebox(NULL, 1, TXT_OK, TXT_MISSION_NOT_FOUND); | | |
| | |
//add getlevel functionality here - Victor Rachels | | |
| | |
goto remenu; | | |
} | | |
} | | |
#endif | | |
| | |
if (!can_join_netgame(&Active_games[choice])) | | if (network_do_join_game(&Active_games[choice])==0) |
{ | | |
if (Active_games[choice].numplayers == Active_games[choice].max_numplayers) | | |
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_GAME_FULL); | | |
else | | |
nm_messagebox(TXT_SORRY, 1, TXT_OK, TXT_IN_PROGRESS); | | |
goto remenu; | | goto remenu; |
} | | |
| | |
// Choice is valid, prepare to join in | | |
| | |
memcpy(&Netgame, &Active_games[choice], sizeof(netgame_info)); | | |
| | |
Difficulty_level = Netgame.difficulty; | | |
MaxNumNetPlayers = Netgame.max_numplayers; | | |
change_playernum_to(1); | | |
| | |
network_set_game_mode(Netgame.gamemode); | | |
| | |
StartNewLevel(Netgame.levelnum); | | |
| | |
return; // look ma, we're in a game!!! | | return; // look ma, we're in a game!!! |
} | | } |