本文整理汇总了C++中WorldSession::GetPlayer方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldSession::GetPlayer方法的具体用法?C++ WorldSession::GetPlayer怎么用?C++ WorldSession::GetPlayer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldSession
的用法示例。
在下文中一共展示了WorldSession::GetPlayer方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandlePlayerTeleport
void ClusterInterface::HandlePlayerTeleport(WorldPacket & pck)
{
//result has to be 2 here
uint8 result, method;
uint32 sessionid, mapid, instanceid;
LocationVector location;
uint32 sessionid2;
pck >> result >> method;
//someones messing with something
if (result != 2)
return;
pck >> sessionid >> mapid >> instanceid >> location >> sessionid2;
//we need to get sessionid2!
WorldSession* s = GetSession(sessionid2);
if (s == NULL)
return;
//if method is 0, simply teleport us to the location provided :)
if (method == 0)
sEventMgr.AddEvent(s->GetPlayer(), &Player::EventSafeTeleport, mapid, instanceid, location, EVENT_UNK, 1, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);
else
{
Player* p = s->GetPlayer();
if (p == NULL)
return; //wtf
//change the method for 0, and fill it reversely, so the player is teleported to us :)
//result has to be 2 when sending back here, so it relays it to the original players server
WorldPacket data(ICMSG_PLAYER_TELEPORT);
data << uint8(2) << uint8(0) << sessionid2 << p->GetMapId() << p->GetInstanceID() << p->GetPosition() << sessionid;
}
}
示例2: HandlePlayerChangedServers
void ClusterInterface::HandlePlayerChangedServers(WorldPacket & pck)
{
uint32 sessionid, dsid;
pck >> sessionid >> dsid;
if(!_sessions[dsid])
{
Log.Error("HandlePlayerChangedServers", "Invalid session: %u", sessionid);
return;
}
WorldSession * s = _sessions[sessionid];
Player* plr = s->GetPlayer();
/* build the packet with the players information */
WorldPacket data(ICMSG_PLAYER_CHANGE_SERVER_INFO, 1000);
data << sessionid << GUID_LOPART(plr->GetGUID());
/* pack */
//data << plr->
/* remove the player from our world. */
sEventMgr.AddEvent(plr, &Player::EventRemoveAndDelete, EVENT_PLAYER_DELETE, 1000, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT | EVENT_FLAG_DELETES_OBJECT);
/* dereference the session */
}
示例3: HandlePlayerChangedServers
void ClusterInterface::HandlePlayerChangedServers(WorldPacket & pck)
{
uint32 sessionid, dsid;
pck >> sessionid >> dsid;
if(!_sessions[dsid])
{
Log.Error("HandlePlayerChangedServers", "Invalid session: %u", sessionid);
return;
}
WorldSession * s = _sessions[sessionid];
Player * plr = s->GetPlayer();
/* build the packet with the players information */
WorldPacket data(ICMSG_PLAYER_CHANGE_SERVER_INFO, 1000);
data << sessionid << plr->GetGUIDLow();
/* pack */
//data << plr->
/* remove the player from our world. */
sEventMgr.AddEvent(plr, &Player::EventRemoveAndDelete, EVENT_GAMEOBJECT_EXPIRE /* meh :P */, 1000, 1);
/* dereference the session */
}
示例4: HandleLogCommand
static bool HandleLogCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 RLimit = 10;
if((char*)args)
RLimit = atoi((char*)args);
if(RLimit == 0 || RLimit > 100)
RLimit = 10;
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` LIMIT %u", RLimit);
if(!result)
{
Session->SendNotification("There are no records");
return false;
}
Field * fields = NULL;
do{
fields = result->Fetch();
uint32 ID = fields[0].GetUInt32();
std::string Character = fields[1].GetString();
std::string Account = fields[2].GetString();
uint32 Warning = fields[3].GetUInt32();
char msg[250];
snprintf(msg, 250, "ID : %u Character : %s Account : %s Warning Level : %u \n" , ID, Character.c_str(), Account.c_str(), Warning);
handler->PSendSysMessage (msg);
handler->SetSentErrorMessage (true);
}
while(result->NextRow());
return true;
}
示例5: HandleGMChatCommand
// Enables or disables hiding of the staff badge
static bool HandleGMChatCommand(ChatHandler* handler, char const* args)
{
if (!*args)
{
WorldSession* session = handler->GetSession();
if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->isGMChat())
session->SendNotification(LANG_GM_CHAT_ON);
else
session->SendNotification(LANG_GM_CHAT_OFF);
return true;
}
std::string param = (char*)args;
if (param == "on")
{
handler->GetSession()->GetPlayer()->SetGMChat(true);
handler->GetSession()->SendNotification(LANG_GM_CHAT_ON);
return true;
}
if (param == "off")
{
handler->GetSession()->GetPlayer()->SetGMChat(false);
handler->GetSession()->SendNotification(LANG_GM_CHAT_OFF);
return true;
}
handler->SendSysMessage(LANG_USE_BOL);
handler->SetSentErrorMessage(true);
return false;
}
示例6: HandleEditAICommand
static bool HandleEditAICommand(ChatHandler* handler, const char* args)
{
uint32 AIedit = atoi((char*)args);
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
WorldDatabase.PExecute("ALTER TABLE `anti-farm log` AUTO_INCREMENT = %u", AIedit);
Session->SendAreaTriggerMessage("Auto Increment starting point successfully set to %u", AIedit);
return true;
}
示例7: Callback
void Callback(QueryResult* result)
{
WorldSession* sess = sWorld.FindSession(accountId);
if (!sess || !sess->GetPlayer() || sess->GetPlayer()->GetObjectGuid() != senderGuid || !sess->GetPlayer()->IsInWorld())
{
delete result;
delete this;
return;
}
if (result)
{
Field *fields = result->Fetch();
mailsCount = fields[0].GetUInt32();
delete result;
}
sess->HandleSendMailCallback(this);
delete this;
}
示例8: HandlePlayerBotLoginCallback
// This callback is different from the normal HandlePlayerLoginCallback in that it
// sets up the bot's world session and also stores the pointer to the bot player in the master's
// world session m_playerBots map
void HandlePlayerBotLoginCallback(QueryResult* /*dummy*/, SqlQueryHolder* holder)
{
if (!holder)
return;
LoginQueryHolder* lqh = (LoginQueryHolder*) holder;
WorldSession* masterSession = sWorld.FindSession(lqh->GetAccountId());
if (! masterSession || sObjectMgr.GetPlayer(lqh->GetGuid()))
{
delete holder;
return;
}
// The bot's WorldSession is owned by the bot's Player object
// The bot's WorldSession is deleted by PlayerbotMgr::LogoutPlayerBot
WorldSession* botSession = new WorldSession(lqh->GetAccountId(), nullptr, SEC_PLAYER, 0, LOCALE_enUS);
botSession->HandlePlayerLogin(lqh); // will delete lqh
masterSession->GetPlayer()->GetPlayerbotMgr()->OnBotLogin(botSession->GetPlayer());
}
示例9: HandlePlayerBotLoginCallback
// Playerbot mod: is different from the normal HandlePlayerLoginCallback in that it
// sets up the bot's world session and also stores the pointer to the bot player in the master's
// world session m_playerBots map
void HandlePlayerBotLoginCallback(QueryResult * /*dummy*/, SqlQueryHolder * holder, uint32 masterId)
{
if (!holder)
return;
LoginQueryHolder* lqh = (LoginQueryHolder*) holder;
WorldSession* masterSession = sWorld.FindSession(masterId);
if (! masterSession || sObjectMgr.GetPlayer(lqh->GetGuid()))
{
delete holder;
return;
}
// The bot's WorldSession is owned by the bot's Player object
// The bot's WorldSession is deleted by PlayerbotMgr::LogoutPlayerBot
WorldSession *botSession = new WorldSession(lqh->GetAccountId(), NULL, SEC_PLAYER, 0, masterSession->GetSessionDbcLocale());
botSession->m_Address = "bot";
botSession->HandlePlayerLogin(lqh); // will delete lqh
masterSession->GetPlayer()->GetPlayerbotMgr()->OnBotLogin(botSession->GetPlayer());
}
示例10: DestroySession
void ClusterInterface::DestroySession(uint32 sid)
{
WorldSession * s = _sessions[sid];
_sessions[sid] = 0;
if(s)
{
/* todo: replace this with an event so we don't remove from the wrong thread */
if(s->GetPlayer())
s->LogoutPlayer(true);
delete s->GetSocket();
delete s;
}
}
示例11: HandleDeleteAllCommand
static bool HandleDeleteAllCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
WorldDatabase.Execute("DELETE FROM `anti-farm log`");
QueryResult result = WorldDatabase.Query("SELECT `ID` FROM `anti-farm log`");
if(result)
{
Session->SendNotification("Deletion failed");
return false;
}
else
{
Session->SendAreaTriggerMessage("Deletion successful!");
return true;
}
return true;
}
示例12: HandleDeleteIDCommand
static bool HandleDeleteIDCommand(ChatHandler* handler, const char* args)
{
if(!*args)
return false;
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 ID = atoi((char*)args);
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` WHERE `ID` = %u", ID);
if(!result)
{
char msg [250];
snprintf(msg, 250, "Log with Log ID : %u doesn't exist", ID);
Session->SendNotification(msg);
return false;
}
WorldDatabase.PExecute("DELETE FROM `anti-farm log` WHERE `ID` = %u", ID);
Session->SendAreaTriggerMessage("Deletion of Log ID : %u Successful!", ID);
return true;
}
示例13: HandleLogCommand
static bool HandleLogCommand(ChatHandler* handler, const char* args)
{
WorldSession * Session = handler->GetSession();
Player* player = Session->GetPlayer();
uint32 RLimit = 10;
if((char*)args)
RLimit = atoi((char*)args);
if(RLimit == 0 || RLimit > 100)
RLimit = 10;
QueryResult result = WorldDatabase.PQuery("SELECT * FROM `anti-farm log` LIMIT %u", RLimit);
if(!result)
{
Session->SendNotification("There are no records");
return false;
}
Field * fields = NULL;
do{
uint32 ID = (*result)[0].GetUInt32();
uint32 guid = (*result)[1].GetUInt32();
uint32 Warning = (*result)[2].GetUInt32();
QueryResult nameResult = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid = %u", guid);
if (nameResult)
{
const char * name = (*nameResult)[0].GetCString();
char msg[250];
snprintf(msg,250, "ID: %u Character: %s Warning Level: %u\n", ID, name, Warning);
handler->PSendSysMessage(msg);
handler->SetSentErrorMessage(true);
}
else
{
char msg[250];
snprintf(msg, 250, "ID: %u Character: %u Warning Level: %u \n" , ID, guid, Warning);
handler->PSendSysMessage (msg);
handler->SetSentErrorMessage (true);
}
}
while(result->NextRow());
return true;
}
示例14: HandleFullDismountCommand
bool ChatHandler::HandleFullDismountCommand(const char * args, WorldSession *m_session)
{
Player* p_target = getSelectedChar(m_session, false);
if(!p_target)
{
SystemMessage(m_session, "Select a player or yourself first.");
return false;
}
if(!p_target->IsInWorld())
return false;
WorldSession* sess = p_target->GetSession();
if(!sess || !sess->GetSocket())
{
RedSystemMessage(m_session, "Not able to locate player %s.", sess->GetPlayer()->GetName());
return false;
}
if(!p_target->m_taxiPaths.size())
p_target->SetTaxiState(false);
p_target->SetTaxiPath(NULL);
p_target->UnSetTaxiPos();
p_target->m_taxi_ride_time = 0;
p_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID , 0);
p_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNTED_TAXI);
p_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_LOCK_PLAYER);
p_target->Dismount();
sEventMgr.RemoveEvents(p_target, EVENT_PLAYER_TAXI_INTERPOLATE);
if( p_target->m_taxiPaths.size() )
p_target->m_taxiPaths.clear();
return true;
}
示例15: _PerformObjectDuties
//.........这里部分代码省略.........
}
pet_iterator = m_PetStorage.begin();
for(; pet_iterator != m_PetStorage.end();)
{
ptr2 = pet_iterator->second;
++pet_iterator;
ptr2->Update(difftime);
}
}
// Update players.
{
PlayerStorageMap::iterator itr = m_PlayerStorage.begin();
Player* ptr;
for(; itr != m_PlayerStorage.end();)
{
ptr = itr->second;
++itr;
ptr->Update(difftime);
}
lastUnitUpdate = mstime;
}
// Dynamic objects
//
// We take the pointer, increment, and update in this order because during the update the DynamicObject might get deleted,
// rendering the iterator unincrementable. Which causes a crash!
{
for(DynamicObjectStorageMap::iterator itr = m_DynamicObjectStorage.begin(); itr != m_DynamicObjectStorage.end();)
{
DynamicObject* o = itr->second;
++itr;
o->UpdateTargets();
}
}
// Update gameobjects (not on every loop, however)
if(mLoopCounter % 2)
{
difftime = mstime - lastGameobjectUpdate;
GameObjectSet::iterator itr = activeGameObjects.begin();
GameObject* ptr;
for(; itr != activeGameObjects.end();)
{
ptr = *itr;
++itr;
if(ptr != NULL)
ptr->Update(difftime);
}
lastGameobjectUpdate = mstime;
}
// Sessions are updated every loop.
{
int result;
WorldSession* session;
SessionSet::iterator itr = Sessions.begin();
SessionSet::iterator it2;
for(; itr != Sessions.end();)
{
session = (*itr);
it2 = itr;
++itr;
if(session->GetInstance() != m_instanceID)
{
Sessions.erase(it2);
continue;
}
// Don't update players not on our map.
// If we abort in the handler, it means we will "lose" packets, or not process this.
// .. and that could be disastrous to our client :P
if(session->GetPlayer() && (session->GetPlayer()->GetMapMgr() != this && session->GetPlayer()->GetMapMgr() != 0))
{
continue;
}
if((result = session->Update(m_instanceID)) != 0)
{
if(result == 1)
{
// complete deletion
sWorld.DeleteSession(session);
}
Sessions.erase(it2);
}
}
}
// Finally, A9 Building/Distribution
_UpdateObjects();
}