protected void grantRevokeGroupOwned2Player(IServerPlayer player, int groupId, string privtype, string firstarg, string flagString, EnumBlockAccessFlags flags, ReinforcedPrivilegeGrantsGroup groupGrants) { (api as ICoreServerAPI).PlayerData.ResolvePlayerName(firstarg, (result, playeruid) => { if (result == EnumServerResponse.Good) { if (privtype == "grant") { groupGrants.PlayerGrants[playeruid] = flags; player.SendMessage(groupId, flagString + " access set for player " + firstarg, EnumChatType.CommandError); SyncPrivData(); } else { if (groupGrants.PlayerGrants.Remove(playeruid)) { player.SendMessage(groupId, "All access revoked for player " + firstarg, EnumChatType.CommandError); SyncPrivData(); } else { player.SendMessage(groupId, "This player has no access. No action taken.", EnumChatType.CommandError); } } return; } if (result == EnumServerResponse.Offline) { player.SendMessage(groupId, Lang.Get("Player with name '{0}' is not online and auth server is offline. Cannot check if this player exists. Try again later.", firstarg), EnumChatType.CommandError); return; } player.SendMessage(groupId, Lang.Get("No player with name '{0}' exists", firstarg), EnumChatType.CommandError); }); }
private void onCmdGroup(IServerPlayer player, int groupId, CmdArgs args) { string privtype = args.PopWord(); string firstarg = args.PopWord(); string flagString = args.PopWord(); if (privtype == null) { player.SendMessage(groupId, "Syntax: /gbre [grant|revoke|grantgroup|revokegroup] default or [playername/groupname] [use or all]", EnumChatType.CommandError); return; } EnumBlockAccessFlags flags; if (flagString?.ToLowerInvariant() == "use") { flags = EnumBlockAccessFlags.Use; } else if (flagString?.ToLowerInvariant() == "all") { flags = EnumBlockAccessFlags.BuildOrBreak | EnumBlockAccessFlags.Use; } else { if (privtype == "grant") { player.SendMessage(groupId, "Missing argument or argument is not 'use' or 'all'", EnumChatType.CommandError); } return; } var group = player.GetGroup(groupId); if (group == null) { player.SendMessage(groupId, "Type this command inside the group chat tab that you are a owner of", EnumChatType.CommandError); return; } if (group.Level != EnumPlayerGroupMemberShip.Owner) { player.SendMessage(groupId, "Must be owner of the group to change access flags", EnumChatType.CommandError); return; } ReinforcedPrivilegeGrantsGroup groupGrants; if (!privGrantsByOwningGroupUid.TryGetValue(groupId, out groupGrants)) { privGrantsByOwningGroupUid[groupId] = groupGrants = new ReinforcedPrivilegeGrantsGroup(); } if (firstarg == "default") { if (privtype == "grant") { groupGrants.DefaultGrants = flags; player.SendMessage(groupId, "Default access for group members set to " + flagString, EnumChatType.CommandError); } else { groupGrants.DefaultGrants = 0; player.SendMessage(groupId, "All access revoked for group members", EnumChatType.CommandError); } SyncPrivData(); return; } if (privtype == "grant" || privtype == "revoke") { grantRevokeGroupOwned2Player(player, groupId, privtype, firstarg, flagString, flags, groupGrants); return; } if (privtype == "grantgroup" || privtype == "revokegroup") { grantRevokeGroupOwned2Group(player, groupId, privtype, firstarg, flags); return; } player.SendMessage(groupId, "Syntax: /gbre [grant|revoke|grantgroup|revokegroup] members or [playername/groupname] [use or all]", EnumChatType.CommandError); return; }