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  
Smrtokvitek

[C++] Apokalypsa WoW Server - Title Giver

Recommended Posts

Budete musieť počkať, zistil som malú chybu v scripte. Miesto daného počtu AT príklad máš 100AT , a má vziať 40AT ti vezme all AT čo máš. Nejako si s tým neviem rady. Za rady, prípadne riešenie budem vďačný.

Share this post


Link to post
Share on other sites

Budete musieť počkať, zistil som malú chybu v scripte. Miesto daného počtu AT príklad máš 100AT , a má vziať 40AT ti vezme all AT čo máš. Nejako si s tým neviem rady. Za rady, prípadne riešenie budem vďačný.

 

OK Title Giver je opraveny a plne funkčný!

Share this post


Link to post
Share on other sites

a na co uz niekomu bude Title giver? To uz cem vidiet ten fail server kde budu davat okrem T10 aj vsetky mozne tituly...

Třeba to bude na tom serveru za tókeny které si budeš muset koupit za realné peníze.

Jinak GW jestli se můžu zeptat kdes se učil C++?? Samozdřejmě add.png

Share this post


Link to post
Share on other sites

a na co uz niekomu bude Title giver? To uz cem vidiet ten fail server kde budu davat okrem T10 aj vsetky mozne tituly...

 

Pokud se tobě hodí "Dobré jádro do TC2" :D :D tak nevydím důvod proč by se někomu nemohl hodit title Giver.

 

 

GW +1

 

 

Share this post


Link to post
Share on other sites

Třeba to bude na tom serveru za tókeny které si budeš muset koupit za realné peníze.

Jinak GW jestli se můžu zeptat kdes se učil C++?? Samozdřejmě add.png

 

No, začínal som s Adminovanim servera takpovediac bez skúseností a schopnosťí, postupne som sa učil pomocou Googlu a jedného kamaráta čo mi pomáhal keď som niečo nevedel alebo nechápal , tak som sa učil PHP/HTML/CSS/SQL, a neskôr ma prinútil môj server aby som sa začal učiť aj C++. Začínal som tak, že som si pozeral kôdy rôzne , zdrojaky, neskôr som začal podľa podkladu daného scriptu prerábať na nejaký nový podobný, začal som manuálne nahadzovať rôzne patche na server, a takto to šlo :-)

Share this post


Link to post
Share on other sites

Nešlo by to udělat kratší? :D Mám na mysli něco takovýho:

 

 

