infelizmente depois de vários testes percebemos que ainda há erros, com números como exemplo 999, 10999
Exemplo: recompensa 1. personagem tem 4.000 pontos e recebe ela!
e atualiza o Last_Reward para 4.000
IF @Last_Reward IS NOT NULL AND (@HPOINT / 4000 * 4000) >= 0 AND (@HPOINT / 4000 * 4000) < 11000 AND (@HPOINT / 4000 * 4000) > @Last_Reward BEGIN BEGIN TRANSACTION; -- Adiciona o Titulo UPDATE cabal_achievement_title SET TitleData = TitleData + (dbo.Int2Bin(@Cabo) + 0x0000) WHERE CharacterIdx = @CharacterIdx -- Envia O Email SET @ItemIdx=7884 SET @ItemOption=1 SET @Duration=0 EXEC Server01.dbo.cabal_sp_mail_send_GM @characterIdx, 'Medalha de Honra [Cabo]', ' Parabéns você acaba de ser Graduado. Aproveite a recompensa da sua Graduação!', @ItemIdx, @ItemOption, @Duration, 0 -- Alz -- Atualiza o HeroRank - Para Nao Recebeber Novamente essa Recompensa UPDATE Cabal_HeroRank_Table SET Last_Reward = ((@HPOINT / 4000)) * 4000 WHERE characteridx= @CharacterIdx; COMMIT; END;
Seguido da Segunda Recompensa 2
IF @Last_Reward IS NOT NULL AND (@HPOINT / 11000 * 11000) >= 11000 AND (@HPOINT / 11000 * 11000) < 24000 AND (@HPOINT / 11000 * 11000) > @Last_Reward BEGIN BEGIN TRANSACTION; -- Adiciona o Titulo UPDATE cabal_achievement_title SET TitleData = TitleData + (dbo.Int2Bin(@TerceiroSargento) + 0x0000) WHERE CharacterIdx = @CharacterIdx -- Envia O Email SET @ItemIdx=7884 SET @ItemOption=1 SET @Duration=0 EXEC Server01.dbo.cabal_sp_mail_send_GM @characterIdx, 'Medalha de Honra [Terceiro-Sargento]', ' Parabéns você acaba de ser Graduado. Aproveite a recompensa da sua Graduação!', @ItemIdx, @ItemOption, @Duration, 0 -- Alz -- Atualiza o HeroRank - Para Nao Recebeber Novamente essa Recompensa UPDATE Cabal_HeroRank_Table SET Last_Reward = ((@HPOINT / 11000)) * 11000 WHERE characteridx= @CharacterIdx; COMMIT; END;
é ai que entra o novo problema em questão, caso o personagem tenha 10999 pontos de HPOINT
ele atualiza o Last_Reward para 11.000 porém ele da a primeira recompensa de novo. a recompensa do 1.000