Scripts/Commands: Convert title commands to new system
Port From (https://github.com/TrinityCore/TrinityCore/commit/b1847b1fd9c94f05d786ffbef19ee68fc7e2921b)
This commit is contained in:
@@ -636,11 +636,11 @@ namespace Framework.Constants
|
|||||||
CommandTicketUnassign = 758, // Deprecated Since Draenor Don'T Reuse
|
CommandTicketUnassign = 758, // Deprecated Since Draenor Don'T Reuse
|
||||||
CommandTicketViewid = 759, // Deprecated Since Draenor Don'T Reuse
|
CommandTicketViewid = 759, // Deprecated Since Draenor Don'T Reuse
|
||||||
CommandTicketViewname = 760, // Deprecated Since Draenor Don'T Reuse
|
CommandTicketViewname = 760, // Deprecated Since Draenor Don'T Reuse
|
||||||
CommandTitles = 761,
|
// 761 previously used, do not reuse
|
||||||
CommandTitlesAdd = 762,
|
CommandTitlesAdd = 762,
|
||||||
CommandTitlesCurrent = 763,
|
CommandTitlesCurrent = 763,
|
||||||
CommandTitlesRemove = 764,
|
CommandTitlesRemove = 764,
|
||||||
CommandTitlesSet = 765,
|
// 765 previously used, do not reuse
|
||||||
CommandTitlesSetMask = 766,
|
CommandTitlesSetMask = 766,
|
||||||
CommandWp = 767,
|
CommandWp = 767,
|
||||||
CommandWpAdd = 768,
|
CommandWpAdd = 768,
|
||||||
|
|||||||
@@ -28,19 +28,8 @@ namespace Game.Chat.Commands
|
|||||||
class TitleCommands
|
class TitleCommands
|
||||||
{
|
{
|
||||||
[Command("current", RBACPermissions.CommandTitlesCurrent)]
|
[Command("current", RBACPermissions.CommandTitlesCurrent)]
|
||||||
static bool HandleTitlesCurrentCommand(CommandHandler handler, StringArguments args)
|
static bool HandleTitlesCurrentCommand(CommandHandler handler, uint titleId)
|
||||||
{
|
{
|
||||||
// number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
|
|
||||||
string id_p = handler.ExtractKeyFromLink(args, "Htitle");
|
|
||||||
if (string.IsNullOrEmpty(id_p))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!uint.TryParse(id_p, out uint id) || id == 0)
|
|
||||||
{
|
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player target = handler.GetSelectedPlayer();
|
Player target = handler.GetSelectedPlayer();
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
@@ -52,36 +41,26 @@ namespace Game.Chat.Commands
|
|||||||
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(id);
|
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(titleId);
|
||||||
if (titleInfo == null)
|
if (titleInfo == null)
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
handler.SendSysMessage(CypherStrings.InvalidTitleId, titleId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
string tNameLink = handler.GetNameLink(target);
|
string tNameLink = handler.GetNameLink(target);
|
||||||
|
string titleNameStr = string.Format(target.GetNativeGender() == Gender.Male ? titleInfo.Name[handler.GetSessionDbcLocale()] : titleInfo.Name1[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName());
|
||||||
|
|
||||||
target.SetTitle(titleInfo); // to be sure that title now known
|
target.SetTitle(titleInfo);
|
||||||
target.SetChosenTitle(titleInfo.MaskID);
|
target.SetChosenTitle(titleInfo.MaskID);
|
||||||
|
|
||||||
handler.SendSysMessage(CypherStrings.TitleCurrentRes, id, (target.GetNativeGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()], tNameLink);
|
handler.SendSysMessage(CypherStrings.TitleCurrentRes, titleId, titleNameStr, tNameLink);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("add", RBACPermissions.CommandTitlesAdd)]
|
[Command("add", RBACPermissions.CommandTitlesAdd)]
|
||||||
static bool HandleTitlesAddCommand(CommandHandler handler, StringArguments args)
|
static bool HandleTitlesAddCommand(CommandHandler handler, uint titleId)
|
||||||
{
|
{
|
||||||
// number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
|
|
||||||
string id_p = handler.ExtractKeyFromLink(args, "Htitle");
|
|
||||||
if (string.IsNullOrEmpty(id_p))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!uint.TryParse(id_p, out uint id) || id == 0)
|
|
||||||
{
|
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player target = handler.GetSelectedPlayer();
|
Player target = handler.GetSelectedPlayer();
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
@@ -93,10 +72,10 @@ namespace Game.Chat.Commands
|
|||||||
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(id);
|
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(titleId);
|
||||||
if (titleInfo == null)
|
if (titleInfo == null)
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
handler.SendSysMessage(CypherStrings.InvalidTitleId, titleId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,25 +84,14 @@ namespace Game.Chat.Commands
|
|||||||
string titleNameStr = string.Format((target.GetNativeGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName());
|
string titleNameStr = string.Format((target.GetNativeGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName());
|
||||||
|
|
||||||
target.SetTitle(titleInfo);
|
target.SetTitle(titleInfo);
|
||||||
handler.SendSysMessage(CypherStrings.TitleAddRes, id, titleNameStr, tNameLink);
|
handler.SendSysMessage(CypherStrings.TitleAddRes, titleId, titleNameStr, tNameLink);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("remove", RBACPermissions.CommandTitlesRemove)]
|
[Command("remove", RBACPermissions.CommandTitlesRemove)]
|
||||||
static bool HandleTitlesRemoveCommand(CommandHandler handler, StringArguments args)
|
static bool HandleTitlesRemoveCommand(CommandHandler handler, uint titleId)
|
||||||
{
|
{
|
||||||
// number or [name] Shift-click form |color|Htitle:title_id|h[name]|h|r
|
|
||||||
string id_p = handler.ExtractKeyFromLink(args, "Htitle");
|
|
||||||
if (string.IsNullOrEmpty(id_p))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!uint.TryParse(id_p, out uint id) || id == 0)
|
|
||||||
{
|
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player target = handler.GetSelectedPlayer();
|
Player target = handler.GetSelectedPlayer();
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
@@ -135,20 +103,19 @@ namespace Game.Chat.Commands
|
|||||||
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(id);
|
CharTitlesRecord titleInfo = CliDB.CharTitlesStorage.LookupByKey(titleId);
|
||||||
if (titleInfo == null)
|
if (titleInfo == null)
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.InvalidTitleId, id);
|
handler.SendSysMessage(CypherStrings.InvalidTitleId, titleId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.SetTitle(titleInfo, true);
|
target.SetTitle(titleInfo, true);
|
||||||
|
|
||||||
string tNameLink = handler.GetNameLink(target);
|
string tNameLink = handler.GetNameLink(target);
|
||||||
|
|
||||||
string titleNameStr = string.Format((target.GetNativeGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName());
|
string titleNameStr = string.Format((target.GetNativeGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName());
|
||||||
|
|
||||||
handler.SendSysMessage(CypherStrings.TitleRemoveRes, id, titleNameStr, tNameLink);
|
handler.SendSysMessage(CypherStrings.TitleRemoveRes, titleId, titleNameStr, tNameLink);
|
||||||
|
|
||||||
if (!target.HasTitle(target.m_playerData.PlayerTitle))
|
if (!target.HasTitle(target.m_playerData.PlayerTitle))
|
||||||
{
|
{
|
||||||
@@ -164,13 +131,8 @@ namespace Game.Chat.Commands
|
|||||||
{
|
{
|
||||||
//Edit Player KnownTitles
|
//Edit Player KnownTitles
|
||||||
[Command("mask", RBACPermissions.CommandTitlesSetMask)]
|
[Command("mask", RBACPermissions.CommandTitlesSetMask)]
|
||||||
static bool HandleTitlesSetMaskCommand(CommandHandler handler, StringArguments args)
|
static bool HandleTitlesSetMaskCommand(CommandHandler handler, ulong mask)
|
||||||
{
|
{
|
||||||
if (args.Empty())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
ulong titles = args.NextUInt64();
|
|
||||||
|
|
||||||
Player target = handler.GetSelectedPlayer();
|
Player target = handler.GetSelectedPlayer();
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
@@ -182,14 +144,14 @@ namespace Game.Chat.Commands
|
|||||||
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ulong titles2 = titles;
|
ulong titles2 = mask;
|
||||||
|
|
||||||
foreach (CharTitlesRecord tEntry in CliDB.CharTitlesStorage.Values)
|
foreach (CharTitlesRecord tEntry in CliDB.CharTitlesStorage.Values)
|
||||||
titles2 &= ~(1ul << tEntry.MaskID);
|
titles2 &= ~(1ul << tEntry.MaskID);
|
||||||
|
|
||||||
titles &= ~titles2; // remove not existed titles
|
mask &= ~titles2; // remove not existed titles
|
||||||
|
|
||||||
target.SetKnownTitles(0, titles);
|
target.SetKnownTitles(0, mask);
|
||||||
handler.SendSysMessage(CypherStrings.Done);
|
handler.SendSysMessage(CypherStrings.Done);
|
||||||
|
|
||||||
if (!target.HasTitle(target.m_playerData.PlayerTitle))
|
if (!target.HasTitle(target.m_playerData.PlayerTitle))
|
||||||
|
|||||||
Reference in New Issue
Block a user