int MovePlayer (void) { int i; if ((gameData.app.nGameMode & GM_NETWORK) && (gameData.app.nGameMode & GM_TEAM)) { int name_index = 5; if (strlen (gameData.multigame.msg.szMsg) > 5) while (gameData.multigame.msg.szMsg [name_index] == ' ') name_index++; if (!NetworkIAmMaster ()) { HUDInitMessage (TXT_MOVE_RIGHTS, gameData.multiplayer.players [NetworkWhoIsMaster ()].callsign); return 1; } if (strlen (gameData.multigame.msg.szMsg) <= (size_t) name_index) { HUDInitMessage (TXT_MOVE_NAME); return 1; } for (i = 0; i < gameData.multiplayer.nPlayers; i++) if ((!strnicmp (gameData.multiplayer.players [i].callsign, &gameData.multigame.msg.szMsg [name_index], strlen (gameData.multigame.msg.szMsg)-name_index)) && (gameData.multiplayer.players [i].connected)) { if ((gameData.app.nGameMode & GM_CAPTURE) && (gameData.multiplayer.players [i].flags & PLAYER_FLAGS_FLAG)) { HUDInitMessage (TXT_MOVE_FLAG); return 1; } SetTeam (i, -1); break; } } return 0; }
void NetworkProcessDump (tSequencePacket *their) { // Our request for join was denied. Tell the user why. char temp [40]; int i; if (their->player.connected != 7) MsgBox (NULL, NULL, 1, TXT_OK, NET_DUMP_STRINGS (their->player.connected)); else { for (i = 0; i < gameData.multiplayer.nPlayers; i++) { if (!stricmp (their->player.callsign, gameData.multiplayer.players [i].callsign)) { if (i!=NetworkWhoIsMaster ()) HUDInitMessage (TXT_KICK_ATTEMPT, their->player.callsign); else { sprintf (temp, TXT_KICKED_YOU, their->player.callsign); MsgBox (NULL, NULL, 1, TXT_OK, &temp); if (networkData.nStatus == NETSTAT_PLAYING) { gameStates.multi.bIWasKicked=1; MultiLeaveGame (); } else networkData.nStatus = NETSTAT_MENU; } } } } }
int KickPlayer (int bBan) { int i, name_index = 5 - bBan; const char *pszKick = GT (589 + bBan); if (strlen (gameData.multigame.msg.szMsg) > 5) while (gameData.multigame.msg.szMsg [name_index] == ' ') name_index++; if (!NetworkIAmMaster ()) { HUDInitMessage (TXT_KICK_RIGHTS, gameData.multiplayer.players [NetworkWhoIsMaster ()].callsign, pszKick); MultiSendMsgQuit (); return 1; } if (strlen (gameData.multigame.msg.szMsg) <= (size_t) name_index) { HUDInitMessage (TXT_KICK_NAME, pszKick); MultiSendMsgQuit (); return 1; } if (gameData.multigame.msg.szMsg [name_index] == '#' && ::isdigit (gameData.multigame.msg.szMsg [name_index+1])) { int players [MAX_PLAYERS]; int listpos = gameData.multigame.msg.szMsg [name_index+1] - '0'; if (gameData.multigame.kills.bShowList == 1 || gameData.multigame.kills.bShowList == 2) { if (listpos == 0 || listpos >= gameData.multiplayer.nPlayers) { HUDInitMessage (TXT_KICK_PLR, pszKick); MultiSendMsgQuit (); return 1; } MultiGetKillList (players); i = players [listpos]; if ((i != gameData.multiplayer.nLocalPlayer) && (gameData.multiplayer.players [i].connected)) goto kick_player; } else HUDInitMessage (TXT_KICK_NUMBER, pszKick); MultiSendMsgQuit (); return 1; } for (i = 0; i < gameData.multiplayer.nPlayers; i++) if ((!strnicmp (gameData.multiplayer.players [i].callsign, &gameData.multigame.msg.szMsg [name_index], strlen (gameData.multigame.msg.szMsg)-name_index)) && (i != gameData.multiplayer.nLocalPlayer) && (gameData.multiplayer.players [i].connected)) { kick_player:; if (gameStates.multi.nGameType >= IPX_GAME) NetworkDumpPlayer ( netPlayers.m_info.players [i].network.ipx.server, netPlayers.m_info.players [i].network.ipx.node, 7); HUDInitMessage (TXT_DUMPING, gameData.multiplayer.players [i].callsign); if (bBan) banList.Add (gameData.multiplayer.players [i].callsign); MultiSendMsgQuit (); return 1; } return 0; }
int MovePlayer (void) { int i; if ((gameData.app.nGameMode & GM_NETWORK) && (gameData.app.nGameMode & GM_TEAM)) { int name_index = 5; if (strlen (gameData.multigame.msg.szMsg) > 5) while (gameData.multigame.msg.szMsg [name_index] == ' ') name_index++; if (!NetworkIAmMaster ()) { HUDInitMessage (TXT_MOVE_RIGHTS, gameData.multiplayer.players [NetworkWhoIsMaster ()].callsign); return 1; } if (strlen (gameData.multigame.msg.szMsg) <= (size_t) name_index) { HUDInitMessage (TXT_MOVE_NAME); return 1; } for (i = 0; i < gameData.multiplayer.nPlayers; i++) if ((!strnicmp (gameData.multiplayer.players [i].callsign, &gameData.multigame.msg.szMsg [name_index], strlen (gameData.multigame.msg.szMsg)-name_index)) && (gameData.multiplayer.players [i].connected)) { if ((gameData.app.nGameMode & GM_CAPTURE) && (gameData.multiplayer.players [i].flags & PLAYER_FLAGS_FLAG)) { HUDInitMessage (TXT_MOVE_FLAG); return 1; } #if 1 SetTeam (i, -1); #else #if 0 if (netGame.teamVector & (1<<i)) netGame.teamVector&= (~ (1<<i)); else netGame.teamVector|= (1<<i); #else netGame.teamVector ^= (1<<i); #endif for (t = 0;t<gameData.multiplayer.nPlayers;t++) if (gameData.multiplayer.players [t].connected) MultiResetObjectTexture (gameData.objs.objects + gameData.multiplayer.players [t].nObject); NetworkSendNetgameUpdate (); sprintf (gameData.multigame.msg.szMsg, TXT_TEAMCHANGE3, gameData.multiplayer.players [i].callsign); if (i == gameData.multiplayer.nLocalPlayer) { HUDInitMessage (TXT_TEAMCHANGE1); ResetCockpit (); } else HUDInitMessage (TXT_TEAMCHANGE2, gameData.multiplayer.players [i].callsign); #endif break; } } return 0; }
void DoShowNetGameHelp (void) { CMenu m (30); char szText [MENU_MAX_TEXTLEN]; int i, eff; #if DBG int pl; #endif //char *eff_strings[]={"trashing", "really hurting", "seriously affecting", "hurting", "affecting", "tarnishing"}; sprintf (szText, TXT_INFO_GAME, netGame.m_info.szGameName); m.AddText (szText); sprintf (szText, TXT_INFO_MISSION, netGame.m_info.szMissionTitle); m.AddText (szText); sprintf (szText, TXT_INFO_LEVEL, netGame.m_info.GetLevel ()); m.AddText (szText); sprintf (szText, TXT_INFO_SKILL, MENU_DIFFICULTY_TEXT (netGame.m_info.difficulty)); m.AddText (szText); sprintf (szText, TXT_INFO_MODE, GT (537 + netGame.m_info.gameMode)); m.AddText (szText); sprintf (szText, TXT_INFO_SERVER, gameData.multiplayer.players [NetworkWhoIsMaster()].callsign); m.AddText (szText); sprintf (szText, TXT_INFO_PLRNUM, NetworkHowManyConnected (), netGame.m_info.nMaxPlayers); m.AddText (szText); sprintf (szText, TXT_INFO_PPS, netGame.GetPacketsPerSec ()); m.AddText (szText); sprintf (szText, TXT_INFO_SHORTPKT, netGame.GetShortPackets () ? "Yes" : "No"); m.AddText (szText); #if DBG pl = (int) ((double (networkData.nTotalMissedPackets) / double (networkData.nTotalPacketsGot + networkData.nTotalMissedPackets)) * 100.0); if (pl < 0) pl = 0; sprintf (szText, TXT_INFO_LOSTPKT, networkData.nTotalMissedPackets, pl); m.AddText (szText); #endif if (netGame.GetScoreGoal ()) sprintf (szText, TXT_INFO_SCOREGOAL, netGame.GetScoreGoal () * 5); sprintf (szText, " "); sprintf (szText, TXT_INFO_PLRSCONN); netPlayers.m_info.players [gameData.multiplayer.nLocalPlayer].rank = GetMyNetRanking (); for (i = 0; i < gameData.multiplayer.nPlayers; i++) if (gameData.multiplayer.players [i].connected) { if (!gameOpts->multi.bNoRankings) { if (i == gameData.multiplayer.nLocalPlayer) sprintf (szText, "%s%s (%d/%d)", pszRankStrings [netPlayers.m_info.players [i].rank], gameData.multiplayer.players [i].callsign, networkData.nNetLifeKills, networkData.nNetLifeKilled); else sprintf (szText, "%s%s %d/%d", pszRankStrings[netPlayers.m_info.players [i].rank], gameData.multiplayer.players [i].callsign, gameData.multigame.kills.matrix[gameData.multiplayer.nLocalPlayer][i], gameData.multigame.kills.matrix[i][gameData.multiplayer.nLocalPlayer]); } else sprintf (szText, "%s", gameData.multiplayer.players [i].callsign); m.AddText (szText); } m.AddText (""); eff = (int)((double)((double) networkData.nNetLifeKills / ((double) networkData.nNetLifeKilled + (double) networkData.nNetLifeKills))*100.0); if (eff < 0) eff = 0; if (gameData.app.nGameMode & GM_HOARD) { if (gameData.score.nPhallicMan == -1) sprintf (szText, TXT_NO_RECORD2); else sprintf (szText, TXT_RECORD3, gameData.multiplayer.players [gameData.score.nPhallicMan].callsign, gameData.score.nPhallicLimit); } else if (!gameOpts->multi.bNoRankings) { sprintf (szText, TXT_EFF_LIFETIME, eff); m.AddText (szText); if (eff < 60) sprintf (szText, TXT_EFF_INFLUENCE, GT(546 + eff / 10)); else sprintf (szText, TXT_EFF_SERVEWELL); m.AddText (szText); } //paletteManager.SuspendEffect(); bPauseableMenu = 1; m.TinyMenu (NULL, "NetGame Information"); //paletteManager.ResumeEffect (); }
int NetworkIAmMaster (void) { return NetworkWhoIsMaster () == gameData.multiplayer.nLocalPlayer; }