MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / MultiDisconnectPlayer

Function MultiDisconnectPlayer

Descent3/multi_server.cpp:1083–1111  ·  view source on GitHub ↗

Disconnect a player for whatever reason Server only

Source from the content-addressed store, hash-verified

1081// Disconnect a player for whatever reason
1082// Server only
1083void MultiDisconnectPlayer(int slot) {
1084 ASSERT(Netgame.local_role == LR_SERVER);
1085
1086 DLLInfo.me_handle = DLLInfo.it_handle = Objects[Players[slot].objnum].handle;
1087 CallGameDLL(EVT_GAMEPLAYERDISCONNECT, &DLLInfo);
1088
1089 if (NetPlayers[slot].flags & NPF_CONNECTED) {
1090 mprintf(0, "Disconnecting player %d (%s)...\n", slot, Players[slot].callsign);
1091 if (NetPlayers[slot].file_xfer_flags != NETFILE_NONE) {
1092 MultiCancelFile(slot, NetPlayers[slot].custom_file_seq, NetPlayers[slot].file_xfer_who);
1093 }
1094 nw_CloseSocket(&NetPlayers[slot].reliable_socket);
1095
1096 if (NetPlayers[slot].sequence == NETSEQ_PLAYING) {
1097 PlayerSpewInventory(&Objects[Players[slot].objnum], true, true);
1098 MultiMakePlayerGhost(slot);
1099 AddHUDMessage(TXT_MLTDISCONNECTED, Players[slot].callsign);
1100 }
1101
1102 NetPlayers[slot].flags &= ~NPF_CONNECTED;
1103 NetPlayers[slot].secret_net_id = 0;
1104 MultiClearGuidebot(slot);
1105 MultiClearPlayerMarkers(slot);
1106 MultiSendPlayerDisconnect(slot);
1107 Players[slot].flags = 0;
1108
1109 } else
1110 mprintf(0, "Trying to disconnect a non-existant player!\n");
1111}
1112
1113// Sends existing players to a joining player
1114// Sends to "slot" and describes player "which"

Callers 2

MultiCloseGameFunction · 0.85

Calls 9

CallGameDLLFunction · 0.85
MultiCancelFileFunction · 0.85
nw_CloseSocketFunction · 0.85
PlayerSpewInventoryFunction · 0.85
MultiMakePlayerGhostFunction · 0.85
AddHUDMessageFunction · 0.85
MultiClearGuidebotFunction · 0.85
MultiClearPlayerMarkersFunction · 0.85

Tested by

no test coverage detected