pc_groups.hpp 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef _PC_GROUPS_HPP_
  4. #define _PC_GROUPS_HPP_
  5. #include "../common/cbasetypes.h"
  6. enum AtCommandType : uint8;
  7. extern int pc_group_max;
  8. bool pc_group_exists(int group_id);
  9. bool pc_group_can_use_command(int group_id, const char *command, AtCommandType type);
  10. bool pc_group_has_permission(int group_id, int permission);
  11. bool pc_group_should_log_commands(int group_id);
  12. const char* pc_group_id2name(int group_id);
  13. int pc_group_id2level(int group_id);
  14. void pc_group_pc_load(struct map_session_data *sd);
  15. void do_init_pc_groups(void);
  16. void do_final_pc_groups(void);
  17. void pc_groups_reload(void);
  18. enum e_pc_permission : uint32 {
  19. PC_PERM_NONE = 0,
  20. PC_PERM_TRADE = 0x00000001,
  21. PC_PERM_PARTY = 0x00000002,
  22. PC_PERM_ALL_SKILL = 0x00000004,
  23. PC_PERM_USE_ALL_EQUIPMENT = 0x00000008,
  24. PC_PERM_SKILL_UNCONDITIONAL = 0x00000010,
  25. PC_PERM_JOIN_ALL_CHAT = 0x00000020,
  26. PC_PERM_NO_CHAT_KICK = 0x00000040,
  27. PC_PERM_HIDE_SESSION = 0x00000080,
  28. PC_PERM_WHO_DISPLAY_AID = 0x00000100,
  29. PC_PERM_RECEIVE_HACK_INFO = 0x00000200,
  30. PC_PERM_WARP_ANYWHERE = 0x00000400,
  31. PC_PERM_VIEW_HPMETER = 0x00000800,
  32. PC_PERM_VIEW_EQUIPMENT = 0x00001000,
  33. PC_PERM_USE_CHECK = 0x00002000,
  34. PC_PERM_USE_CHANGEMAPTYPE = 0x00004000,
  35. PC_PERM_USE_ALL_COMMANDS = 0x00008000,
  36. PC_PERM_RECEIVE_REQUESTS = 0x00010000,
  37. PC_PERM_SHOW_BOSS = 0x00020000,
  38. PC_PERM_DISABLE_PVM = 0x00040000,
  39. PC_PERM_DISABLE_PVP = 0x00080000,
  40. PC_PERM_DISABLE_CMD_DEAD = 0x00100000,
  41. PC_PERM_CHANNEL_ADMIN = 0x00200000,
  42. PC_PERM_TRADE_BOUNDED = 0x00400000,
  43. PC_PERM_ITEM_UNCONDITIONAL = 0x00800000,
  44. PC_PERM_ENABLE_COMMAND = 0x01000000,
  45. PC_PERM_BYPASS_STAT_ONCLONE = 0x02000000,
  46. PC_PERM_BYPASS_MAX_STAT = 0x04000000,
  47. PC_PERM_CASHSHOP_SALE = 0x08000000,
  48. //.. add other here
  49. PC_PERM_ALLPERMISSION = 0xFFFFFFFF,
  50. };
  51. static const struct s_pcg_permission_name {
  52. const char *name;
  53. enum e_pc_permission permission;
  54. } pc_g_permission_name[] = {
  55. { "can_trade", PC_PERM_TRADE },
  56. { "can_party", PC_PERM_PARTY },
  57. { "all_skill", PC_PERM_ALL_SKILL },
  58. { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT },
  59. { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL },
  60. { "join_chat", PC_PERM_JOIN_ALL_CHAT },
  61. { "kick_chat", PC_PERM_NO_CHAT_KICK },
  62. { "hide_session", PC_PERM_HIDE_SESSION },
  63. { "who_display_aid", PC_PERM_WHO_DISPLAY_AID },
  64. { "hack_info", PC_PERM_RECEIVE_HACK_INFO },
  65. { "any_warp", PC_PERM_WARP_ANYWHERE },
  66. { "view_hpmeter", PC_PERM_VIEW_HPMETER },
  67. { "view_equipment", PC_PERM_VIEW_EQUIPMENT },
  68. { "use_check", PC_PERM_USE_CHECK },
  69. { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE },
  70. { "all_commands", PC_PERM_USE_ALL_COMMANDS },
  71. { "receive_requests", PC_PERM_RECEIVE_REQUESTS },
  72. { "show_bossmobs", PC_PERM_SHOW_BOSS },
  73. { "disable_pvm", PC_PERM_DISABLE_PVM },
  74. { "disable_pvp", PC_PERM_DISABLE_PVP },
  75. { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD },
  76. { "channel_admin", PC_PERM_CHANNEL_ADMIN },
  77. { "can_trade_bounded", PC_PERM_TRADE_BOUNDED },
  78. { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL },
  79. { "command_enable",PC_PERM_ENABLE_COMMAND },
  80. { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE },
  81. { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT },
  82. { "cashshop_sale", PC_PERM_CASHSHOP_SALE },
  83. { "all_permission", PC_PERM_ALLPERMISSION },
  84. };
  85. #endif // _PC_GROUPS_HPP_