Ir para conteúdo
  • Cadastre-se

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


Ir para solução Resolvido por KotZletY,

Posts Recomendados

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)
Link para o post
Compartilhar em outros sites
  • 3 weeks later...
  • 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

Link para o post
Compartilhar em outros sites
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)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo