57 {
"npc", teleNameNpcCommandTable },
64 {
"name", teleNameCommandTable },
70 {
"tele", teleCommandTable },
118 std::string name = tele->
name;
139 std::string chrNameLink = handler->
playerLink(target->GetName());
141 if (target->IsBeingTeleported() ==
true)
153 if (target->IsInFlight())
154 target->FinishTaxiFlight();
156 target->SaveRecallPosition();
158 target->TeleportTo({ mapId, pos });
180 player = PlayerIdentifier::FromTargetOrSelf(handler);
184 if (where.index() == 1)
186 if (
Player* target = player->GetConnectedPlayer())
187 target->TeleportTo(target->m_homebind);
191 stmt->
setUInt64(0, player->GetGUID().GetCounter());
196 Field* fieldsDB = resultDB->Fetch();
197 WorldLocation loc(fieldsDB[0].GetUInt16(), fieldsDB[2].GetFloat(), fieldsDB[3].GetFloat(), fieldsDB[4].GetFloat(), 0.0f);
209 return DoNameTeleport(handler, *player, tele->
mapId, { tele->position_x, tele->position_y, tele->position_z, tele->orientation }, tele->
name);
242 std::string nameLink = handler->
GetNameLink(target);
254 Player* player = itr->GetSource();
263 std::string plNameLink = handler->
GetNameLink(player);
325 for (
auto const& pair :
sObjectMgr->GetAllCreatureData())
327 if (pair.second.id != *creatureId)
331 spawnpoint = &pair.second;
368 std::string normalizedName(name);
371 QueryResult result =
WorldDatabase.PQuery(
"SELECT c.position_x, c.position_y, c.position_z, c.orientation, c.map, ct.name FROM creature c INNER JOIN creature_template ct ON c.id = ct.entry WHERE ct.name LIKE '{}'", normalizedName);
379 if (result->GetRowCount() > 1)
382 Field* fields = result->Fetch();
383 return DoNameTeleport(handler, player, fields[4].GetUInt16(), { fields[0].
GetFloat(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat() }, fields[5].
GetString());
DB2Storage< MapEntry > sMapStore("Map.db2", &MapLoadInfo::Instance)
std::shared_ptr< ResultSet > QueryResult
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
#define ASSERT_NOTNULL(pointer)
@ LANG_COMMAND_TP_ALREADYEXIST
@ LANG_COMMAND_TP_ADDEDERR
@ LANG_COMMAND_GOCREATNOTFOUND
@ LANG_COMMAND_TP_DELETED
@ LANG_INVALID_TARGET_COORD
@ LANG_COMMAND_GOCREATMULTIPLE
@ LANG_COMMAND_TELE_NOTFOUND
std::optional< T > Optional
Optional helper class to wrap optional values within.
Role Based Access Control related classes definition.
std::string playerLink(std::string const &name) const
Player * getSelectedPlayer()
WorldSession * GetSession()
virtual std::string GetNameLink() const
void PSendSysMessage(const char *fmt, Args &&... args)
bool HasLowerSecurity(Player *target, ObjectGuid guid, bool strong=false)
void SetSentErrorMessage(bool val)
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
virtual bool needReportToTarget(Player *chr) const
virtual char const * GetTrinityString(uint32 entry) const
Class used to access individual fields of database query result.
std::string GetString() const
GroupReference * GetFirstMember()
static bool IsValidMapCoord(uint32 mapid, float x, float y)
static ObjectGuid const Empty
static PhaseShift const & GetEmptyPhaseShift()
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={})
static void SavePositionInDB(WorldLocation const &loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction trans)
WorldSession * GetSession() const
void SaveRecallPosition()
bool IsGameMaster() const
Group * GetGroup(Optional< uint8 > partyIndex)
bool IsBeingTeleported() const
void setUInt64(const uint8 index, const uint64 value)
constexpr uint32 GetMapId() const
Player * GetPlayer() const
bool HasPermission(uint32 permissionId)
ChatCommandTable GetCommands() const override
static bool HandleTeleNameNpcNameCommand(ChatHandler *handler, PlayerIdentifier player, Tail name)
static bool HandleTeleNameNpcIdCommand(ChatHandler *handler, PlayerIdentifier player, Variant< Hyperlink< creature_entry >, uint32 > creatureId)
static bool HandleTeleNameCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, Variant< GameTele const *, EXACT_SEQUENCE("$home")> where)
static bool HandleTeleNameNpcSpawnIdCommand(ChatHandler *handler, PlayerIdentifier player, Variant< Hyperlink< creature >, ObjectGuid::LowType > spawnId)
static bool HandleTeleAddCommand(ChatHandler *handler, std::string const &name)
static bool HandleTeleCommand(ChatHandler *handler, GameTele const *tele)
static bool HandleTeleDelCommand(ChatHandler *handler, GameTele const *tele)
static bool DoNameTeleport(ChatHandler *handler, PlayerIdentifier player, uint32 mapId, Position const &pos, std::string const &locationName)
static bool HandleTeleGroupCommand(ChatHandler *handler, GameTele const *tele)
void AddSC_tele_commandscript()
std::vector< ChatCommandBuilder > ChatCommandTable
@ RBAC_PERM_COMMAND_TELE_GROUP
@ RBAC_PERM_COMMAND_TELE_ADD
@ RBAC_PERM_COMMAND_TELE_NAME
@ RBAC_PERM_COMMAND_TELE_DEL
bool IsBattlegroundOrArena() const
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
Player * GetConnectedPlayer() const
ObjectGuid GetGUID() const
std::string const & GetName() const