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!
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);
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
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!
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?
Rossz függvénybe illesztetted be...