示例#1
0
 public void AssignGroup(ManicDigger.Group newGroup)
 {
     this.clientGroup = newGroup;
     this.privileges.Clear();
     this.privileges.AddRange(newGroup.GroupPrivileges);
     this.color = newGroup.GroupColorString();
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }