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

vSro Paylaşım vSRO Tek Query İle Otomatik Toplu Hesap (Account) Açma

Cevaplar0
Görüntüleme4
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[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



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... veya bot1, bot2...) ile hesapları açar,
  • Aynı isimde hesap varsa çakışmaları atlayarak (NOT EXISTS) sorgunun yarıda kesilmesini engeller,
  • Her hesap için SK_Silk tablosunda 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 c4ca4238a0b923820dcc509a6f75849b standart olarak 1 şifresine karşılık gelir.
  • Yetki Ayarları: Sorunsuz giriş yapılabilmesi için yetkiler sec_primary = 0 ve sec_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ı?

  1. Çakışma Koruması (Anti-Crash): IF NOT EXISTS denetimi 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.
  2. Giriş İzinleri Düzeltildi: Hatalı olan sec_primary = 3 değeri standart 0 yapılarak oyuna girişte olası hesap kilitlenmesi veya erişim engeli sorunları ortadan kaldırıldı.
  3. 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?

  1. SQL Server Management Studio (SSMS) programını açın.
  2. Üst panelden New Query penceresi açıp yukarıdaki SQL kodunu yapıştırın.
  3. İsteğinize göre @UserPrefix (Örn: 'bot') ve @MaxCount (Örn: 500) değerlerini düzenleyin.
  4. F5 tuşuna basarak çalıştırın.
  5. 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!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 40,332 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,311
Mesajlar 4,191
Kullanıcılar 1,624
Son üye mrt
Geri
Üst