#include "ScriptPCH.h"

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

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           _creature->MonsterWhisper("Combat!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 3, "General",         GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 8, "Event",           GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",  GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Reputation",      GOSSIP_SENDER_MAIN, 4);
           player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",     GOSSIP_SENDER_MAIN, 5);
           player->ADD_GOSSIP_ITEM(10, "Other",           GOSSIP_SENDER_MAIN, 6);
       }

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

   bool SetTitleAndDestroyAT(Player *player, Creature *_creature, int pocetAT, int titleID);
   {
       player->CLOSE_GOSSIP_MENU();
       if (player->HasItemCount( 32569, pocetAT, false ))
       {
           player->DestroyItemCount(32569, pocetAT, true, false);
           player->SetTitle(sCharTitlesStore.LookupEntry(titleID));
           return true;
       }
       else
       {
           _creature->MonsterWhisper("Nedostatok Tokenov!", player->GetGUID());
           return false;
       }
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
   {
       if (sender == GOSSIP_SENDER_MAIN)
       {
           player->PlayerTalkClass->ClearMenus();
           switch(uiAction)
           {
           case 1: //General
               player->ADD_GOSSIP_ITEM(0, "The Explorer [40 AT]",  GOSSIP_SENDER_MAIN,  8);
               player->ADD_GOSSIP_ITEM(0, "Chef [40 AT]",          GOSSIP_SENDER_MAIN,  9);
               player->ADD_GOSSIP_ITEM(0, "Salty [40 AT]",         GOSSIP_SENDER_MAIN, 10);
               player->ADD_GOSSIP_ITEM(0, "Loremaster [40 AT]",    GOSSIP_SENDER_MAIN, 11);
               player->ADD_GOSSIP_ITEM(0, "The Seeker [40 AT]",    GOSSIP_SENDER_MAIN, 12);
               player->ADD_GOSSIP_ITEM(0, "The Patient [40 AT]",   GOSSIP_SENDER_MAIN, 13);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 2: //Event
               player->ADD_GOSSIP_ITEM(0, "Elder [25 AT]",         GOSSIP_SENDER_MAIN, 15);
               player->ADD_GOSSIP_ITEM(0, "The Love Fool [25 AT]", GOSSIP_SENDER_MAIN, 16);
               player->ADD_GOSSIP_ITEM(0, "The Noble [25 AT]",     GOSSIP_SENDER_MAIN, 17);
               player->ADD_GOSSIP_ITEM(0, "Brewmaster [25 AT]",    GOSSIP_SENDER_MAIN, 18);
               player->ADD_GOSSIP_ITEM(0, "The Hallowed [25 AT]",  GOSSIP_SENDER_MAIN, 19);
               player->ADD_GOSSIP_ITEM(0, "Pilgrim [25 AT]",       GOSSIP_SENDER_MAIN, 20);
               player->ADD_GOSSIP_ITEM(0, "Merrymaker [25 AT]",    GOSSIP_SENDER_MAIN, 21);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 3: //Dungeon & Raid
               player->ADD_GOSSIP_ITEM(0, "Jenkins [40 AT]",                       GOSSIP_SENDER_MAIN, 22);
               player->ADD_GOSSIP_ITEM(0, "Scarab Lord [40 AT]",                   GOSSIP_SENDER_MAIN, 23);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Frozen Wastes [40 AT]", GOSSIP_SENDER_MAIN, 24);
               player->ADD_GOSSIP_ITEM(0, "The Undying [40 AT]",                   GOSSIP_SENDER_MAIN, 25);
               player->ADD_GOSSIP_ITEM(0, "The Immortal [40 AT]",                  GOSSIP_SENDER_MAIN, 26);
               player->ADD_GOSSIP_ITEM(0, "of the Nightfall [40 AT]",              GOSSIP_SENDER_MAIN, 27);
               player->ADD_GOSSIP_ITEM(0, "Twilight Vanquisher [40 AT]",           GOSSIP_SENDER_MAIN, 28);
               player->ADD_GOSSIP_ITEM(0, "Starcaller [40 AT]",                    GOSSIP_SENDER_MAIN, 29);
               player->ADD_GOSSIP_ITEM(0, "The Astral Walker [40 AT]",             GOSSIP_SENDER_MAIN, 30);
               player->ADD_GOSSIP_ITEM(0, "Herald of the Titans [40 AT]",          GOSSIP_SENDER_MAIN, 31);
               player->ADD_GOSSIP_ITEM(0, "Champion of Ulduar [40 AT]",            GOSSIP_SENDER_MAIN, 32);
               player->ADD_GOSSIP_ITEM(0, "Conqueror of Ulduar [40 AT]",           GOSSIP_SENDER_MAIN, 33);
               player->ADD_GOSSIP_ITEM(0, "Bane of the Fallen King [40 AT]",       GOSSIP_SENDER_MAIN, 34);
               player->ADD_GOSSIP_ITEM(0, "The Light of Dawn [40 AT]",             GOSSIP_SENDER_MAIN, 35);
               player->ADD_GOSSIP_ITEM(0, "The Kingslayer [40 AT]",                GOSSIP_SENDER_MAIN, 36);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 4: //Reputation
               player->ADD_GOSSIP_ITEM(0, "of the Shattered Sun [30 AT]",  GOSSIP_SENDER_MAIN, 37);
               player->ADD_GOSSIP_ITEM(0, "Ambassador [30 AT]",            GOSSIP_SENDER_MAIN, 38);
               player->ADD_GOSSIP_ITEM(0, "Bloodsail Admiral  	 [30 AT]",  GOSSIP_SENDER_MAIN, 39);
               player->ADD_GOSSIP_ITEM(0, "The Diplomat [30 AT]",          GOSSIP_SENDER_MAIN, 40);
               player->ADD_GOSSIP_ITEM(0, "Guardian of Cenarius [30 AT]",  GOSSIP_SENDER_MAIN, 41);
               player->ADD_GOSSIP_ITEM(0, "The Argent Champion [30 AT]",   GOSSIP_SENDER_MAIN, 42);
               player->ADD_GOSSIP_ITEM(0, "of the Ashen Verdict [30 AT]",  GOSSIP_SENDER_MAIN, 43);
               player->ADD_GOSSIP_ITEM(0, "The Exalted [30 AT]",           GOSSIP_SENDER_MAIN, 44);
               player->ADD_GOSSIP_ITEM(0, "The Insane [30 AT]",            GOSSIP_SENDER_MAIN, 45);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 5: //PvP & Arena
               player->ADD_GOSSIP_ITEM(0, "Battlemaster [60 AT]",  GOSSIP_SENDER_MAIN, 46);
               player->ADD_GOSSIP_ITEM(0, "Arena Master [60 AT]",  GOSSIP_SENDER_MAIN, 47);
               player->ADD_GOSSIP_ITEM(0, "Duelist [60 AT]",       GOSSIP_SENDER_MAIN, 48);
               player->ADD_GOSSIP_ITEM(0, "Rival [60 AT]",         GOSSIP_SENDER_MAIN, 49);
               player->ADD_GOSSIP_ITEM(0, "Challenger [60 AT]",    GOSSIP_SENDER_MAIN, 50);
               player->ADD_GOSSIP_ITEM(0, "Vanquisher [60 AT]",    GOSSIP_SENDER_MAIN, 51);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 6: //Other
               player->ADD_GOSSIP_ITEM(0, "Crusader [40 AT]",              GOSSIP_SENDER_MAIN, 52);
               player->ADD_GOSSIP_ITEM(0, "Archmage [40 AT]",              GOSSIP_SENDER_MAIN, 53);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Naaru [40 AT]", GOSSIP_SENDER_MAIN, 54);
               player->ADD_GOSSIP_ITEM(0, "Hand of A'dal [40 AT]",         GOSSIP_SENDER_MAIN, 55);
               player->ADD_GOSSIP_ITEM(0, "Flawless Victor [40 AT]",       GOSSIP_SENDER_MAIN, 56);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 7: //<- [Main Menu]
               player->ADD_GOSSIP_ITEM( 3, "General",          GOSSIP_SENDER_MAIN, 1);
               player->ADD_GOSSIP_ITEM( 8, "Event",            GOSSIP_SENDER_MAIN, 2);
               player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",   GOSSIP_SENDER_MAIN, 3);
               player->ADD_GOSSIP_ITEM( 6, "Reputation",       GOSSIP_SENDER_MAIN, 4);
               player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",      GOSSIP_SENDER_MAIN, 5);
               player->ADD_GOSSIP_ITEM(10, "Other",            GOSSIP_SENDER_MAIN, 6);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 8: //The Explorer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  78))
                   return false;
               break;

           case 9: //Chef [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  84))
                   return false;
               break;

           case 10: //Salty [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  83))
                   return false;
               break;

           case 11: //Loremaster [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 125))
                   return false;
               break;

           case 12: //The Seeker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  81))
                   return false;
               break;

           case 13: //The Patient [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 172))
                   return false;
               break;

           case 15: //Elder [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25,  74))
                   return false;
               break;

           case 16: //The Love Fool [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 135))
                   return false;
               break;

           case 17: //The Noble [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 155))
                   return false;
               break;

           case 18: //Brewmaster [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 133))
                   return false;
               break;

           case 19: //The Hallowed [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 124))
                   return false;
               break;

           case 20: //Pilgrim [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 168))
                   return false;
               break;

           case 21: //Merrymaker [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 134))
                   return false;
               break;

           case 22: //Jenkins [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 143))
                   return false;
               break;

           case 23: //Scarab Lord [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  46))
                   return false;
               break;

           case 24: //Champion of the Frozen Wastes [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 129))
                   return false;
               break;

           case 25: //The Undying [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 142))
                   return false;
               break;

           case 26: //The Immortal [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 141))
                   return false;
               break;

           case 27: //of the Nightfall [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 140))
                   return false;
               break;

           case 28: //Twilight Vanquisher [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 121))
                   return false;
               break;

           case 29: //Starcaller [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 164))
                   return false;
               break;

           case 30: //The Astral Walker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 165))
                   return false;
               break;

           case 31: //Herald of the Titans [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 166))
                   return false;
               break;

           case 32: //Champion of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 161))
                   return false;
               break;

           case 33: //Conqueror of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 160))
                   return false;
               break;

           case 34: //Bane of the Fallen King [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 174))
                   return false;
               break;

           case 35: //The Light of Dawn [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 173))
                   return false;
               break;

           case 36: //The Kingslayer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 175))
                   return false;
               break;

           case 37: //of the Shattered Sun [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  63))
                   return false;
               break;

           case 38: //Ambassador [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 130))
                   return false;
               break;

           case 39: //Bloodsail Admiral [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 144))
                   return false;
               break;

           case 40: //The Diplomat [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  79))
                   return false;
               break;

           case 41: //Guardian of Cenarius [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 132))
                   return false;
               break;

           case 42: //The Argent Champion [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 131))
                   return false;
               break;

           case 43: //of the Ashen Verdict [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 176))
                   return false;
               break;

           case 44: //The Exalted [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  77))
                   return false;
               break;

           case 45: //The Insane [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 145))
                   return false;
               break;

           case 46: //Battlemaster [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  72))
                   return false;
               break;

           case 47: //Arena Master [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  82))
                   return false;
               break;

           case 48: //Duelist [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  43))
                   return false;
               break;

           case 49: //Rival [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  44))
                   return false;
               break;

           case 50: //Challenger [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  45))
                   return false;
               break;

           case 51: //Vanquisher [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 163))
                   return false;
               break;

           case 52: //Crusader [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 156))
                   return false;
               break;

           case 53: //Archmage [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  93))
                   return false;
               break;

           case 54: //Champion of the Naaru [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  53))
                   return false;
               break;

           case 55: //Hand of A'dal [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  64))
                   return false;
               break;

           case 56: //Flawless Victor [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 128))
                   return false;
               break;
           default:
               break;             
           }
       }
       return true;
   }
};

