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  
Hkarta

[BG/Arena Tournament] Gurubashi Arena Themes (Remake)

Recommended Posts

NecroVisioN tady psal, že to předělá, ale skutek utek. Škoda že se teď věnuju jinejm věcem, mohlo ba z toho něco vzniknout. Ale podlě mě to bude trošku problém na tom mangosu, SD2 scripty mají daleko míň možností než scripty TC. Ale beru v úvahu situaci při revizi mangosu 9799 ve srovnání s revizí TC 78xx, dnes to může být úplně jinde. ;)

 

EDIT: Mimojiné, přidávaný tabulky mají SQL pořát stejný. Problém může nastat až při nahrávání NPC nebo gameobjektů, ale pro slušného SQL/WoW developera by to neměl být větší problém. :D

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

NecroVisioN tady psal, že to předělá, ale skutek utek.

Jelikož si napsal o 8 minut později, že to upravíš pro MaNGOS sám, nechal jsem to zkušenějšímu.. ale skutek utek 2 ^_^

pak už jsem na toto zapomněl...

Edited by NecroVisioN
typo

Share this post


Link to post
Share on other sites

Jo, ale rozdíl je v tom, že já napsal "pokusím se o.." a ty tam píšeš "přepíšu to na..." Ale jasně, to je irelevantní. Já jsem se o to pokusil ale v tý době to prostě nešlo bez vážnějších zásahů do core, na to si moc dobře vzpomínám. Už jenom fakt že bych musel includovat něco, co není součástí solution mi tenkrát nahánělo husí kůži. Jistě, existuje i jiná cesta. Necro, sám dobře víš, že SD2 scripting pro mangos měl vždycky oproti TC scriptům značně omezený možnosti, ale to by bylo na jiný téma. :D

Můžu se o to pokusit znovu, dnes už to může být jinde (ale taky nemusí, žejo), jenže teď makám na něčem jiným. Neříkám že se na to úplně vybodnu, jen to prostě nebude hned. Doufám že už je to všem jasný. :)

Share this post


Link to post
Share on other sites

Jo, ale rozdíl je v tom, že já napsal "pokusím se o.." a ty tam píšeš "přepíšu to na..."

Já jsem poprvé taky napsal, že to můžu zkusit přepsat.. jenže pak jsem si všiml, že zas takové zkušenosti jsem v té době neměl, tak jsem to editl... A když jsem viděl, že kHarta odpovídá na můj post, kde jsem psal, že to zkusím, tak jsem to editl znova a napsal, proč tak odpověděl ;)

Ale to je jedno, jen se mě dotklo, že mě opět napadáš, že "nedělám co mám/co jsem kde napsal, či slíbil" atp...

Edited by NecroVisioN

Share this post


Link to post
Share on other sites

Tebe se tu poslední dobou dotýká nějak podezřele moc lidí. :D (čti mezi řádky a dojde ti, jak to myslim.)

Nemysli si že v tobě všichni vidí něco špatnýho, nemysli si že tě hned každej chce potopit. Nauč se na věci nahlížet z různých úhlů.

:) Takže. Už to upravuju (pro mangos 10134) pár hodin, mám to skoro hotový, kompilace zdárná.. Ale musím to ještě vyladit, občas to shazuje server a to se mi nelíbí. Takže možná v průběhu zítřka by to mohlo bejt hotový.

 

EDIT: Problém se spawnem GO (já jsem to věděl, že to jestě mangos nemá dotažený :D). Pokusím se to vyřešit..

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Furt nic hele? :(

Kašlu na to.

 

Mohl by jste to někdo upravit pro dnešní revize TC2? Děkuji mnohokrát :)

Kouknu na to. Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Jen pro informaci: Dnes jsem to testoval na revizi 10668 a je to stále funkční, bez problému. :innocent:

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Ted' sem to vyzkoušel.. Hkarto smekám před tebou..

Vyzkoušel semm sice Wolfovu úpravu na nejnovější rev ale i tak paráda..

 

BTW: to můžou měnit jenom gmka nebo i hráči?..

 

PS: Je tam taková kravinka..

 

Když najedete u npc na menu a píše to tam změna umožněna bla bla bla tak když na to kliknete hodi to tam podruhé do menu.. docela volovina.. :-D

Share this post


Link to post
Share on other sites

Může to měnit kdokoliv (kdo vidí to NPC).

 

Když jsem to testoval naposledy, a byl tam odpočet a klikáš na něj, obnovuje se. Není problém to přepsat na close.

 

Stačí přepsat řádek:

player->ADD_GOSSIP_ITEM(0, msg, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);

na tohle:

player->ADD_GOSSIP_ITEM(0, msg, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);

(zkrátka dvojku přepíšeš na jedničku)

..a případně o 2 řádky níž smazat řádek

player->ADD_GOSSIP_ITEM(0, "Nazdar", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);

nebo ho tam nechat, to už asi moc nevadí..

 

EDIT:

celý kód:

#include "ScriptPCH.h"

#define OFFSET_THEME 10000
int length = 0;

