Nah,mivel már húszezer topic volt ilyen címmel : "Buffer NPC" , "BUFFER NPC PLS HELP!!!" etc.
Tehát elmondom hogy is kell ezt csinálni hogy működjön is...
Na először is létrehozunk egy *.cpp fájlt és elkezdjük.
1.
bool GossipHello_npc_test_(Player *player, Creature *_Creature)
Megadtuk a pointereket
Ez a legfontosabb
2.
{
player->ADD_GOSSIP_ITEM(0, "Elso Gossip Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(1, _Creature->GetGUID());
return true;
}
--Be adjuk az npc-nek az első gossip sort
player->ADD_GOSSIP_ITEM
--Ikonja:
ADD_GOSSIP_ITEM(0,...
A "0" jelöli az ikonját tehát kis "felhő" ikonja lesz
--Szöveg
ADD_GOSSIP_ITEM(0, "Elso Gossip Menu",...
Ide be tudjuk irni mi legyen a szövegünk
--Gossip menü sorszáma
GOSSIP_ACTION_INFO_DEF+1)
Megadtuk hogy mennyi a sorszáma
NEM LEHET 2 EGYFORMA!
player->ADD_GOSSIP_ITEM(0, "Elso Gossip Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
Így néz ki egyben.
Hogyan adjam hozzá a második Gossip Itememet?
Így:
player->ADD_GOSSIP_ITEM(0, "Masodik Gossip Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
Az a lényeg a _DEF+ után az a szám legyen ahanyadik az item a sorban!
3.
bool GossipSelect_npc_test(Player *player, Creature *_Creature, uint32 sender, uint32 action )
Megint megadjuk a pointereket!
4.
{
switch(action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CLOSE_GOSSIP_MENU();
_Creature->CastSpell(player, 48876, false);
break;
}
return true;
}
Itt most hozzá adjuk a spellt a menühöz
case GOSSIP_ACTION_INFO_DEF+1: -- Ez azt jelenti hogy az első menühöz van hozzá rendelve ez a rész
spell ID
--SpellCast /\
||
pCreature->CastSpell(player, 48876, false);
| | ||
\ / v
v target:player
Creature
pointer
5.
Script létrehozása
}
void AddSC_npc_test()
{
Script *newscript;
newscript = new Script;
newscript->Name = "npc_test";
newscript->pGossipHello = &GossipHello_npc_test;
newscript->pGossipSelect = &GossipSelect_npc_test;
newscript->RegisterSelf();
}
És ennyi nagyábol
Itt egy komplett script ez alapján könnyebb
Link
KIEGÉSZÍTÉS OLVASD EL!
Hogyan kell almenüt csinálni?
Tehát:
Az első lépés:
Elkezdjük úgy mint ahogy leírtam az előbb.
De! Ehelyett:
player->ADD_GOSSIP_ITEM(0, "Elso Gossip Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
Ezt írjuk:
player->AddGossipItem(0, "Elso Gossip Menu" , GOSSIP_SENDER_MAIN, 1);
Ebben az esetben az "1" az case-t jelenti.
Itt most megadtuk a case-t egynek és később majd igy tudjuk tovább vinni!:
switch(Action) // Ezt is fontos ide raknunk!
{
case 1: // Ez amit az előbb definiáltam
player->AddGossipItem(0, "Elso almenu" , GOSSIP_SENDER_MAIN, 11); // Létrehozzuk az első almenut!
pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID());
}
Hol is járunk? Ott járunk hogy van egy menünk és egy almenünk
Magyarul így : Beszéd az npc-vel->Elso Gossip Menu(klick rá)->Elso almenu
És ez így még sokáig folytatható.
Remélem tudtam segíteni!
Szép Napot
Frissítve:2010.06.14
A leírást készítette, BlueRák !
Szép leírás +1 :)