DR4LUC0N Posted April 18, 2022 Group: Members Topic Count: 33 Topics Per Day: 0.01 Content Count: 135 Reputation: 6 Joined: 04/04/12 Last Seen: June 19, 2023 Share Posted April 18, 2022 So I just updated my server to the newest git version. I have a few custom group permissions, but I can't seem to fix this error. Here's the pc_groups.hpp file info Quote // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder #ifndef PC_GROUPS_HPP #define PC_GROUPS_HPP #include <bitset> #include <map> #include <vector> #include "../common/cbasetypes.hpp" #include "../common/database.hpp" // Forward declaration from atcommands.hpp enum AtCommandType : uint8; void pc_group_pc_load(struct map_session_data *sd); void do_init_pc_groups(void); void do_final_pc_groups(void); void pc_groups_reload(void); enum e_pc_permission : uint32 { PC_PERM_TRADE = 0, PC_PERM_PARTY, PC_PERM_ALL_SKILL, PC_PERM_USE_ALL_EQUIPMENT, PC_PERM_SKILL_UNCONDITIONAL, PC_PERM_JOIN_ALL_CHAT, PC_PERM_NO_CHAT_KICK, PC_PERM_HIDE_SESSION, PC_PERM_WHO_DISPLAY_AID, PC_PERM_RECEIVE_HACK_INFO, PC_PERM_WARP_ANYWHERE, PC_PERM_VIEW_HPMETER, PC_PERM_VIEW_EQUIPMENT, PC_PERM_USE_CHECK, PC_PERM_USE_CHANGEMAPTYPE, PC_PERM_USE_ALL_COMMANDS, PC_PERM_RECEIVE_REQUESTS, PC_PERM_SHOW_BOSS, PC_PERM_DISABLE_PVM, PC_PERM_DISABLE_PVP, PC_PERM_DISABLE_CMD_DEAD, PC_PERM_CHANNEL_ADMIN, PC_PERM_TRADE_BOUNDED, PC_PERM_ITEM_UNCONDITIONAL, PC_PERM_ENABLE_COMMAND, PC_PERM_BYPASS_STAT_ONCLONE, PC_PERM_BYPASS_MAX_STAT, PC_PERM_ATTENDANCE, //.. add other here PC_PERM_MAX, PC_PERM_MAILER, PC_ANTI_ABUSE, PC_PERM_ALLPERMISSION, }; static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable", PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone", PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat", PC_PERM_BYPASS_MAX_STAT }, { "attendance", PC_PERM_ATTENDANCE }, { "can_mail", PC_PERM_MAILER }, { "anti_abuse", PC_ANTI_ABUSE }, { "all_permission", PC_PERM_ALLPERMISSION }, }; struct s_player_group{ uint32 id; std::string name; uint32 level; bool log_commands; std::vector<std::string> commands; std::vector<std::string> char_commands; std::bitset<PC_PERM_MAX> permissions; uint32 index; public: bool can_use_command( const std::string& command, AtCommandType type ); bool has_permission( e_pc_permission permission ); bool should_log_commands(); }; class PlayerGroupDatabase : public TypesafeYamlDatabase<uint32, s_player_group>{ private: std::map<uint32, std::vector<std::string>> inheritance; bool parseCommands( const ryml::NodeRef& node, std::vector<std::string>& commands ); public: PlayerGroupDatabase() : TypesafeYamlDatabase( "PLAYER_GROUP_DB", 1 ){ } const std::string getDefaultLocation() override; uint64 parseBodyNode( const ryml::NodeRef& node ) override; void loadingFinished() override; }; extern PlayerGroupDatabase player_group_db; #endif /* PC_GROUPS_HPP */ And the error in terminal... Any help appreciated thank you. Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted April 18, 2022 Group: Developer Topic Count: 33 Topics Per Day: 0.01 Content Count: 790 Reputation: 225 Joined: 01/30/13 Last Seen: 12 hours ago Share Posted April 18, 2022 There was an update to system and it now uses groups.yml instead of groups.conf, might be related to your issue. If you had customized the original source file you might have a merge error? The code you quoted doesn't even include "const s_pcg_permission_name". From the error message I'd say you have the same const in the array appear twice. Look for this code: static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, { "attendance",PC_PERM_ATTENDANCE }, }; Quote Link to comment Share on other sites More sharing options...
0 DR4LUC0N Posted April 18, 2022 Group: Members Topic Count: 33 Topics Per Day: 0.01 Content Count: 135 Reputation: 6 Joined: 04/04/12 Last Seen: June 19, 2023 Author Share Posted April 18, 2022 (edited) 7 hours ago, Playtester said: There was an update to system and it now uses groups.yml instead of groups.conf, might be related to your issue. If you had customized the original source file you might have a merge error? The code you quoted doesn't even include "const s_pcg_permission_name". From the error message I'd say you have the same const in the array appear twice. Look for this code: static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, { "attendance",PC_PERM_ATTENDANCE }, }; This is mine Quote enum e_pc_permission : uint32 { PC_PERM_TRADE = 0, PC_PERM_PARTY, PC_PERM_ALL_SKILL, PC_PERM_USE_ALL_EQUIPMENT, PC_PERM_SKILL_UNCONDITIONAL, PC_PERM_JOIN_ALL_CHAT, PC_PERM_NO_CHAT_KICK, PC_PERM_HIDE_SESSION, PC_PERM_WHO_DISPLAY_AID, PC_PERM_RECEIVE_HACK_INFO, PC_PERM_WARP_ANYWHERE, PC_PERM_VIEW_HPMETER, PC_PERM_VIEW_EQUIPMENT, PC_PERM_USE_CHECK, PC_PERM_USE_CHANGEMAPTYPE, PC_PERM_USE_ALL_COMMANDS, PC_PERM_RECEIVE_REQUESTS, PC_PERM_SHOW_BOSS, PC_PERM_DISABLE_PVM, PC_PERM_DISABLE_PVP, PC_PERM_DISABLE_CMD_DEAD, PC_PERM_CHANNEL_ADMIN, PC_PERM_TRADE_BOUNDED, PC_PERM_ITEM_UNCONDITIONAL, PC_PERM_ENABLE_COMMAND, PC_PERM_BYPASS_STAT_ONCLONE, PC_PERM_BYPASS_MAX_STAT, PC_PERM_ATTENDANCE, //.. add other here PC_PERM_MAX, PC_PERM_MAILER, PC_ANTI_ABUSE, }; static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, { "attendance",PC_PERM_ATTENDANCE }, { "can_mail",PC_PERM_MAILER }, { "anti_abuse",PC_ANTI_ABUSE }, }; I have 2 extra due to having custom permissions. Should still work though since none of them are duplicated. Could it be anything else by chance? It almost seems like you can't have extra permissions? Edited April 18, 2022 by DR4LUC0N Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted April 18, 2022 Group: Developer Topic Count: 33 Topics Per Day: 0.01 Content Count: 790 Reputation: 225 Joined: 01/30/13 Last Seen: 12 hours ago Share Posted April 18, 2022 You probably need to increase PC_PERM_MAX by 2 then. Quote Link to comment Share on other sites More sharing options...
0 DR4LUC0N Posted April 18, 2022 Group: Members Topic Count: 33 Topics Per Day: 0.01 Content Count: 135 Reputation: 6 Joined: 04/04/12 Last Seen: June 19, 2023 Author Share Posted April 18, 2022 Where would I do that if I may ask? Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted April 18, 2022 Group: Developer Topic Count: 33 Topics Per Day: 0.01 Content Count: 790 Reputation: 225 Joined: 01/30/13 Last Seen: 12 hours ago Share Posted April 18, 2022 It's not hard to find that out yourself. If you use visual studio Ctrl+F then select to search the whole project and then just enter PC_PERM_MAX and search where it's defined. Quote Link to comment Share on other sites More sharing options...
0 DR4LUC0N Posted April 18, 2022 Group: Members Topic Count: 33 Topics Per Day: 0.01 Content Count: 135 Reputation: 6 Joined: 04/04/12 Last Seen: June 19, 2023 Author Share Posted April 18, 2022 Thank you for your help!!!! Quote Link to comment Share on other sites More sharing options...
0 DR4LUC0N Posted April 18, 2022 Group: Members Topic Count: 33 Topics Per Day: 0.01 Content Count: 135 Reputation: 6 Joined: 04/04/12 Last Seen: June 19, 2023 Author Share Posted April 18, 2022 (edited) So I'm using Visual Studio, unfortunately there's no defined number of Permissions for PC_PERM_MAX. It looks like it automatically identify all of them. Quote pc.hpp uint32 login_id1, login_id2; uint64 class_; //This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex] int group_id; std::shared_ptr<s_player_group> group; std::bitset<PC_PERM_MAX> permissions; // group permissions have to be copied, because they might be adjusted by atcommand addperm int count_rewarp; //count how many time we being rewarped and Quote pc_groups.hpp enum e_pc_permission : uint32 { PC_PERM_TRADE = 0, PC_PERM_PARTY, PC_PERM_ALL_SKILL, PC_PERM_USE_ALL_EQUIPMENT, PC_PERM_SKILL_UNCONDITIONAL, PC_PERM_JOIN_ALL_CHAT, PC_PERM_NO_CHAT_KICK, PC_PERM_HIDE_SESSION, PC_PERM_WHO_DISPLAY_AID, PC_PERM_RECEIVE_HACK_INFO, PC_PERM_WARP_ANYWHERE, PC_PERM_VIEW_HPMETER, PC_PERM_VIEW_EQUIPMENT, PC_PERM_USE_CHECK, PC_PERM_USE_CHANGEMAPTYPE, PC_PERM_USE_ALL_COMMANDS, PC_PERM_RECEIVE_REQUESTS, PC_PERM_SHOW_BOSS, PC_PERM_DISABLE_PVM, PC_PERM_DISABLE_PVP, PC_PERM_DISABLE_CMD_DEAD, PC_PERM_CHANNEL_ADMIN, PC_PERM_TRADE_BOUNDED, PC_PERM_ITEM_UNCONDITIONAL, PC_PERM_ENABLE_COMMAND, PC_PERM_BYPASS_STAT_ONCLONE, PC_PERM_BYPASS_MAX_STAT, PC_PERM_ATTENDANCE, //.. add other here PC_PERM_MAX, PC_PERM_MAILER, PC_ANTI_ABUSE, }; static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, { "attendance",PC_PERM_ATTENDANCE }, { "can_mail",PC_PERM_MAILER }, { "anti_abuse",PC_ANTI_ABUSE }, }; These are the only 2 mentions of PC_PERM_MAX. Edited April 18, 2022 by DR4LUC0N Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted April 18, 2022 Group: Developer Topic Count: 33 Topics Per Day: 0.01 Content Count: 790 Reputation: 225 Joined: 01/30/13 Last Seen: 12 hours ago Share Posted April 18, 2022 Ah you define PC_PERM_MAX in the enum (first one is 0, second is 1, third is 2, etc.). You will have to put it last so that it works. Quote Link to comment Share on other sites More sharing options...
Question
DR4LUC0N
So I just updated my server to the newest git version. I have a few custom group permissions, but I can't seem to fix this error.
Here's the pc_groups.hpp file info
And the error in terminal...
Any help appreciated thank you.
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.