Hier ist das von uns geschriebene C++ Script für die Pandaren Fraktionsauswahl.
Man muss dazu die Quest 31450 haben.
Eingebaut wird es in /src/server/scripts/World/npcs_special.cpp
Scriptname in der Datenbank bei Master Shang Xi ist " npc_Spirit_of_Master_Shang_Xi "
#define GOSSIP_TEXT_EXP 14736 #define GOSSIP_CHOOSE_FACTION "I would like to join the horde" #define GOSSIP_CHOOSE_FACTION2 "I would like to join the alliance" class npc_Spirit_of_Master_Shang_Xi : public CreatureScript { public: npc_Spirit_of_Master_Shang_Xi() : CreatureScript("npc_Spirit_of_Master_Shang_Xi") { } bool OnGossipHello(Player* player, Creature* creature) { if (creature->IsQuestGiver()) player->PrepareQuestMenu(creature->GetGUID()); if (player->getRace() == RACE_PANDAREN_NEUTRAL) { if (player->GetQuestStatus(31450) == QUEST_STATUS_INCOMPLETE) { AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CHOOSE_FACTION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CHOOSE_FACTION2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } } player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXT_EXP, creature->GetGUID()); return true; } bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) { if (action == GOSSIP_ACTION_INFO_DEF + 1) { player->SetByteValue(UNIT_FIELD_BYTES_0, 0, RACE_PANDAREN_HORDE); player->setFactionForRace(RACE_PANDAREN_HORDE); player->SaveToDB(); WorldLocation location(1, 1357.62f, -4373.55f, 26.13f, 0.13f); player->TeleportTo(location); player->SetHomebind(location, 363); player->LearnSpell(668, false); // Language Common player->LearnSpell(108127, false); // Language Pandaren player->KilledMonsterCredit(64594); } if (action == GOSSIP_ACTION_INFO_DEF + 2) { player->SetByteValue(UNIT_FIELD_BYTES_0, 0, RACE_PANDAREN_ALLIANCE); player->setFactionForRace(RACE_PANDAREN_ALLIANCE); player->SaveToDB(); WorldLocation location(0, -8960.02f, 516.10f, 96.36f, 0.67f); player->TeleportTo(location); player->SetHomebind(location, 9); player->LearnSpell(668, false); // Language Common player->LearnSpell(108127, false); // Language Pandaren player->KilledMonsterCredit(64594); } player->PlayerTalkClass->SendCloseGossip(); return true; } }; void AddSC_npcs_special() { new npc_Spirit_of_Master_Shang_Xi(); }
Last edited by Nuppi (2018-12-05 23:08:50)