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  
...::StyX::...

Teleport [c++]

Recommended Posts

Zdravím, potřeboval bych poradit co mám v tom to scriptu blbě.. V pohodě s emi to skompiluje, ale ve hře to potom nefunguje. NPC mám správně nastavený.

 

 

 

#include "ScriptPCH.h"

#define ACTION_MAINMENU             1500

#define GOSSIP_SENDER_TELEPORT      2000
#define GOSSIP_SENDER_DUNGS         2001
#define GOSSIP_SENDER_SHOP          2002
#define GOSSIP_SENDER_ZONY          2003
#define GOSSIP_SENDER_ARENA         2004
#define GOSSIP_SENDER_EVENT         2005
#define GOSSIP_SENDER_SUPPORT       2006
#define GOSSIP_SENDER_SKILL         2007

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

   bool GossipHello_fun(Player *player, Creature *creature)
   {
       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           creature->MonsterWhisper("Si v boji. Skus neskor!", player->GetGUID());
           return true;
       }

       SendMainMenu(player, creature);
       return true;
   }

   bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 action)
   {
       player->PlayerTalkClass->ClearMenus();

       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           creature->MonsterWhisper("Si v boji. Skus neskor!", player->GetGUID());
           return true;
       }

       switch(sender)
       {
           case GOSSIP_SENDER_DUNGS :
               SendDungs(player, creature, action);
               break;

           case GOSSIP_SENDER_ZONY  :
               SendZony(player, creature, action);
               break;

           case GOSSIP_SENDER_EVENT  :
               SendEvent(player, creature, action);
               break;

           case GOSSIP_SENDER_ARENA :
               SendArena(player, creature, action);
               break;

           case GOSSIP_SENDER_SHOP:
               SendShop(player, creature, action);
               break;

      case GOSSIP_SENDER_SKILL:
               SendSkill(player, creature, action);
               break;

           default:
               SendMainMenu(player, creature);
               return true;
       }

       return true;
   }

