bool ChatHandler::HandleWPEmoteCommand(const char* args, WorldSession *m_session) { uint64 guid = m_session->GetPlayer()->GetSelection(); if (guid == 0) { SystemMessage(m_session, "No selection."); return true; } if(GET_TYPE_FROM_GUID(guid) != HIGHGUID_TYPE_WAYPOINT) { SystemMessage(m_session, "You should select a Waypoint."); return true; } Player* pPlayer = m_session->GetPlayer(); AIInterface* ai = pPlayer->waypointunit; if(!ai || !ai->GetUnit()) { SystemMessage(m_session, "Invalid Creature, please select another one."); return true; } uint32 EmoteId = 0; bool OneShot = true; std::stringstream ss; uint32 wpid = GUID_LOPART(guid); if(wpid) { WayPoint* wp = ai->getWayPoint(wpid); if(wp) { char* pBackwards = strtok((char*)args, " "); uint32 Backwards = (pBackwards)? atoi(pBackwards) : 0; char* pEmoteId = strtok(NULL, " "); EmoteId = (pEmoteId)? atoi(pEmoteId) : 0; char* pOneShot = strtok(NULL, " "); OneShot = (pOneShot)? ((atoi(pOneShot)>0)?true:false) : 1; if(Backwards) { wp->backwardemoteid = EmoteId; wp->backwardemoteoneshot = OneShot; } else { wp->forwardemoteid = EmoteId; wp->forwardemoteoneshot = OneShot; } //save wp ai->saveWayPoints(); } ss << "EmoteID for Waypoint " << wpid << " is now " << EmoteId << " and oneshot is " << ((OneShot == true)? "Enabled." : "Disabled."); SystemMessage(m_session, ss.str().c_str()); } else { SystemMessage(m_session, "Invalid Waypoint."); return true; } return true; }
bool ChatHandler::HandleWPInfoCommand(const char* args, WorldSession *m_session) { uint64 guid = m_session->GetPlayer()->GetSelection(); if (guid == 0) { SystemMessage(m_session, "No selection."); return true; } if(GET_TYPE_FROM_GUID(guid) != HIGHGUID_TYPE_WAYPOINT) { SystemMessage(m_session, "You should select a Waypoint."); return true; } Player* pPlayer = m_session->GetPlayer(); AIInterface* ai = pPlayer->waypointunit; if(!ai || !ai->GetUnit()) { SystemMessage(m_session, "Invalid Creature, please select another one."); return true; } std::stringstream ss; uint32 wpid = GUID_LOPART(guid); if((wpid > 0) && (wpid <= ai->GetWayPointsCount())) { WayPoint* wp = ai->getWayPoint(wpid); if(wp) { ss << "Waypoint Number " << wp->id << ":\n"; ss << "WaitTime: " << wp->waittime << "\n"; ss << "Flags: " << wp->flags; if(wp->flags == 768) ss << " (Fly)\n"; else if(wp->flags == 256) ss << " (Run)\n"; else ss << " (Walk)\n"; ss << "Backward\n"; ss << "EmoteId : " << wp->backwardemoteid << "\n"; ss << "OneShot : " << ((wp->backwardemoteoneshot == 1)? "Yes" : "No") << "\n"; ss << "SkinId : " << wp->backwardskinid << "\n"; ss << "StandState : " << wp->backwardStandState << "\n"; ss << "SpellToCast: " << wp->backwardSpellToCast << "\n"; ss << "Forward\n"; ss << "EmoteId : " << wp->forwardemoteid << "\n"; ss << "OneShot : " << ((wp->forwardemoteoneshot == 1)? "Yes" : "No") << "\n"; ss << "SkinId : " << wp->forwardskinid << "\n"; ss << "StandState : " << wp->forwardStandState << "\n"; ss << "SpellToCast: " << wp->forwardSpellToCast << "\n"; SendMultilineMessage(m_session, ss.str().c_str()); } } else { SystemMessage(m_session, "Invalid Waypoint."); return true; } return true; }
bool ChatHandler::HandleWPSkinCommand(const char* args, WorldSession *m_session) { uint64 guid = m_session->GetPlayer()->GetSelection(); if (guid == 0) { SystemMessage(m_session, "No selection."); return true; } if(GET_TYPE_FROM_GUID(guid) != HIGHGUID_TYPE_WAYPOINT) { SystemMessage(m_session, "You should select a Waypoint."); return true; } Player* pPlayer = m_session->GetPlayer(); AIInterface* ai = pPlayer->waypointunit; if(!ai || !ai->GetUnit()) { SystemMessage(m_session, "Invalid Creature, please select another one."); return true; } uint32 SkinId = 0; std::stringstream ss; uint32 wpid = GUID_LOPART(guid); if(wpid) { WayPoint* wp = ai->getWayPoint(wpid); if(wp) { char* pBackwards = strtok((char*)args, " "); uint32 Backwards = (pBackwards)? atoi(pBackwards) : 0; char* pSkinId = strtok(NULL, " "); SkinId = (pSkinId)? atoi(pSkinId) : 0; if(Backwards) { if(wp->backwardInfo == NULL) wp->backwardInfo = new ConditionalData(); wp->backwardInfo->SkinID = SkinId; } else { if(wp->forwardInfo == NULL) wp->forwardInfo = new ConditionalData(); wp->forwardInfo->SkinID = SkinId; } //save wp ai->saveWayPoints(); } ss << "SkinID for Waypoint " << wpid << " is now " << SkinId; SystemMessage(m_session, ss.str().c_str()); } else { SystemMessage(m_session, "Invalid Waypoint."); return true; } return true; }