This new approach is designed for easy maintenance, increased flexibility and readability. Hopefully it will make up for migration difficulties.
The whole concept of GMs and non-GMs as well as GM levels has been abondoned in favor of more role- and privilege-oriented player groups. Each account belongs to exactly one group.
Player groups are independent of each other, so unless you decide to do so, they don't have to share any privileges like it was with top-down GM level hierarchy. There is, however, a way to say which group is higher, and which is lower: it's group level.
Each group has following atributes:
- ID — unique number
- level — it can be interpereted as (GM) level of all group members
- commands settings — what commands can group members use
- permissions settings — what other permissions group members have
- inherited groups — permissions and commands from which groups are inherited
- log commands — should commands issued by this group be logged or not
- Column `login`.`gmlevel` has been renamed to `group_id`. It now stores ID of the group player belongs to, so you need update your database accordingly.
- Atcommand configuration file conf/atcommand_athena.conf no longer defines GM levels required to use the command. Permissions to use commands are now defined for each player group separately in group configuration file conf/groups.conf.
- Command aliases are still being defined in conf/atcommand_athena.conf. File syntax has changed. Import is no longer supported for this file. File is fully documented and contains default aliases that were present in previous revisions.
- GM configuration file conf/battle/gm.conf no longer defines GM levels required to get some privileges (like trading or partying). See full list of removed settings:
These permissions are now defined for each player group separately in group configuration file conf/groups.conf.
- Player titles defined by conf/battle/gm.conf settings title_lvl1 to title_lvl8 and conf/msg_athena.conf (335~342) are replaced with group names.
- Removed @adjcmdlvl command. Replaced @adjgmlvl command with @adjgroup, which allows to temporarily (until relog) move player to another group.
- In login-server configuration file conf/login_athena.conf min_level_to_connect setting has been replaced with group_id_to_connect setting, which allows you to define account group id that is required to connect to server.
- In char-server configuration file conf/char_athena.conf gm_allow_level setting has been replaced with gm_allow_group setting, which allows you to define group id that is allowed to bypass the server limit of online users.
- In log configuration file conf/log_athena.conf log_gm setting has been replaced with log_commands setting, which allows you to decide whether commands should be logged or not. Even with command logging enabled, only commands issued by groups that have log_commands set to true will be logged.
Group level is used only:
- when determining if player can override trade restrictions defined in db/item_trade.txt
- when determining if player can use @command on another player (existing rule that low-level player can not use some commands, eg @kick on high-level player has been kept) or see another player with @who commands (if they have "hide_session" privilege).
- as a return value for getgmlevel() script command
- when determining if player can use commands in a map with nocommand mapflag set
- CMakeLists were not updated. If you know cmake and want to contribute, just send me (or other dev) a diff.
- There were multiple minor changes in this revision. For full list, see rAthena Trac (r15572) or SVN log.