Spell nem található sehol mégis castolható!

Indította biggie0630, 2013 augusztus 15, 01:48:08 DÉLUTÁN

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

biggie0630

Sziasztok!

Nekem a következő kérdésem lenne, hogy van egy bizonyos spell pl: a 69922 -es ez a Tempering the Blade q-egyik spellje és egyszerűen sehol sem találom a Trinitycore forráskódjában de mégis castolható....
Azért lenne fontos mert javítani szeretném.
Persze nem csak ez az egy spell ami nincs csak most példának okáért írtam.
Valakinek van valami ötlete, hogy hol találom meg pl ezt vagy azokat a spelleket amik nincsenek benne a forrásban de mégis mennek?
Számomra ez érthetetlen O.O

zerus

A dbc-ben keresgélj, mert onnan veszi az összes spell-t.
A forráskódban csak "felüldefiniálja" őket, ha szükséges.

biggie0630

És ott hogyan? Le tudnád írni esetleg, hogy milyen progival?

biggie0630

#3
Még ide kapcsolódik, hogy azt hogyan lehet beállítani, hogy az adott spellt csak akkor castolja, hogy ha a szükséges NPC is ott van.
Annyit már sikerült elérnem a conditions táblával, hogy csak ha az NPC hez közel vagyok akkor lesz a q compelet de sajnos ha távolabb vagyok akkor is el tudja lőni a spellt és elveszik a q-hoz szükséges item...

biggie0630

Senki sem tudja vagy nem szeretne válaszolni?
Érdemleges választ eddig kérdéseimre még nem kaptam egyre sem ill. talám egyre amikor repackot kerestem milyen szép mikor keverjük anyanyelvünket az angol nyelvvel nem igaz?
Mintha Leonardo holnaptól likőrt gyártana vagy Tesla a fizika helyett kenyérkelesztéssel foglalkozott volna de hál isten ezt nem tette!

NevemSenki

Én segítenék neked. Én Script-ekkel még nem nagyon foglalkoztam. 12 órát dolgozom naponta, ha van szabadidőm akkor is a webement próbálom csinálgatni. Ha netán a Kliens-ben kéne megnézni valamit akkor segítek. De látom a Spell megvan, szóval efelől nincs gond.
Nincsen egy hasonló Quest ehhez? Azt összehasonlítva meg tudnád oldani a dolgot....
Ha lesz időm, segítek neked!!

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

kagebunshin

Sajnos mostanában nem áll módomban olyan részletesen utánajárni, átgondolni és tesztelni az ilyen jellegű dolgokat, ezért csak egy kis elméleti segítséget tudok adni.

Egy friss 3.3.5-ös trinity-t szedtem le és annak a forráskódját vizsgáltam, ha más emut használsz és amiatt nem lenne megvalósítható amit javasolok, akkor írd meg mit használsz és belenézek abba is.

Ha jól értem a célt. Van egy spell, amit egy adott npc-hez közel kell használni és ha használod a nálad lévő quest item-et el kell hogy vegye.

Én azzal próbálkoznék, hogy maga a quest item legyen "use"-olható és hozzárendelnék egy item script-et.

Idézif (player->FindNearestCreature(26248, 15))
    return false;

Kis átalakítással ezt egy meglévő item script-böl másoltam. Ha jól sejtem npc entry-t vár, nem guid-t. Második paramétere pedig a távolság.

Ezután pedig elcastoltatod a megfelelő spell-t. ha jól tudom lehet ilyesmit.

Idézif (const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(69922))
                    Spell::SendCastResult(player, spellInfo, 1, SPELL_FAILED_NOT_ON_GROUND);

Talán ezzel, de csak tipp.

Mivel a spell használatával a questitem-et el is veszi ezért azzal külön nem kell foglalkozni.
És mivel itt elvégzed az npc közelség vizsgálatot a conditions táblába úgy gondolom felesleges is külön vizsgálni.

Ez persze lehet, hogy nem ilyen egyszerű. Elképzelhető, hogy magát az item-et nem is lehet "use"-olhatóvá tenni vagy nem lehet spell-t castolni item script-böl. Rengeteg probléma lehet vele, de ha másnak nincs jobb tippje akkor ezt tudom javasolni.
"-Egy dolgot viszont elárulhatnál nekem. Ki találta ki, hogy a fák őreinek erejével szálljatok szembe velem, mert nem te ugye? Te nem tudtad!
-Nem... de azért vagyunk többen, hogy valaki tudja."

biggie0630

#7
Köszönöm ezzel sikerült megoldanom!

class item_quel_delar_tempering : public ItemScript
{
public:
    item_quel_delar_tempering() : ItemScript("item_quel_delar_tempering") { }

    bool OnUse(Player* player, Item* item, SpellCastTargets const & /*targets*/) OVERRIDE
    {
        if (player->FindNearestCreature(37094, 5))
            return false;
        else
        {
            player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, NULL);
            return true;
        }
    }

};



Most már csak annyit szeretnék, hogy ne "Out of Ranget" íron ki hanem egy tetszőleges szöveget.
Erre van valakinek valamilyen tippje?

Powered by EzPortal