private:
   bool SendMainMenu(Player *player, Creature *creature)
   {

	     player->ADD_GOSSIP_ITEM(2, "Teleport's", GOSSIP_SENDER_MAIN, 8001);
		 player->ADD_GOSSIP_ITEM(7, "Dungeon's", GOSSIP_SENDER_DUNGS, 8002);
		 player->ADD_GOSSIP_ITEM(7, "Zony", GOSSIP_SENDER_ZONY, 8004);
		 player->ADD_GOSSIP_ITEM(7, "Stale eventy", GOSSIP_SENDER_EVENT, 8006);
		 player->ADD_GOSSIP_ITEM(4, "Shop ", GOSSIP_SENDER_SHOP, 8003);
		 player->ADD_GOSSIP_ITEM(4, "Gurubashe Arena (PvP)", GOSSIP_SENDER_ARENA, 8005);
    	 player->ADD_GOSSIP_ITEM(2, "Support", GOSSIP_SENDER_MAIN, 8007);
		 player->ADD_GOSSIP_ITEM(4, "Max Skill", GOSSIP_SENDER_SKILL, 8008);

        player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
           return true;
   }

   bool SendDungs(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8002: //dungeon
			player->ADD_GOSSIP_ITEM(5, "Vault of Archavon", GOSSIP_SENDER_DUNGS, 9001);
               player->ADD_GOSSIP_ITEM(5, "Naxxramas - T9 ",   GOSSIP_SENDER_DUNGS, 9002);
               player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 9001: //VoA
               player->CLOSE_GOSSIP_MENU();
			player->TeleportTo(571,5472.434570,2840.210693,418.676056,0.025894f);
			creature->MonsterWhisper("Vault of Archavon!", player->GetGUID());
               break;

           case 9002://Naxx
                player->CLOSE_GOSSIP_MENU();
			 player->TeleportTo(571,3668.719971,-1262.459961,243.621994,4.785000f);
			 creature->MonsterWhisper("Naxxramas!", player->GetGUID());
               break;

       }
   }

   bool SendZony(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8004: //Zony
			player->ADD_GOSSIP_ITEM(5, "Quest Zona", GOSSIP_SENDER_ZONY, 9006);
               player->ADD_GOSSIP_ITEM(5, "Nakupni / Obytna zona", GOSSIP_SENDER_ZONY, 9007);
			player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 9006://Quest
                player->CLOSE_GOSSIP_MENU();
			 player->TeleportTo(0,-10997.076172,-3419.356445,64.238022,1.632434f);
			 creature->MonsterWhisper("Quest Zona", player->GetGUID());
               break;

           case 9007://Obytna
               player->CLOSE_GOSSIP_MENU();
			player->TeleportTo(0,2685.012451,-1552.677002,471.203766,0.844495f);
			creature->MonsterWhisper("Nakupni / Obytna zona", player->GetGUID());
               break;


       }
   }

   bool SendEvent(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8006: //EVENTY
               player->ADD_GOSSIP_ITEM(5, "Skakacka", GOSSIP_SENDER_EVENT, 9008);
               player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 9008: //Skakacka
               player->CLOSE_GOSSIP_MENU();
			player->TeleportTo(1,560.544983,-684.109253,69.750061,0.286574f);
			creature->MonsterWhisper("Skakacka!", player->GetGUID());
               break;

     }
   }

   bool SendArena(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8005: //Arena
               player->ADD_GOSSIP_ITEM(5, "Arena", GOSSIP_SENDER_ARENA, 9010);
               player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 9010: //Arena
                player->CLOSE_GOSSIP_MENU();
			 player->TeleportTo(0,-13240.703125,200.433105,30.909693,1.182708f);
			 creature->MonsterWhisper("Jdi bojovat!", player->GetGUID());
               break;


	     }
   }

   bool SendShop(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8005: //Shop
               player->ADD_GOSSIP_ITEM(5, "Shop", GOSSIP_SENDER_ARENA, 9011);
               player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 9011: //Shop
                 player->CLOSE_GOSSIP_MENU();
			  player->TeleportTo(0,2916.980957,-1438.928101,151.656204,1.028830f);
			  creature->MonsterWhisper("Shop!", player->GetGUID());
               break;
       }
   }

   bool SendSkill(Player *player, Creature *creature, uint32 action)
   {
       switch(action)
       {
           case 8008: //Skill
               player->ADD_GOSSIP_ITEM(5, "Max Skill", GOSSIP_SENDER_SKILL, 20000);
               player->ADD_GOSSIP_ITEM(7, "<-Menu", GOSSIP_SENDER_MAIN, ACTION_MAINMENU);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
               break;

           case 20000: //Max Skill
                player->CLOSE_GOSSIP_MENU();
		     player->UpdateSkillsToMaxSkillsForLevel();

           break;


       }
   }
};

void AddSC_custom_npc_fun()
{
   new custom_npc_fun;
}

 

 

 

 

 

Díky

 

 

EDIT: Vyřešeno prosím o lock a díky ;-)

Edited by ...::StyX::...

Share this post


Link to post
Share on other sites

podle me ti chybi nasledujici funkce

bool OnGossipHello(Player* pPlayer, Creature* pCreature)

 

nemas definovano co se ma stat kdyz na NPC kliknu pravym - ze se ma otevrit nejaky chat :)

  • Upvote 2

Share this post


Link to post
Share on other sites

podle me ti chybi nasledujici funkce

bool OnGossipHello(Player* pPlayer, Creature* pCreature)

 

nemas definovano co se ma stat kdyz na NPC kliknu pravym - ze se ma otevrit nejaky chat :)

Můžu se zeptat, kam to mám hodit? Před co? Nebo za co? Prosím poraďte :) Děkuji :).

Za každou odpověď +rep :).

Share this post


Link to post
Share on other sites

No, radši se ujistím, dělám to správně? Otevřu si již projekt, rozkliknu scripts kliknu pravým na source list tam dám add -> existing item prdnu tam ten script zkompiluju udělám npc, nastavím script name a hotovo? Nevím, jestli to dělám dobře, poradíte mi prosím? Děkuju :)