class npc_gurubashi_theme : public CreatureScript
{
private:
   typedef std::list<Creature *> CRL;
   typedef std::list<GameObject *> GOL;
   CRL creaturelist;
   GOL gameobjectlist;

   int GetThemeChangeReady(Creature *_Creature)
   {
       QueryResult result;
       result = WorldDatabase.PQuery("SELECT `time`, `refresh` FROM `gurubashi_givers` WHERE entry = %u", _Creature->GetEntry());

       if (result)
       {
           Field *fields = result->Fetch();
           return fields[0].GetInt32() + fields[1].GetInt32();
       }
       else return 0;
   }

public:
   npc_gurubashi_theme() : CreatureScript("npc_gurubashi_theme") { }

   bool OnGossipHello(Player *player, Creature *_creature)
   {
       char msg[100];
       int iTimeLast = GetThemeChangeReady(_creature);

       if (iTimeLast <= time(0))
       {
           QueryResult result;
           result = WorldDatabase.PQuery("SELECT `id`, `name` FROM `gurubashi_themes` WHERE giver = %u", _creature->GetEntry());
           if (result)
           {
               do {
                   Field *fields = result->Fetch();
                   player->ADD_GOSSIP_ITEM(4, fields[1].GetString(), GOSSIP_SENDER_MAIN, OFFSET_THEME + fields[0].GetInt32());
               } while (result->NextRow());
           }
       }
       else
       {
           int iTimeRem = iTimeLast - time(0);
           if (iTimeRem >= 60)
               sprintf(msg, "Zmena bude mozna za %u min. a %u sec.", iTimeRem / 60, iTimeRem - ((iTimeRem / 60) * 60));
           else
               sprintf(msg, "Zmena bude mozna za %u sec.", iTimeRem);
           player->ADD_GOSSIP_ITEM(0, msg, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
       }
       player->ADD_GOSSIP_ITEM(0, "Nazdar", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
       player->SEND_GOSSIP_MENU(1,_creature->GetGUID());
       return true;
   }

   bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 action)
   {
       if (action > OFFSET_THEME)
       {
           if (GetThemeChangeReady(_creature) <= time(0))
           {
               int iTimeCur = time(0);
               QueryResult result;

               WorldDatabase.PExecute("UPDATE `gurubashi_givers` SET `time` = %u WHERE `entry` = %u", iTimeCur, _creature->GetEntry());

               // GameObjects
               result = WorldDatabase.PQuery("SELECT `x`, `y`, `z`, `o`, `entry` FROM `gurubashi_spawns_gameobject` WHERE `theme` = %u", action - OFFSET_THEME);
               GOL::iterator l;
               for (l = gameobjectlist.begin(); l != gameobjectlist.end(); ++l)
               {
                   GameObject * go = *l;
                   go->Delete();
               }
               gameobjectlist.clear();
               if (result)
               {
                   do
                   {
                       Field *fields = result->Fetch();                        
                       GameObject * gob = _creature->SummonGameObject(fields[4].GetInt32(), fields[0].GetFloat(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), 0, 0, 0, 0, 2592000); 
                       gameobjectlist.push_back(gob);
                   } while (result->NextRow());
               }

               // Creatures
               result = WorldDatabase.PQuery("SELECT `x`, `y`, `z`, `o`, `entry`, `spawndist` FROM `gurubashi_spawns_creature` WHERE `theme` = %u", action - OFFSET_THEME);
               CRL::iterator i;
               for (i = creaturelist.begin(); i != creaturelist.end(); ++i)
               {
                   Creature * cr = *i;
                   cr->ForcedDespawn(0);           
               }
               creaturelist.clear();
               if (result)
               {
                   do
                   {
                       Field * fields = result->Fetch();   
                       Creature * tempCr = _creature->SummonCreature(fields[4].GetInt32(), fields[0].GetFloat(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), TEMPSUMMON_MANUAL_DESPAWN, 0);
                       tempCr->GetMotionMaster()->MoveRandom(fields[5].GetFloat());
                       creaturelist.push_back(tempCr);
                   } while (result->NextRow());
               }
               player->PlayerTalkClass->CloseGossip();
           }
           else
           {
               OnGossipHello(player, _creature);
               _creature->MonsterSay("Tema bylo uspesne zvoleno. Prosim cekejte...", LANG_UNIVERSAL, player->GetGUID());
           }
       }
       else
       {
           switch (action)
           {
           case GOSSIP_ACTION_INFO_DEF + 1:
               player->PlayerTalkClass->CloseGossip();
               break;
           case GOSSIP_ACTION_INFO_DEF + 2:
               OnGossipHello(player, _creature);
               break;
           }
       }
       return true;
   }
};

void AddSC_npc_gurubashi_theme()
{
   new npc_gurubashi_theme();
}

 

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Mohl by to někdo přepsat na nejnovější rev.?

 

+ rep samozdřejmě

Edited by Ignitione

Share this post


Link to post
Share on other sites

Já sem to ještě nekompiloval. Já jen, že je to tu hodně dlouho a tak sem chtěl mít jistotu, že to pujde na nových rev.

Klidně to vyzkouším a napíšu.

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  

×