- #1
Konu Sahibi
: serkankacan
[REHBER & QUERY] vSRO Tek Query İle Otomatik Toplu Hesap (Account) Açma
TB_User ve SK_Silk Tabloları Üzerinden İstenen Adette Test / Bot Hesabı Otomatik Oluşturma
TB_User ve SK_Silk Tabloları Üzerinden İstenen Adette Test / Bot Hesabı Otomatik Oluşturma
Merhaba değerli forum sakinleri,
Silkroad Online sunucularınızın geliştirme, stres testi, bot testi veya açılış öncesi deneme aşamalarında onlarca hesaba tek tek kayıt oluşturmakla uğraşmak yerine, tek bir SQL sorgusu ile belirlediğiniz adette (**100, 500, 1.000 vb.**) hesabı saniyeler içinde oluşturabilirsiniz.
Aşağıdaki optimize sorgu;
- Belirlediğiniz ön ad (Örn:
test1, test2...veyabot1, bot2...) ile hesapları açar, - Aynı isimde hesap varsa çakışmaları atlayarak (
NOT EXISTS) sorgunun yarıda kesilmesini engeller, - Her hesap için
SK_Silktablosunda başlangıç bakiye satırlarını eksiksiz tanımlar, - Standart oyuncu izinlerini (
sec_primary = 0, sec_content = 0) doğru ayarlayarak giriş problemlerini önler.
Hesap Bilgileri & Teknik Detaylar' Alıntı:
- Kullanıcı Adı Formatı: Varsayılan olarak
test1,test2...test100şeklinde açılır.- Hesap Şifresi: Kod içerisindeki MD5 hash
c4ca4238a0b923820dcc509a6f75849bstandart olarak 1 şifresine karşılık gelir.- Yetki Ayarları: Sorunsuz giriş yapılabilmesi için yetkiler
sec_primary = 0vesec_content = 0(Standart Oyuncu) olarak ayarlanmıştır.- İşlem öncesinde SRO_VT_ACCOUNT yedeğinizi almanız önerilir.
Hatasız & Güvenli Toplu Hesap Açma SQL Kodu
SQL:
USE [SRO_VT_ACCOUNT]
GO
-- ===================================================================
-- AYARLAR
-- ===================================================================
DECLARE @UserPrefix VARCHAR(20) = 'test' -- Hesapların ön adı (Örn: test1, test2 veya bot1, bot2)
DECLARE @MinCount INT = 1 -- Başlangıç numarası
DECLARE @MaxCount INT = 100 -- Bitiş numarası (Toplam açılacak hesap adedi)
-- Varsayılan Şifre MD5: 'c4ca4238a0b923820dcc509a6f75849b' (Karşılığı: 1)
DECLARE @DefaultPassword VARCHAR(64) = 'c4ca4238a0b923820dcc509a6f75849b'
-- ===================================================================
-- TOPLU HESAP OLUŞTURMA DÖNGÜSÜ
-- ===================================================================
DECLARE @CurrentID INT = @MinCount
DECLARE @NewJID INT
DECLARE @TargetUserID VARCHAR(50)
DECLARE @CreatedCount INT = 0
WHILE (@CurrentID <= @MaxCount)
BEGIN
SET @TargetUserID = @UserPrefix + CAST(@CurrentID AS VARCHAR(10))
-- Eğer kullanıcı adı veritabanında zaten varsa hata almamak için atla
IF NOT EXISTS (SELECT 1 FROM dbo.TB_User WITH (NOLOCK) WHERE StrUserID = @TargetUserID)
BEGIN
-- 1. TB_User Tablosuna Kullanıcıyı Ekle
INSERT INTO dbo.TB_User (
StrUserID,
[password],
game_credit,
credit,
reg_ip,
sec_primary,
sec_content,
AccPlayTime,
LatestUpdateTime_ToPlayTime,
regtime
)
VALUES (
@TargetUserID,
@DefaultPassword,
0,
0,
'127.0.0.1',
0, -- 0: Standart Oyuncu (Giriş sorunu yaşatmaz)
0, -- 0: Normal İçerik İzni
0,
0,
GETDATE()
)
SET @NewJID = SCOPE_IDENTITY()
-- 2. SK_Silk Tablosuna Cüzdan Satırını Tanımla
IF (@NewJID IS NOT NULL AND @NewJID > 0)
BEGIN
INSERT INTO dbo.SK_Silk (JID, silk_own, silk_gift, silk_point)
VALUES (@NewJID, 0, 0, 0)
END
SET @CreatedCount = @CreatedCount + 1
END
SET @CurrentID = @CurrentID + 1
END
PRINT '====================================================='
PRINT 'BAŞARILI: Toplam ' + CAST(@CreatedCount AS VARCHAR(10)) + ' adet hesap ve Silk tablosu oluşturuldu!'
PRINT 'Hesap Adı Aralığı: ' + @UserPrefix + CAST(@MinCount AS VARCHAR(10)) + ' - ' + @UserPrefix + CAST(@MaxCount AS VARCHAR(10))
PRINT 'Hesap Şifreleri: 1'
PRINT '====================================================='
Neden Bu Optimize Versiyon Kullanılmalı?
- Çakışma Koruması (Anti-Crash):
IF NOT EXISTSdenetimi sayesinde veritabanınızda daha önceden var olan bir hesap adına denk gelindiğinde sorgu hata vermez, bir sonraki numaraya geçer ve tüm hesapları eksiksiz tamamlar. - Giriş İzinleri Düzeltildi: Hatalı olan
sec_primary = 3değeri standart0yapılarak oyuna girişte olası hesap kilitlenmesi veya erişim engeli sorunları ortadan kaldırıldı. - Gereksiz Kod Temizliği: Kullanılmayan değişkenler ve geçici tablo (
@UserData) bellekten kaldırılarak sorgu performansı maksimuma çıkarıldı.
Nasıl Uygulanır?
- SQL Server Management Studio (SSMS) programını açın.
- Üst panelden New Query penceresi açıp yukarıdaki SQL kodunu yapıştırın.
- İsteğinize göre
@UserPrefix(Örn:'bot') ve@MaxCount(Örn:500) değerlerini düzenleyin. - F5 tuşuna basarak çalıştırın.
- Açılan hesaplara oyundan kullanıcı adı: test1, şifre: 1 yazarak giriş yapabilirsiniz.
Sorularınızı ve takıldığınız noktaları konu altından paylaşabilirsiniz. Herkese keyifli geliştirmeler!

