vSRO Silkrod Online [MaxiGuard] Lucky Global Event

  • Konuyu Başlatan Konuyu Başlatan Founder
  • Başlangıç tarihi Başlangıç tarihi

Founder

BozokBeyi
Admin
Katılım
27 Tem 2025
Konular
626
Mesajlar
823
Tepkime puanı
209
Puanları
43
Konum
Hotan
1767596481796.jpeg

🛡️ MaxiGuard Lucky Global Event (SilkroadPortal Özel Paylaşım)

Merhabalar değerli SilkroadPortal üyeleri,

Bu konu içerisinde sizlerle, MaxiGuard altyapısı kullanılarak hazırlanmış olan
Lucky Global Event sistemini paylaşacağım.

Bu etkinlik sayesinde, event süresi boyunca global atan oyuncular arasından
rastgele bir kazanan seçilir ve otomatik olarak ödüllendirilir.

Başka bir rehberde görüşmek üzere, herkese iyi forumlar. 🚀




NOT:
Paylaşılan tablolar ve prosedürler benim SYSTEM veritabanımda oluşturulmuştur.
Siz farklı bir DB yapısı kullanıyorsanız (ör. SHARD / ACCOUNT), ilgili kısımları
kendinize göre düzenlemeyi unutmayın.




1️⃣ Event Aktiflik Kontrol Tablosu Oluşturma

Bu tablo, Lucky Global eventinin aktif olup olmadığını kontrol etmek için kullanılır.

SQL:
USE SRO_VT_SYSTEM;
GO

CREATE TABLE dbo._EventStatus (
    EventName VARCHAR(50) NOT NULL,
    Registration TINYINT NOT NULL,
    Service TINYINT NOT NULL
);




2️⃣ Lucky Global Log Tablosu Oluşturma

Event süresi boyunca atılan global mesajlar bu tabloda tutulur.

SQL:
USE SRO_VT_SYSTEM;
GO

CREATE TABLE dbo._LuckyGlobalLog (
    Idx INT IDENTITY(1,1) PRIMARY KEY,
    CharName16 VARCHAR(16) NOT NULL,
    Message VARCHAR(255) NOT NULL,
    Date DATETIME DEFAULT GETDATE() NOT NULL
);




3️⃣ Global Log Trigger Oluşturma

Bu trigger, event aktif olduğu sürece atılan global mesajları otomatik olarak loglar.

SQL:
USE [MaxiGuard_User];
GO

CREATE TRIGGER dbo._GlobalLogs
ON dbo._GlobalLog
AFTER INSERT
AS
BEGIN
    IF EXISTS (
        SELECT 1 
        FROM SRO_VT_SYSTEM.._EventStatus 
        WHERE EventName = 'LuckyGlobal' AND Service = 1
    )
    BEGIN
        INSERT INTO SRO_VT_SYSTEM.._LuckyGlobalLog (CharName16, Message, Date)
        SELECT CharName16, Message, GETDATE()
        FROM inserted;
    END
END;




4️⃣ Lucky Global Event Başlatma Prosedürü

Bu prosedür eventi başlatır, logları sıfırlar ve başlangıç duyurularını atar.

SQL:
USE SRO_VT_SYSTEM;
GO

CREATE PROCEDURE dbo._Event_LuckyGlobal
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE _EventStatus
    SET Service = 1
    WHERE EventName = 'LuckyGlobal';

    TRUNCATE TABLE _LuckyGlobalLog;

    INSERT INTO MaxiGuard_User.._BridgeCommands
    (CommandID, Executor, Data1, Data2, Date)
    VALUES (500, 'ff0000', 17,
    '[Lucky Global] Etkinliği başladı! 1 dakika içinde global atın!', GETDATE());

    WAITFOR DELAY '00:00:03';

    INSERT INTO MaxiGuard_User.._BridgeCommands
    (CommandID, Executor, Data1, Data2, Date)
    VALUES (500, 'ff0000', 17,
    'Rastgele bir oyuncu [75] Silk kazanacak! Bol şans!', GETDATE());

    INSERT INTO MaxiGuard_User.._BridgeCommands_Planned
    (CommandID, Executor, Data1, DateToExecute)
    VALUES (100, 'EndLuckyGlobal',
    'EXEC SRO_VT_SYSTEM.._Event_LuckyGlobal_END',
    DATEADD(MINUTE, 1, GETDATE()));
END;




5️⃣ Event Sonlandırma – Kazanan Seçme & Ödül Verme

Event sonunda rastgele bir kazanan seçilir ve ödülü otomatik verilir.

SQL:
USE SRO_VT_SYSTEM;
GO

ALTER PROCEDURE dbo._Event_LuckyGlobal_END
AS
BEGIN
    SET NOCOUNT ON;

    IF NOT EXISTS (SELECT 1 FROM _LuckyGlobalLog)
    BEGIN
        INSERT INTO MaxiGuard_User.._BridgeCommands
        (CommandID, Executor, Data1, Data2, Date)
        VALUES (500, 'ff0000', 17,
        '[Lucky Global] Event sona erdi, global atan olmadı.', GETDATE());

        UPDATE _EventStatus SET Service = 0 WHERE EventName = 'LuckyGlobal';
        RETURN;
    END

    DECLARE @CharName VARCHAR(16), @CharID INT;

    SELECT TOP 1
        @CharName = CharName16,
        @CharID = (SELECT CharID FROM SRO_VT_SHARD.._Char
                   WHERE CharName16 = egl.CharName16)
    FROM _LuckyGlobalLog egl
    ORDER BY NEWID();

    EXEC MaxiGuard_User.dbo.__AddSilkToCharacter @CharID, 0, 75;

    INSERT INTO MaxiGuard_User.._BridgeCommands
    (CommandID, Executor, Data1, Data2, Date)
    VALUES (500, 'ff0000', 17,
    '[Lucky Global] Kazanan: ' + @CharName + ' | Ödül: 75 Silk', GETDATE());

    UPDATE _EventStatus SET Service = 0 WHERE EventName = 'LuckyGlobal';
    TRUNCATE TABLE _LuckyGlobalLog;
END;




6️⃣ Eventi Otomatik Başlatmak (Scheduler)

Belirlediğiniz saatlerde Lucky Global eventinin otomatik başlamasını sağlar.

SQL:
INSERT INTO MaxiGuard_User.dbo._Scheduler
(Name, Day, Time, Query, IsEnabled, Comment)
VALUES
('Lucky Global Event', '0', '09:54:10',
 'EXEC SRO_VT_SYSTEM.._Event_LuckyGlobal',
 1, 'Lucky Global otomatik başlatma');




✔️ Rehber burada sona ermiştir.
Sorularınız veya geliştirme önerileriniz varsa konu altından paylaşabilirsiniz.​
 
Geri
Üst Alt
TR
EN
VI
AR
RU