Postado Maio 5, 2020 5 anos iradooooo, irei usar Estava eu compilando quando me deparo com esse erro, como foi muitas modificações na source, pensei que tinha errado algo, mas refiz tudo do zero com mais atenção e deu novamente o mesmo erro, estou usando TFS 0.4 luascript.cpp: In static member function ‘static int32_t LuaInterface::luaGetPlayerManaAbsorb(lua_State*)’: luascript.cpp:9488:29: error: ‘class Player’ has no member named ‘getManaAsborb’ lua_pushnumber(L, player->getManaAsborb()); ^ Makefile:40: recipe for target 'obj/luascript.o' failed make: *** [obj/luascript.o] Error 1 Editado Maio 5, 2020 5 anos por Ackerzin nao ter que duplicar post (veja o histórico de edições)
Postado Maio 5, 2020 5 anos @Ackerzin melhor forma de você aplicar em qualquer source é pegar uma função existe na sua source e usar o DiffCheker para comparar os códigos e deixar o do tópico com as mesmas funções e chamadas da sua source assim é 100% de certeza que não vai dar erro porque muda alguns pequenos detalhes de source para source ai é nisso que gera o erro Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
Postado Maio 5, 2020 5 anos Autor @Gabrieldsadaxas @leozincorsair O tutorial foi feito a partir da OTX 2.xx séries na qual já existe, por padrão, atributos como dualwield e attackspeed Vocês devem, no entanto, adaptar para a source de vocês. Não tem que colocar especificamente depois de ATTR_DUALWIELD = 43; Vocês devem colocar ele depois do PENÚLTIMO ATTR e antes do ÚLTIMO A mesma coisa no item.cpp em relação ao attackspeed if(it.attackSpeed || (item && item->getAttackSpeed())) Se não tem na source vocês podem olhar em uma source que tenha (OTX 2.XX séries de preferência) e ver em qual posição deve ser colocada else if(it.weaponType != WEAPON_AMMO && it.weaponType != WEAPON_WAND) { if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { begin = false; s << " (Atk:"; if(it.hasAbilities() && it.abilities->elementType != COMBAT_NONE) { s << std::max((int32_t)0, int32_t((item ? item->getAttack() : it.attack) - it.abilities->elementDamage)); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; s << " physical + " << it.abilities->elementDamage << " " << getCombatName(it.abilities->elementType); } else { s << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } } if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } } if(it.attackSpeed || (item && item->getAttackSpeed())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "AS: " << (item ? item->getAttackSpeed() : it.attackSpeed); } Claramente você perecebe que o attackspeed está depois de else if(it.weaponType != WEAPON_AMMO && it.weaponType != WEAPON_WAND) { if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { begin = false; s << " (Atk:"; if(it.hasAbilities() && it.abilities->elementType != COMBAT_NONE) { s << std::max((int32_t)0, int32_t((item ? item->getAttack() : it.attack) - it.abilities->elementDamage)); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; s << " physical + " << it.abilities->elementDamage << " " << getCombatName(it.abilities->elementType); } else { s << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } } if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } } Então se não tiver esse atributo na sua source é só adicionar depois do código citado acima
Postado Maio 5, 2020 5 anos 1 hora atrás, LeoTK disse: @Ackerzin melhor forma de você aplicar em qualquer source é pegar uma função existe na sua source e usar o DiffCheker para comparar os códigos e deixar o do tópico com as mesmas funções e chamadas da sua source assim é 100% de certeza que não vai dar erro porque muda alguns pequenos detalhes de source para source ai é nisso que gera o erro Não entendi como posso usar isso ai, poderia me mostrar como fazer?
Postado Maio 5, 2020 5 anos Autor 6 minutos atrás, Ackerzin disse: Não entendi como posso usar isso ai, poderia me mostrar como fazer? Apenas troque player->getManaAsborb() por player->getManaAbsorb()
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.