void AddSC_npc_title()
{
   new npc_title();
}

 

 

Přidal jsem funkci SetTitleAndDestroyAT ve které je v podstatě to, co v kódu bylo asi padesátkrát úplně na nic.. :huh: Funci předávám player, _creature, počet AT a id titulu.

 

PS: Psal jsem to na slepo, doufam že to pochopíte. :D

  • Upvote 1

Share this post


Link to post
Share on other sites

Nešlo by to udělat kratší? :D Mám na mysli něco takovýho:

 

 

#include "ScriptPCH.h"

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

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           _creature->MonsterWhisper("Combat!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 3, "General",         GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 8, "Event",           GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",  GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Reputation",      GOSSIP_SENDER_MAIN, 4);
           player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",     GOSSIP_SENDER_MAIN, 5);
           player->ADD_GOSSIP_ITEM(10, "Other",           GOSSIP_SENDER_MAIN, 6);
       }

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

   bool SetTitleAndDestroyAT(Player *player, Creature *_creature, int pocetAT, int titleID);
   {
       player->CLOSE_GOSSIP_MENU();
       if (player->HasItemCount( 32569, pocetAT, false ))
       {
           player->DestroyItemCount(32569, pocetAT, true, false);
           player->SetTitle(sCharTitlesStore.LookupEntry(titleID));
           return true;
       }
       else
       {
           _creature->MonsterWhisper("Nedostatok Tokenov!", player->GetGUID());
           return false;
       }
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
   {
       if (sender == GOSSIP_SENDER_MAIN)
       {
           player->PlayerTalkClass->ClearMenus();
           switch(uiAction)
           {
           case 1: //General
               player->ADD_GOSSIP_ITEM(0, "The Explorer [40 AT]",  GOSSIP_SENDER_MAIN,  8);
               player->ADD_GOSSIP_ITEM(0, "Chef [40 AT]",          GOSSIP_SENDER_MAIN,  9);
               player->ADD_GOSSIP_ITEM(0, "Salty [40 AT]",         GOSSIP_SENDER_MAIN, 10);
               player->ADD_GOSSIP_ITEM(0, "Loremaster [40 AT]",    GOSSIP_SENDER_MAIN, 11);
               player->ADD_GOSSIP_ITEM(0, "The Seeker [40 AT]",    GOSSIP_SENDER_MAIN, 12);
               player->ADD_GOSSIP_ITEM(0, "The Patient [40 AT]",   GOSSIP_SENDER_MAIN, 13);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 2: //Event
               player->ADD_GOSSIP_ITEM(0, "Elder [25 AT]",         GOSSIP_SENDER_MAIN, 15);
               player->ADD_GOSSIP_ITEM(0, "The Love Fool [25 AT]", GOSSIP_SENDER_MAIN, 16);
               player->ADD_GOSSIP_ITEM(0, "The Noble [25 AT]",     GOSSIP_SENDER_MAIN, 17);
               player->ADD_GOSSIP_ITEM(0, "Brewmaster [25 AT]",    GOSSIP_SENDER_MAIN, 18);
               player->ADD_GOSSIP_ITEM(0, "The Hallowed [25 AT]",  GOSSIP_SENDER_MAIN, 19);
               player->ADD_GOSSIP_ITEM(0, "Pilgrim [25 AT]",       GOSSIP_SENDER_MAIN, 20);
               player->ADD_GOSSIP_ITEM(0, "Merrymaker [25 AT]",    GOSSIP_SENDER_MAIN, 21);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 3: //Dungeon & Raid
               player->ADD_GOSSIP_ITEM(0, "Jenkins [40 AT]",                       GOSSIP_SENDER_MAIN, 22);
               player->ADD_GOSSIP_ITEM(0, "Scarab Lord [40 AT]",                   GOSSIP_SENDER_MAIN, 23);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Frozen Wastes [40 AT]", GOSSIP_SENDER_MAIN, 24);
               player->ADD_GOSSIP_ITEM(0, "The Undying [40 AT]",                   GOSSIP_SENDER_MAIN, 25);
               player->ADD_GOSSIP_ITEM(0, "The Immortal [40 AT]",                  GOSSIP_SENDER_MAIN, 26);
               player->ADD_GOSSIP_ITEM(0, "of the Nightfall [40 AT]",              GOSSIP_SENDER_MAIN, 27);
               player->ADD_GOSSIP_ITEM(0, "Twilight Vanquisher [40 AT]",           GOSSIP_SENDER_MAIN, 28);
               player->ADD_GOSSIP_ITEM(0, "Starcaller [40 AT]",                    GOSSIP_SENDER_MAIN, 29);
               player->ADD_GOSSIP_ITEM(0, "The Astral Walker [40 AT]",             GOSSIP_SENDER_MAIN, 30);
               player->ADD_GOSSIP_ITEM(0, "Herald of the Titans [40 AT]",          GOSSIP_SENDER_MAIN, 31);
               player->ADD_GOSSIP_ITEM(0, "Champion of Ulduar [40 AT]",            GOSSIP_SENDER_MAIN, 32);
               player->ADD_GOSSIP_ITEM(0, "Conqueror of Ulduar [40 AT]",           GOSSIP_SENDER_MAIN, 33);
               player->ADD_GOSSIP_ITEM(0, "Bane of the Fallen King [40 AT]",       GOSSIP_SENDER_MAIN, 34);
               player->ADD_GOSSIP_ITEM(0, "The Light of Dawn [40 AT]",             GOSSIP_SENDER_MAIN, 35);
               player->ADD_GOSSIP_ITEM(0, "The Kingslayer [40 AT]",                GOSSIP_SENDER_MAIN, 36);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 4: //Reputation
               player->ADD_GOSSIP_ITEM(0, "of the Shattered Sun [30 AT]",  GOSSIP_SENDER_MAIN, 37);
               player->ADD_GOSSIP_ITEM(0, "Ambassador [30 AT]",            GOSSIP_SENDER_MAIN, 38);
               player->ADD_GOSSIP_ITEM(0, "Bloodsail Admiral  	 [30 AT]",  GOSSIP_SENDER_MAIN, 39);
               player->ADD_GOSSIP_ITEM(0, "The Diplomat [30 AT]",          GOSSIP_SENDER_MAIN, 40);
               player->ADD_GOSSIP_ITEM(0, "Guardian of Cenarius [30 AT]",  GOSSIP_SENDER_MAIN, 41);
               player->ADD_GOSSIP_ITEM(0, "The Argent Champion [30 AT]",   GOSSIP_SENDER_MAIN, 42);
               player->ADD_GOSSIP_ITEM(0, "of the Ashen Verdict [30 AT]",  GOSSIP_SENDER_MAIN, 43);
               player->ADD_GOSSIP_ITEM(0, "The Exalted [30 AT]",           GOSSIP_SENDER_MAIN, 44);
               player->ADD_GOSSIP_ITEM(0, "The Insane [30 AT]",            GOSSIP_SENDER_MAIN, 45);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 5: //PvP & Arena
               player->ADD_GOSSIP_ITEM(0, "Battlemaster [60 AT]",  GOSSIP_SENDER_MAIN, 46);
               player->ADD_GOSSIP_ITEM(0, "Arena Master [60 AT]",  GOSSIP_SENDER_MAIN, 47);
               player->ADD_GOSSIP_ITEM(0, "Duelist [60 AT]",       GOSSIP_SENDER_MAIN, 48);
               player->ADD_GOSSIP_ITEM(0, "Rival [60 AT]",         GOSSIP_SENDER_MAIN, 49);
               player->ADD_GOSSIP_ITEM(0, "Challenger [60 AT]",    GOSSIP_SENDER_MAIN, 50);
               player->ADD_GOSSIP_ITEM(0, "Vanquisher [60 AT]",    GOSSIP_SENDER_MAIN, 51);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 6: //Other
               player->ADD_GOSSIP_ITEM(0, "Crusader [40 AT]",              GOSSIP_SENDER_MAIN, 52);
               player->ADD_GOSSIP_ITEM(0, "Archmage [40 AT]",              GOSSIP_SENDER_MAIN, 53);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Naaru [40 AT]", GOSSIP_SENDER_MAIN, 54);
               player->ADD_GOSSIP_ITEM(0, "Hand of A'dal [40 AT]",         GOSSIP_SENDER_MAIN, 55);
               player->ADD_GOSSIP_ITEM(0, "Flawless Victor [40 AT]",       GOSSIP_SENDER_MAIN, 56);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 7: //<- [Main Menu]
               player->ADD_GOSSIP_ITEM( 3, "General",          GOSSIP_SENDER_MAIN, 1);
               player->ADD_GOSSIP_ITEM( 8, "Event",            GOSSIP_SENDER_MAIN, 2);
               player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",   GOSSIP_SENDER_MAIN, 3);
               player->ADD_GOSSIP_ITEM( 6, "Reputation",       GOSSIP_SENDER_MAIN, 4);
               player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",      GOSSIP_SENDER_MAIN, 5);
               player->ADD_GOSSIP_ITEM(10, "Other",            GOSSIP_SENDER_MAIN, 6);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 8: //The Explorer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  78))
                   return false;
               break;

           case 9: //Chef [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  84))
                   return false;
               break;

           case 10: //Salty [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  83))
                   return false;
               break;

           case 11: //Loremaster [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 125))
                   return false;
               break;

           case 12: //The Seeker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  81))
                   return false;
               break;

           case 13: //The Patient [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 172))
                   return false;
               break;

           case 15: //Elder [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25,  74))
                   return false;
               break;

           case 16: //The Love Fool [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 135))
                   return false;
               break;

           case 17: //The Noble [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 155))
                   return false;
               break;

           case 18: //Brewmaster [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 133))
                   return false;
               break;

           case 19: //The Hallowed [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 124))
                   return false;
               break;

           case 20: //Pilgrim [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 168))
                   return false;
               break;

           case 21: //Merrymaker [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 134))
                   return false;
               break;

           case 22: //Jenkins [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 143))
                   return false;
               break;

           case 23: //Scarab Lord [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  46))
                   return false;
               break;

           case 24: //Champion of the Frozen Wastes [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 129))
                   return false;
               break;

           case 25: //The Undying [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 142))
                   return false;
               break;

           case 26: //The Immortal [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 141))
                   return false;
               break;

           case 27: //of the Nightfall [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 140))
                   return false;
               break;

           case 28: //Twilight Vanquisher [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 121))
                   return false;
               break;

           case 29: //Starcaller [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 164))
                   return false;
               break;

           case 30: //The Astral Walker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 165))
                   return false;
               break;

           case 31: //Herald of the Titans [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 166))
                   return false;
               break;

           case 32: //Champion of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 161))
                   return false;
               break;

           case 33: //Conqueror of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 160))
                   return false;
               break;

           case 34: //Bane of the Fallen King [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 174))
                   return false;
               break;

           case 35: //The Light of Dawn [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 173))
                   return false;
               break;

           case 36: //The Kingslayer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 175))
                   return false;
               break;

           case 37: //of the Shattered Sun [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  63))
                   return false;
               break;

           case 38: //Ambassador [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 130))
                   return false;
               break;

           case 39: //Bloodsail Admiral [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 144))
                   return false;
               break;

           case 40: //The Diplomat [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  79))
                   return false;
               break;

           case 41: //Guardian of Cenarius [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 132))
                   return false;
               break;

           case 42: //The Argent Champion [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 131))
                   return false;
               break;

           case 43: //of the Ashen Verdict [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 176))
                   return false;
               break;

           case 44: //The Exalted [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  77))
                   return false;
               break;

           case 45: //The Insane [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 145))
                   return false;
               break;

           case 46: //Battlemaster [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  72))
                   return false;
               break;

           case 47: //Arena Master [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  82))
                   return false;
               break;

           case 48: //Duelist [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  43))
                   return false;
               break;

           case 49: //Rival [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  44))
                   return false;
               break;

           case 50: //Challenger [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  45))
                   return false;
               break;

           case 51: //Vanquisher [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 163))
                   return false;
               break;

           case 52: //Crusader [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 156))
                   return false;
               break;

           case 53: //Archmage [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  93))
                   return false;
               break;

           case 54: //Champion of the Naaru [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  53))
                   return false;
               break;

           case 55: //Hand of A'dal [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  64))
                   return false;
               break;

           case 56: //Flawless Victor [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 128))
                   return false;
               break;
           default:
               break;             
           }
       }
       return true;
   }
};

