O que eu propus no código #2 foi o esquema de memorizar as pontuações já recompensadas. Você pode informar como é o esquema de recompensa?
acho que com o código todo que eu formulei fica mais fácil para você tentar me ajudar '-' mas basicamente quero que o personagem ganhe uma recompensa acada X quantidade de pontos que ele acumula
1000, 2000, 3000, 4000acontece que o seguinte, digamos acumulei 4000 mil pontos, ganhei a recompensa, até eu acumular 8mil eu nao ganho mais, porem quando eu acumulo 8mil pontos eu recebo a recompensa dos 4 mil com a dos 8 mil junto
USE [Server01] GO /****** Object: StoredProcedure [dbo].[SP_Cabal_WarHero_Table] Script Date: 14/12/2019 16:14:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[SP_Cabal_WarHero_Table] ( @CharacterIdx INT ) AS BEGIN /****** Declaraçoes Do Character_Table******/ DECLARE @CH_EPOINT INT, @CH_NAME varchar(16) SELECT @CH_EPOINT = Epoint, @CH_NAME = Name FROM cabal_character_table WHERE CharacterIdx = @CharacterIdx IF @@ROWCOUNT = 0 BEGIN SELECT -1 COMMIT TRAN RETURN END /****** Declaraçoes Do Cabal_HeroRank_table******/ DECLARE @HPOINT INT, @Last_Reward INT SELECT @HPOINT = HPoint, @Last_Reward = Last_Reward FROM Cabal_HeroRank_Table WHERE CharacterIdx = @CharacterIdx IF @@ROWCOUNT = 0 BEGIN SELECT -1 COMMIT TRAN RETURN END /****** Declaração Para Puxar as infos(IDS) Dos Titulos ******/ DECLARE @Cabo INT = 11034 DECLARE @TerceiroSargento INT = 11035 /****** Declaração Para Enviar Email ******/ DECLARE @ItemIdx INT DECLARE @ItemOption INT DECLARE @Duration INT
/****** Inicio da adição dos Titulos ******/
IF @last_reward is not null
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;
----------------------------------------------RECOMPENSA--------------------------------------------------------------
IF @last_reward is not null
and (@HPOINT / 8000 * 8000) > @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 / 8000 * 8000)
WHERE characteridx= @CharacterIdx;
COMMIT;
END;
END
Kary,
Mas o quanto o jogador deverá receber ao acumular 4.000 ou 8.000 pontos?
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]