106 talent 2 full talentfa

Indította K3nNy, 2013 január 01, 09:21:24 DÉLUTÁN

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

K3nNy

Sziasztok.

Az lenne a kérdésem, hogy ha 106 talentpont van a playereknek, akkor hogyan oldható az meg, hogy csak egy talentfát tudjanak utolsó talentig kitalentolni?
Tehát ha pl kitalentol egy talentfát utolsó talentig, akkor a másik talentfán csak 50 talentpontot engedjen elnyomni.
Ebben tudna nekem valaki segíteni?

Köszönöm a segítésget!

EroniX

Hali!
Az arena spectatoromban volt egy hasonló függvény (tabok pontjainak megszámlálása) ezt egy kicsit átalakítottam:

uint32 activeSpec = this->GetActiveSpec();
uint32 talentTabResult[3] = {0, 0, 0};

uint32 const* talentTabIds = GetTalentTabPages(this->getClass());

    for (uint8 i = 0; i < MAX_TALENT_TABS; ++i)
    {
        uint32 talentTabId = talentTabIds[i];

        for (uint32 talentId = 0; talentId < sTalentStore.GetNumRows(); ++talentId)
        {
             TalentEntry const* talentInfo = sTalentStore.LookupEntry(talentId);
             if (!talentInfo)
                 continue;

             if (talentInfo->TalentTab != talentTabId)
                 continue;

int32 talentRank = -1;
             for (int8 rank = MAX_TALENT_RANK-1; rank >= 0; --rank)
             {
                  if (talentInfo->RankID[rank] && this->HasTalent(talentInfo->RankID[rank], activeSpec))
                  {
                      talentRank = ++rank;
                      break;
                  }
             }

             if (talentRank < 0)
                 continue;

talentTabResult[i] += talentRank;
        }
    }

uint32 maxIndex = -1;
for(uint8 i = 0; i < MAX_TALENT_TABS; i++)
if(talentTabResult[i] > 50)
maxIndex = i;

if(maxIndex != talentTabInfo->tabpage && maxIndex != -1 && talentTabResult[talentTabInfo->tabpage] >= 50)
return;


Ezt a kódot másold be a Player.cpp-ben található LearnTalent függvény ezen sora után:

TalentTabEntry const* talentTabInfo = sTalentTabStore.LookupEntry(talentInfo->TalentTab);
Azuregos Delta Force

K3nNy

ahogy olvasgatom, ez csak 50 tp-t enged talentolni minden egy talentfán nem?
Nekem olyan kellene, hogy egyre annyit nyom amennyit akar, a többire viszont már csak 50 et

EroniX

#3
Ez pontosan azt csinálja:
maxIndex != talentTabInfo->tabpage && maxIndex != -1 // a legtöbb tp-vel rendelkező tab NEM a jelenlegi ÉS már van egy max

De miért nem próbálod ki... ennyire lusta azé ne legyél!
Azuregos Delta Force

K3nNy

2>..\..\..\..\forras\src\server\game\Entities\Player\Player.cpp(4466) : error C2561: 'Player::resetTalents' : function must return a value
2>        c:\szerver\forras\src\server\game\entities\player\Player.h(1670) : see declaration of 'Player::resetTalents'

Erre hivatkozik, de ennek köze sincs ahoz amit beillesztettem, ráadásil a 4466. sorba, egy visszatérés van csak(return;)
Valami ötleted esetleg van, hogy mi lehet a problémája?

EroniX

Rossz függvénybe illesztetted be...
Azuregos Delta Force

Powered by EzPortal