Edited by Nightek

Share this post


Link to post
Share on other sites

No, radši se ujistím, dělám to správně? Otevřu si již projekt, rozkliknu game kliknu pravým na source list tam dám add -> existing item prdnu tam ten script zkompiluju udělám npc, nastavím script name a hotovo? Nevím, jestli to dělám dobře, poradíte mi prosím? Děkuju :)

 

http://www.trinitycore.info/index.php?title=Howto_customscript

  • Upvote 2

Share this post


Link to post
Share on other sites

podle toho jsem postupoval, vše jak je v návodu, akorát ScriptLoader.cpp mám takto http://pastebin.com/VVV1Rhwy

Místo tohoto scriptu jsem aplikoval tento

 

 

 

#include "ScriptPCH.h"

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

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           _creature->MonsterWhisper("Si v Combatu!", player->GetGUID());
           return true;
       }
       else
       {

                        player->ADD_GOSSIP_ITEM( 3, "Buffs"                    , GOSSIP_SENDER_MAIN, 8);

       }

       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 8: //Buffs

               player->ADD_GOSSIP_ITEM(5, "Stamina", GOSSIP_SENDER_MAIN, 9006);
               player->ADD_GOSSIP_ITEM(5, "Agility", GOSSIP_SENDER_MAIN, 9007);
               player->ADD_GOSSIP_ITEM(5, "Intelect", GOSSIP_SENDER_MAIN, 9008);
               player->ADD_GOSSIP_ITEM(5, "Strength", GOSSIP_SENDER_MAIN, 9009);
               player->ADD_GOSSIP_ITEM(5, "Power Word: Fortitude", GOSSIP_SENDER_MAIN, 9011);
               player->ADD_GOSSIP_ITEM(5, "Divine Spirit", GOSSIP_SENDER_MAIN, 9012);
               player->ADD_GOSSIP_ITEM(5, "Blesing of Might", GOSSIP_SENDER_MAIN, 9013);
               player->ADD_GOSSIP_ITEM(5, "Blesing of Wisdom", GOSSIP_SENDER_MAIN, 9014);
               player->ADD_GOSSIP_ITEM(5, "Greater Blessing of Kings", GOSSIP_SENDER_MAIN, 9015);
               player->ADD_GOSSIP_ITEM(5, "Mark of the Wild", GOSSIP_SENDER_MAIN, 9016);
               player->ADD_GOSSIP_ITEM(5, "Thorns", GOSSIP_SENDER_MAIN, 9017);
               player->ADD_GOSSIP_ITEM(5, "Arcane Intellect", GOSSIP_SENDER_MAIN, 9018);

               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());

     break;

case 9006://stamina
          player->CLOSE_GOSSIP_MENU();
     _creature->CastSpell(player,48102,false);
break;

case 9007://agility
          player->CLOSE_GOSSIP_MENU();
     _creature->CastSpell(player,58451,false);
break;

case 9008://intelect
          player->CLOSE_GOSSIP_MENU();
     _creature->CastSpell(player,42995,false);
break;

case 9009://strength
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,58449,false);
break;


case 9011://Power Word: Fortitude
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,48161,false);
break;

case 9012://Divine Spirit
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,48073,false);
break;

case 9013://Blesing of Might
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,48931,false);
break;

case 9014://Blesing of Wisdom
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,48936,false);
break;

case 9015://king
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,25898,false);
break;

case 9016://Mark of the Wild
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,48469,false);
break;

case 9017://Thons
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,53307,false);
break;

case 9018://Arcane Intellect
           player->CLOSE_GOSSIP_MENU();
      _creature->CastSpell(player,42995,false);
break;

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

void AddSC_npc_buff()
{
   new npc_buff();
}

 

 

 

 

Vše se mi zkompiluje bez problému, ale jak spustím Worldserver.exe tak přestane pracovat ... napíše to, že selhal...

Nevíte někdo co s tím ?:)

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  

×