diff options
71 files changed, 1314 insertions, 932 deletions
diff --git a/sql/updates/auth/2013_08_30_00_auth_misc.sql b/sql/updates/auth/2013_08_30_00_auth_misc.sql new file mode 100644 index 00000000000..1e790ce7e28 --- /dev/null +++ b/sql/updates/auth/2013_08_30_00_auth_misc.sql @@ -0,0 +1,41 @@ +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 200 AND 216; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(200, 'Command: .rbac'), +(201, 'Command: .rbac account'), +(202, 'Command: .rbac account group'), +(203, 'Command: .rbac account group add'), +(204, 'Command: .rbac account group remove'), +(205, 'Command: .rbac account role'), +(206, 'Command: .rbac account role grant'), +(207, 'Command: .rbac account role deny'), +(208, 'Command: .rbac account role revoke'), +(209, 'Command: .rbac account permission'), +(210, 'Command: .rbac account permission grant'), +(211, 'Command: .rbac account permission deny'), +(212, 'Command: .rbac account permission revoke'), +(213, 'Command: .rbac list'), +(214, 'Command: .rbac list groups'), +(215, 'Command: .rbac list roles'), +(216, 'Command: .rbac list permissions'); + +-- Add Permissions to "Administrator Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `roleId` = 4 AND `permissionId` BETWEEN 200 AND 216; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(4, 200), +(4, 201), +(4, 202), +(4, 203), +(4, 204), +(4, 205), +(4, 206), +(4, 207), +(4, 208), +(4, 209), +(4, 210), +(4, 211), +(4, 212), +(4, 213), +(4, 214), +(4, 215), +(4, 216); diff --git a/sql/updates/auth/2013_08_30_01_auth_misc.sql b/sql/updates/auth/2013_08_30_01_auth_misc.sql new file mode 100644 index 00000000000..096588ba2ab --- /dev/null +++ b/sql/updates/auth/2013_08_30_01_auth_misc.sql @@ -0,0 +1,28 @@ +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 217 AND 229; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(217, 'Command: .account'), +(218, 'Command: .account addon'), +(219, 'Command: .account create'), +(220, 'Command: .account delete'), +(221, 'Command: .account lock'), +(222, 'Command: .account lock country'), +(223, 'Command: .account lock ip'), +(224, 'Command: .account onlinelist'), +(225, 'Command: .account password'), +(226, 'Command: .account set'), +(227, 'Command: .account set addon'), +(228, 'Command: .account set gmlevel'), +(229, 'Command: .account set password'); + +-- Add Permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN 217 AND 229; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(1, 217), +(2, 218), +(1, 221), +(1, 222), +(1, 223), +(1, 225), +(4, 226), +(4, 227); diff --git a/sql/updates/auth/2013_08_30_02_auth_misc.sql b/sql/updates/auth/2013_08_30_02_auth_misc.sql new file mode 100644 index 00000000000..da5f187627b --- /dev/null +++ b/sql/updates/auth/2013_08_30_02_auth_misc.sql @@ -0,0 +1,25 @@ +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 230 AND 238; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(230, 'achievement'), +(231, 'achievement add'), +(232, 'arena'), +(233, 'arena captain'), +(234, 'arena create'), +(235, 'arena disband'), +(236, 'arena info'), +(237, 'arena lookup'), +(238, 'arena rename'); + +-- Add Permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN 230 AND 238; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(4, 230), +(4, 231), +(3, 232), +(4, 233), +(4, 234), +(4, 235), +(3, 236), +(3, 237), +(4, 238); diff --git a/sql/updates/auth/2013_08_30_03_auth_misc.sql b/sql/updates/auth/2013_08_30_03_auth_misc.sql new file mode 100644 index 00000000000..a6495a2de6e --- /dev/null +++ b/sql/updates/auth/2013_08_30_03_auth_misc.sql @@ -0,0 +1,43 @@ +-- Add new permissions +DELETE FROM `rbac_permissions` WHERE `id` BETWEEN 239 AND 256; +INSERT INTO `rbac_permissions` (`id`, `name`) VALUES +(239, 'ban'), +(240, 'ban account'), +(241, 'ban character'), +(242, 'ban ip'), +(243, 'ban playeraccount'), +(244, 'baninfo'), +(245, 'baninfo account'), +(246, 'baninfo character'), +(247, 'baninfo ip'), +(248, 'banlist'), +(249, 'banlist account'), +(250, 'banlist character'), +(251, 'banlist ip'), +(252, 'unban'), +(253, 'unban account'), +(254, 'unban character'), +(255, 'unban ip'), +(256, 'unban playeraccount'); + +-- Add Permissions to "corresponding Commands Role" +DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN 239 AND 256; +INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES +(4, 239), +(4, 240), +(4, 241), +(4, 242), +(4, 243), +(4, 244), +(4, 245), +(4, 246), +(4, 247), +(4, 248), +(4, 249), +(4, 250), +(4, 251), +(4, 252), +(4, 253), +(4, 254), +(4, 255), +(4, 256); diff --git a/sql/updates/world/2013_08_30_00_world_gameobject_loot_template.sql b/sql/updates/world/2013_08_30_00_world_gameobject_loot_template.sql new file mode 100644 index 00000000000..3e6ed052f34 --- /dev/null +++ b/sql/updates/world/2013_08_30_00_world_gameobject_loot_template.sql @@ -0,0 +1 @@ +UPDATE `gameobject_loot_template` SET `item`=33700 WHERE `entry`=24157 AND `item`=37703; diff --git a/sql/updates/world/2013_08_30_01_world_command.sql b/sql/updates/world/2013_08_30_01_world_command.sql new file mode 100644 index 00000000000..e786c85a118 --- /dev/null +++ b/sql/updates/world/2013_08_30_01_world_command.sql @@ -0,0 +1,12 @@ +ALTER TABLE `command` CHANGE `security` `permission` SMALLINT(5) UNSIGNED DEFAULT 0 NOT NULL; + +-- Player commands +UPDATE `command` SET `permission` = 7 WHERE `permission` = 0; +-- Moderator commands +UPDATE `command` SET `permission` = 8 WHERE `permission` = 1; +-- GM commands +UPDATE `command` SET `permission` = 9 WHERE `permission` = 2; +-- administrator commands +UPDATE `command` SET `permission` = 10 WHERE `permission` = 3; +-- console commands +UPDATE `command` SET `permission` = 12 WHERE `permission` = 4; diff --git a/sql/updates/world/2013_08_30_02_world_command.sql b/sql/updates/world/2013_08_30_02_world_command.sql new file mode 100644 index 00000000000..7cf91342101 --- /dev/null +++ b/sql/updates/world/2013_08_30_02_world_command.sql @@ -0,0 +1,16 @@ +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = 201 WHERE `name` = '.rbac account'; +UPDATE `command` SET `permission` = 202 WHERE `name` = '.rbac account group'; +UPDATE `command` SET `permission` = 203 WHERE `name` = '.rbac account group add'; +UPDATE `command` SET `permission` = 204 WHERE `name` = '.rbac account group remove'; +UPDATE `command` SET `permission` = 205 WHERE `name` = '.rbac account role'; +UPDATE `command` SET `permission` = 206 WHERE `name` = '.rbac account role grant'; +UPDATE `command` SET `permission` = 207 WHERE `name` = '.rbac account role deny'; +UPDATE `command` SET `permission` = 208 WHERE `name` = '.rbac account role revoke'; +UPDATE `command` SET `permission` = 209 WHERE `name` = '.rbac account permission'; +UPDATE `command` SET `permission` = 210 WHERE `name` = '.rbac account permission grant'; +UPDATE `command` SET `permission` = 211 WHERE `name` = '.rbac account permission deny'; +UPDATE `command` SET `permission` = 212 WHERE `name` = '.rbac account permission revoke'; +UPDATE `command` SET `permission` = 214 WHERE `name` = '.rbac account list groups'; +UPDATE `command` SET `permission` = 215 WHERE `name` = '.rbac account list roles'; +UPDATE `command` SET `permission` = 216 WHERE `name` = '.rbac account list permissions'; diff --git a/sql/updates/world/2013_08_30_03_world_command.sql b/sql/updates/world/2013_08_30_03_world_command.sql new file mode 100644 index 00000000000..d7e11b45aed --- /dev/null +++ b/sql/updates/world/2013_08_30_03_world_command.sql @@ -0,0 +1,15 @@ +UPDATE `command` SET `name` = 'rbac account' WHERE `name` = '.rbac account'; +UPDATE `command` SET `name` = 'rbac account group' WHERE `name` = '.rbac account group'; +UPDATE `command` SET `name` = 'rbac account group add' WHERE `name` = '.rbac account group add'; +UPDATE `command` SET `name` = 'rbac account group remove' WHERE `name` = '.rbac account group remove'; +UPDATE `command` SET `name` = 'rbac account role' WHERE `name` = '.rbac account role'; +UPDATE `command` SET `name` = 'rbac account role grant' WHERE `name` = '.rbac account role grant'; +UPDATE `command` SET `name` = 'rbac account role deny' WHERE `name` = '.rbac account role deny'; +UPDATE `command` SET `name` = 'rbac account role revoke' WHERE `name` = '.rbac account role revoke'; +UPDATE `command` SET `name` = 'rbac account permission' WHERE `name` = '.rbac account permission'; +UPDATE `command` SET `name` = 'rbac account permission grant' WHERE `name` = '.rbac account permission grant'; +UPDATE `command` SET `name` = 'rbac account permission deny' WHERE `name` = '.rbac account permission deny'; +UPDATE `command` SET `name` = 'rbac account permission revoke' WHERE `name` = '.rbac account permission revoke'; +UPDATE `command` SET `name` = 'rbac account list groups' WHERE `name` = '.rbac account list groups'; +UPDATE `command` SET `name` = 'rbac account list roles' WHERE `name` = '.rbac account list roles'; +UPDATE `command` SET `name` = 'rbac account list permissions' WHERE `name` = '.rbac account list permissions'; diff --git a/sql/updates/world/2013_08_30_04_world_command.sql b/sql/updates/world/2013_08_30_04_world_command.sql new file mode 100644 index 00000000000..c77f651f9e5 --- /dev/null +++ b/sql/updates/world/2013_08_30_04_world_command.sql @@ -0,0 +1,14 @@ +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = 217 WHERE `name` = 'account'; +UPDATE `command` SET `permission` = 218 WHERE `name` = 'account addon'; +UPDATE `command` SET `permission` = 219 WHERE `name` = 'account create'; +UPDATE `command` SET `permission` = 220 WHERE `name` = 'account delete'; +UPDATE `command` SET `permission` = 221 WHERE `name` = 'account lock'; +UPDATE `command` SET `permission` = 222 WHERE `name` = 'account lock country'; +UPDATE `command` SET `permission` = 223 WHERE `name` = 'account lock ip'; +UPDATE `command` SET `permission` = 224 WHERE `name` = 'account onlinelist'; +UPDATE `command` SET `permission` = 225 WHERE `name` = 'account password'; +UPDATE `command` SET `permission` = 226 WHERE `name` = 'account set'; +UPDATE `command` SET `permission` = 227 WHERE `name` = 'account set addon'; +UPDATE `command` SET `permission` = 228 WHERE `name` = 'account set gmlevel'; +UPDATE `command` SET `permission` = 229 WHERE `name` = 'account set password'; diff --git a/sql/updates/world/2013_08_30_05_world_command.sql b/sql/updates/world/2013_08_30_05_world_command.sql new file mode 100644 index 00000000000..017ab4fa03e --- /dev/null +++ b/sql/updates/world/2013_08_30_05_world_command.sql @@ -0,0 +1,10 @@ +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = 230 WHERE `name` = 'achievement'; +UPDATE `command` SET `permission` = 231 WHERE `name` = 'achievement add'; +UPDATE `command` SET `permission` = 232 WHERE `name` = 'arena'; +UPDATE `command` SET `permission` = 233 WHERE `name` = 'arena captain'; +UPDATE `command` SET `permission` = 234 WHERE `name` = 'arena create'; +UPDATE `command` SET `permission` = 235 WHERE `name` = 'arena disband'; +UPDATE `command` SET `permission` = 236 WHERE `name` = 'arena info'; +UPDATE `command` SET `permission` = 237 WHERE `name` = 'arena lookup'; +UPDATE `command` SET `permission` = 238 WHERE `name` = 'arena rename'; diff --git a/sql/updates/world/2013_08_30_06_world_command.sql b/sql/updates/world/2013_08_30_06_world_command.sql new file mode 100644 index 00000000000..777319613ce --- /dev/null +++ b/sql/updates/world/2013_08_30_06_world_command.sql @@ -0,0 +1,19 @@ +-- Update command table with new RBAC permissions +UPDATE `command` SET `permission` = 239 WHERE `name` = 'ban'; +UPDATE `command` SET `permission` = 240 WHERE `name` = 'ban account'; +UPDATE `command` SET `permission` = 241 WHERE `name` = 'ban character'; +UPDATE `command` SET `permission` = 242 WHERE `name` = 'ban ip'; +UPDATE `command` SET `permission` = 243 WHERE `name` = 'ban playeraccount'; +UPDATE `command` SET `permission` = 244 WHERE `name` = 'baninfo'; +UPDATE `command` SET `permission` = 245 WHERE `name` = 'baninfo account'; +UPDATE `command` SET `permission` = 246 WHERE `name` = 'baninfo character'; +UPDATE `command` SET `permission` = 247 WHERE `name` = 'baninfo ip'; +UPDATE `command` SET `permission` = 248 WHERE `name` = 'banlist'; +UPDATE `command` SET `permission` = 249 WHERE `name` = 'banlist account'; +UPDATE `command` SET `permission` = 250 WHERE `name` = 'banlist character'; +UPDATE `command` SET `permission` = 251 WHERE `name` = 'banlist ip'; +UPDATE `command` SET `permission` = 252 WHERE `name` = 'unban'; +UPDATE `command` SET `permission` = 253 WHERE `name` = 'unban account'; +UPDATE `command` SET `permission` = 254 WHERE `name` = 'unban character'; +UPDATE `command` SET `permission` = 255 WHERE `name` = 'unban ip'; +UPDATE `command` SET `permission` = 256 WHERE `name` = 'unban playeraccount'; diff --git a/sql/updates/world/2013_08_30_06_world_eai_sai.sql b/sql/updates/world/2013_08_30_06_world_eai_sai.sql new file mode 100644 index 00000000000..33814d2cc36 --- /dev/null +++ b/sql/updates/world/2013_08_30_06_world_eai_sai.sql @@ -0,0 +1,25 @@ +DELETE FROM `creature_ai_scripts` WHERE `action1_type`=27; + +-- INSERT INTO `creature_ai_scripts` (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`) VALUES +-- ('343001', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5043', '17013', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Agility on Quest Complete'), +-- ('343002', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5042', '16612', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Strength on Quest Complete'), +-- ('343003', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5046', '16610', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Razorhide on Quest Complete'), +-- ('343004', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5045', '10767', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Rising Spirit on Quest Complete'), +-- ('343005', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '889', '16618', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Spirit of the Wind on Quest Complete'), +-- ('343006', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5044', '7764', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Wisdom of Agamaggan on Quest Complete'); + +UPDATE `smart_scripts` SET `action_type`=33, `action_param2`=0 WHERE `source_type`=0 AND `action_type`=27; -- by VM + +-- all quests that used RequiredSpellCastX fields +UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|32 WHERE `entry` IN +(28,29,532,553,849,877,905,974,2118,2932,2994,3825,5096,5163,5165,5441, +6124,6129,6381,6395,6661,8346,8889,9066,9169,9193,9275,9294,9391,9440, +9444,9447,9489,9526,9600,9629,9667,9685,9720,9805,9824,9874,9910,10011, +10078,10087,10129,10144,10146,10182,10208,10233,10240,10305,10306,10307, +10313,10335,10345,10392,10426,10446,10447,10488,10545,10564,10598,10637, +10688,10714,10771,10792,10802,10808,10813,10833,10859,10866,10895,10913, +10923,10935,11055,11150,11205,11232,11245,11247,11258,11259,11285,11330, +11332,11421,11496,11515,11523,11542,11543,11547,11568,11576,11582,11610, +11617,11637,11656,11677,11684,11694,11713,11880,12092,12094,12096,12154, +12172,12173,12180,12213,12232,12267,12417,12449,12502,12588,12591,12598, +12641,12669,12728,12859,13110,13119,13211); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 41dae740e59..2d6046cbddf 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -34,6 +34,7 @@ #include "SmartScript.h" #include "SpellMgr.h" #include "Vehicle.h" +#include "GameEventMgr.h" class TrinityStringTextBuilder { @@ -765,28 +766,6 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u player->GroupEventHappens(e.action.quest.quest, GetBaseObject()); break; } - case SMART_ACTION_CALL_CASTEDCREATUREORGO: - { - if (!GetBaseObject()) - break; - - ObjectList* targets = GetTargets(e, unit); - if (!targets) - break; - - for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) - { - if (IsPlayer((*itr))) - { - (*itr)->ToPlayer()->CastedCreatureOrGO(e.action.callCastedCreatureOrGO.creature, GetBaseObject()->GetGUID(), e.action.callCastedCreatureOrGO.spell); - TC_LOG_DEBUG(LOG_FILTER_DATABASE_AI, "SmartScript::ProcessAction: SMART_ACTION_CALL_CASTEDCREATUREORGO: Player %u, target %u, spell %u", - (*itr)->GetGUIDLow(), e.action.callCastedCreatureOrGO.creature, e.action.callCastedCreatureOrGO.spell); - } - } - - delete targets; - break; - } case SMART_ACTION_REMOVEAURASFROMSPELL: { ObjectList* targets = GetTargets(e, unit); @@ -2116,6 +2095,28 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u delete targets; break; } + case SMART_ACTION_GAME_EVENT_STOP: + { + uint32 eventId = e.action.gameEventStop.id; + if (!sGameEventMgr->IsActiveEvent(eventId)) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript::ProcessAction: At case SMART_ACTION_GAME_EVENT_STOP, inactive event (id: %u)", eventId); + return; + } + sGameEventMgr->StopEvent(eventId, true); + break; + } + case SMART_ACTION_GAME_EVENT_START: + { + uint32 eventId = e.action.gameEventStart.id; + if (sGameEventMgr->IsActiveEvent(eventId)) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript::ProcessAction: At case SMART_ACTION_GAME_EVENT_START, already activated event (id: %u)", eventId); + return; + } + sGameEventMgr->StartEvent(eventId, true); + break; + } default: TC_LOG_ERROR(LOG_FILTER_SQL, "SmartScript::ProcessAction: Entry %d SourceType %u, Event %u, Unhandled Action type %u", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); break; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 095440266f3..081599c322e 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -727,13 +727,6 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) return false; } break; - case SMART_ACTION_CALL_CASTEDCREATUREORGO: - if (!IsCreatureValid(e, e.action.callCastedCreatureOrGO.creature)) - return false; - - if (!IsSpellValid(e, e.action.callCastedCreatureOrGO.spell)) - return false; - break; case SMART_ACTION_REMOVEAURASFROMSPELL: if (e.action.removeAura.spell != 0 && !IsSpellValid(e, e.action.removeAura.spell)) return false; @@ -866,6 +859,44 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) return false; } break; + case SMART_ACTION_GAME_EVENT_STOP: + { + uint32 eventId = e.action.gameEventStop.id; + + GameEventMgr::GameEventDataMap const& events = sGameEventMgr->GetEventMap(); + if (eventId < 1 || eventId >= events.size()) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %u SourceType %u Event %u Action %u uses non-existent event, eventId %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.gameEventStop.id); + return false; + } + + GameEventData const& eventData = events[eventId]; + if (!eventData.isValid()) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %u SourceType %u Event %u Action %u uses non-existent event, eventId %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.gameEventStop.id); + return false; + } + break; + } + case SMART_ACTION_GAME_EVENT_START: + { + uint32 eventId = e.action.gameEventStart.id; + + GameEventMgr::GameEventDataMap const& events = sGameEventMgr->GetEventMap(); + if (eventId < 1 || eventId >= events.size()) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %u SourceType %u Event %u Action %u uses non-existent event, eventId %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.gameEventStart.id); + return false; + } + + GameEventData const& eventData = events[eventId]; + if (!eventData.isValid()) + { + TC_LOG_ERROR(LOG_FILTER_SQL, "SmartAIMgr: Entry %u SourceType %u Event %u Action %u uses non-existent event, eventId %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.gameEventStart.id); + return false; + } + break; + } case SMART_ACTION_FOLLOW: case SMART_ACTION_SET_ORIENTATION: case SMART_ACTION_STORE_TARGET_LIST: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 81336d0e0ca..0138d2b07a3 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -418,7 +418,7 @@ enum SMART_ACTION SMART_ACTION_EVADE = 24, // No Params SMART_ACTION_FLEE_FOR_ASSIST = 25, // With Emote SMART_ACTION_CALL_GROUPEVENTHAPPENS = 26, // QuestID - SMART_ACTION_CALL_CASTEDCREATUREORGO = 27, // CreatureId, SpellId + // none = 27, SMART_ACTION_REMOVEAURASFROMSPELL = 28, // Spellid, 0 removes all auras SMART_ACTION_FOLLOW = 29, // Distance (0 = default), Angle (0 = default), EndCreatureEntry, credit, creditType (0monsterkill, 1event) SMART_ACTION_RANDOM_PHASE = 30, // PhaseId1, PhaseId2, PhaseId3... @@ -502,8 +502,10 @@ enum SMART_ACTION SMART_ACTION_SET_POWER = 108, // PowerType, newPower SMART_ACTION_ADD_POWER = 109, // PowerType, newPower SMART_ACTION_REMOVE_POWER = 110, // PowerType, newPower + SMART_ACTION_GAME_EVENT_STOP = 111, // GameEventId + SMART_ACTION_GAME_EVENT_START = 112, // GameEventId - SMART_ACTION_END = 111 + SMART_ACTION_END = 113 }; struct SmartAction @@ -628,12 +630,6 @@ struct SmartAction struct { - uint32 creature; - uint32 spell; - } callCastedCreatureOrGO; - - struct - { uint32 spell; } removeAura; @@ -957,6 +953,16 @@ struct SmartAction uint32 newPower; } power; + struct + { + uint32 id; + } gameEventStop; + + struct + { + uint32 id; + } gameEventStart; + //! Note for any new future actions //! All parameters must have type uint32 diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 10f00c0a279..55f8527a125 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -59,7 +59,7 @@ enum RBACPermissions RBAC_PERM_GAMEMASTER_COMMANDS = 9,
RBAC_PERM_ADMINISTRATOR_COMMANDS = 10,
RBAC_PERM_LOG_GM_TRADE = 11,
- // Free = 12
+ RBAC_PERM_CONSOLE_COMMANDS = 12, // Not pressent in DB
RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES = 13,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_TEAMMASK = 14,
RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_CLASSMASK = 15,
@@ -96,6 +96,66 @@ enum RBACPermissions RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR = 46,
RBAC_PERM_CHECK_FOR_LOWER_SECURITY = 47,
RBAC_PERM_COMMANDS_PINFO_CHECK_PERSONAL_DATA = 48,
+ // Leave some space for core permissions
+ RBAC_PERM_COMMAND_RBAC = 200,
+ RBAC_PERM_COMMAND_RBAC_ACC = 201,
+ RBAC_PERM_COMMAND_RBAC_ACC_GROUP = 202,
+ RBAC_PERM_COMMAND_RBAC_ACC_GROUP_ADD = 203,
+ RBAC_PERM_COMMAND_RBAC_ACC_GROUP_DEL = 204,
+ RBAC_PERM_COMMAND_RBAC_ACC_ROLE = 205,
+ RBAC_PERM_COMMAND_RBAC_ACC_ROLE_GRANT = 206,
+ RBAC_PERM_COMMAND_RBAC_ACC_ROLE_DENY = 207,
+ RBAC_PERM_COMMAND_RBAC_ACC_ROLE_REVOKE = 208,
+ RBAC_PERM_COMMAND_RBAC_ACC_PERM = 209,
+ RBAC_PERM_COMMAND_RBAC_ACC_PERM_GRANT = 210,
+ RBAC_PERM_COMMAND_RBAC_ACC_PERM_DENY = 211,
+ RBAC_PERM_COMMAND_RBAC_ACC_PERM_REVOKE = 212,
+ RBAC_PERM_COMMAND_RBAC_LIST = 213,
+ RBAC_PERM_COMMAND_RBAC_LIST_GROUPS = 214,
+ RBAC_PERM_COMMAND_RBAC_LIST_ROLES = 215,
+ RBAC_PERM_COMMAND_RBAC_LIST_PERMS = 216,
+ RBAC_PERM_COMMAND_ACCOUNT = 217,
+ RBAC_PERM_COMMAND_ACCOUNT_ADDON = 218,
+ RBAC_PERM_COMMAND_ACCOUNT_CREATE = 219,
+ RBAC_PERM_COMMAND_ACCOUNT_DELETE = 220,
+ RBAC_PERM_COMMAND_ACCOUNT_LOCK = 221,
+ RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY = 222,
+ RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP = 223,
+ RBAC_PERM_COMMAND_ACCOUNT_ONLINE_LIST = 224,
+ RBAC_PERM_COMMAND_ACCOUNT_PASSWORD = 225,
+ RBAC_PERM_COMMAND_ACCOUNT_SET = 226,
+ RBAC_PERM_COMMAND_ACCOUNT_SET_ADDON = 227,
+ RBAC_PERM_COMMAND_ACCOUNT_SET_GMLEVEL = 228,
+ RBAC_PERM_COMMAND_ACCOUNT_SET_PASSWORD = 229,
+ RBAC_PERM_COMMAND_ACHIEVEMENT = 230,
+ RBAC_PERM_COMMAND_ACHIEVEMENT_ADD = 231,
+ RBAC_PERM_COMMAND_ARENA = 232,
+ RBAC_PERM_COMMAND_ARENA_CAPTAIN = 233,
+ RBAC_PERM_COMMAND_ARENA_CREATE = 234,
+ RBAC_PERM_COMMAND_ARENA_DISBAND = 235,
+ RBAC_PERM_COMMAND_ARENA_INFO = 236,
+ RBAC_PERM_COMMAND_ARENA_LOOKUP = 237,
+ RBAC_PERM_COMMAND_ARENA_RENAME = 238,
+ RBAC_PERM_COMMAND_BAN = 239,
+ RBAC_PERM_COMMAND_BAN_ACCOUNT = 240,
+ RBAC_PERM_COMMAND_BAN_CHARACTER = 241,
+ RBAC_PERM_COMMAND_BAN_IP = 242,
+ RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT = 243,
+ RBAC_PERM_COMMAND_BANINFO = 244,
+ RBAC_PERM_COMMAND_BANINFO_ACCOUNT = 245,
+ RBAC_PERM_COMMAND_BANINFO_CHARACTER = 246,
+ RBAC_PERM_COMMAND_BANINFO_IP = 247,
+ RBAC_PERM_COMMAND_BANLIST = 248,
+ RBAC_PERM_COMMAND_BANLIST_ACCOUNT = 249,
+ RBAC_PERM_COMMAND_BANLIST_CHARACTER = 250,
+ RBAC_PERM_COMMAND_BANLIST_IP = 251,
+ RBAC_PERM_COMMAND_UNBAN = 252,
+ RBAC_PERM_COMMAND_UNBAN_ACCOUNT = 253,
+ RBAC_PERM_COMMAND_UNBAN_CHARACTER = 254,
+ RBAC_PERM_COMMAND_UNBAN_IP = 255,
+ RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT = 256,
+
+ // custom permissions 1000+
RBAC_PERM_MAX
};
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index e8b4c91b2cd..fdaaac394f4 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -95,7 +95,7 @@ ChatCommand* ChatHandler::getCommandTable() Field* fields = result->Fetch(); std::string name = fields[0].GetString(); - SetDataForCommandInTable(commandTableCache, name.c_str(), fields[1].GetUInt8(), fields[2].GetString(), name); + SetDataForCommandInTable(commandTableCache, name.c_str(), fields[1].GetUInt16(), fields[2].GetString(), name); } while (result->NextRow()); } @@ -122,28 +122,7 @@ const char *ChatHandler::GetTrinityString(int32 entry) const bool ChatHandler::isAvailable(ChatCommand const& cmd) const { - uint32 permission = 0; - - ///@Workaround:: Fast adaptation to RBAC system till all commands are moved to permissions - switch (AccountTypes(cmd.SecurityLevel)) - { - case SEC_ADMINISTRATOR: - permission = RBAC_PERM_ADMINISTRATOR_COMMANDS; - break; - case SEC_GAMEMASTER: - permission = RBAC_PERM_GAMEMASTER_COMMANDS; - break; - case SEC_MODERATOR: - permission = RBAC_PERM_MODERATOR_COMMANDS; - break; - case SEC_PLAYER: - permission = RBAC_PERM_PLAYER_COMMANDS; - break; - default: // Allow custom security levels for commands - return m_session->GetSecurity() >= AccountTypes(cmd.SecurityLevel); - } - - return HasPermission(permission); + return HasPermission(cmd.Permission); } bool ChatHandler::HasLowerSecurity(Player* target, uint64 guid, bool strong) @@ -299,7 +278,7 @@ void ChatHandler::PSendSysMessage(const char *format, ...) SendSysMessage(str); } -bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, const std::string& fullcmd) +bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, std::string const& fullcmd) { char const* oldtext = text; std::string cmd = ""; @@ -325,9 +304,7 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, co if (!hasStringAbbr(table[j].Name, cmd.c_str())) continue; - if (strcmp(table[j].Name, cmd.c_str()) != 0) - continue; - else + if (strcmp(table[j].Name, cmd.c_str()) == 0) { match = true; break; @@ -361,28 +338,31 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, co // table[i].Name == "" is special case: send original command to handler if ((table[i].Handler)(this, table[i].Name[0] != '\0' ? text : oldtext)) { - // FIXME: When Command system is moved to RBAC this check must be changed - if (!AccountMgr::IsPlayerAccount(table[i].SecurityLevel)) + if (!m_session) // ignore console + return true; + + Player* player = m_session->GetPlayer(); + if (!AccountMgr::IsPlayerAccount(m_session->GetSecurity())) { - // chat case - if (m_session) + uint64 guid = player->GetSelection(); + uint32 areaId = player->GetAreaId(); + std::string areaName = "Unknown"; + std::string zoneName = "Unknown"; + if (AreaTableEntry const* area = GetAreaEntryByAreaID(areaId)) { - Player* p = m_session->GetPlayer(); - uint64 sel_guid = p->GetSelection(); - uint32 areaId = p->GetAreaId(); - std::string areaName = "Unknown"; - std::string zoneName = "Unknown"; - if (AreaTableEntry const* area = GetAreaEntryByAreaID(areaId)) - { - areaName = area->area_name; - if (AreaTableEntry const* zone = GetAreaEntryByAreaID(area->zone)) - zoneName = zone->area_name; - } - - sLog->outCommand(m_session->GetAccountId(), "Command: %s [Player: %s (Guid: %u) (Account: %u) X: %f Y: %f Z: %f Map: %u (%s) Area: %u (%s) Zone: %s Selected %s: %s (GUID: %u)]", - fullcmd.c_str(), p->GetName().c_str(), GUID_LOPART(p->GetGUID()), m_session->GetAccountId(), p->GetPositionX(), p->GetPositionY(), p->GetPositionZ(), p->GetMapId(), p->GetMap() ? p->GetMap()->GetMapName() : "Unknown", areaId, areaName.c_str(), zoneName.c_str(), - GetLogNameForGuid(sel_guid), (p->GetSelectedUnit()) ? p->GetSelectedUnit()->GetName().c_str() : "", GUID_LOPART(sel_guid)); + areaName = area->area_name; + if (AreaTableEntry const* zone = GetAreaEntryByAreaID(area->zone)) + zoneName = zone->area_name; } + + sLog->outCommand(m_session->GetAccountId(), "Command: %s [Player: %s (Guid: %u) (Account: %u) X: %f Y: %f Z: %f Map: %u (%s) Area: %u (%s) Zone: %s Selected %s: %s (GUID: %u)]", + fullcmd.c_str(), player->GetName().c_str(), GUID_LOPART(player->GetGUID()), + m_session->GetAccountId(), player->GetPositionX(), player->GetPositionY(), + player->GetPositionZ(), player->GetMapId(), + player->GetMap() ? player->GetMap()->GetMapName() : "Unknown", + areaId, areaName.c_str(), zoneName.c_str(), GetLogNameForGuid(guid), + (player->GetSelectedUnit()) ? player->GetSelectedUnit()->GetName().c_str() : "", + GUID_LOPART(guid)); } } // some commands have custom error messages. Don't send the default one in these cases. @@ -400,7 +380,7 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, co return false; } -bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text, uint32 security, std::string const& help, std::string const& fullcommand) +bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text, uint32 permission, std::string const& help, std::string const& fullcommand) { std::string cmd = ""; @@ -421,7 +401,7 @@ bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text, // select subcommand from child commands list (including "") if (table[i].ChildCommands != NULL) { - if (SetDataForCommandInTable(table[i].ChildCommands, text, security, help, fullcommand)) + if (SetDataForCommandInTable(table[i].ChildCommands, text, permission, help, fullcommand)) return true; else if (*text) return false; @@ -435,10 +415,10 @@ bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text, return false; } - if (table[i].SecurityLevel != security) - TC_LOG_INFO(LOG_FILTER_GENERAL, "Table `command` overwrite for command '%s' default security (%u) by %u", fullcommand.c_str(), table[i].SecurityLevel, security); + if (table[i].Permission != permission) + TC_LOG_INFO(LOG_FILTER_GENERAL, "Table `command` overwrite for command '%s' default permission (%u) by %u", fullcommand.c_str(), table[i].Permission, permission); - table[i].SecurityLevel = security; + table[i].Permission = permission; table[i].Help = help; return true; } @@ -462,9 +442,6 @@ bool ChatHandler::ParseCommands(char const* text) std::string fullcmd = text; - if (m_session && !m_session->HasPermission(RBAC_PERM_PLAYER_COMMANDS)) - return false; - /// chat case (.command or !command format) if (m_session) { diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 298bb91692b..372f98644b5 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -21,6 +21,7 @@ #include "SharedDefines.h" #include "WorldSession.h" +#include "RBAC.h" #include <vector> @@ -38,7 +39,7 @@ class ChatCommand { public: const char * Name; - uint32 SecurityLevel; // function pointer required correct align (use uint32) + uint32 Permission; // function pointer required correct align (use uint32) bool AllowConsole; bool (*Handler)(ChatHandler*, const char* args); std::string Help; @@ -129,7 +130,7 @@ class ChatHandler bool ShowHelpForCommand(ChatCommand* table, const char* cmd); protected: explicit ChatHandler() : m_session(NULL), sentErrorMessage(false) {} // for CLI subclass - static bool SetDataForCommandInTable(ChatCommand* table, const char* text, uint32 security, std::string const& help, std::string const& fullcommand); + static bool SetDataForCommandInTable(ChatCommand* table, const char* text, uint32 permission, std::string const& help, std::string const& fullcommand); bool ExecuteCommandInTable(ChatCommand* table, const char* text, std::string const& fullcmd); bool ShowHelpForSubCommands(ChatCommand* table, char const* cmd, char const* subcmd); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 2ea72ccc7e6..f6e6116f391 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1258,7 +1258,7 @@ void GameObject::Use(Unit* user) if (Battleground* bg = player->GetBattleground()) bg->EventPlayerUsedGO(player, this); - player->CastedCreatureOrGO(info->entry, GetGUID(), 0); + player->KillCreditGO(info->entry, GetGUID()); } if (uint32 trapEntry = info->goober.linkedTrapId) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7ec9f30acdf..02e95fd3975 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5729,15 +5729,10 @@ void Player::HandleBaseModValue(BaseModGroup modGroup, BaseModType modType, floa return; } - switch (modType) - { - case FLAT_MOD: - m_auraBaseMod[modGroup][modType] += apply ? amount : -amount; - break; - case PCT_MOD: - ApplyPercentModFloatVar(m_auraBaseMod[modGroup][modType], amount, apply); - break; - } + if (modType == FLAT_MOD) + m_auraBaseMod[modGroup][modType] += apply ? amount : -amount; + else // PCT_MOD + ApplyPercentModFloatVar(m_auraBaseMod[modGroup][modType], amount, apply); if (!CanModifyStats()) return; @@ -15005,7 +15000,7 @@ bool Player::CanCompleteQuest(uint32 quest_id) } } - if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST | QUEST_SPECIAL_FLAGS_SPEAKTO)) + if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL | QUEST_SPECIAL_FLAGS_SPEAKTO)) { for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; i++) { @@ -15164,7 +15159,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) questStatusData.ItemCount[i] = 0; } - if (quest->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST | QUEST_SPECIAL_FLAGS_SPEAKTO)) + if (quest->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL | QUEST_SPECIAL_FLAGS_SPEAKTO)) { for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i) questStatusData.CreatureOrGOCount[i] = 0; @@ -16364,7 +16359,7 @@ void Player::KilledMonsterCredit(uint32 entry, uint64 guid /*= 0*/) QuestStatusData& q_status = m_QuestStatus[questid]; if (q_status.Status == QUEST_STATUS_INCOMPLETE && (!GetGroup() || !GetGroup()->isRaidGroup() || qInfo->IsAllowedInRaid(GetMap()->GetDifficulty()))) { - if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST)) + if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL)) { for (uint8 j = 0; j < QUEST_OBJECTIVES_COUNT; ++j) { @@ -16438,10 +16433,8 @@ void Player::KilledPlayerCredit() } } -void Player::CastedCreatureOrGO(uint32 entry, uint64 guid, uint32 spell_id) +void Player::KillCreditGO(uint32 entry, uint64 guid) { - bool isCreature = IS_CRE_OR_VEH_GUID(guid); - uint16 addCastCount = 1; for (uint8 i = 0; i < MAX_QUEST_LOG_SIZE; ++i) { @@ -16457,41 +16450,16 @@ void Player::CastedCreatureOrGO(uint32 entry, uint64 guid, uint32 spell_id) if (q_status.Status == QUEST_STATUS_INCOMPLETE) { - if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST)) + if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL)) { for (uint8 j = 0; j < QUEST_OBJECTIVES_COUNT; ++j) { uint32 reqTarget = 0; - if (isCreature) - { - // creature activate objectives - if (qInfo->RequiredNpcOrGo[j] > 0) - { - // checked at quest_template loading - reqTarget = qInfo->RequiredNpcOrGo[j]; - if (reqTarget != entry) // if entry doesn't match, check for killcredits referenced in template - { - CreatureTemplate const* cinfo = sObjectMgr->GetCreatureTemplate(entry); - if (!cinfo) - { - TC_LOG_ERROR(LOG_FILTER_PLAYER, "Player::CastedCreatureOrGO: GetCreatureTemplate failed for entry %u. Skipping.", entry); - continue; - } - - for (uint8 k = 0; k < MAX_KILL_CREDIT; ++k) - if (cinfo->KillCredit[k] == reqTarget) - entry = cinfo->KillCredit[k]; - } - } - } - else - { - // GO activate objective - if (qInfo->RequiredNpcOrGo[j] < 0) - // checked at quest_template loading - reqTarget = - qInfo->RequiredNpcOrGo[j]; - } + // GO activate objective + if (qInfo->RequiredNpcOrGo[j] < 0) + // checked at quest_template loading + reqTarget = - qInfo->RequiredNpcOrGo[j]; // other not this creature/GO related objectives if (reqTarget != entry) @@ -16536,7 +16504,7 @@ void Player::TalkedToCreature(uint32 entry, uint64 guid) if (q_status.Status == QUEST_STATUS_INCOMPLETE) { - if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST | QUEST_SPECIAL_FLAGS_SPEAKTO)) + if (qInfo->HasSpecialFlag(QUEST_SPECIAL_FLAGS_KILL | QUEST_SPECIAL_FLAGS_SPEAKTO)) { for (uint8 j = 0; j < QUEST_OBJECTIVES_COUNT; ++j) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 491f8e39d28..da593348d57 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1592,7 +1592,7 @@ class Player : public Unit, public GridObject<Player> void KilledMonster(CreatureTemplate const* cInfo, uint64 guid); void KilledMonsterCredit(uint32 entry, uint64 guid = 0); void KilledPlayerCredit(); - void CastedCreatureOrGO(uint32 entry, uint64 guid, uint32 spell_id); + void KillCreditGO(uint32 entry, uint64 guid = 0); void TalkedToCreature(uint32 entry, uint64 guid); void MoneyChanged(uint32 value); void ReputationChanged(FactionEntry const* factionEntry); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 51c3be79c93..1cd6125cc95 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3917,7 +3917,7 @@ void ObjectMgr::LoadQuests() { // In fact SpeakTo and Kill are quite same: either you can speak to mob:SpeakTo or you can't:Kill/Cast - qinfo->SetSpecialFlag(QUEST_SPECIAL_FLAGS_KILL_OR_CAST | QUEST_SPECIAL_FLAGS_SPEAKTO); + qinfo->SetSpecialFlag(QUEST_SPECIAL_FLAGS_KILL | QUEST_SPECIAL_FLAGS_SPEAKTO); if (!qinfo->RequiredNpcOrGoCount[j]) { diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index d6cd2d3fa45..1cf197aeb69 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -268,6 +268,8 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result) void WorldSession::HandleCharEnumOpcode(WorldPacket & /*recvData*/) { + AntiDOS.AllowOpcode(CMSG_CHAR_ENUM, false); + // remove expired bans PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EXPIRED_BANS); CharacterDatabase.Execute(stmt); @@ -704,6 +706,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_SUCCESS); SendPacket(&data); + AntiDOS.AllowOpcode(CMSG_CHAR_ENUM, true); std::string IP_str = GetRemoteAddress(); TC_LOG_INFO(LOG_FILTER_CHARACTER, "Account: %d (IP: %s) Create Character:[%s] (GUID: %u)", GetAccountId(), IP_str.c_str(), createInfo->Name.c_str(), newChar.GetGUIDLow()); sScriptMgr->OnPlayerCreate(&newChar); @@ -781,6 +784,8 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket& recvData) WorldPacket data(SMSG_CHAR_DELETE, 1); data << uint8(CHAR_DELETE_SUCCESS); SendPacket(&data); + + AntiDOS.AllowOpcode(CMSG_CHAR_ENUM, true); } void WorldSession::HandlePlayerLoginOpcode(WorldPacket& recvData) diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 89e56d4a5cf..ee7c47ded91 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -171,7 +171,7 @@ enum QuestSpecialFlags QUEST_SPECIAL_FLAGS_DELIVER = 0x080, // Internal flag computed only QUEST_SPECIAL_FLAGS_SPEAKTO = 0x100, // Internal flag computed only - QUEST_SPECIAL_FLAGS_KILL_OR_CAST = 0x200, // Internal flag computed only + QUEST_SPECIAL_FLAGS_KILL = 0x200, // Internal flag computed only QUEST_SPECIAL_FLAGS_TIMED = 0x400, // Internal flag computed only QUEST_SPECIAL_FLAGS_PLAYER_KILL = 0x800 // Internal flag computed only }; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 1ce74d8dea1..2fe882d0c8a 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -102,6 +102,7 @@ bool WorldSessionFilter::Process(WorldPacket* packet) WorldSession::WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 expansion, time_t mute_time, LocaleConstant locale, uint32 recruiter, bool isARecruiter): m_muteTime(mute_time), m_timeOutTime(0), + AntiDOS(this), _player(NULL), m_Socket(sock), _security(sec), @@ -315,99 +316,108 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) !_recvQueue.empty() && _recvQueue.peek(true) != firstDelayedPacket && _recvQueue.next(packet, updater)) { - OpcodeHandler const* opHandle = opcodeTable[packet->GetOpcode()]; + if (!AntiDOS.EvaluateOpcode(*packet)) + { + delete packet; + packet = NULL; + KickPlayer(); + } - try + if (packet) { - switch (opHandle->Status) + OpcodeHandler const* opHandle = opcodeTable[packet->GetOpcode()]; + try { - case STATUS_LOGGEDIN: - if (!_player) - { - // skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets - //! If player didn't log out a while ago, it means packets are being sent while the server does not recognize - //! the client to be in world yet. We will re-add the packets to the bottom of the queue and process them later. - if (!m_playerRecentlyLogout) + switch (opHandle->Status) + { + case STATUS_LOGGEDIN: + if (!_player) { - //! Prevent infinite loop - if (!firstDelayedPacket) - firstDelayedPacket = packet; - //! Because checking a bool is faster than reallocating memory - deletePacket = false; - QueuePacket(packet); - //! Log - TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "Re-enqueueing packet with opcode %s with with status STATUS_LOGGEDIN. " - "Player is currently not in world yet.", GetOpcodeNameForLogging(packet->GetOpcode()).c_str()); + // skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets + //! If player didn't log out a while ago, it means packets are being sent while the server does not recognize + //! the client to be in world yet. We will re-add the packets to the bottom of the queue and process them later. + if (!m_playerRecentlyLogout) + { + //! Prevent infinite loop + if (!firstDelayedPacket) + firstDelayedPacket = packet; + //! Because checking a bool is faster than reallocating memory + deletePacket = false; + QueuePacket(packet); + //! Log + TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "Re-enqueueing packet with opcode %s with with status STATUS_LOGGEDIN. " + "Player is currently not in world yet.", GetOpcodeNameForLogging(packet->GetOpcode()).c_str()); + } } - } - else if (_player->IsInWorld()) - { - sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); - (this->*opHandle->Handler)(*packet); - LogUnprocessedTail(packet); - } - // lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer - break; - case STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT: - if (!_player && !m_playerRecentlyLogout && !m_playerLogout) // There's a short delay between _player = null and m_playerRecentlyLogout = true during logout - LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT", - "the player has not logged in yet and not recently logout"); - else - { - // not expected _player or must checked in packet hanlder - sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); - (this->*opHandle->Handler)(*packet); - LogUnprocessedTail(packet); - } - break; - case STATUS_TRANSFER: - if (!_player) - LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player has not logged in yet"); - else if (_player->IsInWorld()) - LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player is still in world"); - else - { + else if (_player->IsInWorld()) + { + sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); + (this->*opHandle->Handler)(*packet); + LogUnprocessedTail(packet); + } + // lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer + break; + case STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT: + if (!_player && !m_playerRecentlyLogout && !m_playerLogout) // There's a short delay between _player = null and m_playerRecentlyLogout = true during logout + LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT", + "the player has not logged in yet and not recently logout"); + else + { + // not expected _player or must checked in packet hanlder + sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); + (this->*opHandle->Handler)(*packet); + LogUnprocessedTail(packet); + } + break; + case STATUS_TRANSFER: + if (!_player) + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player has not logged in yet"); + else if (_player->IsInWorld()) + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player is still in world"); + else + { + sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); + (this->*opHandle->Handler)(*packet); + LogUnprocessedTail(packet); + } + break; + case STATUS_AUTHED: + // prevent cheating with skip queue wait + if (m_inQueue) + { + LogUnexpectedOpcode(packet, "STATUS_AUTHED", "the player not pass queue yet"); + break; + } + + // some auth opcodes can be recieved before STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT opcodes + // however when we recieve CMSG_CHAR_ENUM we are surely no longer during the logout process. + if (packet->GetOpcode() == CMSG_CHAR_ENUM) + m_playerRecentlyLogout = false; + sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); (this->*opHandle->Handler)(*packet); LogUnprocessedTail(packet); - } - break; - case STATUS_AUTHED: - // prevent cheating with skip queue wait - if (m_inQueue) - { - LogUnexpectedOpcode(packet, "STATUS_AUTHED", "the player not pass queue yet"); break; - } - - // some auth opcodes can be recieved before STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT opcodes - // however when we recieve CMSG_CHAR_ENUM we are surely no longer during the logout process. - if (packet->GetOpcode() == CMSG_CHAR_ENUM) - m_playerRecentlyLogout = false; - - sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); - (this->*opHandle->Handler)(*packet); - LogUnprocessedTail(packet); - break; - case STATUS_NEVER: - TC_LOG_ERROR(LOG_FILTER_OPCODES, "Received not allowed opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() - , GetPlayerInfo().c_str()); - break; - case STATUS_UNHANDLED: - TC_LOG_ERROR(LOG_FILTER_OPCODES, "Received not handled opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() - , GetPlayerInfo().c_str()); - break; + case STATUS_NEVER: + TC_LOG_ERROR(LOG_FILTER_OPCODES, "Received not allowed opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() + , GetPlayerInfo().c_str()); + break; + case STATUS_UNHANDLED: + TC_LOG_ERROR(LOG_FILTER_OPCODES, "Received not handled opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() + , GetPlayerInfo().c_str()); + break; + } + } + catch(ByteBufferException &) + { + TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSession::Update ByteBufferException occured while parsing a packet (opcode: %u) from client %s, accountid=%i. Skipped packet.", + packet->GetOpcode(), GetRemoteAddress().c_str(), GetAccountId()); + packet->hexlike(); } - } - catch(ByteBufferException &) - { - TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSession::Update ByteBufferException occured while parsing a packet (opcode: %u) from client %s, accountid=%i. Skipped packet.", - packet->GetOpcode(), GetRemoteAddress().c_str(), GetAccountId()); - packet->hexlike(); - } - if (deletePacket) - delete packet; + if (deletePacket) + delete packet; + } } if (m_Socket && !m_Socket->IsClosed() && _warden) @@ -580,6 +590,7 @@ void WorldSession::LogoutPlayer(bool save) m_playerLogout = false; m_playerSave = false; m_playerRecentlyLogout = true; + AntiDOS.AllowOpcode(CMSG_CHAR_ENUM, true); LogoutRequest(0); } @@ -1154,3 +1165,40 @@ void WorldSession::InvalidateRBACData() delete _RBACData; _RBACData = NULL; } + +bool WorldSession::DosProtection::EvaluateOpcode(WorldPacket& p) const +{ + if (IsOpcodeAllowed(p.GetOpcode())) + return true; + + // Opcode not allowed, let the punishment begin + TC_LOG_INFO(LOG_FILTER_NETWORKIO, "AntiDOS: Account %u, IP: %s, sent unacceptable packet (opc: %u, size: %u)", + Session->GetAccountId(), Session->GetRemoteAddress().c_str(), p.GetOpcode(), (uint32)p.size()); + + switch (_policy) + { + case POLICY_LOG: + return true; + case POLICY_KICK: + TC_LOG_INFO(LOG_FILTER_NETWORKIO, "AntiDOS: Player kicked!"); + return false; + case POLICY_BAN: + { + BanMode bm = (BanMode)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANMODE); + uint32 duration = sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANDURATION); // in seconds + std::string nameOrIp = ""; + switch (bm) + { + case BAN_CHARACTER: // not supported, ban account + case BAN_ACCOUNT: (void)sAccountMgr->GetName(Session->GetAccountId(), nameOrIp); break; + case BAN_IP: nameOrIp = Session->GetRemoteAddress(); break; + } + sWorld->BanAccount(bm, nameOrIp, duration, "DOS (Packet Flooding/Spoofing", "Server: AutoDOS"); + TC_LOG_INFO(LOG_FILTER_NETWORKIO, "AntiDOS: Player automatically banned for %u seconds.", duration); + + return false; + } + default: // invalid policy + return true; + } +} diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 646007a34e2..871f1df4d05 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -31,6 +31,7 @@ #include "WorldPacket.h" #include "Cryptography/BigNumber.h" #include "Opcodes.h" +#include "AccountMgr.h" class Creature; class GameObject; @@ -966,6 +967,40 @@ class WorldSession QueryCallback<PreparedQueryResult, CharacterCreateInfo*, true> _charCreateCallback; QueryResultHolderFuture _charLoginCallback; + friend class World; + protected: + class DosProtection + { + friend class World; + public: + DosProtection(WorldSession* s) : Session(s), _policy((Policy)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_POLICY)) {} + bool EvaluateOpcode(WorldPacket& p) const; + void AllowOpcode(uint16 opcode, bool allow) { _isOpcodeAllowed[opcode] = allow; } + protected: + enum Policy + { + POLICY_LOG, + POLICY_KICK, + POLICY_BAN, + }; + + bool IsOpcodeAllowed(uint16 opcode) const + { + OpcodeStatusMap::const_iterator itr = _isOpcodeAllowed.find(opcode); + if (itr == _isOpcodeAllowed.end()) + return true; // No presence in the map indicates this is the first time the opcode was sent this session, so allow + + return itr->second; + } + + WorldSession* Session; + + private: + typedef UNORDERED_MAP<uint16, bool> OpcodeStatusMap; + OpcodeStatusMap _isOpcodeAllowed; // could be bool array, but wouldn't be practical for game versions with non-linear opcodes + Policy _policy; + } AntiDOS; + private: // private trade methods void moveItems(Item* myItems[], Item* hisItems[]); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 80349754585..147bd989a66 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2565,17 +2565,9 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) { //AI functions if (spellHitTarget->GetTypeId() == TYPEID_UNIT) - { if (spellHitTarget->ToCreature()->IsAIEnabled) spellHitTarget->ToCreature()->AI()->SpellHit(m_caster, m_spellInfo); - // cast at creature (or GO) quest objectives update at successful cast finished (+channel finished) - // ignore pets or autorepeat/melee casts for speed (not exist quest for spells (hm...) - if (m_originalCaster && m_originalCaster->IsControlledByPlayer() && !spellHitTarget->ToCreature()->IsPet() && !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive()) - if (Player* p = m_originalCaster->GetCharmerOrOwnerPlayerOrPlayerItself()) - p->CastedCreatureOrGO(spellHitTarget->GetEntry(), spellHitTarget->GetGUID(), m_spellInfo->Id); - } - if (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->ToCreature()->IsAIEnabled) m_caster->ToCreature()->AI()->SpellHitTarget(spellHitTarget, m_spellInfo); @@ -2875,12 +2867,6 @@ void Spell::DoAllEffectOnTarget(GOTargetInfo* target) HandleEffects(NULL, NULL, go, effectNumber, SPELL_EFFECT_HANDLE_HIT_TARGET); CallScriptOnHitHandlers(); - - // cast at creature (or GO) quest objectives update at successful cast finished (+channel finished) - // ignore autorepeat/melee casts for speed (not exist quest for spells (hm...) - if (m_originalCaster && m_originalCaster->IsControlledByPlayer() && !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive()) - if (Player* p = m_originalCaster->GetCharmerOrOwnerPlayerOrPlayerItself()) - p->CastedCreatureOrGO(go->GetEntry(), go->GetGUID(), m_spellInfo->Id); CallScriptAfterHitHandlers(); } @@ -3645,40 +3631,6 @@ void Spell::update(uint32 difftime) if (m_timer == 0) { SendChannelUpdate(0); - - // channeled spell processed independently for quest targeting - // cast at creature (or GO) quest objectives update at successful cast channel finished - // ignore autorepeat/melee casts for speed (not exist quest for spells (hm...) - if (!IsAutoRepeat() && !IsNextMeleeSwingSpell()) - { - if (Player* p = m_caster->GetCharmerOrOwnerPlayerOrPlayerItself()) - { - for (std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) - { - TargetInfo* target = &*ihit; - if (!IS_CRE_OR_VEH_GUID(target->targetGUID)) - continue; - - Unit* unit = m_caster->GetGUID() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID); - if (unit == NULL) - continue; - - p->CastedCreatureOrGO(unit->GetEntry(), unit->GetGUID(), m_spellInfo->Id); - } - - for (std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit) - { - GOTargetInfo* target = &*ihit; - - GameObject* go = m_caster->GetMap()->GetGameObject(target->targetGUID); - if (!go) - continue; - - p->CastedCreatureOrGO(go->GetEntry(), go->GetGUID(), m_spellInfo->Id); - } - } - } - finish(); } break; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b92698c7daa..5fdc499403a 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1274,6 +1274,14 @@ void World::LoadConfigSettings(bool reload) m_float_configs[CONFIG_STATS_LIMITS_BLOCK] = sConfigMgr->GetFloatDefault("Stats.Limits.Block", 95.0f); m_float_configs[CONFIG_STATS_LIMITS_CRIT] = sConfigMgr->GetFloatDefault("Stats.Limits.Crit", 95.0f); + //packet spoof punishment + m_int_configs[CONFIG_PACKET_SPOOF_POLICY] = sConfigMgr->GetIntDefault("PacketSpoof.Policy", (uint32)WorldSession::DosProtection::POLICY_KICK); + m_int_configs[CONFIG_PACKET_SPOOF_BANMODE] = sConfigMgr->GetIntDefault("PacketSpoof.BanMode", (uint32)BAN_ACCOUNT); + if (m_int_configs[CONFIG_PACKET_SPOOF_BANMODE] == BAN_CHARACTER || m_int_configs[CONFIG_PACKET_SPOOF_BANMODE] > BAN_IP) + m_int_configs[CONFIG_PACKET_SPOOF_BANMODE] = BAN_ACCOUNT; + + m_int_configs[CONFIG_PACKET_SPOOF_BANDURATION] = sConfigMgr->GetIntDefault("PacketSpoof.BanDuration", 86400); + // call ScriptMgr if we're reloading the configuration if (reload) sScriptMgr->OnConfigLoad(reload); @@ -2344,6 +2352,12 @@ void World::KickAllLess(AccountTypes sec) BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, std::string const& duration, std::string const& reason, std::string const& author) { uint32 duration_secs = TimeStringToSecs(duration); + return BanAccount(mode, nameOrIP, duration_secs, reason, author); +} + +/// Ban an account or ban an IP address, duration is in seconds if positive, otherwise permban +BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, uint32 duration_secs, std::string const& reason, std::string const& author) +{ PreparedQueryResult resultAccounts = PreparedQueryResult(NULL); //used for kicking PreparedStatement* stmt = NULL; diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index cf57a178a2c..0ba76ff3ce2 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -343,6 +343,9 @@ enum WorldIntConfigs CONFIG_GUILD_UNDELETABLE_LEVEL, CONFIG_GUILD_DAILY_XP_CAP, CONFIG_GUILD_WEEKLY_REP_CAP, + CONFIG_PACKET_SPOOF_POLICY, + CONFIG_PACKET_SPOOF_BANMODE, + CONFIG_PACKET_SPOOF_BANDURATION, INT_CONFIG_VALUE_COUNT }; @@ -707,6 +710,7 @@ class World void KickAll(); void KickAllLess(AccountTypes sec); BanReturn BanAccount(BanMode mode, std::string const& nameOrIP, std::string const& duration, std::string const& reason, std::string const& author); + BanReturn BanAccount(BanMode mode, std::string const& nameOrIP, uint32 duration_secs, std::string const& reason, std::string const& author); bool RemoveBanAccount(BanMode mode, std::string const& nameOrIP); BanReturn BanCharacter(std::string const& name, std::string const& duration, std::string const& reason, std::string const& author); bool RemoveBanCharacter(std::string const& name); diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 9b98fb5d151..42e33faee1c 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -37,33 +37,33 @@ public: { static ChatCommand accountSetCommandTable[] = { - { "addon", SEC_ADMINISTRATOR, true, &HandleAccountSetAddonCommand, "", NULL }, - { "gmlevel", SEC_CONSOLE, true, &HandleAccountSetGmLevelCommand, "", NULL }, - { "password", SEC_CONSOLE, true, &HandleAccountSetPasswordCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "addon", RBAC_PERM_COMMAND_ACCOUNT_SET_ADDON, true, &HandleAccountSetAddonCommand, "", NULL }, + { "gmlevel", RBAC_PERM_COMMAND_ACCOUNT_SET_GMLEVEL, true, &HandleAccountSetGmLevelCommand, "", NULL }, + { "password", RBAC_PERM_COMMAND_ACCOUNT_SET_PASSWORD, true, &HandleAccountSetPasswordCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand accountLockCommandTable[] = { - { "country", SEC_PLAYER, true, &HandleAccountLockCountryCommand, "", NULL }, - { "ip", SEC_PLAYER, true, &HandleAccountLockIpCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL }, + { "country", RBAC_PERM_COMMAND_ACCOUNT_LOCK_COUNTRY, true, &HandleAccountLockCountryCommand, "", NULL }, + { "ip", RBAC_PERM_COMMAND_ACCOUNT_LOCK_IP, true, &HandleAccountLockIpCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand accountCommandTable[] = { - { "addon", SEC_MODERATOR, false, &HandleAccountAddonCommand, "", NULL }, - { "create", SEC_CONSOLE, true, &HandleAccountCreateCommand, "", NULL }, - { "delete", SEC_CONSOLE, true, &HandleAccountDeleteCommand, "", NULL }, - { "onlinelist", SEC_CONSOLE, true, &HandleAccountOnlineListCommand, "", NULL }, - { "lock", SEC_PLAYER, false, NULL, "", accountLockCommandTable }, - { "set", SEC_ADMINISTRATOR, true, NULL, "", accountSetCommandTable }, - { "password", SEC_PLAYER, false, &HandleAccountPasswordCommand, "", NULL }, - { "", SEC_PLAYER, false, &HandleAccountCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "addon", RBAC_PERM_COMMAND_ACCOUNT_ADDON, false, &HandleAccountAddonCommand, "", NULL }, + { "create", RBAC_PERM_COMMAND_ACCOUNT_CREATE, true, &HandleAccountCreateCommand, "", NULL }, + { "delete", RBAC_PERM_COMMAND_ACCOUNT_DELETE, true, &HandleAccountDeleteCommand, "", NULL }, + { "onlinelist", RBAC_PERM_COMMAND_ACCOUNT_ONLINE_LIST, true, &HandleAccountOnlineListCommand, "", NULL }, + { "lock", RBAC_PERM_COMMAND_ACCOUNT_LOCK, false, NULL, "", accountLockCommandTable }, + { "set", RBAC_PERM_COMMAND_ACCOUNT_SET, true, NULL, "", accountSetCommandTable }, + { "password", RBAC_PERM_COMMAND_ACCOUNT_PASSWORD, false, &HandleAccountPasswordCommand, "", NULL }, + { "", RBAC_PERM_COMMAND_ACCOUNT, false, &HandleAccountCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "account", SEC_PLAYER, true, NULL, "", accountCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "account", RBAC_PERM_COMMAND_ACCOUNT, true, NULL, "", accountCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_achievement.cpp b/src/server/scripts/Commands/cs_achievement.cpp index 8b7151046b3..bba55cd1fe8 100644 --- a/src/server/scripts/Commands/cs_achievement.cpp +++ b/src/server/scripts/Commands/cs_achievement.cpp @@ -37,13 +37,13 @@ public: { static ChatCommand achievementCommandTable[] = { - { "add", SEC_ADMINISTRATOR, false, &HandleAchievementAddCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "add", RBAC_PERM_COMMAND_ACHIEVEMENT_ADD, false, &HandleAchievementAddCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "achievement", SEC_ADMINISTRATOR, false, NULL, "", achievementCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "achievement", RBAC_PERM_COMMAND_ACHIEVEMENT, false, NULL, "", achievementCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_arena.cpp b/src/server/scripts/Commands/cs_arena.cpp index 4dbdab25747..90e47fda19f 100644 --- a/src/server/scripts/Commands/cs_arena.cpp +++ b/src/server/scripts/Commands/cs_arena.cpp @@ -38,18 +38,18 @@ public: { static ChatCommand arenaCommandTable[] = { - { "create", SEC_ADMINISTRATOR, true, &HandleArenaCreateCommand, "", NULL }, - { "disband", SEC_ADMINISTRATOR, true, &HandleArenaDisbandCommand, "", NULL }, - { "rename", SEC_ADMINISTRATOR, true, &HandleArenaRenameCommand, "", NULL }, - { "captain", SEC_ADMINISTRATOR, false, &HandleArenaCaptainCommand, "", NULL }, - { "info", SEC_GAMEMASTER, true, &HandleArenaInfoCommand, "", NULL }, - { "lookup", SEC_GAMEMASTER, false, &HandleArenaLookupCommand, "", NULL }, - { NULL, SEC_GAMEMASTER, false, NULL, "", NULL } + { "create", RBAC_PERM_COMMAND_ARENA_CREATE, true, &HandleArenaCreateCommand, "", NULL }, + { "disband", RBAC_PERM_COMMAND_ARENA_DISBAND, true, &HandleArenaDisbandCommand, "", NULL }, + { "rename", RBAC_PERM_COMMAND_ARENA_RENAME, true, &HandleArenaRenameCommand, "", NULL }, + { "captain", RBAC_PERM_COMMAND_ARENA_CAPTAIN, false, &HandleArenaCaptainCommand, "", NULL }, + { "info", RBAC_PERM_COMMAND_ARENA_INFO, true, &HandleArenaInfoCommand, "", NULL }, + { "lookup", RBAC_PERM_COMMAND_ARENA_LOOKUP, false, &HandleArenaLookupCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "arena", SEC_GAMEMASTER, false, NULL, "", arenaCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "arena", RBAC_PERM_COMMAND_ARENA, false, NULL, "", arenaCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp index c3eb92cae32..b12e058a78f 100644 --- a/src/server/scripts/Commands/cs_ban.cpp +++ b/src/server/scripts/Commands/cs_ban.cpp @@ -39,41 +39,41 @@ public: { static ChatCommand unbanCommandTable[] = { - { "account", SEC_ADMINISTRATOR, true, &HandleUnBanAccountCommand, "", NULL }, - { "character", SEC_ADMINISTRATOR, true, &HandleUnBanCharacterCommand, "", NULL }, - { "playeraccount", SEC_ADMINISTRATOR, true, &HandleUnBanAccountByCharCommand, "", NULL }, - { "ip", SEC_ADMINISTRATOR, true, &HandleUnBanIPCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "account", RBAC_PERM_COMMAND_UNBAN_ACCOUNT, true, &HandleUnBanAccountCommand, "", NULL }, + { "character", RBAC_PERM_COMMAND_UNBAN_CHARACTER, true, &HandleUnBanCharacterCommand, "", NULL }, + { "playeraccount", RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT, true, &HandleUnBanAccountByCharCommand, "", NULL }, + { "ip", RBAC_PERM_COMMAND_UNBAN_IP, true, &HandleUnBanIPCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand banlistCommandTable[] = { - { "account", SEC_ADMINISTRATOR, true, &HandleBanListAccountCommand, "", NULL }, - { "character", SEC_ADMINISTRATOR, true, &HandleBanListCharacterCommand, "", NULL }, - { "ip", SEC_ADMINISTRATOR, true, &HandleBanListIPCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "account", RBAC_PERM_COMMAND_BANLIST_ACCOUNT, true, &HandleBanListAccountCommand, "", NULL }, + { "character", RBAC_PERM_COMMAND_BANLIST_CHARACTER, true, &HandleBanListCharacterCommand, "", NULL }, + { "ip", RBAC_PERM_COMMAND_BANLIST_IP, true, &HandleBanListIPCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand baninfoCommandTable[] = { - { "account", SEC_ADMINISTRATOR, true, &HandleBanInfoAccountCommand, "", NULL }, - { "character", SEC_ADMINISTRATOR, true, &HandleBanInfoCharacterCommand, "", NULL }, - { "ip", SEC_ADMINISTRATOR, true, &HandleBanInfoIPCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "account", RBAC_PERM_COMMAND_BANINFO_ACCOUNT, true, &HandleBanInfoAccountCommand, "", NULL }, + { "character", RBAC_PERM_COMMAND_BANINFO_CHARACTER, true, &HandleBanInfoCharacterCommand, "", NULL }, + { "ip", RBAC_PERM_COMMAND_BANINFO_IP, true, &HandleBanInfoIPCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand banCommandTable[] = { - { "account", SEC_ADMINISTRATOR, true, &HandleBanAccountCommand, "", NULL }, - { "character", SEC_ADMINISTRATOR, true, &HandleBanCharacterCommand, "", NULL }, - { "playeraccount", SEC_ADMINISTRATOR, true, &HandleBanAccountByCharCommand, "", NULL }, - { "ip", SEC_ADMINISTRATOR, true, &HandleBanIPCommand, "", NULL }, - { NULL, 0, false, NULL, "", NULL } + { "account", RBAC_PERM_COMMAND_BAN_ACCOUNT, true, &HandleBanAccountCommand, "", NULL }, + { "character", RBAC_PERM_COMMAND_BAN_CHARACTER, true, &HandleBanCharacterCommand, "", NULL }, + { "playeraccount", RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT, true, &HandleBanAccountByCharCommand, "", NULL }, + { "ip", RBAC_PERM_COMMAND_BAN_IP, true, &HandleBanIPCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "ban", SEC_ADMINISTRATOR, true, NULL, "", banCommandTable }, - { "baninfo", SEC_ADMINISTRATOR, true, NULL, "", baninfoCommandTable }, - { "banlist", SEC_ADMINISTRATOR, true, NULL, "", banlistCommandTable }, - { "unban", SEC_ADMINISTRATOR, true, NULL, "", unbanCommandTable }, - { NULL, 0, false, NULL, "", NULL } + { "ban", RBAC_PERM_COMMAND_BAN, true, NULL, "", banCommandTable }, + { "baninfo", RBAC_PERM_COMMAND_BANINFO, true, NULL, "", baninfoCommandTable }, + { "banlist", RBAC_PERM_COMMAND_BANLIST, true, NULL, "", banlistCommandTable }, + { "unban", RBAC_PERM_COMMAND_UNBAN, true, NULL, "", unbanCommandTable }, + { NULL, 0, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_bf.cpp b/src/server/scripts/Commands/cs_bf.cpp index 4593a88cc90..5ab94062a85 100644 --- a/src/server/scripts/Commands/cs_bf.cpp +++ b/src/server/scripts/Commands/cs_bf.cpp @@ -35,16 +35,16 @@ public: { static ChatCommand battlefieldcommandTable[] = { - { "start", SEC_ADMINISTRATOR, false, &HandleBattlefieldStart, "", NULL }, - { "stop", SEC_ADMINISTRATOR, false, &HandleBattlefieldEnd, "", NULL }, - { "switch", SEC_ADMINISTRATOR, false, &HandleBattlefieldSwitch, "", NULL }, - { "timer", SEC_ADMINISTRATOR, false, &HandleBattlefieldTimer, "", NULL }, - { "enable", SEC_ADMINISTRATOR, false, &HandleBattlefieldEnable, "", NULL }, + { "start", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldStart, "", NULL }, + { "stop", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldEnd, "", NULL }, + { "switch", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldSwitch, "", NULL }, + { "timer", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldTimer, "", NULL }, + { "enable", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldEnable, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "bf", SEC_ADMINISTRATOR, false, NULL, "", battlefieldcommandTable }, + { "bf", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", battlefieldcommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_cast.cpp b/src/server/scripts/Commands/cs_cast.cpp index 1dbfb0c2b8a..02a3aec9e82 100644 --- a/src/server/scripts/Commands/cs_cast.cpp +++ b/src/server/scripts/Commands/cs_cast.cpp @@ -37,17 +37,17 @@ public: { static ChatCommand castCommandTable[] = { - { "back", SEC_ADMINISTRATOR, false, &HandleCastBackCommand, "", NULL }, - { "dist", SEC_ADMINISTRATOR, false, &HandleCastDistCommand, "", NULL }, - { "self", SEC_ADMINISTRATOR, false, &HandleCastSelfCommand, "", NULL }, - { "target", SEC_ADMINISTRATOR, false, &HandleCastTargetCommad, "", NULL }, - { "dest", SEC_ADMINISTRATOR, false, &HandleCastDestCommand, "", NULL }, - { "", SEC_ADMINISTRATOR, false, &HandleCastCommand, "", NULL }, + { "back", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastBackCommand, "", NULL }, + { "dist", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastDistCommand, "", NULL }, + { "self", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastSelfCommand, "", NULL }, + { "target", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastTargetCommad, "", NULL }, + { "dest", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastDestCommand, "", NULL }, + { "", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCastCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "cast", SEC_ADMINISTRATOR, false, NULL, "", castCommandTable }, + { "cast", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", castCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 3b0e92a6905..e7515d18d08 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -39,38 +39,38 @@ public: { static ChatCommand pdumpCommandTable[] = { - { "load", SEC_ADMINISTRATOR, true, &HandlePDumpLoadCommand, "", NULL }, - { "write", SEC_ADMINISTRATOR, true, &HandlePDumpWriteCommand, "", NULL }, + { "load", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandlePDumpLoadCommand, "", NULL }, + { "write", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandlePDumpWriteCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand characterDeletedCommandTable[] = { - { "delete", SEC_CONSOLE, true, &HandleCharacterDeletedDeleteCommand, "", NULL }, - { "list", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedListCommand, "", NULL }, - { "restore", SEC_ADMINISTRATOR, true, &HandleCharacterDeletedRestoreCommand, "", NULL }, - { "old", SEC_CONSOLE, true, &HandleCharacterDeletedOldCommand, "", NULL }, + { "delete", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterDeletedDeleteCommand, "", NULL }, + { "list", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterDeletedListCommand, "", NULL }, + { "restore", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterDeletedRestoreCommand, "", NULL }, + { "old", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterDeletedOldCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand characterCommandTable[] = { - { "customize", SEC_GAMEMASTER, true, &HandleCharacterCustomizeCommand, "", NULL }, - { "changefaction", SEC_GAMEMASTER, true, &HandleCharacterChangeFactionCommand, "", NULL }, - { "changerace", SEC_GAMEMASTER, true, &HandleCharacterChangeRaceCommand, "", NULL }, - { "deleted", SEC_GAMEMASTER, true, NULL, "", characterDeletedCommandTable }, - { "erase", SEC_CONSOLE, true, &HandleCharacterEraseCommand, "", NULL }, - { "level", SEC_ADMINISTRATOR, true, &HandleCharacterLevelCommand, "", NULL }, - { "rename", SEC_GAMEMASTER, true, &HandleCharacterRenameCommand, "", NULL }, - { "reputation", SEC_GAMEMASTER, true, &HandleCharacterReputationCommand, "", NULL }, - { "titles", SEC_GAMEMASTER, true, &HandleCharacterTitlesCommand, "", NULL }, + { "customize", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterCustomizeCommand, "", NULL }, + { "changefaction", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterChangeFactionCommand, "", NULL }, + { "changerace", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterChangeRaceCommand, "", NULL }, + { "deleted", RBAC_PERM_GAMEMASTER_COMMANDS, true, NULL, "", characterDeletedCommandTable }, + { "erase", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleCharacterEraseCommand, "", NULL }, + { "level", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleCharacterLevelCommand, "", NULL }, + { "rename", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterRenameCommand, "", NULL }, + { "reputation", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterReputationCommand, "", NULL }, + { "titles", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCharacterTitlesCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "character", SEC_GAMEMASTER, true, NULL, "", characterCommandTable }, - { "levelup", SEC_ADMINISTRATOR, false, &HandleLevelUpCommand, "", NULL }, - { "pdump", SEC_ADMINISTRATOR, true, NULL, "", pdumpCommandTable }, + { "character", RBAC_PERM_GAMEMASTER_COMMANDS, true, NULL, "", characterCommandTable }, + { "levelup", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLevelUpCommand, "", NULL }, + { "pdump", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", pdumpCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index 854daebf975..86acc7b1a68 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -38,21 +38,21 @@ public: static ChatCommand cheatCommandTable[] = { - { "god", SEC_GAMEMASTER, false, &HandleGodModeCheatCommand, "", NULL }, - { "casttime", SEC_GAMEMASTER, false, &HandleCasttimeCheatCommand, "", NULL }, - { "cooldown", SEC_GAMEMASTER, false, &HandleCoolDownCheatCommand, "", NULL }, - { "power", SEC_GAMEMASTER, false, &HandlePowerCheatCommand, "", NULL }, - { "waterwalk", SEC_GAMEMASTER, false, &HandleWaterWalkCheatCommand, "", NULL }, - { "status", SEC_GAMEMASTER, false, &HandleCheatStatusCommand, "", NULL }, - { "taxi", SEC_GAMEMASTER, false, &HandleTaxiCheatCommand, "", NULL }, - { "explore", SEC_GAMEMASTER, false, &HandleExploreCheatCommand, "", NULL }, + { "god", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGodModeCheatCommand, "", NULL }, + { "casttime", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCasttimeCheatCommand, "", NULL }, + { "cooldown", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCoolDownCheatCommand, "", NULL }, + { "power", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandlePowerCheatCommand, "", NULL }, + { "waterwalk", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWaterWalkCheatCommand, "", NULL }, + { "status", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCheatStatusCommand, "", NULL }, + { "taxi", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTaxiCheatCommand, "", NULL }, + { "explore", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleExploreCheatCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "cheat", SEC_GAMEMASTER, false, NULL, "", cheatCommandTable }, + { "cheat", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", cheatCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 535d14bc326..ec12b08e9c0 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -44,61 +44,61 @@ public: { static ChatCommand debugPlayCommandTable[] = { - { "cinematic", SEC_MODERATOR, false, &HandleDebugPlayCinematicCommand, "", NULL }, - { "movie", SEC_MODERATOR, false, &HandleDebugPlayMovieCommand, "", NULL }, - { "sound", SEC_MODERATOR, false, &HandleDebugPlaySoundCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "cinematic", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleDebugPlayCinematicCommand, "", NULL }, + { "movie", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleDebugPlayMovieCommand, "", NULL }, + { "sound", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleDebugPlaySoundCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand debugSendCommandTable[] = { - { "buyerror", SEC_ADMINISTRATOR, false, &HandleDebugSendBuyErrorCommand, "", NULL }, - { "channelnotify", SEC_ADMINISTRATOR, false, &HandleDebugSendChannelNotifyCommand, "", NULL }, - { "chatmmessage", SEC_ADMINISTRATOR, false, &HandleDebugSendChatMsgCommand, "", NULL }, - { "equiperror", SEC_ADMINISTRATOR, false, &HandleDebugSendEquipErrorCommand, "", NULL }, - { "largepacket", SEC_ADMINISTRATOR, false, &HandleDebugSendLargePacketCommand, "", NULL }, - { "opcode", SEC_ADMINISTRATOR, false, &HandleDebugSendOpcodeCommand, "", NULL }, - { "qpartymsg", SEC_ADMINISTRATOR, false, &HandleDebugSendQuestPartyMsgCommand, "", NULL }, - { "qinvalidmsg", SEC_ADMINISTRATOR, false, &HandleDebugSendQuestInvalidMsgCommand, "", NULL }, - { "sellerror", SEC_ADMINISTRATOR, false, &HandleDebugSendSellErrorCommand, "", NULL }, - { "setphaseshift", SEC_ADMINISTRATOR, false, &HandleDebugSendSetPhaseShiftCommand, "", NULL }, - { "spellfail", SEC_ADMINISTRATOR, false, &HandleDebugSendSpellFailCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "buyerror", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendBuyErrorCommand, "", NULL }, + { "channelnotify", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendChannelNotifyCommand, "", NULL }, + { "chatmmessage", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendChatMsgCommand, "", NULL }, + { "equiperror", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendEquipErrorCommand, "", NULL }, + { "largepacket", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendLargePacketCommand, "", NULL }, + { "opcode", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendOpcodeCommand, "", NULL }, + { "qpartymsg", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendQuestPartyMsgCommand, "", NULL }, + { "qinvalidmsg", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendQuestInvalidMsgCommand, "", NULL }, + { "sellerror", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendSellErrorCommand, "", NULL }, + { "setphaseshift", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendSetPhaseShiftCommand, "", NULL }, + { "spellfail", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSendSpellFailCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand debugCommandTable[] = { - { "setbit", SEC_ADMINISTRATOR, false, &HandleDebugSet32BitCommand, "", NULL }, - { "threat", SEC_ADMINISTRATOR, false, &HandleDebugThreatListCommand, "", NULL }, - { "hostil", SEC_ADMINISTRATOR, false, &HandleDebugHostileRefListCommand, "", NULL }, - { "anim", SEC_GAMEMASTER, false, &HandleDebugAnimCommand, "", NULL }, - { "arena", SEC_ADMINISTRATOR, false, &HandleDebugArenaCommand, "", NULL }, - { "bg", SEC_ADMINISTRATOR, false, &HandleDebugBattlegroundCommand, "", NULL }, - { "getitemstate", SEC_ADMINISTRATOR, false, &HandleDebugGetItemStateCommand, "", NULL }, - { "lootrecipient", SEC_GAMEMASTER, false, &HandleDebugGetLootRecipientCommand, "", NULL }, - { "getvalue", SEC_ADMINISTRATOR, false, &HandleDebugGetValueCommand, "", NULL }, - { "getitemvalue", SEC_ADMINISTRATOR, false, &HandleDebugGetItemValueCommand, "", NULL }, - { "Mod32Value", SEC_ADMINISTRATOR, false, &HandleDebugMod32ValueCommand, "", NULL }, - { "play", SEC_MODERATOR, false, NULL, "", debugPlayCommandTable }, - { "send", SEC_ADMINISTRATOR, false, NULL, "", debugSendCommandTable }, - { "setaurastate", SEC_ADMINISTRATOR, false, &HandleDebugSetAuraStateCommand, "", NULL }, - { "setitemvalue", SEC_ADMINISTRATOR, false, &HandleDebugSetItemValueCommand, "", NULL }, - { "setvalue", SEC_ADMINISTRATOR, false, &HandleDebugSetValueCommand, "", NULL }, - { "spawnvehicle", SEC_ADMINISTRATOR, false, &HandleDebugSpawnVehicleCommand, "", NULL }, - { "setvid", SEC_ADMINISTRATOR, false, &HandleDebugSetVehicleIdCommand, "", NULL }, - { "entervehicle", SEC_ADMINISTRATOR, false, &HandleDebugEnterVehicleCommand, "", NULL }, - { "uws", SEC_ADMINISTRATOR, false, &HandleDebugUpdateWorldStateCommand, "", NULL }, - { "update", SEC_ADMINISTRATOR, false, &HandleDebugUpdateCommand, "", NULL }, - { "itemexpire", SEC_ADMINISTRATOR, false, &HandleDebugItemExpireCommand, "", NULL }, - { "areatriggers", SEC_ADMINISTRATOR, false, &HandleDebugAreaTriggersCommand, "", NULL }, - { "los", SEC_MODERATOR, false, &HandleDebugLoSCommand, "", NULL }, - { "moveflags", SEC_ADMINISTRATOR, false, &HandleDebugMoveflagsCommand, "", NULL }, - { "phase", SEC_MODERATOR, false, &HandleDebugPhaseCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "setbit", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSet32BitCommand, "", NULL }, + { "threat", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugThreatListCommand, "", NULL }, + { "hostil", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugHostileRefListCommand, "", NULL }, + { "anim", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleDebugAnimCommand, "", NULL }, + { "arena", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugArenaCommand, "", NULL }, + { "bg", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugBattlegroundCommand, "", NULL }, + { "getitemstate", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugGetItemStateCommand, "", NULL }, + { "lootrecipient", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleDebugGetLootRecipientCommand, "", NULL }, + { "getvalue", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugGetValueCommand, "", NULL }, + { "getitemvalue", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugGetItemValueCommand, "", NULL }, + { "Mod32Value", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugMod32ValueCommand, "", NULL }, + { "play", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", debugPlayCommandTable }, + { "send", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", debugSendCommandTable }, + { "setaurastate", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSetAuraStateCommand, "", NULL }, + { "setitemvalue", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSetItemValueCommand, "", NULL }, + { "setvalue", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSetValueCommand, "", NULL }, + { "spawnvehicle", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSpawnVehicleCommand, "", NULL }, + { "setvid", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugSetVehicleIdCommand, "", NULL }, + { "entervehicle", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugEnterVehicleCommand, "", NULL }, + { "uws", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugUpdateWorldStateCommand, "", NULL }, + { "update", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugUpdateCommand, "", NULL }, + { "itemexpire", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugItemExpireCommand, "", NULL }, + { "areatriggers", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugAreaTriggersCommand, "", NULL }, + { "los", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleDebugLoSCommand, "", NULL }, + { "moveflags", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDebugMoveflagsCommand, "", NULL }, + { "phase", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleDebugPhaseCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "debug", SEC_MODERATOR, true, NULL, "", debugCommandTable }, - { "wpgps", SEC_ADMINISTRATOR, false, &HandleWPGPSCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "debug", RBAC_PERM_MODERATOR_COMMANDS, true, NULL, "", debugCommandTable }, + { "wpgps", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleWPGPSCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_deserter.cpp b/src/server/scripts/Commands/cs_deserter.cpp index 285b68a6162..583b6b741bd 100644 --- a/src/server/scripts/Commands/cs_deserter.cpp +++ b/src/server/scripts/Commands/cs_deserter.cpp @@ -47,27 +47,27 @@ public: { static ChatCommand deserterInstanceCommandTable[] = { - { "add", SEC_ADMINISTRATOR, false, &HandleDeserterInstanceAdd, "", NULL }, - { "remove", SEC_ADMINISTRATOR, false, &HandleDeserterInstanceRemove, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDeserterInstanceAdd, "", NULL }, + { "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDeserterInstanceRemove, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand deserterBGCommandTable[] = { - { "add", SEC_ADMINISTRATOR, false, &HandleDeserterBGAdd, "", NULL }, - { "remove", SEC_ADMINISTRATOR, false, &HandleDeserterBGRemove, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDeserterBGAdd, "", NULL }, + { "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDeserterBGRemove, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand deserterCommandTable[] = { - { "instance", SEC_ADMINISTRATOR, false, NULL, "", deserterInstanceCommandTable }, - { "bg", SEC_ADMINISTRATOR, false, NULL, "", deserterBGCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "instance", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", deserterInstanceCommandTable }, + { "bg", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", deserterBGCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "deserter", SEC_ADMINISTRATOR, false, NULL, "", deserterCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "deserter", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", deserterCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_disable.cpp b/src/server/scripts/Commands/cs_disable.cpp index e6acb17373f..038727a6207 100644 --- a/src/server/scripts/Commands/cs_disable.cpp +++ b/src/server/scripts/Commands/cs_disable.cpp @@ -41,37 +41,37 @@ public: { static ChatCommand removeDisableCommandTable[] = { - { "spell", SEC_ADMINISTRATOR, true, &HandleRemoveDisableSpellCommand, "", NULL }, - { "quest", SEC_ADMINISTRATOR, true, &HandleRemoveDisableQuestCommand, "", NULL }, - { "map", SEC_ADMINISTRATOR, true, &HandleRemoveDisableMapCommand, "", NULL }, - { "battleground", SEC_ADMINISTRATOR, true, &HandleRemoveDisableBattlegroundCommand, "", NULL }, - { "achievement_criteria", SEC_ADMINISTRATOR, true, &HandleRemoveDisableAchievementCriteriaCommand, "", NULL }, - { "outdoorpvp", SEC_ADMINISTRATOR, true, &HandleRemoveDisableOutdoorPvPCommand, "", NULL }, - { "vmap", SEC_ADMINISTRATOR, true, &HandleRemoveDisableVmapCommand, "", NULL }, - { "mmap", SEC_ADMINISTRATOR, true, &HandleRemoveDisableMMapCommand, "", NULL }, + { "spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableSpellCommand, "", NULL }, + { "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableQuestCommand, "", NULL }, + { "map", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableMapCommand, "", NULL }, + { "battleground", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableBattlegroundCommand, "", NULL }, + { "achievement_criteria", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableAchievementCriteriaCommand, "", NULL }, + { "outdoorpvp", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableOutdoorPvPCommand, "", NULL }, + { "vmap", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableVmapCommand, "", NULL }, + { "mmap", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleRemoveDisableMMapCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand addDisableCommandTable[] = { - { "spell", SEC_ADMINISTRATOR, true, &HandleAddDisableSpellCommand, "", NULL }, - { "quest", SEC_ADMINISTRATOR, true, &HandleAddDisableQuestCommand, "", NULL }, - { "map", SEC_ADMINISTRATOR, true, &HandleAddDisableMapCommand, "", NULL }, - { "battleground", SEC_ADMINISTRATOR, true, &HandleAddDisableBattlegroundCommand, "", NULL }, - { "achievement_criteria", SEC_ADMINISTRATOR, true, &HandleAddDisableAchievementCriteriaCommand, "", NULL }, - { "outdoorpvp", SEC_ADMINISTRATOR, true, &HandleAddDisableOutdoorPvPCommand, "", NULL }, - { "vmap", SEC_ADMINISTRATOR, true, &HandleAddDisableVmapCommand, "", NULL }, - { "mmap", SEC_ADMINISTRATOR, true, &HandleAddDisableMMapCommand, "", NULL }, + { "spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableSpellCommand, "", NULL }, + { "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableQuestCommand, "", NULL }, + { "map", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableMapCommand, "", NULL }, + { "battleground", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableBattlegroundCommand, "", NULL }, + { "achievement_criteria", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableAchievementCriteriaCommand, "", NULL }, + { "outdoorpvp", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableOutdoorPvPCommand, "", NULL }, + { "vmap", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableVmapCommand, "", NULL }, + { "mmap", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleAddDisableMMapCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand disableCommandTable[] = { - { "add", SEC_ADMINISTRATOR, true, NULL, "", addDisableCommandTable }, - { "remove", SEC_ADMINISTRATOR, true, NULL, "", removeDisableCommandTable }, + { "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", addDisableCommandTable }, + { "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", removeDisableCommandTable }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "disable", SEC_ADMINISTRATOR, false, NULL, "", disableCommandTable }, + { "disable", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", disableCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_event.cpp b/src/server/scripts/Commands/cs_event.cpp index 7a5977074a3..0deb0c95fcc 100644 --- a/src/server/scripts/Commands/cs_event.cpp +++ b/src/server/scripts/Commands/cs_event.cpp @@ -37,15 +37,15 @@ public: { static ChatCommand eventCommandTable[] = { - { "activelist", SEC_GAMEMASTER, true, &HandleEventActiveListCommand, "", NULL }, - { "start", SEC_GAMEMASTER, true, &HandleEventStartCommand, "", NULL }, - { "stop", SEC_GAMEMASTER, true, &HandleEventStopCommand, "", NULL }, - { "", SEC_GAMEMASTER, true, &HandleEventInfoCommand, "", NULL }, + { "activelist", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleEventActiveListCommand, "", NULL }, + { "start", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleEventStartCommand, "", NULL }, + { "stop", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleEventStopCommand, "", NULL }, + { "", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleEventInfoCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "event", SEC_GAMEMASTER, false, NULL, "", eventCommandTable }, + { "event", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", eventCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 7b6e57bdacb..58f7eb050c5 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -40,17 +40,17 @@ public: { static ChatCommand gmCommandTable[] = { - { "chat", SEC_MODERATOR, false, &HandleGMChatCommand, "", NULL }, - { "fly", SEC_ADMINISTRATOR, false, &HandleGMFlyCommand, "", NULL }, - { "ingame", SEC_PLAYER, true, &HandleGMListIngameCommand, "", NULL }, - { "list", SEC_ADMINISTRATOR, true, &HandleGMListFullCommand, "", NULL }, - { "visible", SEC_MODERATOR, false, &HandleGMVisibleCommand, "", NULL }, - { "", SEC_MODERATOR, false, &HandleGMCommand, "", NULL }, + { "chat", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGMChatCommand, "", NULL }, + { "fly", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGMFlyCommand, "", NULL }, + { "ingame", RBAC_PERM_PLAYER_COMMANDS, true, &HandleGMListIngameCommand, "", NULL }, + { "list", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleGMListFullCommand, "", NULL }, + { "visible", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGMVisibleCommand, "", NULL }, + { "", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGMCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "gm", SEC_MODERATOR, false, NULL, "", gmCommandTable }, + { "gm", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", gmCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 1c3781e73d3..b9c94a2abe1 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -39,22 +39,22 @@ public: { static ChatCommand goCommandTable[] = { - { "creature", SEC_MODERATOR, false, &HandleGoCreatureCommand, "", NULL }, - { "graveyard", SEC_MODERATOR, false, &HandleGoGraveyardCommand, "", NULL }, - { "grid", SEC_MODERATOR, false, &HandleGoGridCommand, "", NULL }, - { "object", SEC_MODERATOR, false, &HandleGoObjectCommand, "", NULL }, - { "taxinode", SEC_MODERATOR, false, &HandleGoTaxinodeCommand, "", NULL }, - { "trigger", SEC_MODERATOR, false, &HandleGoTriggerCommand, "", NULL }, - { "zonexy", SEC_MODERATOR, false, &HandleGoZoneXYCommand, "", NULL }, - { "xyz", SEC_MODERATOR, false, &HandleGoXYZCommand, "", NULL }, - { "ticket", SEC_MODERATOR, false, &HandleGoTicketCommand, "", NULL }, - { "", SEC_MODERATOR, false, &HandleGoXYZCommand, "", NULL }, + { "creature", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoCreatureCommand, "", NULL }, + { "graveyard", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoGraveyardCommand, "", NULL }, + { "grid", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoGridCommand, "", NULL }, + { "object", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoObjectCommand, "", NULL }, + { "taxinode", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoTaxinodeCommand, "", NULL }, + { "trigger", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoTriggerCommand, "", NULL }, + { "zonexy", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoZoneXYCommand, "", NULL }, + { "xyz", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoXYZCommand, "", NULL }, + { "ticket", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoTicketCommand, "", NULL }, + { "", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGoXYZCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "go", SEC_MODERATOR, false, NULL, "", goCommandTable }, + { "go", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", goCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 4473000bc3b..383720e37c0 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -41,32 +41,32 @@ public: { static ChatCommand gobjectAddCommandTable[] = { - { "temp", SEC_GAMEMASTER, false, &HandleGameObjectAddTempCommand, "", NULL }, - { "", SEC_GAMEMASTER, false, &HandleGameObjectAddCommand, "", NULL }, + { "temp", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectAddTempCommand, "", NULL }, + { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectAddCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand gobjectSetCommandTable[] = { - { "phase", SEC_GAMEMASTER, false, &HandleGameObjectSetPhaseCommand, "", NULL }, - { "state", SEC_GAMEMASTER, false, &HandleGameObjectSetStateCommand, "", NULL }, + { "phase", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectSetPhaseCommand, "", NULL }, + { "state", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectSetStateCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand gobjectCommandTable[] = { - { "activate", SEC_GAMEMASTER, false, &HandleGameObjectActivateCommand, "", NULL }, - { "delete", SEC_GAMEMASTER, false, &HandleGameObjectDeleteCommand, "", NULL }, - { "info", SEC_GAMEMASTER, false, &HandleGameObjectInfoCommand, "", NULL }, - { "move", SEC_GAMEMASTER, false, &HandleGameObjectMoveCommand, "", NULL }, - { "near", SEC_GAMEMASTER, false, &HandleGameObjectNearCommand, "", NULL }, - { "target", SEC_GAMEMASTER, false, &HandleGameObjectTargetCommand, "", NULL }, - { "turn", SEC_GAMEMASTER, false, &HandleGameObjectTurnCommand, "", NULL }, - { "add", SEC_GAMEMASTER, false, NULL, "", gobjectAddCommandTable }, - { "set", SEC_GAMEMASTER, false, NULL, "", gobjectSetCommandTable }, + { "activate", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectActivateCommand, "", NULL }, + { "delete", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectDeleteCommand, "", NULL }, + { "info", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectInfoCommand, "", NULL }, + { "move", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectMoveCommand, "", NULL }, + { "near", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectNearCommand, "", NULL }, + { "target", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectTargetCommand, "", NULL }, + { "turn", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGameObjectTurnCommand, "", NULL }, + { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectAddCommandTable }, + { "set", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectSetCommandTable }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable }, + { "gobject", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", gobjectCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index ffaf1360ad5..048930fc7bd 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -39,17 +39,17 @@ public: { static ChatCommand guildCommandTable[] = { - { "create", SEC_GAMEMASTER, true, &HandleGuildCreateCommand, "", NULL }, - { "delete", SEC_GAMEMASTER, true, &HandleGuildDeleteCommand, "", NULL }, - { "invite", SEC_GAMEMASTER, true, &HandleGuildInviteCommand, "", NULL }, - { "uninvite", SEC_GAMEMASTER, true, &HandleGuildUninviteCommand, "", NULL }, - { "rank", SEC_GAMEMASTER, true, &HandleGuildRankCommand, "", NULL }, - { "rename", SEC_GAMEMASTER, true, &HandleGuildRenameCommand, "", NULL }, + { "create", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildCreateCommand, "", NULL }, + { "delete", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildDeleteCommand, "", NULL }, + { "invite", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildInviteCommand, "", NULL }, + { "uninvite", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildUninviteCommand, "", NULL }, + { "rank", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildRankCommand, "", NULL }, + { "rename", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGuildRenameCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "guild", SEC_ADMINISTRATOR, true, NULL, "", guildCommandTable }, + { "guild", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", guildCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_honor.cpp b/src/server/scripts/Commands/cs_honor.cpp index 75c7fcf71e2..4707e3d65c3 100644 --- a/src/server/scripts/Commands/cs_honor.cpp +++ b/src/server/scripts/Commands/cs_honor.cpp @@ -37,21 +37,21 @@ public: { static ChatCommand honorAddCommandTable[] = { - { "kill", SEC_GAMEMASTER, false, &HandleHonorAddKillCommand, "", NULL }, - { "", SEC_GAMEMASTER, false, &HandleHonorAddCommand, "", NULL }, + { "kill", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleHonorAddKillCommand, "", NULL }, + { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleHonorAddCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand honorCommandTable[] = { - { "add", SEC_GAMEMASTER, false, NULL, "", honorAddCommandTable }, - { "update", SEC_GAMEMASTER, false, &HandleHonorUpdateCommand, "", NULL }, + { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", honorAddCommandTable }, + { "update", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleHonorUpdateCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable }, + { "honor", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", honorCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_instance.cpp b/src/server/scripts/Commands/cs_instance.cpp index a0cd306c631..65dfa46ebd7 100644 --- a/src/server/scripts/Commands/cs_instance.cpp +++ b/src/server/scripts/Commands/cs_instance.cpp @@ -39,16 +39,16 @@ public: { static ChatCommand instanceCommandTable[] = { - { "listbinds", SEC_ADMINISTRATOR, false, &HandleInstanceListBindsCommand, "", NULL }, - { "unbind", SEC_ADMINISTRATOR, false, &HandleInstanceUnbindCommand, "", NULL }, - { "stats", SEC_ADMINISTRATOR, true, &HandleInstanceStatsCommand, "", NULL }, - { "savedata", SEC_ADMINISTRATOR, false, &HandleInstanceSaveDataCommand, "", NULL }, + { "listbinds", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceListBindsCommand, "", NULL }, + { "unbind", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceUnbindCommand, "", NULL }, + { "stats", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleInstanceStatsCommand, "", NULL }, + { "savedata", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleInstanceSaveDataCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "instance", SEC_ADMINISTRATOR, true, NULL, "", instanceCommandTable }, + { "instance", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", instanceCommandTable }, { NULL, 0, false, NULL, "", NULL } }; diff --git a/src/server/scripts/Commands/cs_learn.cpp b/src/server/scripts/Commands/cs_learn.cpp index 89ea572d74b..c26000c27df 100644 --- a/src/server/scripts/Commands/cs_learn.cpp +++ b/src/server/scripts/Commands/cs_learn.cpp @@ -40,35 +40,35 @@ public: { static ChatCommand learnAllMyCommandTable[] = { - { "class", SEC_ADMINISTRATOR, false, &HandleLearnAllMyClassCommand, "", NULL }, - { "pettalents", SEC_ADMINISTRATOR, false, &HandleLearnAllMyPetTalentsCommand, "", NULL }, - { "spells", SEC_ADMINISTRATOR, false, &HandleLearnAllMySpellsCommand, "", NULL }, - { "talents", SEC_ADMINISTRATOR, false, &HandleLearnAllMyTalentsCommand, "", NULL }, + { "class", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLearnAllMyClassCommand, "", NULL }, + { "pettalents", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLearnAllMyPetTalentsCommand, "", NULL }, + { "spells", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLearnAllMySpellsCommand, "", NULL }, + { "talents", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLearnAllMyTalentsCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand learnAllCommandTable[] = { - { "my", SEC_ADMINISTRATOR, false, NULL, "", learnAllMyCommandTable }, - { "gm", SEC_GAMEMASTER, false, &HandleLearnAllGMCommand, "", NULL }, - { "crafts", SEC_GAMEMASTER, false, &HandleLearnAllCraftsCommand, "", NULL }, - { "default", SEC_MODERATOR, false, &HandleLearnAllDefaultCommand, "", NULL }, - { "lang", SEC_MODERATOR, false, &HandleLearnAllLangCommand, "", NULL }, - { "recipes", SEC_GAMEMASTER, false, &HandleLearnAllRecipesCommand, "", NULL }, + { "my", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", learnAllMyCommandTable }, + { "gm", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLearnAllGMCommand, "", NULL }, + { "crafts", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLearnAllCraftsCommand, "", NULL }, + { "default", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleLearnAllDefaultCommand, "", NULL }, + { "lang", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleLearnAllLangCommand, "", NULL }, + { "recipes", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLearnAllRecipesCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand learnCommandTable[] = { - { "all", SEC_ADMINISTRATOR, false, NULL, "", learnAllCommandTable }, - { "", SEC_ADMINISTRATOR, false, &HandleLearnCommand, "", NULL }, + { "all", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", learnAllCommandTable }, + { "", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLearnCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "learn", SEC_MODERATOR, false, NULL, "", learnCommandTable }, - { "unlearn", SEC_ADMINISTRATOR, false, &HandleUnLearnCommand, "", NULL }, + { "learn", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", learnCommandTable }, + { "unlearn", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleUnLearnCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp index 3a9e7a67214..c11a00c7bba 100644 --- a/src/server/scripts/Commands/cs_lfg.cpp +++ b/src/server/scripts/Commands/cs_lfg.cpp @@ -45,18 +45,18 @@ public: { static ChatCommand lfgCommandTable[] = { - { "player", SEC_GAMEMASTER, false, &HandleLfgPlayerInfoCommand, "", NULL }, - { "group", SEC_GAMEMASTER, false, &HandleLfgGroupInfoCommand, "", NULL }, - { "queue", SEC_GAMEMASTER, false, &HandleLfgQueueInfoCommand, "", NULL }, - { "clean", SEC_ADMINISTRATOR, false, &HandleLfgCleanCommand, "", NULL }, - { "options", SEC_ADMINISTRATOR, false, &HandleLfgOptionsCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "player", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLfgPlayerInfoCommand, "", NULL }, + { "group", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLfgGroupInfoCommand, "", NULL }, + { "queue", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleLfgQueueInfoCommand, "", NULL }, + { "clean", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLfgCleanCommand, "", NULL }, + { "options", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLfgOptionsCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "lfg", SEC_GAMEMASTER, false, NULL, "", lfgCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "lfg", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", lfgCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index 279e7765863..dbf01f6bfbb 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -40,16 +40,16 @@ public: { static ChatCommand listCommandTable[] = { - { "creature", SEC_ADMINISTRATOR, true, &HandleListCreatureCommand, "", NULL }, - { "item", SEC_ADMINISTRATOR, true, &HandleListItemCommand, "", NULL }, - { "object", SEC_ADMINISTRATOR, true, &HandleListObjectCommand, "", NULL }, - { "auras", SEC_ADMINISTRATOR, false, &HandleListAurasCommand, "", NULL }, - { "mail", SEC_ADMINISTRATOR, true, &HandleListMailCommand, "", NULL }, + { "creature", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleListCreatureCommand, "", NULL }, + { "item", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleListItemCommand, "", NULL }, + { "object", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleListObjectCommand, "", NULL }, + { "auras", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleListAurasCommand, "", NULL }, + { "mail", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleListMailCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "list", SEC_ADMINISTRATOR, true, NULL, "", listCommandTable }, + { "list", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", listCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 913b37f1200..ca6d883c338 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -41,42 +41,42 @@ public: { static ChatCommand lookupPlayerCommandTable[] = { - { "ip", SEC_GAMEMASTER, true, &HandleLookupPlayerIpCommand, "", NULL }, - { "account", SEC_GAMEMASTER, true, &HandleLookupPlayerAccountCommand, "", NULL }, - { "email", SEC_GAMEMASTER, true, &HandleLookupPlayerEmailCommand, "", NULL }, + { "ip", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleLookupPlayerIpCommand, "", NULL }, + { "account", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleLookupPlayerAccountCommand, "", NULL }, + { "email", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleLookupPlayerEmailCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand lookupSpellCommandTable[] = { - { "id", SEC_ADMINISTRATOR, true, &HandleLookupSpellIdCommand, "", NULL }, - { "", SEC_ADMINISTRATOR, true, &HandleLookupSpellCommand, "", NULL }, + { "id", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupSpellIdCommand, "", NULL }, + { "", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupSpellCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand lookupCommandTable[] = { - { "area", SEC_MODERATOR, true, &HandleLookupAreaCommand, "", NULL }, - { "creature", SEC_ADMINISTRATOR, true, &HandleLookupCreatureCommand, "", NULL }, - { "event", SEC_GAMEMASTER, true, &HandleLookupEventCommand, "", NULL }, - { "faction", SEC_ADMINISTRATOR, true, &HandleLookupFactionCommand, "", NULL }, - { "item", SEC_ADMINISTRATOR, true, &HandleLookupItemCommand, "", NULL }, - { "itemset", SEC_ADMINISTRATOR, true, &HandleLookupItemSetCommand, "", NULL }, - { "object", SEC_ADMINISTRATOR, true, &HandleLookupObjectCommand, "", NULL }, - { "quest", SEC_ADMINISTRATOR, true, &HandleLookupQuestCommand, "", NULL }, - { "player", SEC_GAMEMASTER, true, NULL, "", lookupPlayerCommandTable }, - { "skill", SEC_ADMINISTRATOR, true, &HandleLookupSkillCommand, "", NULL }, - { "spell", SEC_ADMINISTRATOR, true, NULL, "", lookupSpellCommandTable }, - { "taxinode", SEC_ADMINISTRATOR, true, &HandleLookupTaxiNodeCommand, "", NULL }, - { "tele", SEC_MODERATOR, true, &HandleLookupTeleCommand, "", NULL }, - { "title", SEC_GAMEMASTER, true, &HandleLookupTitleCommand, "", NULL }, - { "map", SEC_ADMINISTRATOR, true, &HandleLookupMapCommand, "", NULL }, + { "area", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleLookupAreaCommand, "", NULL }, + { "creature", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupCreatureCommand, "", NULL }, + { "event", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleLookupEventCommand, "", NULL }, + { "faction", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupFactionCommand, "", NULL }, + { "item", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupItemCommand, "", NULL }, + { "itemset", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupItemSetCommand, "", NULL }, + { "object", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupObjectCommand, "", NULL }, + { "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupQuestCommand, "", NULL }, + { "player", RBAC_PERM_GAMEMASTER_COMMANDS, true, NULL, "", lookupPlayerCommandTable }, + { "skill", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupSkillCommand, "", NULL }, + { "spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", lookupSpellCommandTable }, + { "taxinode", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupTaxiNodeCommand, "", NULL }, + { "tele", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleLookupTeleCommand, "", NULL }, + { "title", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleLookupTitleCommand, "", NULL }, + { "map", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleLookupMapCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "lookup", SEC_ADMINISTRATOR, true, NULL, "", lookupCommandTable }, + { "lookup", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", lookupCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp index cc50490e831..334968037c3 100644 --- a/src/server/scripts/Commands/cs_message.cpp +++ b/src/server/scripts/Commands/cs_message.cpp @@ -38,24 +38,24 @@ public: { static ChatCommand channelSetCommandTable[] = { - { "ownership", SEC_ADMINISTRATOR, false, &HandleChannelSetOwnership, "", NULL }, + { "ownership", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleChannelSetOwnership, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand channelCommandTable[] = { - { "set", SEC_ADMINISTRATOR, true, NULL, "", channelSetCommandTable }, + { "set", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", channelSetCommandTable }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "channel", SEC_ADMINISTRATOR, true, NULL, "", channelCommandTable }, - { "nameannounce", SEC_MODERATOR, true, &HandleNameAnnounceCommand, "", NULL }, - { "gmnameannounce", SEC_MODERATOR, true, &HandleGMNameAnnounceCommand, "", NULL }, - { "announce", SEC_MODERATOR, true, &HandleAnnounceCommand, "", NULL }, - { "gmannounce", SEC_MODERATOR, true, &HandleGMAnnounceCommand, "", NULL }, - { "notify", SEC_MODERATOR, true, &HandleNotifyCommand, "", NULL }, - { "gmnotify", SEC_MODERATOR, true, &HandleGMNotifyCommand, "", NULL }, - { "whispers", SEC_MODERATOR, false, &HandleWhispersCommand, "", NULL }, + { "channel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", channelCommandTable }, + { "nameannounce", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleNameAnnounceCommand, "", NULL }, + { "gmnameannounce", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMNameAnnounceCommand, "", NULL }, + { "announce", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleAnnounceCommand, "", NULL }, + { "gmannounce", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMAnnounceCommand, "", NULL }, + { "notify", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleNotifyCommand, "", NULL }, + { "gmnotify", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMNotifyCommand, "", NULL }, + { "whispers", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleWhispersCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 3c18d04c9bf..1c867294e3a 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -46,81 +46,81 @@ public: { static ChatCommand groupCommandTable[] = { - { "leader", SEC_ADMINISTRATOR, false, &HandleGroupLeaderCommand, "", NULL }, - { "disband", SEC_ADMINISTRATOR, false, &HandleGroupDisbandCommand, "", NULL }, - { "remove", SEC_ADMINISTRATOR, false, &HandleGroupRemoveCommand, "", NULL }, - { "join", SEC_ADMINISTRATOR, false, &HandleGroupJoinCommand, "", NULL }, - { "list", SEC_ADMINISTRATOR, false, &HandleGroupListCommand, "", NULL }, + { "leader", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGroupLeaderCommand, "", NULL }, + { "disband", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGroupDisbandCommand, "", NULL }, + { "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGroupRemoveCommand, "", NULL }, + { "join", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGroupJoinCommand, "", NULL }, + { "list", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGroupListCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand petCommandTable[] = { - { "create", SEC_GAMEMASTER, false, &HandleCreatePetCommand, "", NULL }, - { "learn", SEC_GAMEMASTER, false, &HandlePetLearnCommand, "", NULL }, - { "unlearn", SEC_GAMEMASTER, false, &HandlePetUnlearnCommand, "", NULL }, + { "create", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleCreatePetCommand, "", NULL }, + { "learn", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandlePetLearnCommand, "", NULL }, + { "unlearn", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandlePetUnlearnCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand sendCommandTable[] = { - { "items", SEC_ADMINISTRATOR, true, &HandleSendItemsCommand, "", NULL }, - { "mail", SEC_MODERATOR, true, &HandleSendMailCommand, "", NULL }, - { "message", SEC_ADMINISTRATOR, true, &HandleSendMessageCommand, "", NULL }, - { "money", SEC_ADMINISTRATOR, true, &HandleSendMoneyCommand, "", NULL }, + { "items", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleSendItemsCommand, "", NULL }, + { "mail", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleSendMailCommand, "", NULL }, + { "message", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleSendMessageCommand, "", NULL }, + { "money", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleSendMoneyCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "dev", SEC_ADMINISTRATOR, false, &HandleDevCommand, "", NULL }, - { "gps", SEC_ADMINISTRATOR, false, &HandleGPSCommand, "", NULL }, - { "aura", SEC_ADMINISTRATOR, false, &HandleAuraCommand, "", NULL }, - { "unaura", SEC_ADMINISTRATOR, false, &HandleUnAuraCommand, "", NULL }, - { "appear", SEC_MODERATOR, false, &HandleAppearCommand, "", NULL }, - { "summon", SEC_MODERATOR, false, &HandleSummonCommand, "", NULL }, - { "groupsummon", SEC_MODERATOR, false, &HandleGroupSummonCommand, "", NULL }, - { "commands", SEC_PLAYER, true, &HandleCommandsCommand, "", NULL }, - { "die", SEC_ADMINISTRATOR, false, &HandleDieCommand, "", NULL }, - { "revive", SEC_ADMINISTRATOR, true, &HandleReviveCommand, "", NULL }, - { "dismount", SEC_PLAYER, false, &HandleDismountCommand, "", NULL }, - { "guid", SEC_GAMEMASTER, false, &HandleGUIDCommand, "", NULL }, - { "help", SEC_PLAYER, true, &HandleHelpCommand, "", NULL }, - { "itemmove", SEC_GAMEMASTER, false, &HandleItemMoveCommand, "", NULL }, - { "cooldown", SEC_ADMINISTRATOR, false, &HandleCooldownCommand, "", NULL }, - { "distance", SEC_ADMINISTRATOR, false, &HandleGetDistanceCommand, "", NULL }, - { "recall", SEC_MODERATOR, false, &HandleRecallCommand, "", NULL }, - { "save", SEC_PLAYER, false, &HandleSaveCommand, "", NULL }, - { "saveall", SEC_MODERATOR, true, &HandleSaveAllCommand, "", NULL }, - { "kick", SEC_GAMEMASTER, true, &HandleKickPlayerCommand, "", NULL }, - { "unstuck", SEC_PLAYER, true, &HandleUnstuckCommand, "", NULL }, - { "linkgrave", SEC_ADMINISTRATOR, false, &HandleLinkGraveCommand, "", NULL }, - { "neargrave", SEC_ADMINISTRATOR, false, &HandleNearGraveCommand, "", NULL }, - { "showarea", SEC_ADMINISTRATOR, false, &HandleShowAreaCommand, "", NULL }, - { "hidearea", SEC_ADMINISTRATOR, false, &HandleHideAreaCommand, "", NULL }, - { "additem", SEC_ADMINISTRATOR, false, &HandleAddItemCommand, "", NULL }, - { "additemset", SEC_ADMINISTRATOR, false, &HandleAddItemSetCommand, "", NULL }, - { "bank", SEC_ADMINISTRATOR, false, &HandleBankCommand, "", NULL }, - { "wchange", SEC_ADMINISTRATOR, false, &HandleChangeWeather, "", NULL }, - { "maxskill", SEC_ADMINISTRATOR, false, &HandleMaxSkillCommand, "", NULL }, - { "setskill", SEC_ADMINISTRATOR, false, &HandleSetSkillCommand, "", NULL }, - { "pinfo", SEC_GAMEMASTER, true, &HandlePInfoCommand, "", NULL }, - { "respawn", SEC_ADMINISTRATOR, false, &HandleRespawnCommand, "", NULL }, - { "send", SEC_MODERATOR, true, NULL, "", sendCommandTable }, - { "pet", SEC_GAMEMASTER, false, NULL, "", petCommandTable }, - { "mute", SEC_MODERATOR, true, &HandleMuteCommand, "", NULL }, - { "unmute", SEC_MODERATOR, true, &HandleUnmuteCommand, "", NULL }, - { "movegens", SEC_ADMINISTRATOR, false, &HandleMovegensCommand, "", NULL }, - { "cometome", SEC_ADMINISTRATOR, false, &HandleComeToMeCommand, "", NULL }, - { "damage", SEC_ADMINISTRATOR, false, &HandleDamageCommand, "", NULL }, - { "combatstop", SEC_GAMEMASTER, true, &HandleCombatStopCommand, "", NULL }, - { "repairitems", SEC_GAMEMASTER, true, &HandleRepairitemsCommand, "", NULL }, - { "freeze", SEC_MODERATOR, false, &HandleFreezeCommand, "", NULL }, - { "unfreeze", SEC_MODERATOR, false, &HandleUnFreezeCommand, "", NULL }, - { "listfreeze", SEC_MODERATOR, false, &HandleListFreezeCommand, "", NULL }, - { "group", SEC_ADMINISTRATOR, false, NULL, "", groupCommandTable }, - { "possess", SEC_ADMINISTRATOR, false, HandlePossessCommand, "", NULL }, - { "unpossess", SEC_ADMINISTRATOR, false, HandleUnPossessCommand, "", NULL }, - { "bindsight", SEC_ADMINISTRATOR, false, HandleBindSightCommand, "", NULL }, - { "unbindsight", SEC_ADMINISTRATOR, false, HandleUnbindSightCommand, "", NULL }, - { "playall", SEC_GAMEMASTER, false, HandlePlayAllCommand, "", NULL }, + { "dev", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDevCommand, "", NULL }, + { "gps", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGPSCommand, "", NULL }, + { "aura", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleAuraCommand, "", NULL }, + { "unaura", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleUnAuraCommand, "", NULL }, + { "appear", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleAppearCommand, "", NULL }, + { "summon", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleSummonCommand, "", NULL }, + { "groupsummon", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleGroupSummonCommand, "", NULL }, + { "commands", RBAC_PERM_PLAYER_COMMANDS, true, &HandleCommandsCommand, "", NULL }, + { "die", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDieCommand, "", NULL }, + { "revive", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReviveCommand, "", NULL }, + { "dismount", RBAC_PERM_PLAYER_COMMANDS, false, &HandleDismountCommand, "", NULL }, + { "guid", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleGUIDCommand, "", NULL }, + { "help", RBAC_PERM_PLAYER_COMMANDS, true, &HandleHelpCommand, "", NULL }, + { "itemmove", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleItemMoveCommand, "", NULL }, + { "cooldown", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleCooldownCommand, "", NULL }, + { "distance", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleGetDistanceCommand, "", NULL }, + { "recall", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleRecallCommand, "", NULL }, + { "save", RBAC_PERM_PLAYER_COMMANDS, false, &HandleSaveCommand, "", NULL }, + { "saveall", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleSaveAllCommand, "", NULL }, + { "kick", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleKickPlayerCommand, "", NULL }, + { "unstuck", RBAC_PERM_PLAYER_COMMANDS, true, &HandleUnstuckCommand, "", NULL }, + { "linkgrave", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleLinkGraveCommand, "", NULL }, + { "neargrave", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNearGraveCommand, "", NULL }, + { "showarea", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleShowAreaCommand, "", NULL }, + { "hidearea", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleHideAreaCommand, "", NULL }, + { "additem", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleAddItemCommand, "", NULL }, + { "additemset", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleAddItemSetCommand, "", NULL }, + { "bank", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBankCommand, "", NULL }, + { "wchange", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleChangeWeather, "", NULL }, + { "maxskill", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMaxSkillCommand, "", NULL }, + { "setskill", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleSetSkillCommand, "", NULL }, + { "pinfo", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandlePInfoCommand, "", NULL }, + { "respawn", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleRespawnCommand, "", NULL }, + { "send", RBAC_PERM_MODERATOR_COMMANDS, true, NULL, "", sendCommandTable }, + { "pet", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", petCommandTable }, + { "mute", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleMuteCommand, "", NULL }, + { "unmute", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleUnmuteCommand, "", NULL }, + { "movegens", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMovegensCommand, "", NULL }, + { "cometome", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleComeToMeCommand, "", NULL }, + { "damage", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleDamageCommand, "", NULL }, + { "combatstop", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleCombatStopCommand, "", NULL }, + { "repairitems", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleRepairitemsCommand, "", NULL }, + { "freeze", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleFreezeCommand, "", NULL }, + { "unfreeze", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleUnFreezeCommand, "", NULL }, + { "listfreeze", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleListFreezeCommand, "", NULL }, + { "group", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", groupCommandTable }, + { "possess", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, HandlePossessCommand, "", NULL }, + { "unpossess", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, HandleUnPossessCommand, "", NULL }, + { "bindsight", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, HandleBindSightCommand, "", NULL }, + { "unbindsight", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, HandleUnbindSightCommand, "", NULL }, + { "playall", RBAC_PERM_GAMEMASTER_COMMANDS, false, HandlePlayAllCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index 4d7b42e1885..6667499af58 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -45,17 +45,17 @@ public: { static ChatCommand mmapCommandTable[] = { - { "path", SEC_ADMINISTRATOR, false, &HandleMmapPathCommand, "", NULL }, - { "loc", SEC_ADMINISTRATOR, false, &HandleMmapLocCommand, "", NULL }, - { "loadedtiles", SEC_ADMINISTRATOR, false, &HandleMmapLoadedTilesCommand, "", NULL }, - { "stats", SEC_ADMINISTRATOR, false, &HandleMmapStatsCommand, "", NULL }, - { "testarea", SEC_ADMINISTRATOR, false, &HandleMmapTestArea, "", NULL }, + { "path", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMmapPathCommand, "", NULL }, + { "loc", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMmapLocCommand, "", NULL }, + { "loadedtiles", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMmapLoadedTilesCommand, "", NULL }, + { "stats", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMmapStatsCommand, "", NULL }, + { "testarea", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleMmapTestArea, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "mmap", SEC_ADMINISTRATOR, true, NULL, "", mmapCommandTable }, + { "mmap", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", mmapCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index c1ee051f277..dbffaa52593 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -41,43 +41,43 @@ public: { static ChatCommand modifyspeedCommandTable[] = { - { "fly", SEC_MODERATOR, false, &HandleModifyFlyCommand, "", NULL }, - { "all", SEC_MODERATOR, false, &HandleModifyASpeedCommand, "", NULL }, - { "walk", SEC_MODERATOR, false, &HandleModifySpeedCommand, "", NULL }, - { "backwalk", SEC_MODERATOR, false, &HandleModifyBWalkCommand, "", NULL }, - { "swim", SEC_MODERATOR, false, &HandleModifySwimCommand, "", NULL }, - { "", SEC_MODERATOR, false, &HandleModifyASpeedCommand, "", NULL }, + { "fly", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyFlyCommand, "", NULL }, + { "all", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyASpeedCommand, "", NULL }, + { "walk", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifySpeedCommand, "", NULL }, + { "backwalk", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyBWalkCommand, "", NULL }, + { "swim", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifySwimCommand, "", NULL }, + { "", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyASpeedCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand modifyCommandTable[] = { - { "hp", SEC_MODERATOR, false, &HandleModifyHPCommand, "", NULL }, - { "mana", SEC_MODERATOR, false, &HandleModifyManaCommand, "", NULL }, - { "rage", SEC_MODERATOR, false, &HandleModifyRageCommand, "", NULL }, - { "runicpower", SEC_MODERATOR, false, &HandleModifyRunicPowerCommand, "", NULL }, - { "energy", SEC_MODERATOR, false, &HandleModifyEnergyCommand, "", NULL }, - { "money", SEC_MODERATOR, false, &HandleModifyMoneyCommand, "", NULL }, - { "scale", SEC_MODERATOR, false, &HandleModifyScaleCommand, "", NULL }, - { "bit", SEC_MODERATOR, false, &HandleModifyBitCommand, "", NULL }, - { "faction", SEC_MODERATOR, false, &HandleModifyFactionCommand, "", NULL }, - { "spell", SEC_MODERATOR, false, &HandleModifySpellCommand, "", NULL }, - { "talentpoints", SEC_MODERATOR, false, &HandleModifyTalentCommand, "", NULL }, - { "mount", SEC_MODERATOR, false, &HandleModifyMountCommand, "", NULL }, - { "honor", SEC_MODERATOR, false, &HandleModifyHonorCommand, "", NULL }, - { "reputation", SEC_GAMEMASTER, false, &HandleModifyRepCommand, "", NULL }, - { "drunk", SEC_MODERATOR, false, &HandleModifyDrunkCommand, "", NULL }, - { "standstate", SEC_GAMEMASTER, false, &HandleModifyStandStateCommand, "", NULL }, - { "phase", SEC_ADMINISTRATOR, false, &HandleModifyPhaseCommand, "", NULL }, - { "gender", SEC_GAMEMASTER, false, &HandleModifyGenderCommand, "", NULL }, - { "currency", SEC_GAMEMASTER, false, &HandleModifyCurrencyCommand, "", NULL }, - { "speed", SEC_MODERATOR, false, NULL, "", modifyspeedCommandTable }, + { "hp", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyHPCommand, "", NULL }, + { "mana", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyManaCommand, "", NULL }, + { "rage", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyRageCommand, "", NULL }, + { "runicpower", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyRunicPowerCommand, "", NULL }, + { "energy", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyEnergyCommand, "", NULL }, + { "money", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyMoneyCommand, "", NULL }, + { "scale", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyScaleCommand, "", NULL }, + { "bit", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyBitCommand, "", NULL }, + { "faction", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyFactionCommand, "", NULL }, + { "spell", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifySpellCommand, "", NULL }, + { "talentpoints", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyTalentCommand, "", NULL }, + { "mount", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyMountCommand, "", NULL }, + { "honor", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyHonorCommand, "", NULL }, + { "reputation", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleModifyRepCommand, "", NULL }, + { "drunk", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleModifyDrunkCommand, "", NULL }, + { "standstate", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleModifyStandStateCommand, "", NULL }, + { "phase", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleModifyPhaseCommand, "", NULL }, + { "gender", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleModifyGenderCommand, "", NULL }, + { "currency", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleModifyCurrencyCommand, "", NULL }, + { "speed", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", modifyspeedCommandTable }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "morph", SEC_GAMEMASTER, false, &HandleModifyMorphCommand, "", NULL }, - { "demorph", SEC_GAMEMASTER, false, &HandleDeMorphCommand, "", NULL }, - { "modify", SEC_MODERATOR, false, NULL, "", modifyCommandTable }, + { "morph", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleModifyMorphCommand, "", NULL }, + { "demorph", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleDeMorphCommand, "", NULL }, + { "modify", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", modifyCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 56610c1ea29..9922ae8bda2 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -164,69 +164,69 @@ public: { static ChatCommand npcAddCommandTable[] = { - { "formation", SEC_MODERATOR, false, &HandleNpcAddFormationCommand, "", NULL }, - { "item", SEC_GAMEMASTER, false, &HandleNpcAddVendorItemCommand, "", NULL }, - { "move", SEC_GAMEMASTER, false, &HandleNpcAddMoveCommand, "", NULL }, - { "temp", SEC_GAMEMASTER, false, &HandleNpcAddTempSpawnCommand, "", NULL }, + { "formation", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleNpcAddFormationCommand, "", NULL }, + { "item", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcAddVendorItemCommand, "", NULL }, + { "move", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcAddMoveCommand, "", NULL }, + { "temp", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcAddTempSpawnCommand, "", NULL }, //{@todo fix or remove this command - { "weapon", SEC_ADMINISTRATOR, false, &HandleNpcAddWeaponCommand, "", NULL }, + { "weapon", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcAddWeaponCommand, "", NULL }, //} - { "", SEC_GAMEMASTER, false, &HandleNpcAddCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcAddCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand npcDeleteCommandTable[] = { - { "item", SEC_GAMEMASTER, false, &HandleNpcDeleteVendorItemCommand, "", NULL }, - { "", SEC_GAMEMASTER, false, &HandleNpcDeleteCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "item", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcDeleteVendorItemCommand, "", NULL }, + { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcDeleteCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand npcFollowCommandTable[] = { - { "stop", SEC_GAMEMASTER, false, &HandleNpcUnFollowCommand, "", NULL }, - { "", SEC_GAMEMASTER, false, &HandleNpcFollowCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "stop", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcUnFollowCommand, "", NULL }, + { "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcFollowCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand npcSetCommandTable[] = { - { "allowmove", SEC_ADMINISTRATOR, false, &HandleNpcSetAllowMovementCommand, "", NULL }, - { "entry", SEC_ADMINISTRATOR, false, &HandleNpcSetEntryCommand, "", NULL }, - { "factionid", SEC_GAMEMASTER, false, &HandleNpcSetFactionIdCommand, "", NULL }, - { "flag", SEC_GAMEMASTER, false, &HandleNpcSetFlagCommand, "", NULL }, - { "level", SEC_GAMEMASTER, false, &HandleNpcSetLevelCommand, "", NULL }, - { "link", SEC_GAMEMASTER, false, &HandleNpcSetLinkCommand, "", NULL }, - { "model", SEC_GAMEMASTER, false, &HandleNpcSetModelCommand, "", NULL }, - { "movetype", SEC_GAMEMASTER, false, &HandleNpcSetMoveTypeCommand, "", NULL }, - { "phase", SEC_GAMEMASTER, false, &HandleNpcSetPhaseCommand, "", NULL }, - { "spawndist", SEC_GAMEMASTER, false, &HandleNpcSetSpawnDistCommand, "", NULL }, - { "spawntime", SEC_GAMEMASTER, false, &HandleNpcSetSpawnTimeCommand, "", NULL }, - { "data", SEC_ADMINISTRATOR, false, &HandleNpcSetDataCommand, "", NULL }, + { "allowmove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcSetAllowMovementCommand, "", NULL }, + { "entry", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcSetEntryCommand, "", NULL }, + { "factionid", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetFactionIdCommand, "", NULL }, + { "flag", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetFlagCommand, "", NULL }, + { "level", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetLevelCommand, "", NULL }, + { "link", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetLinkCommand, "", NULL }, + { "model", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetModelCommand, "", NULL }, + { "movetype", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetMoveTypeCommand, "", NULL }, + { "phase", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetPhaseCommand, "", NULL }, + { "spawndist", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetSpawnDistCommand, "", NULL }, + { "spawntime", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetSpawnTimeCommand, "", NULL }, + { "data", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcSetDataCommand, "", NULL }, //{ @todo fix or remove these commands - { "name", SEC_GAMEMASTER, false, &HandleNpcSetNameCommand, "", NULL }, - { "subname", SEC_GAMEMASTER, false, &HandleNpcSetSubNameCommand, "", NULL }, + { "name", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetNameCommand, "", NULL }, + { "subname", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetSubNameCommand, "", NULL }, //} - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand npcCommandTable[] = { - { "info", SEC_ADMINISTRATOR, false, &HandleNpcInfoCommand, "", NULL }, - { "near", SEC_GAMEMASTER, false, &HandleNpcNearCommand, "", NULL }, - { "move", SEC_GAMEMASTER, false, &HandleNpcMoveCommand, "", NULL }, - { "playemote", SEC_ADMINISTRATOR, false, &HandleNpcPlayEmoteCommand, "", NULL }, - { "say", SEC_MODERATOR, false, &HandleNpcSayCommand, "", NULL }, - { "textemote", SEC_MODERATOR, false, &HandleNpcTextEmoteCommand, "", NULL }, - { "whisper", SEC_MODERATOR, false, &HandleNpcWhisperCommand, "", NULL }, - { "yell", SEC_MODERATOR, false, &HandleNpcYellCommand, "", NULL }, - { "tame", SEC_GAMEMASTER, false, &HandleNpcTameCommand, "", NULL }, - { "add", SEC_GAMEMASTER, false, NULL, "", npcAddCommandTable }, - { "delete", SEC_GAMEMASTER, false, NULL, "", npcDeleteCommandTable }, - { "follow", SEC_GAMEMASTER, false, NULL, "", npcFollowCommandTable }, - { "set", SEC_GAMEMASTER, false, NULL, "", npcSetCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "info", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcInfoCommand, "", NULL }, + { "near", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcNearCommand, "", NULL }, + { "move", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcMoveCommand, "", NULL }, + { "playemote", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcPlayEmoteCommand, "", NULL }, + { "say", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleNpcSayCommand, "", NULL }, + { "textemote", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleNpcTextEmoteCommand, "", NULL }, + { "whisper", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleNpcWhisperCommand, "", NULL }, + { "yell", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleNpcYellCommand, "", NULL }, + { "tame", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcTameCommand, "", NULL }, + { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", npcAddCommandTable }, + { "delete", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", npcDeleteCommandTable }, + { "follow", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", npcFollowCommandTable }, + { "set", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", npcSetCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "npc", SEC_MODERATOR, false, NULL, "", npcCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "npc", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", npcCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index 12912f68bd5..20515eb0921 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -37,16 +37,16 @@ public: { static ChatCommand questCommandTable[] = { - { "add", SEC_ADMINISTRATOR, false, &HandleQuestAdd, "", NULL }, - { "complete", SEC_ADMINISTRATOR, false, &HandleQuestComplete, "", NULL }, - { "remove", SEC_ADMINISTRATOR, false, &HandleQuestRemove, "", NULL }, - { "reward", SEC_ADMINISTRATOR, false, &HandleQuestReward, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestAdd, "", NULL }, + { "complete", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestComplete, "", NULL }, + { "remove", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestRemove, "", NULL }, + { "reward", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleQuestReward, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "quest", SEC_ADMINISTRATOR, false, NULL, "", questCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", questCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } @@ -205,19 +205,17 @@ public: for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i) { int32 creature = quest->RequiredNpcOrGo[i]; - uint32 creaturecount = quest->RequiredNpcOrGoCount[i]; + uint32 creatureCount = quest->RequiredNpcOrGoCount[i]; if (creature > 0) { - if (CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(creature)) - for (uint16 z = 0; z < creaturecount; ++z) - player->KilledMonster(cInfo, 0); + if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature)) + for (uint16 z = 0; z < creatureCount; ++z) + player->KilledMonster(creatureInfo, 0); } else if (creature < 0) - { - for (uint16 z = 0; z < creaturecount; ++z) - player->CastedCreatureOrGO(creature, 0, 0); - } + for (uint16 z = 0; z < creatureCount; ++z) + player->KillCreditGO(creature, 0); } // If the quest requires reputation to complete diff --git a/src/server/scripts/Commands/cs_rbac.cpp b/src/server/scripts/Commands/cs_rbac.cpp index 667815ce16c..9c682acb224 100644 --- a/src/server/scripts/Commands/cs_rbac.cpp +++ b/src/server/scripts/Commands/cs_rbac.cpp @@ -53,58 +53,58 @@ public: {
static ChatCommand rbacGroupsCommandTable[] =
{
- { "add", SEC_ADMINISTRATOR, true, &HandleRBACGroupAddCommand, "", NULL },
- { "remove", SEC_ADMINISTRATOR, true, &HandleRBACGroupRemoveCommand, "", NULL },
- { "", SEC_ADMINISTRATOR, true, &HandleRBACGroupListCommand, "", NULL },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "add", RBAC_PERM_COMMAND_RBAC_ACC_GROUP_ADD, true, &HandleRBACGroupAddCommand, "", NULL },
+ { "remove", RBAC_PERM_COMMAND_RBAC_ACC_GROUP_DEL, true, &HandleRBACGroupRemoveCommand, "", NULL },
+ { "", RBAC_PERM_COMMAND_RBAC_ACC_GROUP, true, &HandleRBACGroupListCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand rbacRolesCommandTable[] =
{
- { "grant", SEC_ADMINISTRATOR, true, &HandleRBACRoleGrantCommand, "", NULL },
- { "deny", SEC_ADMINISTRATOR, true, &HandleRBACRoleDenyCommand, "", NULL },
- { "revoke", SEC_ADMINISTRATOR, true, &HandleRBACRoleRevokeCommand, "", NULL },
- { "", SEC_ADMINISTRATOR, true, &HandleRBACRoleListCommand, "", NULL },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "grant", RBAC_PERM_COMMAND_RBAC_ACC_ROLE_GRANT, true, &HandleRBACRoleGrantCommand, "", NULL },
+ { "deny", RBAC_PERM_COMMAND_RBAC_ACC_ROLE_DENY, true, &HandleRBACRoleDenyCommand, "", NULL },
+ { "revoke", RBAC_PERM_COMMAND_RBAC_ACC_ROLE_REVOKE, true, &HandleRBACRoleRevokeCommand, "", NULL },
+ { "", RBAC_PERM_COMMAND_RBAC_ACC_ROLE, true, &HandleRBACRoleListCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand rbacPermsCommandTable[] =
{
- { "grant", SEC_ADMINISTRATOR, true, &HandleRBACPermGrantCommand, "", NULL },
- { "deny", SEC_ADMINISTRATOR, true, &HandleRBACPermDenyCommand, "", NULL },
- { "revoke", SEC_ADMINISTRATOR, true, &HandleRBACPermRevokeCommand, "", NULL },
- { "", SEC_ADMINISTRATOR, true, &HandleRBACPermListCommand, "", NULL },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "grant", RBAC_PERM_COMMAND_RBAC_ACC_PERM_GRANT, true, &HandleRBACPermGrantCommand, "", NULL },
+ { "deny", RBAC_PERM_COMMAND_RBAC_ACC_PERM_DENY, true, &HandleRBACPermDenyCommand, "", NULL },
+ { "revoke", RBAC_PERM_COMMAND_RBAC_ACC_PERM_REVOKE, true, &HandleRBACPermRevokeCommand, "", NULL },
+ { "", RBAC_PERM_COMMAND_RBAC_ACC_PERM, true, &HandleRBACPermListCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand rbacListCommandTable[] =
{
- { "groups", SEC_ADMINISTRATOR, true, &HandleRBACListGroupsCommand, "", NULL },
- { "roles", SEC_ADMINISTRATOR, true, &HandleRBACListRolesCommand, "", NULL },
- { "permissions", SEC_ADMINISTRATOR, true, &HandleRBACListPermissionsCommand, "", NULL },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "groups", RBAC_PERM_COMMAND_RBAC_LIST_GROUPS, true, &HandleRBACListGroupsCommand, "", NULL },
+ { "roles", RBAC_PERM_COMMAND_RBAC_LIST_ROLES, true, &HandleRBACListRolesCommand, "", NULL },
+ { "permissions", RBAC_PERM_COMMAND_RBAC_LIST_PERMS, true, &HandleRBACListPermissionsCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand rbacAccountCommandTable[] =
{
- { "group", SEC_ADMINISTRATOR, true, NULL, "", rbacGroupsCommandTable },
- { "role", SEC_ADMINISTRATOR, true, NULL, "", rbacRolesCommandTable },
- { "permission", SEC_ADMINISTRATOR, true, NULL, "", rbacPermsCommandTable },
- { "", SEC_ADMINISTRATOR, true, &HandleRBACAccountPermissionCommand, "", NULL },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "group", RBAC_PERM_COMMAND_RBAC_ACC_GROUP, true, NULL, "", rbacGroupsCommandTable },
+ { "role", RBAC_PERM_COMMAND_RBAC_ACC_ROLE, true, NULL, "", rbacRolesCommandTable },
+ { "permission", RBAC_PERM_COMMAND_RBAC_ACC_PERM, true, NULL, "", rbacPermsCommandTable },
+ { "", RBAC_PERM_COMMAND_RBAC_ACC, true, &HandleRBACAccountPermissionCommand, "", NULL },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand rbacCommandTable[] =
{
- { "account", SEC_ADMINISTRATOR, true, NULL, "", rbacAccountCommandTable },
- { "list", SEC_ADMINISTRATOR, true, NULL, "", rbacListCommandTable },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "account", RBAC_PERM_COMMAND_RBAC_ACC, true, NULL, "", rbacAccountCommandTable },
+ { "list", RBAC_PERM_COMMAND_RBAC_LIST, true, NULL, "", rbacListCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
{
- { "rbac", SEC_ADMINISTRATOR, true, NULL, "", rbacCommandTable },
- { NULL, SEC_ADMINISTRATOR, false, NULL, "", NULL }
+ { "rbac", RBAC_PERM_COMMAND_RBAC, true, NULL, "", rbacCommandTable },
+ { NULL, 0, false, NULL, "", NULL }
};
return commandTable;
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 5ba9e240d50..89d69ded62b 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -50,115 +50,114 @@ public: { static ChatCommand reloadAllCommandTable[] = { - { "achievement", SEC_ADMINISTRATOR, true, &HandleReloadAllAchievementCommand, "", NULL }, - { "area", SEC_ADMINISTRATOR, true, &HandleReloadAllAreaCommand, "", NULL }, - { "gossips", SEC_ADMINISTRATOR, true, &HandleReloadAllGossipsCommand, "", NULL }, - { "item", SEC_ADMINISTRATOR, true, &HandleReloadAllItemCommand, "", NULL }, - { "locales", SEC_ADMINISTRATOR, true, &HandleReloadAllLocalesCommand, "", NULL }, - { "loot", SEC_ADMINISTRATOR, true, &HandleReloadAllLootCommand, "", NULL }, - { "npc", SEC_ADMINISTRATOR, true, &HandleReloadAllNpcCommand, "", NULL }, - { "quest", SEC_ADMINISTRATOR, true, &HandleReloadAllQuestCommand, "", NULL }, - { "scripts", SEC_ADMINISTRATOR, true, &HandleReloadAllScriptsCommand, "", NULL }, - { "spell", SEC_ADMINISTRATOR, true, &HandleReloadAllSpellCommand, "", NULL }, - { "", SEC_ADMINISTRATOR, true, &HandleReloadAllCommand, "", NULL }, + { "achievement", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllAchievementCommand, "", NULL }, + { "area", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllAreaCommand, "", NULL }, + { "gossips", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllGossipsCommand, "", NULL }, + { "item", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllItemCommand, "", NULL }, + { "locales", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllLocalesCommand, "", NULL }, + { "loot", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllLootCommand, "", NULL }, + { "npc", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllNpcCommand, "", NULL }, + { "quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllQuestCommand, "", NULL }, + { "scripts", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllScriptsCommand, "", NULL }, + { "spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllSpellCommand, "", NULL }, + { "", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAllCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand reloadCommandTable[] = { - { "auctions", SEC_ADMINISTRATOR, true, &HandleReloadAuctionsCommand, "", NULL }, - { "access_requirement", SEC_ADMINISTRATOR, true, &HandleReloadAccessRequirementCommand, "", NULL }, - { "achievement_criteria_data", SEC_ADMINISTRATOR, true, &HandleReloadAchievementCriteriaDataCommand, "", NULL }, - { "achievement_reward", SEC_ADMINISTRATOR, true, &HandleReloadAchievementRewardCommand, "", NULL }, - { "all", SEC_ADMINISTRATOR, true, NULL, "", reloadAllCommandTable }, - { "areatrigger_involvedrelation", SEC_ADMINISTRATOR, true, &HandleReloadQuestAreaTriggersCommand, "", NULL }, - { "areatrigger_tavern", SEC_ADMINISTRATOR, true, &HandleReloadAreaTriggerTavernCommand, "", NULL }, - { "areatrigger_teleport", SEC_ADMINISTRATOR, true, &HandleReloadAreaTriggerTeleportCommand, "", NULL }, - { "autobroadcast", SEC_ADMINISTRATOR, true, &HandleReloadAutobroadcastCommand, "", NULL }, - { "command", SEC_ADMINISTRATOR, true, &HandleReloadCommandCommand, "", NULL }, - { "conditions", SEC_ADMINISTRATOR, true, &HandleReloadConditions, "", NULL }, - { "config", SEC_ADMINISTRATOR, true, &HandleReloadConfigCommand, "", NULL }, - { "creature_text", SEC_ADMINISTRATOR, true, &HandleReloadCreatureText, "", NULL }, - { "creature_questender", SEC_ADMINISTRATOR, true, &HandleReloadCreatureQuestEnderCommand, "", NULL }, - { "creature_linked_respawn", SEC_GAMEMASTER, true, &HandleReloadLinkedRespawnCommand, "", NULL }, - { "creature_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesCreatureCommand, "", NULL }, - { "creature_onkill_reputation", SEC_ADMINISTRATOR, true, &HandleReloadOnKillReputationCommand, "", NULL }, - { "creature_queststarter", SEC_ADMINISTRATOR, true, &HandleReloadCreatureQuestStarterCommand, "", NULL }, - { "creature_summon_groups", SEC_ADMINISTRATOR, true, &HandleReloadCreatureSummonGroupsCommand, "", NULL }, - { "creature_template", SEC_ADMINISTRATOR, true, &HandleReloadCreatureTemplateCommand, "", NULL }, - //{ "db_script_string", SEC_ADMINISTRATOR, true, &HandleReloadDbScriptStringCommand, "", NULL }, - { "disables", SEC_ADMINISTRATOR, true, &HandleReloadDisablesCommand, "", NULL }, - { "disenchant_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesDisenchantCommand, "", NULL }, - { "event_scripts", SEC_ADMINISTRATOR, true, &HandleReloadEventScriptsCommand, "", NULL }, - { "fishing_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesFishingCommand, "", NULL }, - { "game_graveyard_zone", SEC_ADMINISTRATOR, true, &HandleReloadGameGraveyardZoneCommand, "", NULL }, - { "game_tele", SEC_ADMINISTRATOR, true, &HandleReloadGameTeleCommand, "", NULL }, - { "gameobject_questender", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestEnderCommand, "", NULL }, - { "gameobject_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesGameobjectCommand, "", NULL }, - { "gameobject_queststarter", SEC_ADMINISTRATOR, true, &HandleReloadGOQuestStarterCommand, "", NULL }, - { "gm_tickets", SEC_ADMINISTRATOR, true, &HandleReloadGMTicketsCommand, "", NULL }, - { "gossip_menu", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuCommand, "", NULL }, - { "gossip_menu_option", SEC_ADMINISTRATOR, true, &HandleReloadGossipMenuOptionCommand, "", NULL }, - { "item_enchantment_template", SEC_ADMINISTRATOR, true, &HandleReloadItemEnchantementsCommand, "", NULL }, - { "item_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesItemCommand, "", NULL }, - { "lfg_dungeon_rewards", SEC_ADMINISTRATOR, true, &HandleReloadLfgRewardsCommand, "", NULL }, - { "locales_achievement_reward", SEC_ADMINISTRATOR, true, &HandleReloadLocalesAchievementRewardCommand, "", NULL }, - { "locales_creature", SEC_ADMINISTRATOR, true, &HandleReloadLocalesCreatureCommand, "", NULL }, - { "locales_creature_text", SEC_ADMINISTRATOR, true, &HandleReloadLocalesCreatureTextCommand, "", NULL }, - { "locales_gameobject", SEC_ADMINISTRATOR, true, &HandleReloadLocalesGameobjectCommand, "", NULL }, - { "locales_gossip_menu_option", SEC_ADMINISTRATOR, true, &HandleReloadLocalesGossipMenuOptionCommand, "", NULL }, - { "locales_item", SEC_ADMINISTRATOR, true, &HandleReloadLocalesItemCommand, "", NULL }, - { "locales_npc_text", SEC_ADMINISTRATOR, true, &HandleReloadLocalesNpcTextCommand, "", NULL }, - { "locales_page_text", SEC_ADMINISTRATOR, true, &HandleReloadLocalesPageTextCommand, "", NULL }, - { "locales_points_of_interest", SEC_ADMINISTRATOR, true, &HandleReloadLocalesPointsOfInterestCommand, "", NULL }, - { "locales_quest", SEC_ADMINISTRATOR, true, &HandleReloadLocalesQuestCommand, "", NULL }, - { "mail_level_reward", SEC_ADMINISTRATOR, true, &HandleReloadMailLevelRewardCommand, "", NULL }, - { "mail_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesMailCommand, "", NULL }, - { "milling_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesMillingCommand, "", NULL }, - { "npc_spellclick_spells", SEC_ADMINISTRATOR, true, &HandleReloadSpellClickSpellsCommand, "", NULL}, - { "npc_trainer", SEC_ADMINISTRATOR, true, &HandleReloadNpcTrainerCommand, "", NULL }, - { "npc_vendor", SEC_ADMINISTRATOR, true, &HandleReloadNpcVendorCommand, "", NULL }, - { "page_text", SEC_ADMINISTRATOR, true, &HandleReloadPageTextsCommand, "", NULL }, - { "phasedefinitions", SEC_ADMINISTRATOR, true, &HandleReloadPhaseDefinitionsCommand, "", NULL }, - { "pickpocketing_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesPickpocketingCommand, "", NULL}, - { "points_of_interest", SEC_ADMINISTRATOR, true, &HandleReloadPointsOfInterestCommand, "", NULL }, - { "prospecting_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesProspectingCommand, "", NULL }, - { "quest_poi", SEC_ADMINISTRATOR, true, &HandleReloadQuestPOICommand, "", NULL }, - { "quest_template", SEC_ADMINISTRATOR, true, &HandleReloadQuestTemplateCommand, "", NULL }, - { "rbac", SEC_ADMINISTRATOR, true, &HandleReloadRBACCommand, "", NULL }, - { "reference_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesReferenceCommand, "", NULL }, - { "reserved_name", SEC_ADMINISTRATOR, true, &HandleReloadReservedNameCommand, "", NULL }, - { "reputation_reward_rate", SEC_ADMINISTRATOR, true, &HandleReloadReputationRewardRateCommand, "", NULL }, - { "reputation_spillover_template", SEC_ADMINISTRATOR, true, &HandleReloadReputationRewardRateCommand, "", NULL }, - { "skill_discovery_template", SEC_ADMINISTRATOR, true, &HandleReloadSkillDiscoveryTemplateCommand, "", NULL }, - { "skill_extra_item_template", SEC_ADMINISTRATOR, true, &HandleReloadSkillExtraItemTemplateCommand, "", NULL }, - { "skill_fishing_base_level", SEC_ADMINISTRATOR, true, &HandleReloadSkillFishingBaseLevelCommand, "", NULL }, - { "skinning_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesSkinningCommand, "", NULL }, - { "smart_scripts", SEC_ADMINISTRATOR, true, &HandleReloadSmartScripts, "", NULL }, - { "spell_required", SEC_ADMINISTRATOR, true, &HandleReloadSpellRequiredCommand, "", NULL }, - { "spell_area", SEC_ADMINISTRATOR, true, &HandleReloadSpellAreaCommand, "", NULL }, - { "spell_bonus_data", SEC_ADMINISTRATOR, true, &HandleReloadSpellBonusesCommand, "", NULL }, - { "spell_group", SEC_ADMINISTRATOR, true, &HandleReloadSpellGroupsCommand, "", NULL }, - { "spell_learn_spell", SEC_ADMINISTRATOR, true, &HandleReloadSpellLearnSpellCommand, "", NULL }, - { "spell_loot_template", SEC_ADMINISTRATOR, true, &HandleReloadLootTemplatesSpellCommand, "", NULL }, - { "spell_linked_spell", SEC_ADMINISTRATOR, true, &HandleReloadSpellLinkedSpellCommand, "", NULL }, - { "spell_pet_auras", SEC_ADMINISTRATOR, true, &HandleReloadSpellPetAurasCommand, "", NULL }, - { "spell_proc_event", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcEventCommand, "", NULL }, - { "spell_proc", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcsCommand, "", NULL }, - { "spell_scripts", SEC_ADMINISTRATOR, true, &HandleReloadSpellScriptsCommand, "", NULL }, - { "spell_target_position", SEC_ADMINISTRATOR, true, &HandleReloadSpellTargetPositionCommand, "", NULL }, - { "spell_threats", SEC_ADMINISTRATOR, true, &HandleReloadSpellThreatsCommand, "", NULL }, - { "spell_group_stack_rules", SEC_ADMINISTRATOR, true, &HandleReloadSpellGroupStackRulesCommand, "", NULL }, - { "trinity_string", SEC_ADMINISTRATOR, true, &HandleReloadTrinityStringCommand, "", NULL }, - { "warden_action", SEC_ADMINISTRATOR, true, &HandleReloadWardenactionCommand, "", NULL }, - { "waypoint_scripts", SEC_ADMINISTRATOR, true, &HandleReloadWpScriptsCommand, "", NULL }, - { "waypoint_data", SEC_ADMINISTRATOR, true, &HandleReloadWpCommand, "", NULL }, - { "vehicle_accessory", SEC_ADMINISTRATOR, true, &HandleReloadVehicleAccessoryCommand, "", NULL }, - { "vehicle_template_accessory", SEC_ADMINISTRATOR, true, &HandleReloadVehicleTemplateAccessoryCommand, "", NULL }, + { "auctions", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAuctionsCommand, "", NULL }, + { "access_requirement", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAccessRequirementCommand, "", NULL }, + { "achievement_criteria_data", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAchievementCriteriaDataCommand, "", NULL }, + { "achievement_reward", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAchievementRewardCommand, "", NULL }, + { "all", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", reloadAllCommandTable }, + { "areatrigger_involvedrelation", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadQuestAreaTriggersCommand, "", NULL }, + { "areatrigger_tavern", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAreaTriggerTavernCommand, "", NULL }, + { "areatrigger_teleport", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAreaTriggerTeleportCommand, "", NULL }, + { "autobroadcast", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadAutobroadcastCommand, "", NULL }, + { "command", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCommandCommand, "", NULL }, + { "conditions", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadConditions, "", NULL }, + { "config", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadConfigCommand, "", NULL }, + { "creature_text", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCreatureText, "", NULL }, + { "creature_questender", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCreatureQuestEnderCommand, "", NULL }, + { "creature_linked_respawn", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleReloadLinkedRespawnCommand, "", NULL }, + { "creature_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesCreatureCommand, "", NULL }, + { "creature_onkill_reputation", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadOnKillReputationCommand, "", NULL }, + { "creature_queststarter", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCreatureQuestStarterCommand, "", NULL }, + { "creature_summon_groups", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCreatureSummonGroupsCommand, "", NULL }, + { "creature_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadCreatureTemplateCommand, "", NULL }, + //{ "db_script_string", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadDbScriptStringCommand, "", NULL }, + { "disables", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadDisablesCommand, "", NULL }, + { "disenchant_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesDisenchantCommand, "", NULL }, + { "event_scripts", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadEventScriptsCommand, "", NULL }, + { "fishing_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesFishingCommand, "", NULL }, + { "game_graveyard_zone", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGameGraveyardZoneCommand, "", NULL }, + { "game_tele", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGameTeleCommand, "", NULL }, + { "gameobject_questender", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGOQuestEnderCommand, "", NULL }, + { "gameobject_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesGameobjectCommand, "", NULL }, + { "gameobject_queststarter", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGOQuestStarterCommand, "", NULL }, + { "gm_tickets", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGMTicketsCommand, "", NULL }, + { "gossip_menu", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGossipMenuCommand, "", NULL }, + { "gossip_menu_option", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadGossipMenuOptionCommand, "", NULL }, + { "item_enchantment_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadItemEnchantementsCommand, "", NULL }, + { "item_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesItemCommand, "", NULL }, + { "lfg_dungeon_rewards", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLfgRewardsCommand, "", NULL }, + { "locales_achievement_reward", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesAchievementRewardCommand, "", NULL }, + { "locales_creature", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesCreatureCommand, "", NULL }, + { "locales_creature_text", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesCreatureTextCommand, "", NULL }, + { "locales_gameobject", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesGameobjectCommand, "", NULL }, + { "locales_gossip_menu_option", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesGossipMenuOptionCommand, "", NULL }, + { "locales_item", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesItemCommand, "", NULL }, + { "locales_npc_text", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesNpcTextCommand, "", NULL }, + { "locales_page_text", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesPageTextCommand, "", NULL }, + { "locales_points_of_interest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesPointsOfInterestCommand, "", NULL }, + { "locales_quest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLocalesQuestCommand, "", NULL }, + { "mail_level_reward", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadMailLevelRewardCommand, "", NULL }, + { "mail_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesMailCommand, "", NULL }, + { "milling_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesMillingCommand, "", NULL }, + { "npc_spellclick_spells", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellClickSpellsCommand, "", NULL}, + { "npc_trainer", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadNpcTrainerCommand, "", NULL }, + { "npc_vendor", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadNpcVendorCommand, "", NULL }, + { "page_text", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadPageTextsCommand, "", NULL }, + { "pickpocketing_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesPickpocketingCommand, "", NULL}, + { "points_of_interest", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadPointsOfInterestCommand, "", NULL }, + { "prospecting_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesProspectingCommand, "", NULL }, + { "quest_poi", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadQuestPOICommand, "", NULL }, + { "quest_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadQuestTemplateCommand, "", NULL }, + { "rbac", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadRBACCommand, "", NULL }, + { "reference_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesReferenceCommand, "", NULL }, + { "reserved_name", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadReservedNameCommand, "", NULL }, + { "reputation_reward_rate", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadReputationRewardRateCommand, "", NULL }, + { "reputation_spillover_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadReputationRewardRateCommand, "", NULL }, + { "skill_discovery_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSkillDiscoveryTemplateCommand, "", NULL }, + { "skill_extra_item_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSkillExtraItemTemplateCommand, "", NULL }, + { "skill_fishing_base_level", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSkillFishingBaseLevelCommand, "", NULL }, + { "skinning_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesSkinningCommand, "", NULL }, + { "smart_scripts", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSmartScripts, "", NULL }, + { "spell_required", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellRequiredCommand, "", NULL }, + { "spell_area", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellAreaCommand, "", NULL }, + { "spell_bonus_data", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellBonusesCommand, "", NULL }, + { "spell_group", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellGroupsCommand, "", NULL }, + { "spell_learn_spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellLearnSpellCommand, "", NULL }, + { "spell_loot_template", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadLootTemplatesSpellCommand, "", NULL }, + { "spell_linked_spell", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellLinkedSpellCommand, "", NULL }, + { "spell_pet_auras", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellPetAurasCommand, "", NULL }, + { "spell_proc_event", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellProcEventCommand, "", NULL }, + { "spell_proc", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellProcsCommand, "", NULL }, + { "spell_scripts", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellScriptsCommand, "", NULL }, + { "spell_target_position", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellTargetPositionCommand, "", NULL }, + { "spell_threats", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellThreatsCommand, "", NULL }, + { "spell_group_stack_rules", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadSpellGroupStackRulesCommand, "", NULL }, + { "trinity_string", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadTrinityStringCommand, "", NULL }, + { "warden_action", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadWardenactionCommand, "", NULL }, + { "waypoint_scripts", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadWpScriptsCommand, "", NULL }, + { "waypoint_data", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadWpCommand, "", NULL }, + { "vehicle_accessory", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadVehicleAccessoryCommand, "", NULL }, + { "vehicle_template_accessory", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleReloadVehicleTemplateAccessoryCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "reload", SEC_ADMINISTRATOR, true, NULL, "", reloadCommandTable }, + { "reload", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", reloadCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 0d7145d32e8..74e0ad3742d 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -39,18 +39,18 @@ public: { static ChatCommand resetCommandTable[] = { - { "achievements", SEC_ADMINISTRATOR, true, &HandleResetAchievementsCommand, "", NULL }, - { "honor", SEC_ADMINISTRATOR, true, &HandleResetHonorCommand, "", NULL }, - { "level", SEC_ADMINISTRATOR, true, &HandleResetLevelCommand, "", NULL }, - { "spells", SEC_ADMINISTRATOR, true, &HandleResetSpellsCommand, "", NULL }, - { "stats", SEC_ADMINISTRATOR, true, &HandleResetStatsCommand, "", NULL }, - { "talents", SEC_ADMINISTRATOR, true, &HandleResetTalentsCommand, "", NULL }, - { "all", SEC_ADMINISTRATOR, true, &HandleResetAllCommand, "", NULL }, + { "achievements", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetAchievementsCommand, "", NULL }, + { "honor", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetHonorCommand, "", NULL }, + { "level", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetLevelCommand, "", NULL }, + { "spells", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetSpellsCommand, "", NULL }, + { "stats", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetStatsCommand, "", NULL }, + { "talents", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetTalentsCommand, "", NULL }, + { "all", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleResetAllCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "reset", SEC_ADMINISTRATOR, true, NULL, "", resetCommandTable }, + { "reset", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", resetCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index ec8771cc2f4..34543a1a4a5 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -39,59 +39,59 @@ public: { static ChatCommand serverIdleRestartCommandTable[] = { - { "cancel", SEC_ADMINISTRATOR, true, &HandleServerShutDownCancelCommand, "", NULL }, - { "" , SEC_ADMINISTRATOR, true, &HandleServerIdleRestartCommand, "", NULL }, + { "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL }, + { "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerIdleRestartCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand serverIdleShutdownCommandTable[] = { - { "cancel", SEC_ADMINISTRATOR, true, &HandleServerShutDownCancelCommand, "", NULL }, - { "" , SEC_ADMINISTRATOR, true, &HandleServerIdleShutDownCommand, "", NULL }, + { "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL }, + { "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerIdleShutDownCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand serverRestartCommandTable[] = { - { "cancel", SEC_ADMINISTRATOR, true, &HandleServerShutDownCancelCommand, "", NULL }, - { "" , SEC_ADMINISTRATOR, true, &HandleServerRestartCommand, "", NULL }, + { "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL }, + { "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerRestartCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand serverShutdownCommandTable[] = { - { "cancel", SEC_ADMINISTRATOR, true, &HandleServerShutDownCancelCommand, "", NULL }, - { "" , SEC_ADMINISTRATOR, true, &HandleServerShutDownCommand, "", NULL }, + { "cancel", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCancelCommand, "", NULL }, + { "" , RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerShutDownCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand serverSetCommandTable[] = { - { "difftime", SEC_CONSOLE, true, &HandleServerSetDiffTimeCommand, "", NULL }, - { "loglevel", SEC_CONSOLE, true, &HandleServerSetLogLevelCommand, "", NULL }, - { "motd", SEC_ADMINISTRATOR, true, &HandleServerSetMotdCommand, "", NULL }, - { "closed", SEC_ADMINISTRATOR, true, &HandleServerSetClosedCommand, "", NULL }, + { "difftime", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerSetDiffTimeCommand, "", NULL }, + { "loglevel", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerSetLogLevelCommand, "", NULL }, + { "motd", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerSetMotdCommand, "", NULL }, + { "closed", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerSetClosedCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand serverCommandTable[] = { - { "corpses", SEC_GAMEMASTER, true, &HandleServerCorpsesCommand, "", NULL }, - { "exit", SEC_CONSOLE, true, &HandleServerExitCommand, "", NULL }, - { "idlerestart", SEC_ADMINISTRATOR, true, NULL, "", serverIdleRestartCommandTable }, - { "idleshutdown", SEC_ADMINISTRATOR, true, NULL, "", serverIdleShutdownCommandTable }, - { "info", SEC_PLAYER, true, &HandleServerInfoCommand, "", NULL }, - { "motd", SEC_PLAYER, true, &HandleServerMotdCommand, "", NULL }, - { "plimit", SEC_ADMINISTRATOR, true, &HandleServerPLimitCommand, "", NULL }, - { "restart", SEC_ADMINISTRATOR, true, NULL, "", serverRestartCommandTable }, - { "shutdown", SEC_ADMINISTRATOR, true, NULL, "", serverShutdownCommandTable }, - { "set", SEC_ADMINISTRATOR, true, NULL, "", serverSetCommandTable }, + { "corpses", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleServerCorpsesCommand, "", NULL }, + { "exit", RBAC_PERM_CONSOLE_COMMANDS, true, &HandleServerExitCommand, "", NULL }, + { "idlerestart", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverIdleRestartCommandTable }, + { "idleshutdown", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverIdleShutdownCommandTable }, + { "info", RBAC_PERM_PLAYER_COMMANDS, true, &HandleServerInfoCommand, "", NULL }, + { "motd", RBAC_PERM_PLAYER_COMMANDS, true, &HandleServerMotdCommand, "", NULL }, + { "plimit", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleServerPLimitCommand, "", NULL }, + { "restart", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverRestartCommandTable }, + { "shutdown", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverShutdownCommandTable }, + { "set", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverSetCommandTable }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "server", SEC_ADMINISTRATOR, true, NULL, "", serverCommandTable }, + { "server", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, NULL, "", serverCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 12276102df1..9dc013a995f 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -39,16 +39,16 @@ public: { static ChatCommand teleCommandTable[] = { - { "add", SEC_ADMINISTRATOR, false, &HandleTeleAddCommand, "", NULL }, - { "del", SEC_ADMINISTRATOR, true, &HandleTeleDelCommand, "", NULL }, - { "name", SEC_MODERATOR, true, &HandleTeleNameCommand, "", NULL }, - { "group", SEC_MODERATOR, false, &HandleTeleGroupCommand, "", NULL }, - { "", SEC_MODERATOR, false, &HandleTeleCommand, "", NULL }, + { "add", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleTeleAddCommand, "", NULL }, + { "del", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleTeleDelCommand, "", NULL }, + { "name", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleTeleNameCommand, "", NULL }, + { "group", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleTeleGroupCommand, "", NULL }, + { "", RBAC_PERM_MODERATOR_COMMANDS, false, &HandleTeleCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "tele", SEC_MODERATOR, false, NULL, "", teleCommandTable }, + { "tele", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", teleCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index 0795b2ab90c..5c1ce304723 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -40,33 +40,33 @@ public: { static ChatCommand ticketResponseCommandTable[] = { - { "append", SEC_MODERATOR, true, &HandleGMTicketResponseAppendCommand, "", NULL }, - { "appendln", SEC_MODERATOR, true, &HandleGMTicketResponseAppendLnCommand, "", NULL }, + { "append", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketResponseAppendCommand, "", NULL }, + { "appendln", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketResponseAppendLnCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand ticketCommandTable[] = { - { "assign", SEC_GAMEMASTER, true, &HandleGMTicketAssignToCommand, "", NULL }, - { "close", SEC_MODERATOR, true, &HandleGMTicketCloseByIdCommand, "", NULL }, - { "closedlist", SEC_MODERATOR, true, &HandleGMTicketListClosedCommand, "", NULL }, - { "comment", SEC_MODERATOR, true, &HandleGMTicketCommentCommand, "", NULL }, - { "complete", SEC_MODERATOR, true, &HandleGMTicketCompleteCommand, "", NULL }, - { "delete", SEC_ADMINISTRATOR, true, &HandleGMTicketDeleteByIdCommand, "", NULL }, - { "escalate", SEC_MODERATOR, true, &HandleGMTicketEscalateCommand, "", NULL }, - { "escalatedlist", SEC_GAMEMASTER, true, &HandleGMTicketListEscalatedCommand, "", NULL }, - { "list", SEC_MODERATOR, true, &HandleGMTicketListCommand, "", NULL }, - { "onlinelist", SEC_MODERATOR, true, &HandleGMTicketListOnlineCommand, "", NULL }, - { "reset", SEC_ADMINISTRATOR, true, &HandleGMTicketResetCommand, "", NULL }, - { "response", SEC_MODERATOR, true, NULL, "", ticketResponseCommandTable }, - { "togglesystem", SEC_ADMINISTRATOR, true, &HandleToggleGMTicketSystem, "", NULL }, - { "unassign", SEC_GAMEMASTER, true, &HandleGMTicketUnAssignCommand, "", NULL }, - { "viewid", SEC_MODERATOR, true, &HandleGMTicketGetByIdCommand, "", NULL }, - { "viewname", SEC_MODERATOR, true, &HandleGMTicketGetByNameCommand, "", NULL }, + { "assign", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGMTicketAssignToCommand, "", NULL }, + { "close", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketCloseByIdCommand, "", NULL }, + { "closedlist", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketListClosedCommand, "", NULL }, + { "comment", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketCommentCommand, "", NULL }, + { "complete", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketCompleteCommand, "", NULL }, + { "delete", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleGMTicketDeleteByIdCommand, "", NULL }, + { "escalate", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketEscalateCommand, "", NULL }, + { "escalatedlist", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGMTicketListEscalatedCommand, "", NULL }, + { "list", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketListCommand, "", NULL }, + { "onlinelist", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketListOnlineCommand, "", NULL }, + { "reset", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleGMTicketResetCommand, "", NULL }, + { "response", RBAC_PERM_MODERATOR_COMMANDS, true, NULL, "", ticketResponseCommandTable }, + { "togglesystem", RBAC_PERM_ADMINISTRATOR_COMMANDS, true, &HandleToggleGMTicketSystem, "", NULL }, + { "unassign", RBAC_PERM_GAMEMASTER_COMMANDS, true, &HandleGMTicketUnAssignCommand, "", NULL }, + { "viewid", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketGetByIdCommand, "", NULL }, + { "viewname", RBAC_PERM_MODERATOR_COMMANDS, true, &HandleGMTicketGetByNameCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "ticket", SEC_MODERATOR, false, NULL, "", ticketCommandTable }, + { "ticket", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", ticketCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index 57ccbaa9657..5d2edc45a35 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -37,21 +37,21 @@ public: { static ChatCommand titlesSetCommandTable[] = { - { "mask", SEC_GAMEMASTER, false, &HandleTitlesSetMaskCommand, "", NULL }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "mask", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTitlesSetMaskCommand, "", NULL }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand titlesCommandTable[] = { - { "add", SEC_GAMEMASTER, false, &HandleTitlesAddCommand, "", NULL }, - { "current", SEC_GAMEMASTER, false, &HandleTitlesCurrentCommand, "", NULL }, - { "remove", SEC_GAMEMASTER, false, &HandleTitlesRemoveCommand, "", NULL }, - { "set", SEC_GAMEMASTER, false, NULL, "", titlesSetCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTitlesAddCommand, "", NULL }, + { "current", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTitlesCurrentCommand, "", NULL }, + { "remove", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleTitlesRemoveCommand, "", NULL }, + { "set", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", titlesSetCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "titles", SEC_GAMEMASTER, false, NULL, "", titlesCommandTable }, - { NULL, SEC_PLAYER, false, NULL, "", NULL } + { "titles", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", titlesCommandTable }, + { NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL } }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index f23255818e0..1da918241c4 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -38,18 +38,18 @@ public: { static ChatCommand wpCommandTable[] = { - { "add", SEC_GAMEMASTER, false, &HandleWpAddCommand, "", NULL }, - { "event", SEC_GAMEMASTER, false, &HandleWpEventCommand, "", NULL }, - { "load", SEC_GAMEMASTER, false, &HandleWpLoadCommand, "", NULL }, - { "modify", SEC_GAMEMASTER, false, &HandleWpModifyCommand, "", NULL }, - { "unload", SEC_GAMEMASTER, false, &HandleWpUnLoadCommand, "", NULL }, - { "reload", SEC_ADMINISTRATOR, false, &HandleWpReloadCommand, "", NULL }, - { "show", SEC_GAMEMASTER, false, &HandleWpShowCommand, "", NULL }, + { "add", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpAddCommand, "", NULL }, + { "event", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpEventCommand, "", NULL }, + { "load", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpLoadCommand, "", NULL }, + { "modify", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpModifyCommand, "", NULL }, + { "unload", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpUnLoadCommand, "", NULL }, + { "reload", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleWpReloadCommand, "", NULL }, + { "show", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleWpShowCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = { - { "wp", SEC_GAMEMASTER, false, NULL, "", wpCommandTable }, + { "wp", RBAC_PERM_GAMEMASTER_COMMANDS, false, NULL, "", wpCommandTable }, { NULL, 0, false, NULL, "", NULL } }; return commandTable; diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index ab74a76a440..8ee1de1c8d5 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -172,7 +172,7 @@ public: if (Creature* stillpine = go->FindNearestCreature(NPC_PRINCESS_STILLPINE, 25, true)) { stillpine->GetMotionMaster()->MovePoint(1, go->GetPositionX(), go->GetPositionY()-15, go->GetPositionZ()); - player->CastedCreatureOrGO(NPC_PRINCESS_STILLPINE, 0, SPELL_OPENING_PRINCESS_STILLPINE_CREDIT); + player->KilledMonsterCredit(NPC_PRINCESS_STILLPINE, stillpine->GetGUID()); } return true; } diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index cb88e5a5a9c..eac3dce43b0 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -1899,7 +1899,7 @@ class spell_unlocking_zuluheds_chains : public SpellScriptLoader { if (GetCaster()->GetTypeId() == TYPEID_PLAYER) if (Creature* karynaku = GetCaster()->FindNearestCreature(NPC_KARYNAKU, 15.0f)) - GetCaster()->ToPlayer()->CastedCreatureOrGO(NPC_KARYNAKU, karynaku->GetGUID(), GetSpellInfo()->Id); + GetCaster()->ToPlayer()->KilledMonsterCredit(NPC_KARYNAKU, karynaku->GetGUID()); } void Register() OVERRIDE diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 2a23d6d8135..7b9821c60a9 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1967,67 +1967,67 @@ enum EscapeFromSilverbrook { SPELL_SUMMON_WORGEN = 48681 }; - + // 48682 - Escape from Silverbrook - Periodic Dummy class spell_q12308_escape_from_silverbrook : public SpellScriptLoader { public: spell_q12308_escape_from_silverbrook() : SpellScriptLoader("spell_q12308_escape_from_silverbrook") { } - + class spell_q12308_escape_from_silverbrook_SpellScript : public SpellScript { PrepareSpellScript(spell_q12308_escape_from_silverbrook_SpellScript); - + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE { if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_WORGEN)) return false; return true; } - + void HandleDummy(SpellEffIndex /*effIndex*/) { GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_WORGEN, true); } - + void Register() OVERRIDE { OnEffectHit += SpellEffectFn(spell_q12308_escape_from_silverbrook_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - + SpellScript* GetSpellScript() const OVERRIDE { return new spell_q12308_escape_from_silverbrook_SpellScript(); } }; - + // 48681 - Summon Silverbrook Worgen class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScriptLoader { public: spell_q12308_escape_from_silverbrook_summon_worgen() : SpellScriptLoader("spell_q12308_escape_from_silverbrook_summon_worgen") { } - + class spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript : public SpellScript { PrepareSpellScript(spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript); - + void ModDest(SpellEffIndex effIndex) { float dist = GetSpellInfo()->Effects[effIndex].CalcRadius(GetCaster()); float angle = (urand(0, 1) ? -1 : 1) * (frand(0.75f, 1.0f) * M_PI); - + Position pos; GetCaster()->GetNearPosition(pos, dist, angle); GetHitDest()->Relocate(&pos); } - + void Register() OVERRIDE { OnEffectHit += SpellEffectFn(spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript::ModDest, EFFECT_0, SPELL_EFFECT_SUMMON); } }; - + SpellScript* GetSpellScript() const OVERRIDE { return new spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript(); diff --git a/src/server/shared/Cryptography/BigNumber.cpp b/src/server/shared/Cryptography/BigNumber.cpp index b2fce985f21..bfe92cd6051 100644 --- a/src/server/shared/Cryptography/BigNumber.cpp +++ b/src/server/shared/Cryptography/BigNumber.cpp @@ -58,7 +58,7 @@ void BigNumber::SetQword(uint64 val) void BigNumber::SetBinary(uint8 const* bytes, int32 len) { uint8* array = new uint8[len]; - + for (int i = 0; i < len; i++) array[i] = bytes[len - 1 - i]; diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp index 75bafb571e9..addfc8f0f7b 100644 --- a/src/server/shared/Database/Implementation/WorldDatabase.cpp +++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp @@ -77,7 +77,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_INS_CREATURE_TRANSPORT, "INSERT INTO creature_transport (guid, npc_entry, transport_entry, TransOffsetX, TransOffsetY, TransOffsetZ, TransOffsetO) values (?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(WORLD_UPD_CREATURE_TRANSPORT_EMOTE, "UPDATE creature_transport SET emote = ? WHERE transport_entry = ? AND guid = ?", CONNECTION_ASYNC); - PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, security, help FROM command", CONNECTION_SYNCH); + PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, permission, help FROM command", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, exp_unk, faction_A, faction_H, npcflag, speed_walk, speed_run, scale, rank, mindmg, maxdmg, dmgschool, attackpower, dmg_multiplier, baseattacktime, rangeattacktime, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_type, trainer_class, trainer_race, minrangedmg, maxrangedmg, rangedattackpower, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, Health_mod, Mana_mod, Mana_mod_extra, Armor_mod, RacialLeader, questItem1, questItem2, questItem3, questItem4, questItem5, questItem6, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH); PrepareStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME, "SELECT entry FROM item_template WHERE name = ?", CONNECTION_SYNCH); diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index ce4312672d3..9da746f3f42 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2910,3 +2910,37 @@ Currency.ConquestPointsArenaReward = 180 # ################################################################################################### +# +# Packet Spoof Protection Settings +# +# These settings determine which action to take when harmful packet spoofing is detected. +# +# PacketSpoof.Policy +# Description: Determines the course of action when packet spoofing is detected. +# Values: 0 - Log only (LOG_FILTER_NETWORKIO) +# 1 - Log + kick +# 2 - Log + kick + ban + +PacketSpoof.Policy = 1 + +# +# PacketSpoof.BanMode +# Description: If PacketSpoof.Policy equals 2, this will determine the ban mode. +# Values: 0 - Ban Account +# 2 - Ban IP +# Note: Banning by character not supported for logical reasons. +# + +PacketSpoof.BanMode = 0 + +# +# PacketSpoof.BanDuration +# Description: Duration of the ban in seconds. Only valid if PacketSpoof.Policy is set to 2. +# Set to 0 for permanent ban. +# Default: 86400 seconds (1 day) +# + +PacketSpoof.BanDuration = 86400 + +# +################################################################################################### |
