Ir para conteúdo

(Resolvido)[getPlayerSkillLevel] Retornando valor da database e não do jogador

Featured Replies

Postado

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 por Mounton (veja o histórico de edições)

Resolvido por KotZletY

Ir para solução
  • 3 weeks later...
Postado
  • 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)));

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado
  • 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. <3

Editado 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo