/// <summary> /// Global method that is triggered for any <see cref="ServerAccessor"/> inherited classes once a clients character loads /// </summary> /// <param name="playerSession"></param> public void OnCharacterLoaded(Session.Session playerSession) { var playerJob = stringToJob(playerSession.GetGlobalData("Character.Job", "Civillian")); //if (playerJob == JobType.EMS || playerJob == JobType.Police || playerJob == JobType.Mechanic) { ACEWrappers.AddPrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.GetLocalData<string>("User.SteamID")}", playerJob); } }
/// <summary> /// Sets a players job /// </summary> /// <param name="playerSession">Session of the target player</param> /// <param name="jobType">New job of the specified player</param> public void SetPlayerJob(Session.Session playerSession, JobType jobType) { var previousJob = GetPlayerJob(playerSession); //if (previousJob == JobType.Police || previousJob == JobType.EMS) { ACEWrappers.RemovePrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", previousJob); } //if (jobType == JobType.Police || jobType == JobType.EMS) { ACEWrappers.AddPrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", jobType); } playerSession.SetGlobalData("Character.Job", jobType.ToString()); Log.Verbose($"Set the job type of {playerSession.PlayerName} to {jobType.ToString()}"); }
// Used for remote job setting from client (not really for emergency services however appropiate permission levels can use this way) private void OnRemoteJobSet([FromSource] Player source, string jobType) { var playerSession = Sessions.GetPlayer(source); if (playerSession == null) { return; } var newJobType = stringToJob(jobType); var previousJobType = stringToJob(playerSession.GetGlobalData("Character.Job", "Civillian")); if (newJobType == JobType.EMS || newJobType == JobType.Police) { if (playerSession.GetLocalData("User.PermissionLevel", AdminLevel.User) >= AdminLevel.Moderator) { playerSession.SetGlobalData("Character.Job", newJobType.ToString()); ACEWrappers.RemovePrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", previousJobType); ACEWrappers.AddPrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", newJobType); Log.Verbose($"Set the job type of {source.Name} to {newJobType.ToString()}"); } else { Log.Verbose($"{source.Name} tried to set their job to {newJobType.ToString()} but didn't have the correct permission level to do so"); } return; } if (previousJobType == JobType.EMS || previousJobType == JobType.Police) { playerSession.SetGlobalData("Character.Temp.Job", newJobType.ToString()); if (newJobType == JobType.Civillian) { playerSession.SetGlobalData("Character.Temp.Job", previousJobType.ToString()); newJobType = previousJobType; } } else { playerSession.SetGlobalData("Character.Job", newJobType.ToString()); } ACEWrappers.RemovePrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", previousJobType); ACEWrappers.AddPrivellagedUser($"{Server.CurrentIdentifier}:{playerSession.SteamIdentifier}", newJobType); Log.Verbose($"Set the job type of {source.Name} to {newJobType.ToString()}"); }
private void SetPermissionLevel(Command cmd) { var player = cmd.GetArgAs <int>(0); var targetLevel = cmd.GetArgAs(1, AdminLevel.User); if (player == cmd.Source) { return; } var playerSession = Sessions.GetPlayer(player); if (playerSession == null) { return; } var currentLevel = playerSession.GetLocalData("User.PermissionLevel", AdminLevel.User); playerSession.SetLocalData("User.PermissionLevel", targetLevel); ACEWrappers.RemovePrivellagedUser($"steam:{playerSession.SteamIdentifier}", currentLevel); ACEWrappers.AddPrivellagedUser($"steam:{playerSession.SteamIdentifier}", targetLevel); Log.Info($"Set the permission level of {playerSession.Source.Name} from {currentLevel.ToString().AddSpacesToCamelCase()} to {targetLevel.ToString().AddSpacesToCamelCase()}"); }