diff options
Diffstat (limited to 'src/common/permissionmanager.cpp')
-rw-r--r-- | src/common/permissionmanager.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/common/permissionmanager.cpp b/src/common/permissionmanager.cpp index 8966f11f..d7c1a7a2 100644 --- a/src/common/permissionmanager.cpp +++ b/src/common/permissionmanager.cpp @@ -18,6 +18,8 @@ * along with The Mana Server. If not, see <http://www.gnu.org/licenses/>. */ +#include <cstring> + #include "common/permissionmanager.hpp" #include "game-server/character.hpp" @@ -160,3 +162,21 @@ unsigned char PermissionManager::getMaskFromAlias(const std::string &alias) return i->second; } } + +std::list<std::string> PermissionManager::getPermissionList(const Character* character) +{ + std::list<std::string> result; + std::map<std::string, unsigned char>::iterator i; + + unsigned char mask = character->getAccountLevel(); + + for (i = permissions.begin(); i != permissions.end(); i++) + { + if (i->second & mask) + { + result.push_back(i->first); + } + } + + return result; +} |