Core/RBAC: Move npc commands to RBAC (using individual permissions)
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
/* cs_npc.cpp */
|
||||
|
||||
SET @id = 570;
|
||||
|
||||
-- Add new permissions
|
||||
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+31;
|
||||
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
|
||||
(@id+0, 'npc'),
|
||||
(@id+1, 'npc add'),
|
||||
(@id+2, 'npc add formation'),
|
||||
(@id+3, 'npc add item'),
|
||||
(@id+4, 'npc add move'),
|
||||
(@id+5, 'npc add temp'),
|
||||
(@id+6, 'npc add delete'),
|
||||
(@id+7, 'npc add delete item'),
|
||||
(@id+8, 'npc add follow'),
|
||||
(@id+9, 'npc add follow stop'),
|
||||
(@id+10, 'npc set'),
|
||||
(@id+11, 'npc set allowmove'),
|
||||
(@id+12, 'npc set entry'),
|
||||
(@id+13, 'npc set factionid'),
|
||||
(@id+14, 'npc set flag'),
|
||||
(@id+15, 'npc set level'),
|
||||
(@id+16, 'npc set link'),
|
||||
(@id+17, 'npc set model'),
|
||||
(@id+18, 'npc set movetype'),
|
||||
(@id+19, 'npc set phase'),
|
||||
(@id+20, 'npc set spawndist'),
|
||||
(@id+21, 'npc set spawntime'),
|
||||
(@id+22, 'npc set data'),
|
||||
(@id+23, 'npc info'),
|
||||
(@id+24, 'npc near'),
|
||||
(@id+25, 'npc move'),
|
||||
(@id+26, 'npc playemote'),
|
||||
(@id+27, 'npc say'),
|
||||
(@id+28, 'npc textemote'),
|
||||
(@id+29, 'npc whisper'),
|
||||
(@id+30, 'npc yell'),
|
||||
(@id+31, 'npc tame');
|
||||
|
||||
-- Add permissions to "corresponding Commands Role"
|
||||
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+31;
|
||||
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
|
||||
(2, @id+0),
|
||||
(3, @id+1),
|
||||
(3, @id+2),
|
||||
(3, @id+3),
|
||||
(3, @id+4),
|
||||
(3, @id+5),
|
||||
(3, @id+6),
|
||||
(3, @id+7),
|
||||
(3, @id+8),
|
||||
(3, @id+9),
|
||||
(3, @id+10),
|
||||
(4, @id+11),
|
||||
(4, @id+12),
|
||||
(3, @id+13),
|
||||
(3, @id+14),
|
||||
(3, @id+15),
|
||||
(3, @id+16),
|
||||
(3, @id+17),
|
||||
(3, @id+18),
|
||||
(3, @id+19),
|
||||
(3, @id+20),
|
||||
(3, @id+21),
|
||||
(4, @id+22),
|
||||
(4, @id+23),
|
||||
(3, @id+24),
|
||||
(3, @id+25),
|
||||
(4, @id+26),
|
||||
(2, @id+27),
|
||||
(2, @id+28),
|
||||
(2, @id+29),
|
||||
(2, @id+30),
|
||||
(3, @id+31);
|
||||
@@ -0,0 +1,37 @@
|
||||
/* cs_npc.cpp */
|
||||
|
||||
SET @id = 570;
|
||||
|
||||
-- Update command table with new RBAC permissions
|
||||
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'npc';
|
||||
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'npc add';
|
||||
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'npc add formation';
|
||||
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'npc add item';
|
||||
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'npc add move';
|
||||
UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'npc add temp';
|
||||
UPDATE `command` SET `permission` = @id+6 WHERE `name` = 'npc add delete';
|
||||
UPDATE `command` SET `permission` = @id+7 WHERE `name` = 'npc add delete item';
|
||||
UPDATE `command` SET `permission` = @id+8 WHERE `name` = 'npc add follow';
|
||||
UPDATE `command` SET `permission` = @id+9 WHERE `name` = 'npc add follow stop';
|
||||
UPDATE `command` SET `permission` = @id+10 WHERE `name` = 'npc set';
|
||||
UPDATE `command` SET `permission` = @id+11 WHERE `name` = 'npc set allowmove';
|
||||
UPDATE `command` SET `permission` = @id+12 WHERE `name` = 'npc set entry';
|
||||
UPDATE `command` SET `permission` = @id+13 WHERE `name` = 'npc set factionid';
|
||||
UPDATE `command` SET `permission` = @id+14 WHERE `name` = 'npc set flag';
|
||||
UPDATE `command` SET `permission` = @id+15 WHERE `name` = 'npc set level';
|
||||
UPDATE `command` SET `permission` = @id+16 WHERE `name` = 'npc set link';
|
||||
UPDATE `command` SET `permission` = @id+17 WHERE `name` = 'npc set model';
|
||||
UPDATE `command` SET `permission` = @id+18 WHERE `name` = 'npc set movetype';
|
||||
UPDATE `command` SET `permission` = @id+19 WHERE `name` = 'npc set phase';
|
||||
UPDATE `command` SET `permission` = @id+20 WHERE `name` = 'npc set spawndist';
|
||||
UPDATE `command` SET `permission` = @id+21 WHERE `name` = 'npc set spawntime';
|
||||
UPDATE `command` SET `permission` = @id+22 WHERE `name` = 'npc set data';
|
||||
UPDATE `command` SET `permission` = @id+23 WHERE `name` = 'npc info';
|
||||
UPDATE `command` SET `permission` = @id+24 WHERE `name` = 'npc near';
|
||||
UPDATE `command` SET `permission` = @id+25 WHERE `name` = 'npc move';
|
||||
UPDATE `command` SET `permission` = @id+26 WHERE `name` = 'npc playemote';
|
||||
UPDATE `command` SET `permission` = @id+27 WHERE `name` = 'npc say';
|
||||
UPDATE `command` SET `permission` = @id+28 WHERE `name` = 'npc textemote';
|
||||
UPDATE `command` SET `permission` = @id+29 WHERE `name` = 'npc whisper';
|
||||
UPDATE `command` SET `permission` = @id+30 WHERE `name` = 'npc yell';
|
||||
UPDATE `command` SET `permission` = @id+31 WHERE `name` = 'npc tame';
|
||||
@@ -469,6 +469,38 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_MODIFY_SPELL = 567,
|
||||
RBAC_PERM_COMMAND_MODIFY_STANDSTATE = 568,
|
||||
RBAC_PERM_COMMAND_MODIFY_TALENTPOINTS = 569,
|
||||
RBAC_PERM_COMMAND_NPC = 570,
|
||||
RBAC_PERM_COMMAND_NPC_ADD = 571,
|
||||
RBAC_PERM_COMMAND_NPC_ADD_FORMATION = 572,
|
||||
RBAC_PERM_COMMAND_NPC_ADD_ITEM = 573,
|
||||
RBAC_PERM_COMMAND_NPC_ADD_MOVE = 574,
|
||||
RBAC_PERM_COMMAND_NPC_ADD_TEMP = 575,
|
||||
RBAC_PERM_COMMAND_NPC_DELETE = 576,
|
||||
RBAC_PERM_COMMAND_NPC_DELETE_ITEM = 577,
|
||||
RBAC_PERM_COMMAND_NPC_FOLLOW = 578,
|
||||
RBAC_PERM_COMMAND_NPC_FOLLOW_STOP = 579,
|
||||
RBAC_PERM_COMMAND_NPC_SET = 580,
|
||||
RBAC_PERM_COMMAND_NPC_SET_ALLOWMOVE = 581,
|
||||
RBAC_PERM_COMMAND_NPC_SET_ENTRY = 582,
|
||||
RBAC_PERM_COMMAND_NPC_SET_FACTIONID = 583,
|
||||
RBAC_PERM_COMMAND_NPC_SET_FLAG = 584,
|
||||
RBAC_PERM_COMMAND_NPC_SET_LEVEL = 585,
|
||||
RBAC_PERM_COMMAND_NPC_SET_LINK = 586,
|
||||
RBAC_PERM_COMMAND_NPC_SET_MODEL = 587,
|
||||
RBAC_PERM_COMMAND_NPC_SET_MOVETYPE = 588,
|
||||
RBAC_PERM_COMMAND_NPC_SET_PHASE = 589,
|
||||
RBAC_PERM_COMMAND_NPC_SET_SPAWNDIST = 590,
|
||||
RBAC_PERM_COMMAND_NPC_SET_SPAWNTIME = 591,
|
||||
RBAC_PERM_COMMAND_NPC_SET_DATA = 592,
|
||||
RBAC_PERM_COMMAND_NPC_INFO = 593,
|
||||
RBAC_PERM_COMMAND_NPC_NEAR = 594,
|
||||
RBAC_PERM_COMMAND_NPC_MOVE = 595,
|
||||
RBAC_PERM_COMMAND_NPC_PLAYEMOTE = 596,
|
||||
RBAC_PERM_COMMAND_NPC_SAY = 597,
|
||||
RBAC_PERM_COMMAND_NPC_TEXTEMOTE = 598,
|
||||
RBAC_PERM_COMMAND_NPC_WHISPER = 599,
|
||||
RBAC_PERM_COMMAND_NPC_YELL = 600,
|
||||
RBAC_PERM_COMMAND_NPC_TAME = 601,
|
||||
|
||||
// custom permissions 1000+
|
||||
RBAC_PERM_MAX
|
||||
|
||||
@@ -153,69 +153,65 @@ public:
|
||||
{
|
||||
static ChatCommand npcAddCommandTable[] =
|
||||
{
|
||||
{ "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", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleNpcAddWeaponCommand, "", NULL },
|
||||
//}
|
||||
{ "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcAddCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "formation", RBAC_PERM_COMMAND_NPC_ADD_FORMATION, false, &HandleNpcAddFormationCommand, "", NULL },
|
||||
{ "item", RBAC_PERM_COMMAND_NPC_ADD_ITEM, false, &HandleNpcAddVendorItemCommand, "", NULL },
|
||||
{ "move", RBAC_PERM_COMMAND_NPC_ADD_MOVE, false, &HandleNpcAddMoveCommand, "", NULL },
|
||||
{ "temp", RBAC_PERM_COMMAND_NPC_ADD_TEMP, false, &HandleNpcAddTempSpawnCommand, "", NULL },
|
||||
//{ "weapon", RBAC_PERM_COMMAND_NPC_ADD_WEAPON, false, &HandleNpcAddWeaponCommand, "", NULL },
|
||||
{ "", RBAC_PERM_COMMAND_NPC_ADD, false, &HandleNpcAddCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand npcDeleteCommandTable[] =
|
||||
{
|
||||
{ "item", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcDeleteVendorItemCommand, "", NULL },
|
||||
{ "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcDeleteCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "item", RBAC_PERM_COMMAND_NPC_DELETE_ITEM, false, &HandleNpcDeleteVendorItemCommand, "", NULL },
|
||||
{ "", RBAC_PERM_COMMAND_NPC_DELETE, false, &HandleNpcDeleteCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand npcFollowCommandTable[] =
|
||||
{
|
||||
{ "stop", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcUnFollowCommand, "", NULL },
|
||||
{ "", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcFollowCommand, "", NULL },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "stop", RBAC_PERM_COMMAND_NPC_FOLLOW_STOP, false, &HandleNpcUnFollowCommand, "", NULL },
|
||||
{ "", RBAC_PERM_COMMAND_NPC_FOLLOW, false, &HandleNpcFollowCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand npcSetCommandTable[] =
|
||||
{
|
||||
{ "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", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetNameCommand, "", NULL },
|
||||
{ "subname", RBAC_PERM_GAMEMASTER_COMMANDS, false, &HandleNpcSetSubNameCommand, "", NULL },
|
||||
//}
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "allowmove", RBAC_PERM_COMMAND_NPC_SET_ALLOWMOVE, false, &HandleNpcSetAllowMovementCommand, "", NULL },
|
||||
{ "entry", RBAC_PERM_COMMAND_NPC_SET_ENTRY, false, &HandleNpcSetEntryCommand, "", NULL },
|
||||
{ "factionid", RBAC_PERM_COMMAND_NPC_SET_FACTIONID, false, &HandleNpcSetFactionIdCommand, "", NULL },
|
||||
{ "flag", RBAC_PERM_COMMAND_NPC_SET_FLAG, false, &HandleNpcSetFlagCommand, "", NULL },
|
||||
{ "level", RBAC_PERM_COMMAND_NPC_SET_LEVEL, false, &HandleNpcSetLevelCommand, "", NULL },
|
||||
{ "link", RBAC_PERM_COMMAND_NPC_SET_LINK, false, &HandleNpcSetLinkCommand, "", NULL },
|
||||
{ "model", RBAC_PERM_COMMAND_NPC_SET_MODEL, false, &HandleNpcSetModelCommand, "", NULL },
|
||||
{ "movetype", RBAC_PERM_COMMAND_NPC_SET_MOVETYPE, false, &HandleNpcSetMoveTypeCommand, "", NULL },
|
||||
{ "phase", RBAC_PERM_COMMAND_NPC_SET_PHASE, false, &HandleNpcSetPhaseCommand, "", NULL },
|
||||
{ "spawndist", RBAC_PERM_COMMAND_NPC_SET_SPAWNDIST, false, &HandleNpcSetSpawnDistCommand, "", NULL },
|
||||
{ "spawntime", RBAC_PERM_COMMAND_NPC_SET_SPAWNTIME, false, &HandleNpcSetSpawnTimeCommand, "", NULL },
|
||||
{ "data", RBAC_PERM_COMMAND_NPC_SET_DATA, false, &HandleNpcSetDataCommand, "", NULL },
|
||||
//{ "name", RBAC_PERM_COMMAND_NPC_SET_NAME, false, &HandleNpcSetNameCommand, "", NULL },
|
||||
//{ "subname", RBAC_PERM_COMMAND_NPC_SET_SUBNAME, false, &HandleNpcSetSubNameCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand npcCommandTable[] =
|
||||
{
|
||||
{ "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 }
|
||||
{ "info", RBAC_PERM_COMMAND_NPC_INFO, false, &HandleNpcInfoCommand, "", NULL },
|
||||
{ "near", RBAC_PERM_COMMAND_NPC_NEAR, false, &HandleNpcNearCommand, "", NULL },
|
||||
{ "move", RBAC_PERM_COMMAND_NPC_MOVE, false, &HandleNpcMoveCommand, "", NULL },
|
||||
{ "playemote", RBAC_PERM_COMMAND_NPC_PLAYEMOTE, false, &HandleNpcPlayEmoteCommand, "", NULL },
|
||||
{ "say", RBAC_PERM_COMMAND_NPC_SAY, false, &HandleNpcSayCommand, "", NULL },
|
||||
{ "textemote", RBAC_PERM_COMMAND_NPC_TEXTEMOTE, false, &HandleNpcTextEmoteCommand, "", NULL },
|
||||
{ "whisper", RBAC_PERM_COMMAND_NPC_WHISPER, false, &HandleNpcWhisperCommand, "", NULL },
|
||||
{ "yell", RBAC_PERM_COMMAND_NPC_YELL, false, &HandleNpcYellCommand, "", NULL },
|
||||
{ "tame", RBAC_PERM_COMMAND_NPC_TAME, false, &HandleNpcTameCommand, "", NULL },
|
||||
{ "add", RBAC_PERM_COMMAND_NPC_ADD, false, NULL, "", npcAddCommandTable },
|
||||
{ "delete", RBAC_PERM_COMMAND_NPC_DELETE, false, NULL, "", npcDeleteCommandTable },
|
||||
{ "follow", RBAC_PERM_COMMAND_NPC_FOLLOW, false, NULL, "", npcFollowCommandTable },
|
||||
{ "set", RBAC_PERM_COMMAND_NPC_SET, false, NULL, "", npcSetCommandTable },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
static ChatCommand commandTable[] =
|
||||
{
|
||||
{ "npc", RBAC_PERM_MODERATOR_COMMANDS, false, NULL, "", npcCommandTable },
|
||||
{ NULL, RBAC_PERM_PLAYER_COMMANDS, false, NULL, "", NULL }
|
||||
{ "npc", RBAC_PERM_COMMAND_NPC, false, NULL, "", npcCommandTable },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
return commandTable;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user