Postado Outubro 23, 2018 6 anos Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website). Ex. TFS 1.3; Base: TFS 0.4 Qual erro está surgindo/O que você procura Tentei modificar o código que citei mais abaixo, pois ele retorna o valor que está contido na database e não no jogador em si. (Digo jogador pois item que dão adicionais não são adicionados na database e sim somente um "efeito") Exemplo: Quando uso getPlayerSkillLevel(cid, SKILL_TESTE) E o jogador tiver 50 de SKILL TESTE ele retorna 50 mas se eu tiver um item com adicional +10, o jogador teria 60 de SKILL TESTE mas continua retornando sem adicional. Percebi que talvez o "erro" esteja na função que citei acima, tentei mudar: lua_pushnumber(L, player->skills[skillId][SKILL_LEVEL]); para: (Usei este abaixo, o getSkill pois vi que funcionou no getAttackSpeed porém percebi que da conflito em algo no código e não achei uma solução.) lua_pushnumber(L, player->getSkill(skillId, SKILL_LEVEL)); porém não da muito certo, acaba dando erro. Alguém pode ajudar? Você tem o código disponível? Se tiver publique-o aqui: int32_t LuaInterface::luaGetPlayerSkillLevel(lua_State* L) { //getPlayerSkillLevel(cid, skillid) uint32_t skillId = popNumber(L); ScriptEnviroment* env = getEnv(); if(const Player* player = env->getPlayerByUID(popNumber(L))) { if(skillId <= SKILL_LAST) lua_pushnumber(L, player->skills[skillId][SKILL_LEVEL]); else lua_pushboolean(L, false); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Editado Outubro 23, 2018 6 anos por Mounton (veja o histórico de edições)
Postado Novembro 14, 2018 6 anos Solução @Mounton a função sempre esteve correta, só carregada da database na hora do carregamento do player na hora do login e lançada na db na hora do save do player, depois disso todo código que necessite da skill é carregada diretamente do vetor de skills do player e não da database. Altere: lua_pushnumber(L, player->skills[skillId][SKILL_LEVEL]); para: lua_pushnumber(L, (player->skills[skillId][SKILL_LEVEL] + player->getVarSkill((skills_t)skillId)));
Postado Novembro 16, 2018 6 anos Autor Em 14/11/2018 em 16:06, KotZletY disse: @Mounton a função sempre esteve correta, só carregada da database na hora do carregamento do player na hora do login e lançada na db na hora do save do player, depois disso todo código que necessite da skill é carregada diretamente do vetor de skills do player e não da database. Altere: lua_pushnumber(L, player->skills[skillId][SKILL_LEVEL]); para: lua_pushnumber(L, (player->skills[skillId][SKILL_LEVEL] + player->getVarSkill((skills_t)skillId))); Muito obrigado @KotZletY, eu precisava desse valor para calcular na formula e retornar com e sem o bônus. Editado Novembro 16, 2018 6 anos por Mounton (veja o histórico de edições)
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.