vSRO Paylaşım vSRO Max Bonus 3 Query

Admin1

silkroadpvp.com.tr
Yönetici
Katılım
26 Ocak 2022
Mesajlar
511
Tepkime puanı
1
Puanları
0
Konum
KRAL
[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
_AddLogChar
SQL:
IF @EventID = 22 AND @Data2= 100 --100 is your max level
    BEGIN
        EXEC _300Rewards @CharID
#TABLE LOG
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
#TABLE COUNTER
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
-Add This Line in _300Counter Table
True 0
[/HIDE]
 

Konu görüntüleyen kullanıcılar

Benzer konular

Geri
Üst