void AddSC_npc_title()
{
   new npc_title();
}

 

 

Přidal jsem funkci SetTitleAndDestroyAT ve které je v podstatě to, co v kódu bylo asi padesátkrát úplně na nic.. :huh: Funci předávám player, _creature, počet AT a id titulu.

 

PS: Psal jsem to na slepo, doufam že to pochopíte. :D

 

Ako som písal som začiatočník :-) bolo mi o takomto niečom hovorené už, ale tak nevedel som to takto spraviť :-(

Share this post


Link to post
Share on other sites

Nešlo by to udělat kratší? :D Mám na mysli něco takovýho:

 

 

#include "ScriptPCH.h"

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

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       if (player->isInCombat())
       {
           player->CLOSE_GOSSIP_MENU();
           _creature->MonsterWhisper("Combat!", player->GetGUID());
           return true;
       }
       else
       {
           player->ADD_GOSSIP_ITEM( 3, "General",         GOSSIP_SENDER_MAIN, 1);
           player->ADD_GOSSIP_ITEM( 8, "Event",           GOSSIP_SENDER_MAIN, 2);
           player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",  GOSSIP_SENDER_MAIN, 3);
           player->ADD_GOSSIP_ITEM( 6, "Reputation",      GOSSIP_SENDER_MAIN, 4);
           player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",     GOSSIP_SENDER_MAIN, 5);
           player->ADD_GOSSIP_ITEM(10, "Other",           GOSSIP_SENDER_MAIN, 6);
       }

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

   bool SetTitleAndDestroyAT(Player *player, Creature *_creature, int pocetAT, int titleID);
   {
       player->CLOSE_GOSSIP_MENU();
       if (player->HasItemCount( 32569, pocetAT, false ))
       {
           player->DestroyItemCount(32569, pocetAT, true, false);
           player->SetTitle(sCharTitlesStore.LookupEntry(titleID));
           return true;
       }
       else
       {
           _creature->MonsterWhisper("Nedostatok Tokenov!", player->GetGUID());
           return false;
       }
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
   {
       if (sender == GOSSIP_SENDER_MAIN)
       {
           player->PlayerTalkClass->ClearMenus();
           switch(uiAction)
           {
           case 1: //General
               player->ADD_GOSSIP_ITEM(0, "The Explorer [40 AT]",  GOSSIP_SENDER_MAIN,  8);
               player->ADD_GOSSIP_ITEM(0, "Chef [40 AT]",          GOSSIP_SENDER_MAIN,  9);
               player->ADD_GOSSIP_ITEM(0, "Salty [40 AT]",         GOSSIP_SENDER_MAIN, 10);
               player->ADD_GOSSIP_ITEM(0, "Loremaster [40 AT]",    GOSSIP_SENDER_MAIN, 11);
               player->ADD_GOSSIP_ITEM(0, "The Seeker [40 AT]",    GOSSIP_SENDER_MAIN, 12);
               player->ADD_GOSSIP_ITEM(0, "The Patient [40 AT]",   GOSSIP_SENDER_MAIN, 13);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 2: //Event
               player->ADD_GOSSIP_ITEM(0, "Elder [25 AT]",         GOSSIP_SENDER_MAIN, 15);
               player->ADD_GOSSIP_ITEM(0, "The Love Fool [25 AT]", GOSSIP_SENDER_MAIN, 16);
               player->ADD_GOSSIP_ITEM(0, "The Noble [25 AT]",     GOSSIP_SENDER_MAIN, 17);
               player->ADD_GOSSIP_ITEM(0, "Brewmaster [25 AT]",    GOSSIP_SENDER_MAIN, 18);
               player->ADD_GOSSIP_ITEM(0, "The Hallowed [25 AT]",  GOSSIP_SENDER_MAIN, 19);
               player->ADD_GOSSIP_ITEM(0, "Pilgrim [25 AT]",       GOSSIP_SENDER_MAIN, 20);
               player->ADD_GOSSIP_ITEM(0, "Merrymaker [25 AT]",    GOSSIP_SENDER_MAIN, 21);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 3: //Dungeon & Raid
               player->ADD_GOSSIP_ITEM(0, "Jenkins [40 AT]",                       GOSSIP_SENDER_MAIN, 22);
               player->ADD_GOSSIP_ITEM(0, "Scarab Lord [40 AT]",                   GOSSIP_SENDER_MAIN, 23);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Frozen Wastes [40 AT]", GOSSIP_SENDER_MAIN, 24);
               player->ADD_GOSSIP_ITEM(0, "The Undying [40 AT]",                   GOSSIP_SENDER_MAIN, 25);
               player->ADD_GOSSIP_ITEM(0, "The Immortal [40 AT]",                  GOSSIP_SENDER_MAIN, 26);
               player->ADD_GOSSIP_ITEM(0, "of the Nightfall [40 AT]",              GOSSIP_SENDER_MAIN, 27);
               player->ADD_GOSSIP_ITEM(0, "Twilight Vanquisher [40 AT]",           GOSSIP_SENDER_MAIN, 28);
               player->ADD_GOSSIP_ITEM(0, "Starcaller [40 AT]",                    GOSSIP_SENDER_MAIN, 29);
               player->ADD_GOSSIP_ITEM(0, "The Astral Walker [40 AT]",             GOSSIP_SENDER_MAIN, 30);
               player->ADD_GOSSIP_ITEM(0, "Herald of the Titans [40 AT]",          GOSSIP_SENDER_MAIN, 31);
               player->ADD_GOSSIP_ITEM(0, "Champion of Ulduar [40 AT]",            GOSSIP_SENDER_MAIN, 32);
               player->ADD_GOSSIP_ITEM(0, "Conqueror of Ulduar [40 AT]",           GOSSIP_SENDER_MAIN, 33);
               player->ADD_GOSSIP_ITEM(0, "Bane of the Fallen King [40 AT]",       GOSSIP_SENDER_MAIN, 34);
               player->ADD_GOSSIP_ITEM(0, "The Light of Dawn [40 AT]",             GOSSIP_SENDER_MAIN, 35);
               player->ADD_GOSSIP_ITEM(0, "The Kingslayer [40 AT]",                GOSSIP_SENDER_MAIN, 36);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 4: //Reputation
               player->ADD_GOSSIP_ITEM(0, "of the Shattered Sun [30 AT]",  GOSSIP_SENDER_MAIN, 37);
               player->ADD_GOSSIP_ITEM(0, "Ambassador [30 AT]",            GOSSIP_SENDER_MAIN, 38);
               player->ADD_GOSSIP_ITEM(0, "Bloodsail Admiral  	 [30 AT]",  GOSSIP_SENDER_MAIN, 39);
               player->ADD_GOSSIP_ITEM(0, "The Diplomat [30 AT]",          GOSSIP_SENDER_MAIN, 40);
               player->ADD_GOSSIP_ITEM(0, "Guardian of Cenarius [30 AT]",  GOSSIP_SENDER_MAIN, 41);
               player->ADD_GOSSIP_ITEM(0, "The Argent Champion [30 AT]",   GOSSIP_SENDER_MAIN, 42);
               player->ADD_GOSSIP_ITEM(0, "of the Ashen Verdict [30 AT]",  GOSSIP_SENDER_MAIN, 43);
               player->ADD_GOSSIP_ITEM(0, "The Exalted [30 AT]",           GOSSIP_SENDER_MAIN, 44);
               player->ADD_GOSSIP_ITEM(0, "The Insane [30 AT]",            GOSSIP_SENDER_MAIN, 45);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 5: //PvP & Arena
               player->ADD_GOSSIP_ITEM(0, "Battlemaster [60 AT]",  GOSSIP_SENDER_MAIN, 46);
               player->ADD_GOSSIP_ITEM(0, "Arena Master [60 AT]",  GOSSIP_SENDER_MAIN, 47);
               player->ADD_GOSSIP_ITEM(0, "Duelist [60 AT]",       GOSSIP_SENDER_MAIN, 48);
               player->ADD_GOSSIP_ITEM(0, "Rival [60 AT]",         GOSSIP_SENDER_MAIN, 49);
               player->ADD_GOSSIP_ITEM(0, "Challenger [60 AT]",    GOSSIP_SENDER_MAIN, 50);
               player->ADD_GOSSIP_ITEM(0, "Vanquisher [60 AT]",    GOSSIP_SENDER_MAIN, 51);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",        GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 6: //Other
               player->ADD_GOSSIP_ITEM(0, "Crusader [40 AT]",              GOSSIP_SENDER_MAIN, 52);
               player->ADD_GOSSIP_ITEM(0, "Archmage [40 AT]",              GOSSIP_SENDER_MAIN, 53);
               player->ADD_GOSSIP_ITEM(0, "Champion of the Naaru [40 AT]", GOSSIP_SENDER_MAIN, 54);
               player->ADD_GOSSIP_ITEM(0, "Hand of A'dal [40 AT]",         GOSSIP_SENDER_MAIN, 55);
               player->ADD_GOSSIP_ITEM(0, "Flawless Victor [40 AT]",       GOSSIP_SENDER_MAIN, 56);
               player->ADD_GOSSIP_ITEM(7, "<- [Main Menu]",                GOSSIP_SENDER_MAIN,  7);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 7: //<- [Main Menu]
               player->ADD_GOSSIP_ITEM( 3, "General",          GOSSIP_SENDER_MAIN, 1);
               player->ADD_GOSSIP_ITEM( 8, "Event",            GOSSIP_SENDER_MAIN, 2);
               player->ADD_GOSSIP_ITEM( 1, "Dungeon & Raid",   GOSSIP_SENDER_MAIN, 3);
               player->ADD_GOSSIP_ITEM( 6, "Reputation",       GOSSIP_SENDER_MAIN, 4);
               player->ADD_GOSSIP_ITEM( 9, "PvP & Arena",      GOSSIP_SENDER_MAIN, 5);
               player->ADD_GOSSIP_ITEM(10, "Other",            GOSSIP_SENDER_MAIN, 6);
               player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
               break;

           case 8: //The Explorer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  78))
                   return false;
               break;

           case 9: //Chef [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  84))
                   return false;
               break;

           case 10: //Salty [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  83))
                   return false;
               break;

           case 11: //Loremaster [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 125))
                   return false;
               break;

           case 12: //The Seeker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  81))
                   return false;
               break;

           case 13: //The Patient [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 172))
                   return false;
               break;

           case 15: //Elder [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25,  74))
                   return false;
               break;

           case 16: //The Love Fool [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 135))
                   return false;
               break;

           case 17: //The Noble [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 155))
                   return false;
               break;

           case 18: //Brewmaster [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 133))
                   return false;
               break;

           case 19: //The Hallowed [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 124))
                   return false;
               break;

           case 20: //Pilgrim [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 168))
                   return false;
               break;

           case 21: //Merrymaker [25 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 25, 134))
                   return false;
               break;

           case 22: //Jenkins [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 143))
                   return false;
               break;

           case 23: //Scarab Lord [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40,  46))
                   return false;
               break;

           case 24: //Champion of the Frozen Wastes [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 129))
                   return false;
               break;

           case 25: //The Undying [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 142))
                   return false;
               break;

           case 26: //The Immortal [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 141))
                   return false;
               break;

           case 27: //of the Nightfall [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 140))
                   return false;
               break;

           case 28: //Twilight Vanquisher [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 121))
                   return false;
               break;

           case 29: //Starcaller [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 164))
                   return false;
               break;

           case 30: //The Astral Walker [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 165))
                   return false;
               break;

           case 31: //Herald of the Titans [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 166))
                   return false;
               break;

           case 32: //Champion of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 161))
                   return false;
               break;

           case 33: //Conqueror of Ulduar [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 160))
                   return false;
               break;

           case 34: //Bane of the Fallen King [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 174))
                   return false;
               break;

           case 35: //The Light of Dawn [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 173))
                   return false;
               break;

           case 36: //The Kingslayer [40 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 40, 175))
                   return false;
               break;

           case 37: //of the Shattered Sun [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  63))
                   return false;
               break;

           case 38: //Ambassador [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 130))
                   return false;
               break;

           case 39: //Bloodsail Admiral [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 144))
                   return false;
               break;

           case 40: //The Diplomat [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  79))
                   return false;
               break;

           case 41: //Guardian of Cenarius [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 132))
                   return false;
               break;

           case 42: //The Argent Champion [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 131))
                   return false;
               break;

           case 43: //of the Ashen Verdict [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 176))
                   return false;
               break;

           case 44: //The Exalted [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30,  77))
                   return false;
               break;

           case 45: //The Insane [30 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 30, 145))
                   return false;
               break;

           case 46: //Battlemaster [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  72))
                   return false;
               break;

           case 47: //Arena Master [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  82))
                   return false;
               break;

           case 48: //Duelist [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  43))
                   return false;
               break;

           case 49: //Rival [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  44))
                   return false;
               break;

           case 50: //Challenger [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  45))
                   return false;
               break;

           case 51: //Vanquisher [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 163))
                   return false;
               break;

           case 52: //Crusader [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 156))
                   return false;
               break;

           case 53: //Archmage [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  93))
                   return false;
               break;

           case 54: //Champion of the Naaru [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  53))
                   return false;
               break;

           case 55: //Hand of A'dal [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60,  64))
                   return false;
               break;

           case 56: //Flawless Victor [60 AT]
               if(!SetTitleAndDestroyAT(player, _creature, 60, 128))
                   return false;
               break;
           default:
               break;             
           }
       }
       return true;
   }
};

void AddSC_npc_title()
{
   new npc_title();
}

 

 

Přidal jsem funkci SetTitleAndDestroyAT ve které je v podstatě to, co v kódu bylo asi padesátkrát úplně na nic.. :huh: Funci předávám player, _creature, počet AT a id titulu.

 

PS: Psal jsem to na slepo, doufam že to pochopíte. :D

 

Mne to ide :-) GJ Wolf

 

a na co uz niekomu bude Title giver? To uz cem vidiet ten fail server kde budu davat okrem T10 aj vsetky mozne tituly...

 

Nato aby ho použival demente. Je to dobra vec tak nepi....

 

EDIT by Aristo: Pužívej edit a kontroluj ten slovník.

Edited by Aristo
sloučení

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  

×