[HIDE]
_Proc
_AddLogChar
#TABLE LOG
#TABLE COUNTER
-Add This Line in _300Counter Table
True 0
[/HIDE]
_Proc
SQL:
GO
/****** Object: StoredProcedure [dbo].[_300Rewards] Script Date: 6/11/2021 11:46:30 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Taut>
-- =============================================
ALTER PROCEDURE [dbo].[_300Rewards]
@CharID INT
AS
SET NOCOUNT ON;
BEGIN TRY
DECLARE @Counter INT,
@Reward INT,
@CharName16 varchar(12)
IF (SELECT TOP 1 isActive FROM _300Counter)=1
BEGIN
SELECT TOP 1 @Counter = [Count] FROM _300Counter WHERE isActive=1 AND [Count] < 300
SELECT @Reward = CASE
WHEN @Counter =0 THEN 500
WHEN @Counter BETWEEN 1 AND 7 THEN 500
WHEN @Counter BETWEEN 8 AND 15 THEN 400
WHEN @Counter BETWEEN 16 AND 49 THEN 300
WHEN @Counter BETWEEN 50 AND 149 THEN 200
WHEN @Counter BETWEEN 150 and 299 THEN 100
ELSE 0
END
SELECT TOP 1 @CharName16 = CharName16
FROM SRO_VT_SHARD.._Char WITH(NOLOCK)
WHERE CharID = @CharID
/* All conditions passed without problem. The player can now be rewarded.*/
IF NOT EXISTS (SELECT TOP 1 CharName16 from _300Log where CharName16 like @CharName16)
BEGIN
DECLARE @Notice varchar(max)
IF @Counter >=2 BEGIN
SET @Notice ='[' + @CharName16 +'] has reached level 100, congratulations! Current Top 300 Event Counter: [' + CAST(@Counter+1 AS varchar) +'/300]'
END
ELSE IF @Counter BETWEEN 0 and 2
BEGIN
SET @Notice = '[' +@Charname16 +'] is the '+CASE WHEN CAST(@Counter AS VARCHAR(20))=0 THEN 'first' WHEN CAST(@Counter AS varchar(20))=1 THEN 'second' else 'third' end+' player to reach level 100. Congratulations!'
END
--Your Proc reward
--EXEC _AddSilk @Charname16,@Reward,'Top300'
UPDATE _300Counter SET [Count] +=1
INSERT _300Log SELECT @CharName16,GETDATE(),@Reward
/*Disable the event automatically when 300 players reach max level.*/
IF @Counter = 299
BEGIN
UPDATE _300Counter SET isActive=0
END
END
END
END TRY
BEGIN CATCH
END CATCH
SQL:
IF @EventID = 22 AND @Data2= 100 --100 is your max level
BEGIN
EXEC _300Rewards @CharID
SQL:
USE [YOUR_DATABASE]
GO
/****** Object: Table [dbo].[_300Log] Script Date: 6/11/2021 11:51:49 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[_300Log](
[CharName16] [varchar](12) NOT NULL,
[Date] [datetime] NOT NULL,
[RewardGiven] [int] NOT NULL
) ON [PRIMARY]
GO
SQL:
USE [YOUR_DATABASE]
GO
/****** Object: Table [dbo].[_300Counter] Script Date: 6/11/2021 11:53:31 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[_300Counter](
[isActive] [bit] NOT NULL,
[Count] [int] NOT NULL
) ON [PRIMARY]
GO
True 0
[/HIDE]