public void AssignGroup(ManicDigger.Group newGroup) { this.clientGroup = newGroup; this.privileges.Clear(); this.privileges.AddRange(newGroup.GroupPrivileges); this.color = newGroup.GroupColorString(); }
public static List <Group> getDefaultGroups() { List <Group> defaultGroups = new List <Group>(); // default guest group ManicDigger.Group guest = new ManicDigger.Group(); guest.Name = "Guest"; guest.Level = 0; guest.GroupPrivileges = new List <string>(); guest.GroupPrivileges.Add(Privilege.chat); guest.GroupPrivileges.Add(Privilege.pm); guest.GroupPrivileges.Add(Privilege.build); guest.GroupPrivileges.Add(Privilege.use); guest.GroupPrivileges.Add(Privilege.login); guest.GroupPrivileges.Add(Privilege.tp); guest.GroupPrivileges.Add(Privilege.tp_pos); guest.GroupPrivileges.Add(Privilege.freemove); guest.GroupColor = ClientColor.Grey; defaultGroups.Add(guest); // default builder group ManicDigger.Group builder = new ManicDigger.Group(); builder.Name = "Builder"; builder.Level = 1; builder.GroupPrivileges = new List <string>(); builder.GroupPrivileges.Add(Privilege.chat); builder.GroupPrivileges.Add(Privilege.pm); builder.GroupPrivileges.Add(Privilege.build); builder.GroupPrivileges.Add(Privilege.use); builder.GroupPrivileges.Add(Privilege.login); builder.GroupPrivileges.Add(Privilege.tp); builder.GroupPrivileges.Add(Privilege.tp_pos); builder.GroupPrivileges.Add(Privilege.set_home); builder.GroupPrivileges.Add(Privilege.freemove); builder.GroupColor = ClientColor.Green; defaultGroups.Add(builder); // default moderator group ManicDigger.Group moderator = new ManicDigger.Group(); moderator.Name = "Moderator"; moderator.Level = 2; moderator.GroupPrivileges = new List <string>(); moderator.GroupPrivileges.Add(Privilege.chat); moderator.GroupPrivileges.Add(Privilege.pm); moderator.GroupPrivileges.Add(Privilege.build); moderator.GroupPrivileges.Add(Privilege.use); moderator.GroupPrivileges.Add(Privilege.freemove); moderator.GroupPrivileges.Add(Privilege.kick); moderator.GroupPrivileges.Add(Privilege.ban); moderator.GroupPrivileges.Add(Privilege.banip); moderator.GroupPrivileges.Add(Privilege.ban_offline); moderator.GroupPrivileges.Add(Privilege.unban); moderator.GroupPrivileges.Add(Privilege.list_clients); moderator.GroupPrivileges.Add(Privilege.list_saved_clients); moderator.GroupPrivileges.Add(Privilege.list_groups); moderator.GroupPrivileges.Add(Privilege.list_banned_users); moderator.GroupPrivileges.Add(Privilege.list_areas); moderator.GroupPrivileges.Add(Privilege.chgrp); moderator.GroupPrivileges.Add(Privilege.chgrp_offline); moderator.GroupPrivileges.Add(Privilege.remove_client); moderator.GroupPrivileges.Add(Privilege.use_tnt); moderator.GroupPrivileges.Add(Privilege.restart); moderator.GroupPrivileges.Add(Privilege.login); moderator.GroupPrivileges.Add(Privilege.tp); moderator.GroupPrivileges.Add(Privilege.tp_pos); moderator.GroupPrivileges.Add(Privilege.set_home); moderator.GroupPrivileges.Add(Privilege.mode); moderator.GroupColor = ClientColor.Cyan; defaultGroups.Add(moderator); // default admin group ManicDigger.Group admin = new ManicDigger.Group(); admin.Name = "Admin"; admin.Level = 3; admin.GroupPrivileges = new List <string>(); admin.GroupPrivileges.Add(Privilege.chat); admin.GroupPrivileges.Add(Privilege.pm); admin.GroupPrivileges.Add(Privilege.build); admin.GroupPrivileges.Add(Privilege.use); admin.GroupPrivileges.Add(Privilege.freemove); admin.GroupPrivileges.Add(Privilege.kick); admin.GroupPrivileges.Add(Privilege.ban); admin.GroupPrivileges.Add(Privilege.banip); admin.GroupPrivileges.Add(Privilege.ban_offline); admin.GroupPrivileges.Add(Privilege.unban); admin.GroupPrivileges.Add(Privilege.announcement); admin.GroupPrivileges.Add(Privilege.welcome); admin.GroupPrivileges.Add(Privilege.list_clients); admin.GroupPrivileges.Add(Privilege.list_saved_clients); admin.GroupPrivileges.Add(Privilege.list_groups); admin.GroupPrivileges.Add(Privilege.list_banned_users); admin.GroupPrivileges.Add(Privilege.list_areas); admin.GroupPrivileges.Add(Privilege.chgrp); admin.GroupPrivileges.Add(Privilege.chgrp_offline); admin.GroupPrivileges.Add(Privilege.remove_client); admin.GroupPrivileges.Add(Privilege.monsters); admin.GroupPrivileges.Add(Privilege.give); admin.GroupPrivileges.Add(Privilege.giveall); admin.GroupPrivileges.Add(Privilege.use_tnt); admin.GroupPrivileges.Add(Privilege.area_add); admin.GroupPrivileges.Add(Privilege.area_delete); admin.GroupPrivileges.Add(Privilege.restart); admin.GroupPrivileges.Add(Privilege.login); admin.GroupPrivileges.Add(Privilege.tp); admin.GroupPrivileges.Add(Privilege.tp_pos); admin.GroupPrivileges.Add(Privilege.set_home); admin.GroupPrivileges.Add(Privilege.mode); admin.GroupPrivileges.Add(Privilege.load); admin.GroupPrivileges.Add(Privilege.time); admin.GroupPrivileges.Add("revert"); admin.GroupColor = ClientColor.Yellow; defaultGroups.Add(admin); defaultGroups.Sort(); return(defaultGroups); }
public bool BanOffline(Server server, int sourceClientId, string target, string reason) { if (!server.PlayerHasPrivilege(sourceClientId, ServerClientMisc.Privilege.ban_offline)) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandInsufficientPrivileges"), server.colorError)); return(false); } if (!reason.Equals("")) { reason = server.language.Get("Server_CommandKickBanReason") + reason; } if (server.GetClient(target) != null) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandBanOfflineTargetOnline"), server.colorError, target)); return(false); } // Target is at the moment not online. Check if there is an entry in ServerClient // Get related client from config file ManicDigger.Client targetClient = server.serverClient.Clients.Find( delegate(ManicDigger.Client client) { return(client.Name.Equals(target, StringComparison.InvariantCultureIgnoreCase)); } ); // Entry exists. if (targetClient != null) { // Get target's group. ManicDigger.Group targetGroup = server.serverClient.Groups.Find( delegate(ManicDigger.Group grp) { return(grp.Name.Equals(targetClient.Group)); } ); if (targetGroup == null) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandInvalidGroup"), server.colorError)); return(false); } // Check if target's group is superior. if (targetGroup.IsSuperior(server.GetClient(sourceClientId).clientGroup) || targetGroup.EqualLevel(server.GetClient(sourceClientId).clientGroup)) { server.SendMessage(sourceClientId, string.Format(server.language.Get("Server_CommandTargetUserSuperior"), server.colorError)); return(false); } // Remove target's entry. server.serverClient.Clients.Remove(targetClient); server.serverClientNeedsSaving = true; } // Finally ban user. server.banlist.BanPlayer(target, server.GetClient(sourceClientId).playername, reason); SaveBanlist(server); server.SendMessageToAll(string.Format(server.language.Get("Server_CommandBanOfflineMessage"), server.colorImportant, target, server.GetClient(sourceClientId).ColoredPlayername(server.colorImportant), reason)); server.ServerEventLog(string.Format("{0} bans {1}.{2}", server.GetClient(sourceClientId).playername, target, reason)); return(true); }