Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
KoblizekX2

Custom NPC

Recommended Posts

čau udělal jsem si custom npc v db jsem udělal npc s goshipem a vším jak má bejt (mám i teleporterá je uplně stejný a jde :)) jenže když ve hře kliknu pravím na npc nic ani okno nevyskočí.

Kompilace proběhla úspěšně

Nevíte ně+kdo co stím? :D

Jedná se o SkyFire....

Můj npc:

#include "ScriptPCH.h"

class npc_koblizek : public CreatureScript
{
   public:
       npc_koblizek() : CreatureScript("npc_koblizek") { }

               bool OnGossipHello(Player *player, Creature *_creature)
               {
					player->ADD_GOSSIP_ITEM( 2, "Zmena"               , GOSSIP_SENDER_MAIN, 1);
			        player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());         
                       return true;
                       }
//-------------------------------------------------------------------------------------------------------------
			bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
               {
                   if (sender == GOSSIP_SENDER_MAIN)
                   {
                        player->PlayerTalkClass->ClearMenus();
                     switch(uiAction)
                        {
						  case 1: //Zmena
                             player->ADD_GOSSIP_ITEM( 1, "Zmena 1"           , GOSSIP_SENDER_MAIN, 10);
                             player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
                            break;

                             case 10: //Zmena 1
                             //Script ke zmene
                             break; 

						  //**********************************************************************

						     default:
                                break;
                        }
                 }
                 return true;
         }
};

void AddSC_npc_koblizek()
{
   new npc_koblizek();
}

Edited by KoblizekX2

Share this post


Link to post
Share on other sites

Tak to si budeš muset asi počkat na někoho zkušenějšího... ve scriptu chybu nevidím... zkus vše prolítnout, jestli někde nemáš chybku.. třeba malý/velký písmena bývaj problém :D

Share this post


Link to post
Share on other sites

Hele, cata moc nemusím tak se budu řídit tím, co znám z wotlkovýho TC2. Snad to bude stejný a pomůže to.

 

Do kódu jsem připsal pár poznámek, tak se na to koukni.

#include "ScriptPCH.h"

class npc_koblizek : public CreatureScript
{
public:
   npc_koblizek() : CreatureScript("npc_koblizek") { }

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       player->ADD_GOSSIP_ITEM( 2, "Zmena",        GOSSIP_SENDER_MAIN, 1);
       player->ADD_GOSSIP_ITEM( 4, "(x) ZAVRIT",   GOSSIP_SENDER_MAIN, 666);   // aby se menu zobrazilo, musí gossip obsahovat 2 položky,
                                                                               // jinak se provede jediná volba ihned, bez dotazů..

       player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID()); // odeslání preparovaného packetu s položkami gossip menu..
       return true;
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
   {
       if (sender != GOSSIP_SENDER_MAIN)
           return true;

       player->PlayerTalkClass->ClearMenus();

       switch(uiAction)
       {
       case 1: //Zmena
           player->ADD_GOSSIP_ITEM( 1, "Zmena 1",  GOSSIP_SENDER_MAIN, 10);
           player->ADD_GOSSIP_ITEM( 4, "(x) ZAVRIT",   GOSSIP_SENDER_MAIN, 666);   // aby se menu zobrazilo, musí gossip obsahovat minimálně 2 položky,
                                                                                   // jinak se provede jediná volba ihned, bez dotazů..

           player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID()); // odeslání preparovaného packetu s položkami gossip menu..
           break;

       case 10: //Zmena 1
           player->CLOSE_GOSSIP_MENU(); //pokud nevyvoláváš další menu, je tohle docela důležitej řádek

           sLog->outString("Koblihovo script  Player guid: %u", player->GetGUID()); //tohle je jenom příklad debug výpisu do konzole,
                                                                                      //abys věděl kam script došel - klidně to pak smaž..

           //Script ke zmene << zde to asi bude nějak pokračovat, že? 

           break;

       case 666: // (x) ZAVRIT
       default:
           player->CLOSE_GOSSIP_MENU(); // zavíráme krám 
           break;
       }

       return true;
   }
};

void AddSC_npc_koblizek()
{
   new npc_koblizek();
}

 

Základní věc je, což si mnozí neuvědomují, že gossip menu musí mít 2 a více položek v menu. Pokud tam máš jenom jednu položku (volbu), tak se provede jen tahle jedna volba a na nic se tě to neptá. Situace jiná by MOŽNÁ nastala při použití nějakýho rozšířenýho gossip itemu, například s dotazem na cenu (ADD_GOSSIP_ITEM_EXTENDED) atp. To ale nechme hnít, tady se jedná o jednoduchý věci (ADD_GOSSIP_ITEM), takže tak..

 

Takže si to shrneme:

  • Gossip menu, aby se zobrazilo, potřebuje 2 a více položek
  • pokud má jen jednu, provede se tato jedna položka okamžitě.
Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×