[Tutorial] Buffer NPC Készítése

Indította Action, 2010 július 21, 12:55:50 DÉLUTÁN

Előző téma - Következő téma

Action

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 !
A WORD elszáll, az írás megmarad.


Powered by EzPortal