/// <summary> /// Global method that is triggered for any <see cref="ServerAccessor"/> inherited classes once a client leaves the server /// </summary> /// <param name="playerSession"></param> /// <param name="reason"></param> public void OnPlayerDisconnect(Session.Session playerSession, string reason) { var playerJob = stringToJob(playerSession.GetGlobalData("Character.Job", "Civillian")); //if (playerJob == JobType.EMS || playerJob == JobType.Police || playerJob == JobType.Mechanic) { ACEWrappers.RemovePrivellagedUser($"{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()}"); }
public static void RegisterJobCommand(string commandName, Action <Command> commandFunc, JobType requiredLevel, bool skipDutyCheck = false) { var jobTypes = Enum.GetValues(typeof(JobType)).Cast <JobType>().ToList(); jobTypes.ForEach(o => { if (requiredLevel.ToString().Contains(o.ToString())) { var dutyFunc = new Action <Command>(cmd => { if (Server.Server.Instance.Get <JobHandler>().OnDutyAs(cmd.Session, requiredLevel) || skipDutyCheck) { commandFunc(cmd); } }); ACEWrappers.CreateRestrictedCommand(commandName, dutyFunc, o, true); } }); }
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()}"); }
public static void RegisterAdminCommand(string commandName, Action <Command> commandFunc, AdminLevel requiredLevel) { ACEWrappers.CreateRestrictedCommand(commandName, commandFunc, requiredLevel); }