public void ClientAdminWrite(NetFlags dataToSend, int missionType = 0, float?levelDifficulty = null, bool?autoRestart = null, int traitorSetting = 0, int botCount = 0, int botSpawnMode = 0, bool?useRespawnShuttle = null) { if (!GameMain.Client.HasPermission(Networking.ClientPermissions.ManageSettings)) { return; } IWriteMessage outMsg = new WriteOnlyMessage(); outMsg.Write((byte)ClientPacketHeader.SERVER_SETTINGS); outMsg.Write((byte)dataToSend); if (dataToSend.HasFlag(NetFlags.Name)) { if (GameMain.NetLobbyScreen.ServerName.Text != ServerName) { ServerName = GameMain.NetLobbyScreen.ServerName.Text; } outMsg.Write(ServerName); } if (dataToSend.HasFlag(NetFlags.Message)) { if (GameMain.NetLobbyScreen.ServerMessage.Text != ServerMessageText) { ServerMessageText = GameMain.NetLobbyScreen.ServerMessage.Text; } outMsg.Write(ServerMessageText); } if (dataToSend.HasFlag(NetFlags.Properties)) { //TODO: split this up? WriteExtraCargo(outMsg); IEnumerable <KeyValuePair <UInt32, NetPropertyData> > changedProperties = netProperties.Where(kvp => kvp.Value.ChangedLocally); UInt32 count = (UInt32)changedProperties.Count(); bool changedMonsterSettings = tempMonsterEnabled != null && tempMonsterEnabled.Any(p => p.Value != MonsterEnabled[p.Key]); outMsg.Write(count); foreach (KeyValuePair <UInt32, NetPropertyData> prop in changedProperties) { DebugConsole.NewMessage(prop.Value.Name, Color.Lime); outMsg.Write(prop.Key); prop.Value.Write(outMsg, prop.Value.GUIComponentValue); } outMsg.Write(changedMonsterSettings); outMsg.WritePadBits(); if (changedMonsterSettings) { WriteMonsterEnabled(outMsg, tempMonsterEnabled); } BanList.ClientAdminWrite(outMsg); Whitelist.ClientAdminWrite(outMsg); } if (dataToSend.HasFlag(NetFlags.Misc)) { outMsg.Write((byte)(missionType + 1)); outMsg.Write((byte)(traitorSetting + 1)); outMsg.Write((byte)(botCount + 1)); outMsg.Write((byte)(botSpawnMode + 1)); outMsg.Write(levelDifficulty ?? -1000.0f); outMsg.Write(useRespawnShuttle ?? UseRespawnShuttle); outMsg.Write(autoRestart != null); outMsg.Write(autoRestart ?? false); outMsg.WritePadBits(); } if (dataToSend.HasFlag(NetFlags.LevelSeed)) { outMsg.Write(GameMain.NetLobbyScreen.SeedBox.Text); } GameMain.Client.ClientPeer.Send(outMsg, DeliveryMethod.Reliable); }