More work on commands
This commit is contained in:
@@ -29,13 +29,13 @@ namespace Game.Chat
|
||||
class ModifyCommand
|
||||
{
|
||||
[Command("hp", RBACPermissions.CommandModifyHp)]
|
||||
static bool HandleModifyHPCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleModifyHPCommand(CommandHandler handler, int hp, int? maxHp)
|
||||
{
|
||||
Player target = handler.GetSelectedPlayerOrSelf();
|
||||
if (CheckModifyResources(args, handler, target, out int hp, out int hpmax))
|
||||
if (CheckModifyResources(handler, target, ref hp, ref maxHp))
|
||||
{
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeHp, CypherStrings.YoursHpChanged, hp, hpmax);
|
||||
target.SetMaxHealth((uint)hpmax);
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeHp, CypherStrings.YoursHpChanged, hp, maxHp);
|
||||
target.SetMaxHealth((uint)maxHp.Value);
|
||||
target.SetHealth((uint)hp);
|
||||
return true;
|
||||
}
|
||||
@@ -43,15 +43,14 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("mana", RBACPermissions.CommandModifyMana)]
|
||||
static bool HandleModifyManaCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleModifyManaCommand(CommandHandler handler, int mana, int? maxMana)
|
||||
{
|
||||
int mana, manamax;
|
||||
Player target = handler.GetSelectedPlayerOrSelf();
|
||||
|
||||
if (CheckModifyResources(args, handler, target, out mana, out manamax))
|
||||
if (CheckModifyResources(handler, target, ref mana, ref maxMana))
|
||||
{
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeMana, CypherStrings.YoursManaChanged, mana, manamax);
|
||||
target.SetMaxPower(PowerType.Mana, manamax);
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeMana, CypherStrings.YoursManaChanged, mana, maxMana.Value);
|
||||
target.SetMaxPower(PowerType.Mana, maxMana.Value);
|
||||
target.SetPower(PowerType.Mana, mana);
|
||||
return true;
|
||||
}
|
||||
@@ -60,15 +59,14 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("energy", RBACPermissions.CommandModifyEnergy)]
|
||||
static bool HandleModifyEnergyCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleModifyEnergyCommand(CommandHandler handler, int energy, int? maxEnergy)
|
||||
{
|
||||
int energy, energymax;
|
||||
Player target = handler.GetSelectedPlayerOrSelf();
|
||||
byte energyMultiplier = 10;
|
||||
if (CheckModifyResources(args, handler, target, out energy, out energymax, energyMultiplier))
|
||||
if (CheckModifyResources(handler, target, ref energy, ref maxEnergy, energyMultiplier))
|
||||
{
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeEnergy, CypherStrings.YoursEnergyChanged, energy / energyMultiplier, energymax / energyMultiplier);
|
||||
target.SetMaxPower(PowerType.Energy, energymax);
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeEnergy, CypherStrings.YoursEnergyChanged, energy / energyMultiplier, maxEnergy.Value / energyMultiplier);
|
||||
target.SetMaxPower(PowerType.Energy, maxEnergy.Value);
|
||||
target.SetPower(PowerType.Energy, energy);
|
||||
return true;
|
||||
}
|
||||
@@ -76,15 +74,14 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("rage", RBACPermissions.CommandModifyRage)]
|
||||
static bool HandleModifyRageCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleModifyRageCommand(CommandHandler handler, int rage, int? maxRage)
|
||||
{
|
||||
int rage, ragemax;
|
||||
Player target = handler.GetSelectedPlayerOrSelf();
|
||||
byte rageMultiplier = 10;
|
||||
if (CheckModifyResources(args, handler, target, out rage, out ragemax, rageMultiplier))
|
||||
if (CheckModifyResources(handler, target, ref rage, ref maxRage, rageMultiplier))
|
||||
{
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeRage, CypherStrings.YoursRageChanged, rage / rageMultiplier, ragemax / rageMultiplier);
|
||||
target.SetMaxPower(PowerType.Rage, ragemax);
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeRage, CypherStrings.YoursRageChanged, rage / rageMultiplier, maxRage.Value / rageMultiplier);
|
||||
target.SetMaxPower(PowerType.Rage, maxRage.Value);
|
||||
target.SetPower(PowerType.Rage, rage);
|
||||
return true;
|
||||
}
|
||||
@@ -92,15 +89,14 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("runicpower", RBACPermissions.CommandModifyRunicpower)]
|
||||
static bool HandleModifyRunicPowerCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleModifyRunicPowerCommand(CommandHandler handler, int rune, int? maxRune)
|
||||
{
|
||||
int rune, runemax;
|
||||
Player target = handler.GetSelectedPlayerOrSelf();
|
||||
byte runeMultiplier = 10;
|
||||
if (CheckModifyResources(args, handler, target, out rune, out runemax, runeMultiplier))
|
||||
if (CheckModifyResources(handler, target, ref rune, ref maxRune, runeMultiplier))
|
||||
{
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeRunicPower, CypherStrings.YoursRunicPowerChanged, rune / runeMultiplier, runemax / runeMultiplier);
|
||||
target.SetMaxPower(PowerType.RunicPower, runemax);
|
||||
NotifyModification(handler, target, CypherStrings.YouChangeRunicPower, CypherStrings.YoursRunicPowerChanged, rune / runeMultiplier, maxRune.Value / runeMultiplier);
|
||||
target.SetMaxPower(PowerType.RunicPower, maxRune.Value);
|
||||
target.SetPower(PowerType.RunicPower, rune);
|
||||
return true;
|
||||
}
|
||||
@@ -834,16 +830,10 @@ namespace Game.Chat
|
||||
}
|
||||
}
|
||||
|
||||
static bool CheckModifyResources(StringArguments args, CommandHandler handler, Player target, out int res, out int resmax, byte multiplier = 1)
|
||||
static bool CheckModifyResources(CommandHandler handler, Player target, ref int res, ref int? resmax, byte multiplier = 1)
|
||||
{
|
||||
res = 0;
|
||||
resmax = 0;
|
||||
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
res = args.NextInt32() * multiplier;
|
||||
resmax = args.NextInt32() * multiplier;
|
||||
res *= multiplier;
|
||||
resmax *= multiplier;
|
||||
|
||||
if (resmax == 0)
|
||||
resmax = res;
|
||||
|
||||
@@ -76,11 +76,8 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("learn", RBACPermissions.CommandPetLearn)]
|
||||
static bool HandlePetLearnCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandlePetLearnCommand(CommandHandler handler, uint spellId)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
Pet pet = GetSelectedPlayerPetOrOwn(handler);
|
||||
if (!pet)
|
||||
{
|
||||
@@ -88,7 +85,6 @@ namespace Game.Chat
|
||||
return false;
|
||||
}
|
||||
|
||||
uint spellId = handler.ExtractSpellIdFromLink(args);
|
||||
if (spellId == 0 || !Global.SpellMgr.HasSpellInfo(spellId, Difficulty.None))
|
||||
return false;
|
||||
|
||||
@@ -114,11 +110,8 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("unlearn", RBACPermissions.CommandPetUnlearn)]
|
||||
static bool HandlePetUnlearnCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandlePetUnlearnCommand(CommandHandler handler, uint spellId)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
Pet pet = GetSelectedPlayerPetOrOwn(handler);
|
||||
if (!pet)
|
||||
{
|
||||
@@ -126,8 +119,6 @@ namespace Game.Chat
|
||||
return false;
|
||||
}
|
||||
|
||||
uint spellId = handler.ExtractSpellIdFromLink(args);
|
||||
|
||||
if (pet.HasSpell(spellId))
|
||||
pet.RemoveSpell(spellId, false);
|
||||
else
|
||||
@@ -137,7 +128,7 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("level", RBACPermissions.CommandPetLevel)]
|
||||
static bool HandlePetLevelCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandlePetLevelCommand(CommandHandler handler, int level)
|
||||
{
|
||||
Pet pet = GetSelectedPlayerPetOrOwn(handler);
|
||||
Player owner = pet ? pet.GetOwner() : null;
|
||||
@@ -147,7 +138,6 @@ namespace Game.Chat
|
||||
return false;
|
||||
}
|
||||
|
||||
int level = args.NextInt32();
|
||||
if (level == 0)
|
||||
level = (int)(owner.GetLevel() - pet.GetLevel());
|
||||
if (level == 0 || level < -SharedConst.StrongMaxLevel || level > SharedConst.StrongMaxLevel)
|
||||
|
||||
@@ -29,30 +29,31 @@ namespace Game.Chat
|
||||
class ResetCommands
|
||||
{
|
||||
[Command("achievements", RBACPermissions.CommandResetAchievements, true)]
|
||||
static bool HandleResetAchievementsCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetAchievementsCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
ObjectGuid targetGuid;
|
||||
if (!handler.ExtractPlayerTarget(args, out target, out targetGuid))
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null)
|
||||
return false;
|
||||
|
||||
if (target)
|
||||
target.ResetAchievements();
|
||||
if (player.IsConnected())
|
||||
player.GetConnectedPlayer().ResetAchievements();
|
||||
else
|
||||
PlayerAchievementMgr.DeleteFromDB(targetGuid);
|
||||
PlayerAchievementMgr.DeleteFromDB(player.GetGUID());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("honor", RBACPermissions.CommandResetHonor, true)]
|
||||
static bool HandleResetHonorCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetHonorCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
if (!handler.ExtractPlayerTarget(args, out target))
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null || !player.IsConnected())
|
||||
return false;
|
||||
|
||||
target.ResetHonorStats();
|
||||
target.UpdateCriteria(CriteriaType.HonorableKills);
|
||||
player.GetConnectedPlayer().ResetHonorStats();
|
||||
player.GetConnectedPlayer().UpdateCriteria(CriteriaType.HonorableKills);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -89,12 +90,15 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("level", RBACPermissions.CommandResetLevel, true)]
|
||||
static bool HandleResetLevelCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetLevelCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
if (!handler.ExtractPlayerTarget(args, out target))
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null || !player.IsConnected())
|
||||
return false;
|
||||
|
||||
Player target = player.GetConnectedPlayer();
|
||||
|
||||
if (!HandleResetStatsOrLevelHelper(target))
|
||||
return false;
|
||||
|
||||
@@ -124,16 +128,16 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("spells", RBACPermissions.CommandResetSpells, true)]
|
||||
static bool HandleResetSpellsCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetSpellsCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
ObjectGuid targetGuid;
|
||||
string targetName;
|
||||
if (!handler.ExtractPlayerTarget(args, out target, out targetGuid, out targetName))
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null)
|
||||
return false;
|
||||
|
||||
if (target)
|
||||
if (player.IsConnected())
|
||||
{
|
||||
var target = player.GetConnectedPlayer();
|
||||
target.ResetSpells();
|
||||
|
||||
target.SendSysMessage(CypherStrings.ResetSpells);
|
||||
@@ -144,22 +148,25 @@ namespace Game.Chat
|
||||
{
|
||||
PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG);
|
||||
stmt.AddValue(0, (ushort)AtLoginFlags.ResetSpells);
|
||||
stmt.AddValue(1, targetGuid.GetCounter());
|
||||
stmt.AddValue(1, player.GetGUID().GetCounter());
|
||||
DB.Characters.Execute(stmt);
|
||||
|
||||
handler.SendSysMessage(CypherStrings.ResetSpellsOffline, targetName);
|
||||
handler.SendSysMessage(CypherStrings.ResetSpellsOffline, player.GetName());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("stats", RBACPermissions.CommandResetStats, true)]
|
||||
static bool HandleResetStatsCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetStatsCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
if (!handler.ExtractPlayerTarget(args, out target))
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null || !player.IsConnected())
|
||||
return false;
|
||||
|
||||
var target = player.GetConnectedPlayer();
|
||||
|
||||
if (!HandleResetStatsOrLevelHelper(target))
|
||||
return false;
|
||||
|
||||
@@ -172,39 +179,16 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("talents", RBACPermissions.CommandResetTalents, true)]
|
||||
static bool HandleResetTalentsCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetTalentsCommand(CommandHandler handler, PlayerIdentifier player)
|
||||
{
|
||||
Player target;
|
||||
ObjectGuid targetGuid;
|
||||
string targetName;
|
||||
|
||||
if (!handler.ExtractPlayerTarget(args, out target, out targetGuid, out targetName))
|
||||
{
|
||||
/* TODO: 6.x remove/update pet talents
|
||||
// Try reset talents as Hunter Pet
|
||||
Creature* creature = handler.getSelectedCreature();
|
||||
if (!*args && creature && creature.IsPet())
|
||||
{
|
||||
Unit* owner = creature.GetOwner();
|
||||
if (owner && owner.GetTypeId() == TYPEID_PLAYER && creature.ToPet().IsPermanentPetFor(owner.ToPlayer()))
|
||||
{
|
||||
creature.ToPet().resetTalents();
|
||||
owner.ToPlayer().SendTalentsInfoData(true);
|
||||
|
||||
ChatHandler(owner.ToPlayer().GetSession()).SendSysMessage(LANG_RESET_PET_TALENTS);
|
||||
if (!handler.GetSession() || handler.GetSession().GetPlayer() != owner.ToPlayer())
|
||||
handler.PSendSysMessage(LANG_RESET_PET_TALENTS_ONLINE, handler.GetNameLink(owner.ToPlayer()).c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
handler.SendSysMessage(CypherStrings.NoCharSelected);
|
||||
if (player == null)
|
||||
player = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||
if (player == null)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (target)
|
||||
if (player.IsConnected())
|
||||
{
|
||||
var target = player.GetConnectedPlayer();
|
||||
target.ResetTalents(true);
|
||||
target.ResetTalentSpecialization();
|
||||
target.SendTalentsInfoData();
|
||||
@@ -220,14 +204,14 @@ namespace Game.Chat
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
else if (!targetGuid.IsEmpty())
|
||||
else if (!player.GetGUID().IsEmpty())
|
||||
{
|
||||
PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG);
|
||||
stmt.AddValue(0, (ushort)(AtLoginFlags.None | AtLoginFlags.ResetPetTalents));
|
||||
stmt.AddValue(1, targetGuid.GetCounter());
|
||||
stmt.AddValue(1, player.GetGUID().GetCounter());
|
||||
DB.Characters.Execute(stmt);
|
||||
|
||||
string nameLink = handler.PlayerLink(targetName);
|
||||
string nameLink = handler.PlayerLink(player.GetName());
|
||||
handler.SendSysMessage(CypherStrings.ResetTalentsOffline, nameLink);
|
||||
return true;
|
||||
}
|
||||
@@ -237,24 +221,19 @@ namespace Game.Chat
|
||||
}
|
||||
|
||||
[Command("all", RBACPermissions.CommandResetAll, true)]
|
||||
static bool HandleResetAllCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleResetAllCommand(CommandHandler handler, string subCommand)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
string caseName = args.NextString();
|
||||
|
||||
AtLoginFlags atLogin;
|
||||
|
||||
// Command specially created as single command to prevent using short case names
|
||||
if (caseName == "spells")
|
||||
if (subCommand == "spells")
|
||||
{
|
||||
atLogin = AtLoginFlags.ResetSpells;
|
||||
Global.WorldMgr.SendWorldText(CypherStrings.ResetallSpells);
|
||||
if (handler.GetSession() == null)
|
||||
handler.SendSysMessage(CypherStrings.ResetallSpells);
|
||||
}
|
||||
else if (caseName == "talents")
|
||||
else if (subCommand == "talents")
|
||||
{
|
||||
atLogin = AtLoginFlags.ResetTalents | AtLoginFlags.ResetPetTalents;
|
||||
Global.WorldMgr.SendWorldText(CypherStrings.ResetallTalents);
|
||||
@@ -263,7 +242,7 @@ namespace Game.Chat
|
||||
}
|
||||
else
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.ResetallUnknownCase, args);
|
||||
handler.SendSysMessage(CypherStrings.ResetallUnknownCase, subCommand);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ using Framework.Constants;
|
||||
using Framework.IO;
|
||||
using Game.Entities;
|
||||
using Game.SupportSystem;
|
||||
using System;
|
||||
|
||||
namespace Game.Chat.Commands
|
||||
{
|
||||
@@ -44,51 +45,51 @@ namespace Game.Chat.Commands
|
||||
class TicketBugCommands
|
||||
{
|
||||
[Command("assign", RBACPermissions.CommandTicketBugAssign, true)]
|
||||
static bool HandleTicketBugAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugAssignCommand(CommandHandler handler, uint ticketId, string targetName)
|
||||
{
|
||||
return HandleTicketAssignToCommand<BugTicket>(handler, args);
|
||||
return HandleTicketAssignToCommand<BugTicket>(handler, ticketId, targetName);
|
||||
}
|
||||
|
||||
[Command("close", RBACPermissions.CommandTicketBugClose, true)]
|
||||
static bool HandleTicketBugCloseCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugCloseCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleCloseByIdCommand<BugTicket>(handler, args);
|
||||
return HandleCloseByIdCommand<BugTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("closedlist", RBACPermissions.CommandTicketBugClosedlist, true)]
|
||||
static bool HandleTicketBugClosedListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugClosedListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleClosedListCommand<BugTicket>(handler, args);
|
||||
return HandleClosedListCommand<BugTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("comment", RBACPermissions.CommandTicketBugComment, true)]
|
||||
static bool HandleTicketBugCommentCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugCommentCommand(CommandHandler handler, uint ticketId, QuotedString comment)
|
||||
{
|
||||
return HandleCommentCommand<BugTicket>(handler, args);
|
||||
return HandleCommentCommand<BugTicket>(handler, ticketId, comment);
|
||||
}
|
||||
|
||||
[Command("delete", RBACPermissions.CommandTicketBugDelete, true)]
|
||||
static bool HandleTicketBugDeleteCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugDeleteCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleDeleteByIdCommand<BugTicket>(handler, args);
|
||||
return HandleDeleteByIdCommand<BugTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("list", RBACPermissions.CommandTicketBugList, true)]
|
||||
static bool HandleTicketBugListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleListCommand<BugTicket>(handler, args);
|
||||
return HandleListCommand<BugTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("unassign", RBACPermissions.CommandTicketBugUnassign, true)]
|
||||
static bool HandleTicketBugUnAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugUnAssignCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleUnAssignCommand<BugTicket>(handler, args);
|
||||
return HandleUnAssignCommand<BugTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("view", RBACPermissions.CommandTicketBugView, true)]
|
||||
static bool HandleTicketBugViewCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketBugViewCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleGetByIdCommand<BugTicket>(handler, args);
|
||||
return HandleGetByIdCommand<BugTicket>(handler, ticketId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,51 +97,51 @@ namespace Game.Chat.Commands
|
||||
class TicketComplaintCommands
|
||||
{
|
||||
[Command("assign", RBACPermissions.CommandTicketComplaintAssign, true)]
|
||||
static bool HandleTicketComplaintAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintAssignCommand(CommandHandler handler, uint ticketId, string targetName)
|
||||
{
|
||||
return HandleTicketAssignToCommand<ComplaintTicket>(handler, args);
|
||||
return HandleTicketAssignToCommand<ComplaintTicket>(handler, ticketId, targetName);
|
||||
}
|
||||
|
||||
[Command("close", RBACPermissions.CommandTicketComplaintClose, true)]
|
||||
static bool HandleTicketComplaintCloseCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintCloseCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleCloseByIdCommand<ComplaintTicket>(handler, args);
|
||||
return HandleCloseByIdCommand<ComplaintTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("closedlist", RBACPermissions.CommandTicketComplaintClosedlist, true)]
|
||||
static bool HandleTicketComplaintClosedListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintClosedListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleClosedListCommand<ComplaintTicket>(handler, args);
|
||||
return HandleClosedListCommand<ComplaintTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("comment", RBACPermissions.CommandTicketComplaintComment, true)]
|
||||
static bool HandleTicketComplaintCommentCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintCommentCommand(CommandHandler handler, uint ticketId, QuotedString comment)
|
||||
{
|
||||
return HandleCommentCommand<ComplaintTicket>(handler, args);
|
||||
return HandleCommentCommand<ComplaintTicket>(handler, ticketId, comment);
|
||||
}
|
||||
|
||||
[Command("delete", RBACPermissions.CommandTicketComplaintDelete, true)]
|
||||
static bool HandleTicketComplaintDeleteCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintDeleteCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleDeleteByIdCommand<ComplaintTicket>(handler, args);
|
||||
return HandleDeleteByIdCommand<ComplaintTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("list", RBACPermissions.CommandTicketComplaintList, true)]
|
||||
static bool HandleTicketComplaintListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleListCommand<ComplaintTicket>(handler, args);
|
||||
return HandleListCommand<ComplaintTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("unassign", RBACPermissions.CommandTicketComplaintUnassign, true)]
|
||||
static bool HandleTicketComplaintUnAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintUnAssignCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleUnAssignCommand<ComplaintTicket>(handler, args);
|
||||
return HandleUnAssignCommand<ComplaintTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("view", RBACPermissions.CommandTicketComplaintView, true)]
|
||||
static bool HandleTicketComplaintViewCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketComplaintViewCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleGetByIdCommand<ComplaintTicket>(handler, args);
|
||||
return HandleGetByIdCommand<ComplaintTicket>(handler, ticketId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,51 +149,51 @@ namespace Game.Chat.Commands
|
||||
class TicketSuggestionCommands
|
||||
{
|
||||
[Command("assign", RBACPermissions.CommandTicketSuggestionAssign, true)]
|
||||
static bool HandleTicketSuggestionAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionAssignCommand(CommandHandler handler, uint ticketId, string targetName)
|
||||
{
|
||||
return HandleTicketAssignToCommand<SuggestionTicket>(handler, args);
|
||||
return HandleTicketAssignToCommand<SuggestionTicket>(handler, ticketId, targetName);
|
||||
}
|
||||
|
||||
[Command("close", RBACPermissions.CommandTicketSuggestionClose, true)]
|
||||
static bool HandleTicketSuggestionCloseCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionCloseCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleCloseByIdCommand<SuggestionTicket>(handler, args);
|
||||
return HandleCloseByIdCommand<SuggestionTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("closedlist", RBACPermissions.CommandTicketSuggestionClosedlist, true)]
|
||||
static bool HandleTicketSuggestionClosedListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionClosedListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleClosedListCommand<SuggestionTicket>(handler, args);
|
||||
return HandleClosedListCommand<SuggestionTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("comment", RBACPermissions.CommandTicketSuggestionComment, true)]
|
||||
static bool HandleTicketSuggestionCommentCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionCommentCommand(CommandHandler handler, uint ticketId, QuotedString comment)
|
||||
{
|
||||
return HandleCommentCommand<SuggestionTicket>(handler, args);
|
||||
return HandleCommentCommand<SuggestionTicket>(handler, ticketId, comment);
|
||||
}
|
||||
|
||||
[Command("delete", RBACPermissions.CommandTicketSuggestionDelete, true)]
|
||||
static bool HandleTicketSuggestionDeleteCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionDeleteCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleDeleteByIdCommand<SuggestionTicket>(handler, args);
|
||||
return HandleDeleteByIdCommand<SuggestionTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("list", RBACPermissions.CommandTicketSuggestionList, true)]
|
||||
static bool HandleTicketSuggestionListCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionListCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleListCommand<SuggestionTicket>(handler, args);
|
||||
return HandleListCommand<SuggestionTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("unassign", RBACPermissions.CommandTicketSuggestionUnassign, true)]
|
||||
static bool HandleTicketSuggestionUnAssignCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionUnAssignCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleUnAssignCommand<SuggestionTicket>(handler, args);
|
||||
return HandleUnAssignCommand<SuggestionTicket>(handler, ticketId);
|
||||
}
|
||||
|
||||
[Command("view", RBACPermissions.CommandTicketSuggestionView, true)]
|
||||
static bool HandleTicketSuggestionViewCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketSuggestionViewCommand(CommandHandler handler, uint ticketId)
|
||||
{
|
||||
return HandleGetByIdCommand<SuggestionTicket>(handler, args);
|
||||
return HandleGetByIdCommand<SuggestionTicket>(handler, ticketId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +201,7 @@ namespace Game.Chat.Commands
|
||||
class TicketResetCommands
|
||||
{
|
||||
[Command("all", RBACPermissions.CommandTicketResetAll, true)]
|
||||
static bool HandleTicketResetAllCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketResetAllCommand(CommandHandler handler)
|
||||
{
|
||||
if (Global.SupportMgr.GetOpenTicketCount<BugTicket>() != 0 || Global.SupportMgr.GetOpenTicketCount<ComplaintTicket>() != 0 || Global.SupportMgr.GetOpenTicketCount<SuggestionTicket>() != 0)
|
||||
{
|
||||
@@ -218,36 +219,30 @@ namespace Game.Chat.Commands
|
||||
}
|
||||
|
||||
[Command("bug", RBACPermissions.CommandTicketResetBug, true)]
|
||||
static bool HandleTicketResetBugCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketResetBugCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleResetCommand<BugTicket>(handler, args);
|
||||
return HandleResetCommand<BugTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("complaint", RBACPermissions.CommandTicketResetComplaint, true)]
|
||||
static bool HandleTicketResetComplaintCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketResetComplaintCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleResetCommand<ComplaintTicket>(handler, args);
|
||||
return HandleResetCommand<ComplaintTicket>(handler);
|
||||
}
|
||||
|
||||
[Command("suggestion", RBACPermissions.CommandTicketResetSuggestion, true)]
|
||||
static bool HandleTicketResetSuggestionCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleTicketResetSuggestionCommand(CommandHandler handler)
|
||||
{
|
||||
return HandleResetCommand<SuggestionTicket>(handler, args);
|
||||
return HandleResetCommand<SuggestionTicket>(handler);
|
||||
}
|
||||
}
|
||||
|
||||
static bool HandleTicketAssignToCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleTicketAssignToCommand<T>(CommandHandler handler, uint ticketId, string targetName) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
if (targetName.IsEmpty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
|
||||
string target = args.NextString();
|
||||
if (string.IsNullOrEmpty(target))
|
||||
return false;
|
||||
|
||||
if (!ObjectManager.NormalizePlayerName(ref target))
|
||||
if (!ObjectManager.NormalizePlayerName(ref targetName))
|
||||
return false;
|
||||
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
@@ -257,7 +252,7 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
ObjectGuid targetGuid = Global.CharacterCacheStorage.GetCharacterGuidByName(target);
|
||||
ObjectGuid targetGuid = Global.CharacterCacheStorage.GetCharacterGuidByName(targetName);
|
||||
uint accountId = Global.CharacterCacheStorage.GetCharacterAccountIdByGuid(targetGuid);
|
||||
// Target must exist and have administrative rights
|
||||
if (!Global.AccountMgr.HasPermission(accountId, RBACPermissions.CommandsBeAssignedTicket, Global.WorldMgr.GetRealm().Id.Index))
|
||||
@@ -286,17 +281,13 @@ namespace Game.Chat.Commands
|
||||
ticket.SetAssignedTo(targetGuid, Global.AccountMgr.IsAdminAccount(Global.AccountMgr.GetSecurity(accountId, (int)Global.WorldMgr.GetRealm().Id.Index)));
|
||||
ticket.SaveToDB();
|
||||
|
||||
string msg = ticket.FormatViewMessageString(handler, null, target, null, null);
|
||||
string msg = ticket.FormatViewMessageString(handler, null, targetName, null, null);
|
||||
handler.SendGlobalGMSysMessage(msg);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleCloseByIdCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleCloseByIdCommand<T>(CommandHandler handler, uint ticketId) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
if (ticket == null || ticket.IsClosed())
|
||||
{
|
||||
@@ -327,21 +318,15 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleClosedListCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleClosedListCommand<T>(CommandHandler handler) where T : Ticket
|
||||
{
|
||||
Global.SupportMgr.ShowClosedList<T>(handler);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleCommentCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleCommentCommand<T>(CommandHandler handler, uint ticketId, QuotedString comment) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
|
||||
string comment = args.NextString("\n");
|
||||
if (string.IsNullOrEmpty(comment))
|
||||
if (comment.IsEmpty())
|
||||
return false;
|
||||
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
@@ -371,12 +356,8 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleDeleteByIdCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleDeleteByIdCommand<T>(CommandHandler handler, uint ticketId) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
if (ticket == null)
|
||||
{
|
||||
@@ -398,13 +379,13 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleListCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleListCommand<T>(CommandHandler handler) where T : Ticket
|
||||
{
|
||||
Global.SupportMgr.ShowList<T>(handler);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleResetCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleResetCommand<T>(CommandHandler handler) where T : Ticket
|
||||
{
|
||||
if (Global.SupportMgr.GetOpenTicketCount<T>() != 0)
|
||||
{
|
||||
@@ -420,12 +401,8 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleUnAssignCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleUnAssignCommand<T>(CommandHandler handler, uint ticketId) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
if (ticket == null || ticket.IsClosed())
|
||||
{
|
||||
@@ -470,12 +447,8 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleGetByIdCommand<T>(CommandHandler handler, StringArguments args) where T : Ticket
|
||||
static bool HandleGetByIdCommand<T>(CommandHandler handler, uint ticketId) where T : Ticket
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
uint ticketId = args.NextUInt32();
|
||||
T ticket = Global.SupportMgr.GetTicket<T>(ticketId);
|
||||
if (ticket == null || ticket.IsClosed())
|
||||
{
|
||||
|
||||
@@ -29,51 +29,42 @@ namespace Game.Chat.Commands
|
||||
class WPCommands
|
||||
{
|
||||
[Command("add", RBACPermissions.CommandWpAdd)]
|
||||
static bool HandleWpAddCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpAddCommand(CommandHandler handler, uint? optionalPathId)
|
||||
{
|
||||
// optional
|
||||
string path_number = null;
|
||||
uint pathid;
|
||||
|
||||
if (!args.Empty())
|
||||
path_number = args.NextString();
|
||||
|
||||
uint point = 0;
|
||||
Creature target = handler.GetSelectedCreature();
|
||||
|
||||
PreparedStatement stmt;
|
||||
uint pathId;
|
||||
|
||||
if (string.IsNullOrEmpty(path_number))
|
||||
if (!optionalPathId.HasValue)
|
||||
{
|
||||
if (target)
|
||||
pathid = target.GetWaypointPath();
|
||||
pathId = target.GetWaypointPath();
|
||||
else
|
||||
{
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_MAX_ID);
|
||||
SQLResult result1 = DB.World.Query(stmt);
|
||||
|
||||
uint maxpathid = result1.Read<uint>(0);
|
||||
pathid = maxpathid + 1;
|
||||
pathId = maxpathid + 1;
|
||||
handler.SendSysMessage("|cff00ff00New path started.|r");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!uint.TryParse(path_number, out pathid))
|
||||
return false;
|
||||
}
|
||||
pathId = optionalPathId.Value;
|
||||
|
||||
// path_id . ID of the Path
|
||||
// point . number of the waypoint (if not 0)
|
||||
|
||||
if (pathid == 0)
|
||||
if (pathId == 0)
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffCurrent creature haven't loaded path.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_MAX_POINT);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
SQLResult result = DB.World.Query(stmt);
|
||||
|
||||
if (result.IsEmpty())
|
||||
@@ -82,7 +73,7 @@ namespace Game.Chat.Commands
|
||||
Player player = handler.GetSession().GetPlayer();
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.INS_WAYPOINT_DATA);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
stmt.AddValue(1, point + 1);
|
||||
stmt.AddValue(2, player.GetPositionX());
|
||||
stmt.AddValue(3, player.GetPositionY());
|
||||
@@ -91,30 +82,21 @@ namespace Game.Chat.Commands
|
||||
|
||||
DB.World.Execute(stmt);
|
||||
|
||||
handler.SendSysMessage("|cff00ff00PathID: |r|cff00ffff{0} |r|cff00ff00: Waypoint |r|cff00ffff{1}|r|cff00ff00 created.|r", pathid, point + 1);
|
||||
handler.SendSysMessage("|cff00ff00PathID: |r|cff00ffff{0} |r|cff00ff00: Waypoint |r|cff00ffff{1}|r|cff00ff00 created.|r", pathId, point + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("event", RBACPermissions.CommandWpEvent)]
|
||||
static bool HandleWpEventCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpEventCommand(CommandHandler handler, string subCommand, uint id, [OptionalArg] string arg, [OptionalArg] string arg2)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
string show = args.NextString();
|
||||
PreparedStatement stmt;
|
||||
|
||||
// Check
|
||||
if ((show != "add") && (show != "mod") && (show != "del") && (show != "listid"))
|
||||
if ((subCommand != "add") && (subCommand != "mod") && (subCommand != "del") && (subCommand != "listid"))
|
||||
return false;
|
||||
|
||||
string arg_id = args.NextString();
|
||||
uint id;
|
||||
if (show == "add")
|
||||
if (subCommand == "add")
|
||||
{
|
||||
if (!uint.TryParse(arg_id, out id))
|
||||
id = 0;
|
||||
|
||||
if (id != 0)
|
||||
{
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_ID_BY_GUID);
|
||||
@@ -148,17 +130,14 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "listid")
|
||||
if (subCommand == "listid")
|
||||
{
|
||||
if (string.IsNullOrEmpty(arg_id))
|
||||
if (id == 0)
|
||||
{
|
||||
handler.SendSysMessage("|cff33ffffWp Event: You must provide waypoint script id.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!uint.TryParse(arg_id, out id))
|
||||
return false;
|
||||
|
||||
uint a2, a3, a4, a5, a6;
|
||||
float a8, a9, a10, a11;
|
||||
string a7;
|
||||
@@ -193,17 +172,14 @@ namespace Game.Chat.Commands
|
||||
while (result.NextRow());
|
||||
}
|
||||
|
||||
if (show == "del")
|
||||
if (subCommand == "del")
|
||||
{
|
||||
if (arg_id.IsEmpty())
|
||||
if (id == 0)
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: Waypoint script guid not present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!uint.TryParse(arg_id, out id))
|
||||
return false;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_ID_BY_GUID);
|
||||
stmt.AddValue(0, id);
|
||||
SQLResult result = DB.World.Query(stmt);
|
||||
@@ -222,45 +198,37 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "mod")
|
||||
if (subCommand == "mod")
|
||||
{
|
||||
if (string.IsNullOrEmpty(arg_id))
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: Waypoint script guid not present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!uint.TryParse(arg_id, out id) || id == 0)
|
||||
if (id == 0)
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: No valid waypoint script id not present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
string arg_string = args.NextString();
|
||||
if (string.IsNullOrEmpty(arg_string))
|
||||
if (arg.IsEmpty())
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: No argument present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((arg_string != "setid") && (arg_string != "delay") && (arg_string != "command")
|
||||
&& (arg_string != "datalong") && (arg_string != "datalong2") && (arg_string != "dataint") && (arg_string != "posx")
|
||||
&& (arg_string != "posy") && (arg_string != "posz") && (arg_string != "orientation"))
|
||||
if ((arg != "setid") && (arg != "delay") && (arg != "command")
|
||||
&& (arg != "datalong") && (arg != "datalong2") && (arg != "dataint") && (arg != "posx")
|
||||
&& (arg != "posy") && (arg != "posz") && (arg != "orientation"))
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: No valid argument present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
string arg_3 = args.NextString();
|
||||
if (string.IsNullOrEmpty(arg_3))
|
||||
if (arg2.IsEmpty())
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffERROR: No additional argument present.|r");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (arg_string == "setid")
|
||||
if (arg == "setid")
|
||||
{
|
||||
if (!uint.TryParse(arg_3, out uint newid))
|
||||
if (!uint.TryParse(arg2, out uint newid))
|
||||
return false;
|
||||
handler.SendSysMessage("|cff00ff00Wp Event: Waypoint script guid: {0}|r|cff00ffff id changed: |r|cff00ff00{1}|r", newid, id);
|
||||
|
||||
@@ -284,9 +252,9 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (arg_string == "posx")
|
||||
if (arg == "posx")
|
||||
{
|
||||
if (!float.TryParse(arg_3, out float arg3))
|
||||
if (!float.TryParse(arg2, out float arg3))
|
||||
return false;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_SCRIPT_X);
|
||||
@@ -297,9 +265,9 @@ namespace Game.Chat.Commands
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff {0}|r|cff00ff00 position_x updated.|r", id);
|
||||
return true;
|
||||
}
|
||||
else if (arg_string == "posy")
|
||||
else if (arg == "posy")
|
||||
{
|
||||
if (!float.TryParse(arg_3, out float arg3))
|
||||
if (!float.TryParse(arg2, out float arg3))
|
||||
return false;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_SCRIPT_Y);
|
||||
@@ -310,9 +278,9 @@ namespace Game.Chat.Commands
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script: {0} position_y updated.|r", id);
|
||||
return true;
|
||||
}
|
||||
else if (arg_string == "posz")
|
||||
else if (arg == "posz")
|
||||
{
|
||||
if (!float.TryParse(arg_3, out float arg3))
|
||||
if (!float.TryParse(arg2, out float arg3))
|
||||
return false;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_SCRIPT_Z);
|
||||
@@ -323,9 +291,9 @@ namespace Game.Chat.Commands
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff{0}|r|cff00ff00 position_z updated.|r", id);
|
||||
return true;
|
||||
}
|
||||
else if (arg_string == "orientation")
|
||||
else if (arg == "orientation")
|
||||
{
|
||||
if (!float.TryParse(arg_3, out float arg3))
|
||||
if (!float.TryParse(arg2, out float arg3))
|
||||
return false;
|
||||
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_SCRIPT_O);
|
||||
@@ -336,42 +304,37 @@ namespace Game.Chat.Commands
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff{0}|r|cff00ff00 orientation updated.|r", id);
|
||||
return true;
|
||||
}
|
||||
else if (arg_string == "dataint")
|
||||
else if (arg == "dataint")
|
||||
{
|
||||
if (!uint.TryParse(arg_3, out uint arg3))
|
||||
if (!uint.TryParse(arg2, out uint arg3))
|
||||
return false;
|
||||
|
||||
DB.World.Execute("UPDATE waypoint_scripts SET {0}='{1}' WHERE guid='{2}'", arg_string, arg3, id); // Query can't be a prepared statement
|
||||
DB.World.Execute("UPDATE waypoint_scripts SET {0}='{1}' WHERE guid='{2}'", arg, arg3, id); // Query can't be a prepared statement
|
||||
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff{0}|r|cff00ff00 dataint updated.|r", id);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
DB.World.Execute("UPDATE waypoint_scripts SET {0}='{1}' WHERE guid='{2}'", arg_string, arg_string, id); // Query can't be a prepared statement
|
||||
DB.World.Execute("UPDATE waypoint_scripts SET {0}='{1}' WHERE guid='{2}'", arg, arg, id); // Query can't be a prepared statement
|
||||
}
|
||||
}
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff{0}:|r|cff00ff00 {1} updated.|r", id, arg_string);
|
||||
handler.SendSysMessage("|cff00ff00Waypoint script:|r|cff00ffff{0}:|r|cff00ff00 {1} updated.|r", id, arg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("load", RBACPermissions.CommandWpLoad)]
|
||||
static bool HandleWpLoadCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpLoadCommand(CommandHandler handler, uint? optionalPathId)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
// optional
|
||||
string path_number = args.NextString();
|
||||
|
||||
uint pathid;
|
||||
Creature target = handler.GetSelectedCreature();
|
||||
|
||||
// Did player provide a path_id?
|
||||
if (string.IsNullOrEmpty(path_number))
|
||||
if (!optionalPathId.HasValue)
|
||||
return false;
|
||||
|
||||
uint pathId = optionalPathId.Value;
|
||||
|
||||
if (!target)
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.SelectCreature);
|
||||
@@ -384,7 +347,7 @@ namespace Game.Chat.Commands
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!uint.TryParse(path_number, out pathid) || pathid == 0)
|
||||
if (pathId == 0)
|
||||
{
|
||||
handler.SendSysMessage("|cffff33ffNo valid path number provided.|r");
|
||||
return true;
|
||||
@@ -399,14 +362,14 @@ namespace Game.Chat.Commands
|
||||
if (!result.IsEmpty())
|
||||
{
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_CREATURE_ADDON_PATH);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
stmt.AddValue(1, guidLow);
|
||||
}
|
||||
else
|
||||
{
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.INS_CREATURE_ADDON);
|
||||
stmt.AddValue(0, guidLow);
|
||||
stmt.AddValue(1, pathid);
|
||||
stmt.AddValue(1, pathId);
|
||||
}
|
||||
|
||||
DB.World.Execute(stmt);
|
||||
@@ -417,7 +380,7 @@ namespace Game.Chat.Commands
|
||||
|
||||
DB.World.Execute(stmt);
|
||||
|
||||
target.LoadPath(pathid);
|
||||
target.LoadPath(pathId);
|
||||
target.SetDefaultMovementType(MovementGeneratorType.Waypoint);
|
||||
target.GetMotionMaster().Initialize();
|
||||
target.Say("Path loaded.", Language.Universal);
|
||||
@@ -426,22 +389,16 @@ namespace Game.Chat.Commands
|
||||
}
|
||||
|
||||
[Command("modify", RBACPermissions.CommandWpModify)]
|
||||
static bool HandleWpModifyCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpModifyCommand(CommandHandler handler, string subCommand, [OptionalArg] string arg)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
// first arg: add del text emote spell waittime move
|
||||
string show = args.NextString();
|
||||
if (string.IsNullOrEmpty(show))
|
||||
{
|
||||
if (subCommand.IsEmpty())
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check
|
||||
// Remember: "show" must also be the name of a column!
|
||||
if ((show != "delay") && (show != "action") && (show != "action_chance")
|
||||
&& (show != "move_flag") && (show != "del") && (show != "move"))
|
||||
if ((subCommand != "delay") && (subCommand != "action") && (subCommand != "action_chance")
|
||||
&& (subCommand != "move_flag") && (subCommand != "del") && (subCommand != "move"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -500,16 +457,15 @@ namespace Game.Chat.Commands
|
||||
|
||||
// We have the waypoint number and the GUID of the "master npc"
|
||||
// Text is enclosed in "<>", all other arguments not
|
||||
string arg_str = args.NextString();
|
||||
|
||||
// Check for argument
|
||||
if (show != "del" && show != "move" && arg_str == null)
|
||||
if (subCommand != "del" && subCommand != "move")
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointArgumentreq, show);
|
||||
handler.SendSysMessage(CypherStrings.WaypointArgumentreq, subCommand);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (show == "del")
|
||||
if (subCommand == "del")
|
||||
{
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp modify del, PathID: |r|cff00ffff{0}|r", pathid);
|
||||
|
||||
@@ -536,7 +492,7 @@ namespace Game.Chat.Commands
|
||||
}
|
||||
} // del
|
||||
|
||||
if (show == "move")
|
||||
if (subCommand == "move")
|
||||
{
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp move, PathID: |r|cff00ffff{0}|r", pathid);
|
||||
|
||||
@@ -590,57 +546,45 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
} // move
|
||||
|
||||
if (string.IsNullOrEmpty(arg_str))
|
||||
if (arg.IsEmpty())
|
||||
{
|
||||
// show_str check for present in list of correct values, no sql injection possible
|
||||
DB.World.Execute("UPDATE waypoint_data SET {0}=null WHERE id='{1}' AND point='{2}'", show, pathid, point); // Query can't be a prepared statement
|
||||
DB.World.Execute("UPDATE waypoint_data SET {0}=null WHERE id='{1}' AND point='{2}'", subCommand, pathid, point); // Query can't be a prepared statement
|
||||
}
|
||||
else
|
||||
{
|
||||
// show_str check for present in list of correct values, no sql injection possible
|
||||
DB.World.Execute("UPDATE waypoint_data SET {0}='{1}' WHERE id='{2}' AND point='{3}'", show, arg_str, pathid, point); // Query can't be a prepared statement
|
||||
DB.World.Execute("UPDATE waypoint_data SET {0}='{1}' WHERE id='{2}' AND point='{3}'", subCommand, arg, pathid, point); // Query can't be a prepared statement
|
||||
}
|
||||
|
||||
handler.SendSysMessage(CypherStrings.WaypointChangedNo, show);
|
||||
handler.SendSysMessage(CypherStrings.WaypointChangedNo, subCommand);
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("reload", RBACPermissions.CommandWpReload)]
|
||||
static bool HandleWpReloadCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpReloadCommand(CommandHandler handler, uint pathId)
|
||||
{
|
||||
if (args.Empty())
|
||||
if (pathId == 0)
|
||||
return false;
|
||||
|
||||
uint id = args.NextUInt32();
|
||||
|
||||
if (id == 0)
|
||||
return false;
|
||||
|
||||
handler.SendSysMessage("|cff00ff00Loading Path: |r|cff00ffff{0}|r", id);
|
||||
Global.WaypointMgr.ReloadPath(id);
|
||||
handler.SendSysMessage("|cff00ff00Loading Path: |r|cff00ffff{0}|r", pathId);
|
||||
Global.WaypointMgr.ReloadPath(pathId);
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("show", RBACPermissions.CommandWpShow)]
|
||||
static bool HandleWpShowCommand(CommandHandler handler, StringArguments args)
|
||||
static bool HandleWpShowCommand(CommandHandler handler, string subCommand, uint? optionalPathId)
|
||||
{
|
||||
if (args.Empty())
|
||||
return false;
|
||||
|
||||
// first arg: on, off, first, last
|
||||
string show = args.NextString();
|
||||
if (string.IsNullOrEmpty(show))
|
||||
if (subCommand.IsEmpty())
|
||||
return false;
|
||||
|
||||
// second arg: GUID (optional, if a creature is selected)
|
||||
string guid_str = args.NextString();
|
||||
|
||||
uint pathid;
|
||||
Creature target = handler.GetSelectedCreature();
|
||||
|
||||
// Did player provide a PathID?
|
||||
uint pathId;
|
||||
|
||||
if (string.IsNullOrEmpty(guid_str))
|
||||
if (!optionalPathId.HasValue)
|
||||
{
|
||||
// No PathID provided
|
||||
// . Player must have selected a creature
|
||||
@@ -651,7 +595,7 @@ namespace Game.Chat.Commands
|
||||
return false;
|
||||
}
|
||||
|
||||
pathid = target.GetWaypointPath();
|
||||
pathId = target.GetWaypointPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -661,12 +605,11 @@ namespace Game.Chat.Commands
|
||||
if (target)
|
||||
handler.SendSysMessage(CypherStrings.WaypointCreatselected);
|
||||
|
||||
if (!uint.TryParse(guid_str, out pathid))
|
||||
return false;
|
||||
pathId = optionalPathId.Value;
|
||||
}
|
||||
|
||||
// Show info for the selected waypoint
|
||||
if (show == "info")
|
||||
if (subCommand == "info")
|
||||
{
|
||||
// Check if the user did specify a visual waypoint
|
||||
if (!target || target.GetEntry() != 1)
|
||||
@@ -688,14 +631,14 @@ namespace Game.Chat.Commands
|
||||
handler.SendSysMessage("|cff00ffffDEBUG: wp show info:|r");
|
||||
do
|
||||
{
|
||||
pathid = result.Read<uint>(0);
|
||||
pathId = result.Read<uint>(0);
|
||||
uint point = result.Read<uint>(1);
|
||||
uint delay = result.Read<uint>(2);
|
||||
uint flag = result.Read<uint>(3);
|
||||
uint ev_id = result.Read<uint>(4);
|
||||
uint ev_chance = result.Read<ushort>(5);
|
||||
|
||||
handler.SendSysMessage("|cff00ff00Show info: for current point: |r|cff00ffff{0}|r|cff00ff00, Path ID: |r|cff00ffff{1}|r", point, pathid);
|
||||
handler.SendSysMessage("|cff00ff00Show info: for current point: |r|cff00ffff{0}|r|cff00ff00, Path ID: |r|cff00ffff{1}|r", point, pathId);
|
||||
handler.SendSysMessage("|cff00ff00Show info: delay: |r|cff00ffff{0}|r", delay);
|
||||
handler.SendSysMessage("|cff00ff00Show info: Move flag: |r|cff00ffff{0}|r", flag);
|
||||
handler.SendSysMessage("|cff00ff00Show info: Waypoint event: |r|cff00ffff{0}|r", ev_id);
|
||||
@@ -706,10 +649,10 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "on")
|
||||
if (subCommand == "on")
|
||||
{
|
||||
PreparedStatement stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_POS_BY_ID);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
SQLResult result = DB.World.Query(stmt);
|
||||
|
||||
if (result.IsEmpty())
|
||||
@@ -718,11 +661,11 @@ namespace Game.Chat.Commands
|
||||
return false;
|
||||
}
|
||||
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp on, PathID: |cff00ffff{0}|r", pathid);
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp on, PathID: |cff00ffff{0}|r", pathId);
|
||||
|
||||
// Delete all visuals for this NPC
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_WPGUID_BY_ID);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
SQLResult result2 = DB.World.Query(stmt);
|
||||
|
||||
if (!result2.IsEmpty())
|
||||
@@ -796,7 +739,7 @@ namespace Game.Chat.Commands
|
||||
// Set "wpguid" column to the visual waypoint
|
||||
stmt = DB.World.GetPreparedStatement(WorldStatements.UPD_WAYPOINT_DATA_WPGUID);
|
||||
stmt.AddValue(0, creature.GetSpawnId());
|
||||
stmt.AddValue(1, pathid);
|
||||
stmt.AddValue(1, pathId);
|
||||
stmt.AddValue(2, point);
|
||||
DB.World.Execute(stmt);
|
||||
}
|
||||
@@ -806,17 +749,17 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "first")
|
||||
if (subCommand == "first")
|
||||
{
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp first, pathid: {0}|r", pathid);
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp first, pathid: {0}|r", pathId);
|
||||
|
||||
PreparedStatement stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_POS_FIRST_BY_ID);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
SQLResult result = DB.World.Query(stmt);
|
||||
|
||||
if (result.IsEmpty())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotfound, pathid);
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotfound, pathId);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -860,17 +803,17 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "last")
|
||||
if (subCommand == "last")
|
||||
{
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff{0}|r", pathid);
|
||||
handler.SendSysMessage("|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff{0}|r", pathId);
|
||||
|
||||
PreparedStatement stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_WAYPOINT_DATA_POS_LAST_BY_ID);
|
||||
stmt.AddValue(0, pathid);
|
||||
stmt.AddValue(0, pathId);
|
||||
SQLResult result = DB.World.Query(stmt);
|
||||
|
||||
if (result.IsEmpty())
|
||||
{
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotfoundlast, pathid);
|
||||
handler.SendSysMessage(CypherStrings.WaypointNotfoundlast, pathId);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -915,7 +858,7 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
if (show == "off")
|
||||
if (subCommand == "off")
|
||||
{
|
||||
PreparedStatement stmt = DB.World.GetPreparedStatement(WorldStatements.SEL_CREATURE_BY_ID);
|
||||
stmt.AddValue(0, 1);
|
||||
|
||||
Reference in New Issue
Block a user