İçeriğe geç
Türkiye'nin SRO tanıtım & topluluk platformu

vSro Paylaşım vSRO Tek Query ile Otomatik Battle Arena Saati Oluşturma

Cevaplar0
Görüntüleme7
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
86
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2920 ₺
[QUERY] vSRO Tek Query ile Otomatik Battle Arena Saati Oluşturma
_Schedule Tablosu Üzerinden Hızlı ve Hatasız Battle Arena (Random) Saat Ayarlayıcı



Merhaba değerli forum sakinleri,

vSRO sunucularında **Battle Arena** saatlerini ayarlamak, `_Schedule` tablosunun karmaşık sütun yapısı ve aralık hesaplamaları nedeniyle çoğu zaman yorucu olabilir. Birbiriyle senkronize çalışması gereken 3 farklı aşama (Eşleşme/Bildirim, Kayıt Açılışı ve Arena Başlangıcı) tek bir tabloda tutulur.

Aşağıda paylaşılan pratik SQL sorgusu sayesinde sadece hedeflediğiniz saat ve dakikayı değişkenlere girerek, gerekli tüm `_Schedule` satırlarını tek tıkla otomatik olarak ekleyebilirsiniz.

Önemli Uyarı' Alıntı:
DİKKAT:
  • Sorguyu çalıştırmadan önce SRO_VT_SHARD yedeğinizi almanız önerilir.
  • Yeni saatlerin sunucuya yansıması için işlem tamamlandıktan sonra ShardManager ve GameServer modüllerinin yeniden başlatılması (Restart) gerekmektedir.



Zamanlama Mantığı Nasıl Çalışır?

Battle Arena'nın sağlıklı başlayabilmesi için sistemde 3 farklı `ScheduleDefineIdx` kaydının sırayla tetiklenmesi gerekir:

  • Idx 14 (Bildirim & Ön Hazırlık): Arenanın başlayacağını duyuran ilk aşamadır. Arenanın fiili başlangıcından 15 dakika önceye ayarlanır.
  • Idx 16 (Kayıtların Açılması): NPC üzerinden oyuncuların kayıt olmaya başladığı aşamadır. Arenanın fiili başlangıcından 10 dakika önceye ayarlanır.
  • Idx 17 (Arenaya Çekilme & Başlangıç): Kayıtların kapandığı ve oyuncuların içeri aktarıldığı aşamadır. Arenanın başlamasından 5 dakika önceye ayarlanır.



Nasıl Kullanılır?

  1. SQL Server Management Studio (SSMS) programını açın.
  2. Üst kısımdan New Query penceresi oluşturun.
  3. Aşağıdaki SQL kodunu yapıştırın.
  4. En üstteki değişken alanlarına hedeflediğiniz arena saatinin öncesine denk gelen saat/dakika değerlerini yazın.
  5. F5 tuşuna basarak sorguyu çalıştırın.
  6. İşlem bitiminde ShardManager modülünü yeniden başlatın.



SQL Query Kodu

SQL:
USE SRO_VT_SHARD
GO

-- ==============================================================================================
-- BATTLE ARENA (RANDOM) SAAT AYARLAMA
-- Örnek Senaryo: Saat 19:30'da başlayacak bir Battle Arena için:
-- MatchSaat/Dakika : 19:15 (Başlangıçtan 15 dk önce)
-- KayitSaat/Dakika : 19:20 (Başlangıçtan 10 dk önce)
-- StartSaat/Dakika : 19:25 (Başlangıçtan 5 dk önce)
-- ==============================================================================================

DECLARE @MatchSaat   INT = 19
DECLARE @MatchDakika INT = 15 -- Arenanın fiili başlangıcından 15 dakika önceki saat ve dakika

DECLARE @KayitSaat   INT = 19
DECLARE @KayitDakika INT = 20 -- Arenanın fiili başlangıcından 10 dakika önceki saat ve dakika

DECLARE @StartSaat   INT = 19
DECLARE @StartDakika INT = 25 -- Arenanın fiili başlangıcından 5 dakika önceki saat ve dakika

-- ==============================================================================================
-- 1. ADIM: Eşleşme ve Ön Bildirim Bildirisi (Idx 14 - Duration: 1800 sn)
-- ==============================================================================================
INSERT INTO SRO_VT_SHARD.dbo._Schedule (
    ScheduleDefineIdx, DateStart, DateEnd, MainInterval_Type, MainInterval_TypeDate,
    SubInterval_DayOfWeek, SubInterval_Days, SubInterval_Weeks, SubInterval_Months,
    SubInterval_StartTimeHour, SubInterval_StartTimeMinute, SubInterval_StartTimeSecond,
    SubInterval_DurationSecond, SubInterval_RepititionTerm, SubInterval_MaintainTime, Param, Description
) VALUES (
    14, '2023-08-17 00:00:00.000', '2030-08-17 00:00:00.000', 1, 1,
    0, 0, 0, 0,
    @MatchSaat, @MatchDakika, 0,
    1800, 0, 0, '', ''
)

-- ==============================================================================================
-- 2. ADIM: Kayıtların Açılışı (Idx 16 - Duration: 600 sn)
-- ==============================================================================================
INSERT INTO SRO_VT_SHARD.dbo._Schedule (
    ScheduleDefineIdx, DateStart, DateEnd, MainInterval_Type, MainInterval_TypeDate,
    SubInterval_DayOfWeek, SubInterval_Days, SubInterval_Weeks, SubInterval_Months,
    SubInterval_StartTimeHour, SubInterval_StartTimeMinute, SubInterval_StartTimeSecond,
    SubInterval_DurationSecond, SubInterval_RepititionTerm, SubInterval_MaintainTime, Param, Description
) VALUES (
    16, '2023-08-17 00:00:00.000', '2030-08-17 00:00:00.000', 1, 1,
    0, 0, 0, 0,
    @KayitSaat, @KayitDakika, 0,
    600, 0, 0, '', ''
)

-- ==============================================================================================
-- 3. ADIM: Arena Başlangıcı ve Alana Çekilme (Idx 17 - Duration: 900 sn)
-- ==============================================================================================
INSERT INTO SRO_VT_SHARD.dbo._Schedule (
    ScheduleDefineIdx, DateStart, DateEnd, MainInterval_Type, MainInterval_TypeDate,
    SubInterval_DayOfWeek, SubInterval_Days, SubInterval_Weeks, SubInterval_Months,
    SubInterval_StartTimeHour, SubInterval_StartTimeMinute, SubInterval_StartTimeSecond,
    SubInterval_DurationSecond, SubInterval_RepititionTerm, SubInterval_MaintainTime, Param, Description
) VALUES (
    17, '2023-08-17 00:00:00.000', '2030-08-17 00:00:00.000', 1, 1,
    0, 0, 0, 0,
    @StartSaat, @StartDakika, 0,
    900, 0, 0, '', ''
)



Geliştirici İpuçları:
  • Eğer gün içerisine birden fazla saat eklemek istiyorsanız, en üstteki saat değişkenlerini değiştirip sorguyu tekrar çalıştırmanız yeterlidir.
  • Tabloda daha önceden kalan çakışan saat kayıtları varsa, `SELECT * FROM _Schedule WHERE ScheduleDefineIdx IN (14, 16, 17)` sorgusu ile mevcut kayıtları listeleyip temizleyebilirsiniz.

Sorularınızı ve eklemek istediğiniz arena tiplerini (Party, Guild, Job) konu altından iletebilirsiniz. Herkese iyi forumlar!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 39,116 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,309
Mesajlar 4,185
Kullanıcılar 1,622
Son üye oznr0404
Geri
Üst