Selamlar,
Umarım İhtiyacı Olan Arkadaşların İşini Görür,
Prosedürün Özelliklerini Maddelendirirsek ;
1. İstediğiniz Kadar Günlük GM Verebilirsin 1,20,30,50,100 vb.
2. LOAD_USER_DATA da Olmadığı İçin Sürekli SQL Servera Procedur Göndermez ve Transcation Log(LDF) Dosyanızda Dolayısıyla Şişmez yine Buna Bağlı Olarak SQL Serverınız Yorulmaz ve Kaynak Kullanımları Artmaz.
3. CHECK_DAYS_GMS i Sadece Günde 1 Kere Çalıştırmanız Yeterli isteğe Göre 2 de Yapabilirsiniz Size Kalmış Birşey...
USERDATA Tablomuzu Değiştiriyoruz...
Kod:
ALTER TABLE USERDATA ADD GM_CreatedDate smalldatetime NOT NULL DEFAULT 0;
ALTER TABLE USERDATA ADD GM_Day tinyint NOT NULL DEFAULT 0;
GM'lerin Süresini Kontrol Eden Prosedürümüz ;
Kod:
CREATE PROCEDURE CHECK_DAY_GMS
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @strUserID char(21),@GM_CreatedDate smalldatetime,@GM_Day tinyint
DECLARE USERDATA CURSOR FOR
SELECT strUserID,GM_CreatedDate,GM_Day FROM USERDATA WHERE Authority = 0
OPEN USERDATA
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @Calc_Date smalldatetime
SET @Calc_Date = DATEDIFF(dd,@GM_CreatedDate,GetDate())
IF @Calc_Date >= @GM_Day
BEGIN
UPDATE USERDATA SET Authority = 1 WHERE strUserID = @strUserID
END
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
END
CLOSE USERDATA
DEALLOCATE USERDATA
COMMIT TRAN
Karakteri GM Yapan ve Süre Belirleyen, Prosedürümüz ;
Kod:
CREATE PROCEDURE INSERT_GM_DAY
(
@strUserID char(21),
@Day tinyint
)
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @CheckUserID tinyint
SELECT @CheckUserID = COUNT(strUserID) FROM USERDATA WHERE strUserID = @strUserID
IF @CheckUserID <> 0
BEGIN
UPDATE USERDATA SET GM_CreatedDate = GetDate(),GM_Day = @Day,Authority = 0 WHERE strUserID = @strUserID
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakterine ' + RTRIM(LTRIM(STR(@Day))) + ' Günlük GM''lik Verildi.'
END
ELSE
BEGIN
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakteri Veritabaninda Bulunamadi.'
END
COMMIT TRAN
Süreli GM Vermek İçin Kullanacığınız Kod ;
Kod:
KULLANIM : EXEC INSERT_GM_DAY 'NICK','KACGUN'
ÖRNEK : EXEC INSERT_GM_DAY 'AKUMA','32'
Süresi Biten GM leri Kontrol Etmek İçin, Günde Sadece 1 veya İsteğe Göre Daha Fazla Çalıştıracağınız Kod, Merak Etmeyin Kişi Oyundada Ertesi Gün Yine Değiştirir
Kod:
EXEC CHECK_DAY_GMS
Umarım İhtiyacı Olan Arkadaşların İşini Görür,
Prosedürün Özelliklerini Maddelendirirsek ;
1. İstediğiniz Kadar Günlük GM Verebilirsin 1,20,30,50,100 vb.
2. LOAD_USER_DATA da Olmadığı İçin Sürekli SQL Servera Procedur Göndermez ve Transcation Log(LDF) Dosyanızda Dolayısıyla Şişmez yine Buna Bağlı Olarak SQL Serverınız Yorulmaz ve Kaynak Kullanımları Artmaz.
3. CHECK_DAYS_GMS i Sadece Günde 1 Kere Çalıştırmanız Yeterli isteğe Göre 2 de Yapabilirsiniz Size Kalmış Birşey...
USERDATA Tablomuzu Değiştiriyoruz...
Kod:
ALTER TABLE USERDATA ADD GM_CreatedDate smalldatetime NOT NULL DEFAULT 0;
ALTER TABLE USERDATA ADD GM_Day tinyint NOT NULL DEFAULT 0;
GM'lerin Süresini Kontrol Eden Prosedürümüz ;
Kod:
CREATE PROCEDURE CHECK_DAY_GMS
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @strUserID char(21),@GM_CreatedDate smalldatetime,@GM_Day tinyint
DECLARE USERDATA CURSOR FOR
SELECT strUserID,GM_CreatedDate,GM_Day FROM USERDATA WHERE Authority = 0
OPEN USERDATA
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @Calc_Date smalldatetime
SET @Calc_Date = DATEDIFF(dd,@GM_CreatedDate,GetDate())
IF @Calc_Date >= @GM_Day
BEGIN
UPDATE USERDATA SET Authority = 1 WHERE strUserID = @strUserID
END
FETCH NEXT FROM USERDATA INTO @strUserID,@GM_CreatedDate,@GM_Day
END
CLOSE USERDATA
DEALLOCATE USERDATA
COMMIT TRAN
Karakteri GM Yapan ve Süre Belirleyen, Prosedürümüz ;
Kod:
CREATE PROCEDURE INSERT_GM_DAY
(
@strUserID char(21),
@Day tinyint
)
AS
/*
Author : AKUMA
*/
BEGIN TRAN
DECLARE @CheckUserID tinyint
SELECT @CheckUserID = COUNT(strUserID) FROM USERDATA WHERE strUserID = @strUserID
IF @CheckUserID <> 0
BEGIN
UPDATE USERDATA SET GM_CreatedDate = GetDate(),GM_Day = @Day,Authority = 0 WHERE strUserID = @strUserID
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakterine ' + RTRIM(LTRIM(STR(@Day))) + ' Günlük GM''lik Verildi.'
END
ELSE
BEGIN
PRINT RTRIM(LTRIM(@strUserID)) + ' Karakteri Veritabaninda Bulunamadi.'
END
COMMIT TRAN
Süreli GM Vermek İçin Kullanacığınız Kod ;
Kod:
KULLANIM : EXEC INSERT_GM_DAY 'NICK','KACGUN'
ÖRNEK : EXEC INSERT_GM_DAY 'AKUMA','32'
Süresi Biten GM leri Kontrol Etmek İçin, Günde Sadece 1 veya İsteğe Göre Daha Fazla Çalıştıracağınız Kod, Merak Etmeyin Kişi Oyundada Ertesi Gün Yine Değiştirir
Kod:
EXEC CHECK_DAY_GMS