private void Callbacks_PlayerChat(object sender, Communication.EventArguments.Callbacks.PlayerChatEventArgs e) { RunCatchLog(() => { ServerCommand command = ServerCommand.Parse(e.Text); if (!command.Is(Command.Donate) || command.PartsWithoutMainCommand.Count == 0) { return; } int coppers; if (!int.TryParse(command.PartsWithoutMainCommand[0], NumberStyles.None, CultureInfo.InvariantCulture, out coppers) || coppers <= 0) { return; } if (coppers < Settings.MinDonationValue) { SendFormattedMessageToLogin(e.Login, Settings.DonationToSmallMessage, "Coppers", Settings.MinDonationValue.ToString(CultureInfo.InvariantCulture)); return; } PlayerSettings playerSettings = GetPlayerSettings(e.Login); bool isUnitedAccount = playerSettings.IsUnitedAccount; if (!playerSettings.DetailMode.HasDetailedPlayerInfo()) { DetailedPlayerInfo playerInfo = GetDetailedPlayerInfo(e.Login); if (playerInfo != null) { isUnitedAccount = playerInfo.IsUnitedAccount; } } if (!isUnitedAccount) { SendFormattedMessageToLogin(e.Login, Settings.PlayerHasNoUnitedAccountMessage); return; } GenericResponse <int> billResponse = Context.RPCClient.Methods.SendBill(e.Login, coppers, Settings.DonationHint, Settings.DonationTargetLogin); if (billResponse.Erroneous) { Logger.Warn(string.Format("Error while calling method SendBill: {0}({1})", billResponse.Fault.FaultMessage, billResponse.Fault.FaultCode)); SendFormattedMessageToLogin(e.Login, Settings.DonationErrorMessage, "ErrorMessage", billResponse.Fault.FaultMessage); return; } BillDictionary[billResponse.Value] = new DonationInfo { Login = e.Login, Coppers = coppers }; }, "Error in Callbacks_PlayerChat Method.", true); }
public void UpdateFromPlayerInfo(DetailedPlayerInfo playerInfo) { UpdateFromPlayerInfo((PlayerInfoBase)playerInfo); IsReferee = playerInfo.IsReferee; IPAddress = Regex.Replace(playerInfo.IPAddress, @":\d+", string.Empty, RegexOptions.Compiled); OnlineRights = playerInfo.OnlineRights; Language = playerInfo.Language; PlayerRanking worldRanking = playerInfo.LadderStats.PlayerRankings.Find(ranking => ranking.Path == "World"); if (worldRanking != null) { LadderRanking = worldRanking.Ranking; } DetailMode |= PlayerSettingsDetailMode.DetailedPlayerInfo; }
private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e) { RunCatchLog(() => { DetailedPlayerInfo detailedPlayerInfo = GetDetailedPlayerInfo(e.Login); if (detailedPlayerInfo == null) { e.Handled = true; Context.RPCClient.Methods.Kick(e.Login, "TMSPS couldn't determine your player information, try reconnecting!"); return; } NicknameResolverFactory.Instance.Set(e.Login, detailedPlayerInfo.NickName); if (detailedPlayerInfo.NickName.IsNullOrTimmedEmpty()) { Context.RPCClient.Methods.Kick(e.Login, "Please provide a nickname!"); e.Handled = true; return; } if (Settings.EnableJoinMessage) { string nation = "Unknown"; List <string> pathParts = new List <string>(detailedPlayerInfo.Path.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)); if (pathParts.Count > 1) { nation = string.Join(" > ", pathParts.ToArray(), 1, pathParts.Count - 1); } int ladderRank = -1; PlayerRanking worldRanking = detailedPlayerInfo.LadderStats.PlayerRankings.Find(ranking => ranking.Path == "World"); if (worldRanking != null) { ladderRank = worldRanking.Ranking; } SendFormattedMessage(Settings.JoinMessage, "Nickname", StripTMColorsAndFormatting(detailedPlayerInfo.NickName), "Nation", nation, "Ladder", ladderRank.ToString(Context.Culture)); } }, "Error in Callbacks_PlayerConnect Method.", true); }
public ServerInfo(ConfigSettingsConfigurationSection configSection, string serverPackMask, Version version, string trackDirectory, DetailedPlayerInfo serverPlayerInfo) { if (configSection == null) { throw new ArgumentNullException("configSection"); } if (serverPackMask == null) { throw new ArgumentNullException("serverPackMask"); } if (version == null) { throw new ArgumentNullException("version"); } if (trackDirectory == null) { throw new ArgumentNullException("trackDirectory"); } if (serverPlayerInfo == null) { throw new ArgumentNullException("serverPlayerInfo"); } ServerAddress = configSection.ServerAddress; ServerXMLRpcPort = configSection.ServerXMLRPCPort; SuperAdminPassword = configSection.SuperAdminPassword; ServerNation = configSection.ServerNation; ServerLogin = configSection.ServerLogin; ServerLoginPassword = configSection.ServerLoginPassword; ServerPackMask = serverPackMask; Version = version.Clone(); TrackDirectory = trackDirectory; PlayerInfo = serverPlayerInfo; }
private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e) { if (e.Handled) { Logger.Debug(string.Format("Callbacks_PlayerConnect method skipped for login: {0}. Eventargs stated: Already handled", e.Login)); return; } RunCatchLog(() => { PlayerSettings playerSettings = GetPlayerSettings(e.Login); if (playerSettings == null) { Logger.Debug(string.Format("Could not get PlayerSettings for login: {0}", e.Login)); return; } int ladderRanking; if (!playerSettings.DetailMode.HasDetailedPlayerInfo()) { DetailedPlayerInfo detailedPlayerInfo = GetDetailedPlayerInfo(e.Login); if (detailedPlayerInfo == null) { Logger.Debug(string.Format("Could not get DetailedPlayerInfo for login: {0}", e.Login)); return; } PlayerRanking worldRanking = detailedPlayerInfo.LadderStats.PlayerRankings.Find(ranking => ranking.Path == "World"); if (worldRanking == null) { Logger.Debug(string.Format("Could not find World-Ranking for login: {0}", e.Login)); return; } ladderRanking = worldRanking.Ranking; } else { ladderRanking = playerSettings.LadderRanking; } if (ladderRanking != -1) { return; } GenericResponse <bool> kickResponse = Context.RPCClient.Methods.Kick(e.Login, Settings.PersonalKickMessage); if (kickResponse.Erroneous) { Logger.Debug(string.Format("Could not kick login: {0}. Reason: {1}({2})", e.Login, kickResponse.Fault.FaultMessage, kickResponse.Fault.FaultCode)); return; } SendFormattedMessage(Settings.PublicKickMessage, "Nickname", StripTMColorsAndFormatting(playerSettings.NickName)); e.Handled = true; }, "Error in Callbacks_PlayerConnect Method.", true); }