Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Query Dar Buff  (Visto 905 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline VANHELSING Posteado: June 03, 2020, 01:36:13 AM

  • +1 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 108
  • Gracias recibida: 616
  • us
Buen día a todos, en esta ocasión necesito de su ayuda.
Pasa que quiero dar un seal (buff) al crear un personaje. Aquí se aprecia que si da el buff y la expiración del item esta bien.

Pero surge un problema con la expiración de los items al relogear, sale como expirados al seleccionar character

Uso files IGCN.
adjunto el codigo, si alguien pudiera ayudarme con esto  please
Code: [Select]
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_CreateCharacter]    Script Date: 06/02/2020 23:42:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO


ALTER Procedure [dbo].[WZ_CreateCharacter]

@AccountID varchar(10),
@Name varchar(10),
@Class tinyint
AS
BEGIN

SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @Result tinyint
SET @Result = 0x00

IF EXISTS ( SELECT Name FROM Character WHERE Name = @Name )
BEGIN
SET @Result = 0x01
GOTO ProcEnd
END

BEGIN TRAN

IF NOT EXISTS ( SELECT Id FROM  AccountCharacter WHERE Id = @AccountID )
BEGIN
INSERT INTO dbo.AccountCharacter(Id, GameID1, GameID2, GameID3, GameID4, GameID5, GameIDC)
VALUES(@AccountID, @Name, NULL, NULL, NULL, NULL, NULL)

SET @Result  = @@Error
END
ELSE
BEGIN
Declare @g1 varchar(10), @g2 varchar(10), @g3 varchar(10), @g4 varchar(10), @g5 varchar(10), @userGuid int, @serial int
SELECT @g1=GameID1, @g2=GameID2, @g3=GameID3, @g4=GameID4, @g5=GameID5 FROM dbo.AccountCharacter Where Id = @AccountID

IF( ( @g1 Is NULL) OR (Len(@g1) = 0))
BEGIN
UPDATE AccountCharacter SET  GameID1 = @Name
WHERE Id = @AccountID

SET @Result  = @@Error
END
ELSE IF( @g2  Is NULL OR Len(@g2) = 0)
BEGIN
UPDATE AccountCharacter SET  GameID2 = @Name
WHERE Id = @AccountID

SET @Result  = @@Error
END
ELSE IF( @g3  Is NULL OR Len(@g3) = 0)
BEGIN
UPDATE AccountCharacter SET  GameID3 = @Name
WHERE Id = @AccountID

SET @Result  = @@Error
END
ELSE IF( @g4 Is NULL OR Len(@g4) = 0)
BEGIN
UPDATE AccountCharacter SET  GameID4 = @Name
WHERE Id = @AccountID

SET @Result  = @@Error
END
ELSE IF( @g5 Is NULL OR Len(@g5) = 0)
BEGIN
UPDATE AccountCharacter SET  GameID5 = @Name
WHERE Id = @AccountID

SET @Result  = @@Error
END
ELSE
BEGIN
SET @Result = 0x03
GOTO TranProcEnd
END
END

IF( @Result <> 0 )
BEGIN
GOTO TranProcEnd
END
ELSE
BEGIN
INSERT INTO dbo.Character(AccountID, Name, cLevel, LevelUpPoint, Class, Strength, Dexterity, Vitality, Energy, Inventory,MagicList,
Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY,  MDate, LDate, Quest, Leadership )

SELECT @AccountID As AccountID, @Name As Name, Level, LevelUpPoint, @Class As Class,
Strength, Dexterity, Vitality, Energy, Inventory,MagicList, Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY,
getdate() As MDate, getdate() As LDate, Quest, Leadership
FROM  DefaultClassType WHERE Class = @Class

/* Adiciona itens criar char */
SELECT @userGuid=Number FROM dbo.AccountCharacter WHERE Id=@AccountID
SELECT @Serial=Max(Serial) FROM dbo.IGC_PeriodItemInfo

INSERT INTO dbo.IGC_PeriodItemInfo ( UserGUID, CharacterName, ItemCode, ItemType, EffectType1, EffectType2, EffectCategory, Duration, BuyDate, ExpireDate, BuyDateString, ExpireDateString, UsedInfo, Serial)
VALUES
( @userGuid, @Name, 6700, 1, 6, 0, 62,259200, DATEDIFF(SECOND, '1970-01-01 00:00:00', GETUTCDATE()), DATEDIFF(SECOND, '1970-01-01 00:00:00', DATEADD(second, 259200, GETUTCDATE())), GETDATE(), DATEADD(second, 259200, GETDATE()), 1 ,@Serial+1)
iF ( @@Error <> 0 ) BEGIN
SET @Result = @@Error
END

SET @Result  = @@Error
END

IF NOT EXISTS ( SELECT AccountID FROM T_InGameShop_Point WHERE AccountID = @AccountID )
            BEGIN
               INSERT INTO dbo.T_InGameShop_Point (AccountID, WCoinC, WCoinP, GoblinPoint)
               VALUES (@AccountID, 0, 0, 0)
            END

TranProcEnd:
IF ( @Result  <> 0 )
ROLLBACK TRAN
ELSE
COMMIT TRAN

ProcEnd:
SET NOCOUNT OFF
SET XACT_ABORT OFF

SELECT
   CASE @Result
      WHEN 0x00 THEN 0x01
      WHEN 0x01 THEN 0x00
      WHEN 0x03 THEN 0x03
      ELSE 0x02
   END AS Result
END

Gracias:


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
0 Replies
1602 Views
Last post October 20, 2017, 05:18:23 PM
by lusiffer99
0 Replies
1385 Views
Last post September 29, 2021, 05:34:58 AM
by Specifier
3 Replies
1604 Views
Last post September 27, 2023, 03:52:39 AM
by hieuvt
10 Replies
899 Views
Last post May 09, 2023, 10:38:15 PM
by oxey.mu
0 Replies
1008 Views
Last post July 30, 2023, 11:40:55 AM
by komandirbk