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

Cevaplar0
Görüntüleme9
Katılım
27 Ara 2025
Mesajlar
117
Tepkime puanı
2
Puanları
0
Mevcut Bakiye
2535 ₺
Tek Query ile Battle Arena Saati Oluşturma

Battle Arena saatini ayarlamak için SMC ile uğraşmaya gerek yok. Aşağıdaki sorguyu SQL Server'da çalıştırarak istediğin saati birkaç saniyede tanımlayabilirsin.

Sorgu Random Battle Arena için hazırlanmıştır, ama alttaki kimlik tablosundan değerleri değiştirerek Party, Guild ve Job etkinlikleri için de kullanabilirsin.

Nasıl çalışır

Battle Arena üç ayrı zamanlama kaydından oluşur ve bunların hepsi etkinlik saatinden önce başlar. Sorguya gireceğin üç saat şudur:

KayıtNe zamanSüreGörevi
MatchEtkinlikten 15 dk önce30 dakikaEşleşme ve puanlama tanımı
KayıtEtkinlikten 10 dk önce10 dakikaOyuncuların katılım kaydı açılır
BaşlangıçEtkinlikten 5 dk önce15 dakikaEtkinlik başlar

Örnek: Etkinliğin 19:30'da olmasını istiyorsan değerleri şöyle girersin:

DeğişkenSaatDakika
Match1915
Kayıt1920
Başlangıç1925

Sorgu her gün tekrar edecek şekilde ayarlıdır. Girdiğin saatte her gün otomatik olarak çalışır.

Etkinlik türü kimlikleri

Sorgunun içindeki üç değeri değiştirerek etkinlik türünü belirlersin.

Puanlama türü (@Point)

TürDeğer
Score (puan)14
Flag (bayrak)15

Kayıt ve etkinlik kimlikleri

Etkinlik türü@Kayit@Event
Random1617
Party1819
Guild2021
Job2223

Sorgu

Rich (BB code):
USE SRO_VT_SHARD
GO

-- ============================================================
--  Battle Arena zamanlama olusturucu | JoymaxHub
--  Sadece asagidaki saat ve dakika degerlerini duzenle.
-- ============================================================

-- Etkinlikten 15 dakika onceki saat ve dakika
DECLARE @MatchSaat   int = 19
DECLARE @MatchDakika int = 15

-- Etkinlikten 10 dakika onceki saat ve dakika
DECLARE @KayitSaat   int = 19
DECLARE @KayitDakika int = 20

-- Etkinlikten 5 dakika onceki saat ve dakika
DECLARE @StartSaat   int = 19
DECLARE @StartDakika int = 25

-- Etkinlik turu kimlikleri
DECLARE @Point int = 14   -- 14 Score / 15 Flag
DECLARE @Kayit int = 16   -- 16 Random / 18 Party / 20 Guild / 22 Job
DECLARE @Event int = 17   -- 17 Random / 19 Party / 21 Guild / 23 Job

-- ==================== BU KISMA DOKUNMA ====================

INSERT SRO_VT_SHARD.._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
(@Point, '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, '', '')

INSERT SRO_VT_SHARD.._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
(@Kayit, '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, '', '')

INSERT SRO_VT_SHARD.._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
(@Event, '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, '', '')

-- ==================== BU KISMA DOKUNMA ====================

Kullanım adımları

  1. SQL Server Management Studio'yu aç
  2. New Query penceresi aç
  3. Sorguyu yapıştır, üstteki üç saat değerini kendi etkinlik saatine göre düzenle
  4. Çalıştır
  5. GameServer.exe'yi yeniden başlat

Son adımı atlama. Sunucu zamanlama tablosunu başlangıçta okur, yeniden başlatmadan yeni saat devreye girmez.

Önemli notlar

  • Sorgu mevcut Battle Arena saatlerini etkilemez, üzerine yeni bir saat ekler.
  • Birden fazla saat istiyorsan sorguyu farklı değerlerle tekrar çalıştır.
  • Veritabanı adın SRO_VT_SHARD değilse sorgudaki her iki yerde de kendi adınla değiştir.
  • Çalıştırmadan önce veritabanı yedeği al. Zamanlama tablosuna yanlış kayıt girmek etkinliklerin hiç açılmamasına yol açabilir.

Eklediğin saatleri görme ve silme

Tanımlı Battle Arena zamanlamalarını listelemek için:

Rich (BB code):
SELECT * FROM SRO_VT_SHARD.._Schedule
WHERE ScheduleDefineIdx IN (14,15,16,17,18,19,20,21,22,23)
ORDER BY SubInterval_StartTimeHour, SubInterval_StartTimeMinute

Yanlış eklediğin bir kaydı silmek için önce yukarıdaki sorguyla kimliğini bul, sonra:

Rich (BB code):
DELETE FROM SRO_VT_SHARD.._Schedule WHERE ScheduleID = BURAYA_ID_YAZ

Sık karşılaşılan sorunlar

Sorgu çalıştı ama etkinlik açılmıyor
GameServer.exe yeniden başlatılmamıştır. En sık yapılan hata budur.

Etkinlik açılıyor ama kimse katılamıyor
Kayıt kaydının saati yanlıştır. Kayıt, etkinlik başlangıcından önce olmalı ve süresi bitmeden etkinlik başlamalıdır.

"Invalid object name '_Schedule'" hatası
Veritabanı adı farklıdır. Sorgudaki SRO_VT_SHARD ifadesini kendi shard veritabanının adıyla değiştir.

Etkinlik yanlış saatte açılıyor
Sunucu makinesinin saat dilimi ile beklediğin saat farklıdır. Windows saat ayarını kontrol et.

Sorularını ve kendi kullandığın zamanlama değerlerini konuya yazabilirsin.
 

Konuyu şu anda görüntüleyenler

Yükleniyor...
Şu anda sitemizde 55 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 761
Mesajlar 3,242
Kullanıcılar 1,284
Son üye test2019 
Geri
Üst