public void UnbanPlayer(Client player, string fullPlayerName, string reason) { Player user = Player.PlayerData[player]; if (user.MasterAccount.AdminLevel < 3) { Message.NotAuthorised(player); return; } try { Ban banData = BanRepository.GetActiveBanByPlayerAccount(fullPlayerName); Master adminWhoBanned = MasterRepository.GetMasterDataById(banData.BannedBy); if (user.MasterAccount.AdminLevel > adminWhoBanned.AdminLevel || user.MasterId == adminWhoBanned.Id) { BanRepository.RemoveAsync(banData); API.sendChatMessageToPlayer(player, string.Format("You have successfully unbanned {0}", PlayerRepository.GetPlayerDataByName(fullPlayerName).Username.Roleplay())); } else { API.SendWarningNotification(player, "You aren't a higher enough administrative level to unban this player."); } } catch { API.SendErrorNotification(player, "The specified player doesn't exist."); } }
private void OnClientEventTrigger(Client sender, string eventName, params object[] arguments) { if (eventName == "ScoreboardPopulate") { PopulateScoreboard(sender); } else if (eventName == "SettingsSetPerformance") { Player p = Player.PlayerData[sender]; p.MasterAccount.PerformanceSetting = (int)arguments[0]; API.SendInfoNotification(sender, "Performance Setting Changed", 5); MasterRepository.UpdateAsync(p.MasterAccount); } else if (eventName == "KickPlayer") { Player p = Player.GetPlayerData(arguments[0].ToString()); if (p == null) { PopulateScoreboard(sender); return; } Player.PlayerData[sender].ScoreboardActionPlayer = p; API.ShowInputPrompt(sender, "KickPlayerConfirm", "Kick Player: " + p.Username.Roleplay(), "Please provide the reason for kicking " + p.Username.Roleplay() + "?", "Kick", "Cancel"); } else if (eventName == "KickPlayerConfirm") { if ((int)arguments[0] == 1) { Player.PlayerData[sender].ScoreboardActionPlayer.Client.kick(arguments[1].ToString()); } } else if (eventName == "SpecPlayer") { new PlayerAdminCommands().SpectatePlayer(sender, arguments[0].ToString()); } else if (eventName == "TeleportToPlayer") { new PlayerAdminCommands().GoToPlayer(sender, arguments[0].ToString()); } }
public async void Login(Client sender, string username, string password) { Master masterAccount; if (username.Contains("@")) { masterAccount = await MasterRepository.GetMasterDataByEmail(username); } else { masterAccount = await MasterRepository.GetMasterDataByName(username); } if (masterAccount != null) { if (Crypter.CheckPassword(password, masterAccount.Password)) { string[] charNames = new string[5]; List <string> charImgs = new List <string>() { "", "", "", "", "" }; string[] factions = new string[5]; masterAccount.Players = await PlayerRepository.GetAllPlayerDataByMasterAccount(masterAccount); masterAccount.Client = sender; int count = 0; foreach (Player p in masterAccount.Players) { charNames[count] = p.Username.Roleplay(); charImgs[count] = p.Skin == 797459875 ? Images.SkinBlobs[p.Skin] : ""; if (p.FactionId != 0) { factions[count] = $"{FactionRepository.GetFactionById(p.FactionId).Name}<br/>{RankRepository.GetRankByFactionAndId(p.FactionId, p.FactionRank).Title}"; } else { factions[count] = "Civilian"; } count++; } Master.MasterData.Add(masterAccount); API.triggerClientEvent(sender, "playerLogResult", "success", masterAccount.Players.Count, string.Join(",", charNames), string.Join(",", factions), string.Join(".", charImgs)); masterAccount.LatestLogin = Server.Date; masterAccount.LatestIP = sender.address; masterAccount.ActiveConnectionLog = new ConnectionLog(masterAccount.Id, -1, API.getPlayerAddress(sender)); ConnectionLogRepository.AddNew(masterAccount.ActiveConnectionLog); MasterRepository.UpdateAsync(masterAccount); masterAccount.AdminLevel = 6; } else { API.triggerClientEvent(sender, "playerLogResult", "incorrect-pass"); API.SendErrorNotification(sender, "You have entered an incorrect password"); } } else { API.triggerClientEvent(sender, "playerLogResult", "invalid-user"); API.SendErrorNotification(sender, "You have entered an invalid username"); } }