feat(Core/Commands): Gear (#7717)

This commit is contained in:
IntelligentQuantum
2021-09-12 14:49:14 +04:30
committed by GitHub
parent 1465a659ec
commit e6143a1efd
6 changed files with 83 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1630714167178408255');
DELETE FROM `command` WHERE `name` IN ('repairitems', 'gear repair', 'gear stats');
INSERT INTO `command` VALUES
('gear repair', 2, 'Syntax: .gear repair \nRepair all selected player''s items.'),
('gear stats', 0, 'Syntax: .gear stats');

View File

@@ -500,6 +500,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_INS_CHAR_STATS, "INSERT INTO character_stats (guid, maxhealth, maxpower1, maxpower2, maxpower3, maxpower4, maxpower5, maxpower6, maxpower7, strength, agility, stamina, intellect, spirit, "
"armor, resHoly, resFire, resNature, resFrost, resShadow, resArcane, blockPct, dodgePct, parryPct, critPct, rangedCritPct, spellCritPct, attackPower, rangedAttackPower, "
"spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(CHAR_SEL_CHAR_STATS, "SELECT maxhealth, strength, agility, stamina, intellect, spirit, armor, attackPower, spellPower, resilience FROM character_stats WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(CHAR_DEL_PETITION_BY_OWNER, "DELETE FROM petition WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_DEL_PETITION_BY_OWNER_AND_TYPE, "DELETE FROM petition WHERE ownerguid = ? AND type = ?", CONNECTION_ASYNC);

View File

@@ -424,6 +424,7 @@ enum CharacterDatabaseStatements : uint32
CHAR_INS_CHAR_SPELL,
CHAR_DEL_CHAR_STATS,
CHAR_INS_CHAR_STATS,
CHAR_SEL_CHAR_STATS,
CHAR_DEL_PETITION_BY_OWNER,
CHAR_DEL_PETITION_SIGNATURE_BY_OWNER,
CHAR_DEL_PETITION_BY_OWNER_AND_TYPE,

View File

@@ -15207,3 +15207,25 @@ float Player::GetSightRange(const WorldObject* target) const
return sightRange;
}
std::string Player::GetPlayerName()
{
std::string name = GetName();
std::string color = "";
switch (getClass())
{
case CLASS_DEATH_KNIGHT: color = "|cffC41F3B"; break;
case CLASS_DRUID: color = "|cffFF7D0A"; break;
case CLASS_HUNTER: color = "|cffABD473"; break;
case CLASS_MAGE: color = "|cff69CCF0"; break;
case CLASS_PALADIN: color = "|cffF58CBA"; break;
case CLASS_PRIEST: color = "|cffFFFFFF"; break;
case CLASS_ROGUE: color = "|cffFFF569"; break;
case CLASS_SHAMAN: color = "|cff0070DE"; break;
case CLASS_WARLOCK: color = "|cff9482C9"; break;
case CLASS_WARRIOR: color = "|cffC79C6E"; break;
}
return "|Hplayer:" + name + "|h" + color + name + "|h|r";
}

View File

@@ -2525,6 +2525,8 @@ public:
float GetSightRange(const WorldObject* target = nullptr) const override;
std::string GetPlayerName();
protected:
// Gamemaster whisper whitelist
WhisperListContainer WhisperList;

View File

@@ -58,6 +58,11 @@ public:
{ "message", SEC_ADMINISTRATOR, true, &HandleSendMessageCommand, "" },
{ "money", SEC_GAMEMASTER, true, &HandleSendMoneyCommand, "" }
};
static std::vector<ChatCommand> gearCommandTable =
{
{ "repair", SEC_GAMEMASTER, false, &HandleGearRepairCommand, "" },
{ "stats", SEC_PLAYER, false, &HandleGearStatsCommand, "" }
};
static std::vector<ChatCommand> commandTable =
{
{ "dev", SEC_ADMINISTRATOR, false, &HandleDevCommand, "" },
@@ -102,10 +107,10 @@ public:
{ "damage", SEC_GAMEMASTER, false, &HandleDamageCommand, "" },
{ "combatstop", SEC_GAMEMASTER, true, &HandleCombatStopCommand, "" },
{ "flusharenapoints", SEC_ADMINISTRATOR, false, &HandleFlushArenaPointsCommand, "" },
{ "repairitems", SEC_GAMEMASTER, true, &HandleRepairitemsCommand, "" },
{ "freeze", SEC_GAMEMASTER, false, &HandleFreezeCommand, "" },
{ "unfreeze", SEC_GAMEMASTER, false, &HandleUnFreezeCommand, "" },
{ "group", SEC_GAMEMASTER, false, nullptr, "", groupCommandTable },
{ "gear", SEC_PLAYER, false, nullptr, "", gearCommandTable },
{ "possess", SEC_GAMEMASTER, false, HandlePossessCommand, "" },
{ "unpossess", SEC_GAMEMASTER, false, HandleUnPossessCommand, "" },
{ "bindsight", SEC_ADMINISTRATOR, false, HandleBindSightCommand, "" },
@@ -2625,7 +2630,7 @@ public:
return true;
}
static bool HandleRepairitemsCommand(ChatHandler* handler, char const* args)
static bool HandleGearRepairCommand(ChatHandler* handler, char const* args)
{
Player* target;
if (!handler->extractPlayerTarget((char*)args, &target))
@@ -3385,6 +3390,49 @@ public:
return true;
}
}
static bool HandleGearStatsCommand(ChatHandler* handler, char const* /*args*/)
{
Player* player = handler->getSelectedPlayerOrSelf();
if (!player)
{
return false;
}
handler->PSendSysMessage("Character: %s", player->GetPlayerName().c_str());
handler->PSendSysMessage("Current equipment average item level: |cff00ffff%u|r", (int16)player->GetAverageItemLevel());
if (sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE))
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_STATS);
stmt->setUInt32(0, player->GetGUID().GetCounter());
PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
{
Field* fields = result->Fetch();
uint32 MaxHealth = fields[0].GetUInt32();
uint32 Strength = fields[1].GetUInt32();
uint32 Agility = fields[2].GetUInt32();
uint32 Stamina = fields[3].GetUInt32();
uint32 Intellect = fields[4].GetUInt32();
uint32 Spirit = fields[5].GetUInt32();
uint32 Armor = fields[6].GetUInt32();
uint32 AttackPower = fields[7].GetUInt32();
uint32 SpellPower = fields[8].GetUInt32();
uint32 Resilience = fields[9].GetUInt32();
handler->PSendSysMessage("Health: |cff00ffff%u|r - Stamina: |cff00ffff%u|r", MaxHealth, Stamina);
handler->PSendSysMessage("Strength: |cff00ffff%u|r - Agility: |cff00ffff%u|r", Strength, Agility);
handler->PSendSysMessage("Intellect: |cff00ffff%u|r - Spirit: |cff00ffff%u|r", Intellect, Spirit);
handler->PSendSysMessage("AttackPower: |cff00ffff%u|r - SpellPower: |cff00ffff%u|r", AttackPower, SpellPower);
handler->PSendSysMessage("Armor: |cff00ffff%u|r - Resilience: |cff00ffff%u|r", Armor, Resilience);
}
}
return true;
}
};
void AddSC_misc_commandscript()