User Log Tutucu

    Paylaş



    Kayıt tarihi : 01/01/70
    Forum Başarısı : 35642
    Cinsiyeti : Hangi Ülke : TÜRKİYE

    İkon User Log Tutucu

    Mesaj tarafından  Bir Çarş. Mart 10, 2010 11:52 pm

    Oyuna giriş ve çıkış zamanını kayıtlı tutar.
    - Oyunda ne kadar online bulunduğunu, ne kadar exp, ne kadar np kastığını kayıtlı tutar.
    - Kişinin hangi charla hangi ip’den ne kadar bağlı kaldığını kayıtlı tutar.

    [ Char ID – Kastığı Exp – Kastığı NP – Kastığı Aylık NP – Level – IP – Giriş Zamanı – Çıkış Zamanı – Oyunda Kalınan Süre ]

    [Linkleri görebilmek için üye olun veya giriş yapın.] user detaylarındaki giriş çıkış logları bu sistemle çalışmaktadır.

    Günlük Np Sıralaması da bu prosedürlerle yapılmaktadır. Biraz inceleyip ufak eklentilerle Günlük Np Sıralamasını da yapabilirsiniz.


    # NOT :
    USERDATA ve CURRENTUSER tablosunu elle giriniz.


    ##### TABLOLAR #####

    CURRENTUSER
    Sure datetime 8 1
    Exp int 4 1
    NP int 4 1
    NP2 int 4 1
    Lvl int 4 1


    USERDATA
    OnlineTime int 4 1
    CREATE TABLE [dbo].[USER_LOG] (
    [strUserID] [varchar] (50),
    [pExp] [int] NULL ,
    [pNP] [int] NULL ,
    [pNP2] [int] NULL ,
    [pLvl] [int] NULL ,
    [IP] [varchar] (50) ,
    [OnlineDate] [datetime] NULL ,
    [OfflineDate] [datetime] NULL ,
    [Time] [int] NULL
    ) ON [PRIMARY]
    GO

    ##### PROSEDURLER #####

    /* Karakterlerin Çevrimiçi Sürelerini Hesaplama Yazan : styLemert (Mert Ürün) */
    CREATE PROCEDURE ACCOUNT_LOGOUT
    @AccountID varchar(21),
    @nRet smallint OUTPUT
    AS
    BEGIN

    Declare @Giris datetime, @Cikis datetime, @OnlineTime int, @OnlineTime2 int, @id varchar(50)

    Set @Giris = (Select Sure From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @Cikis = getdate()
    Set @id = (Select strCharID From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @OnlineTime = (Select OnlineTime From [USERDATA] Where strUserId = @id)
    Set @OnlineTime2 = Datediff(minute, @Giris, @Cikis)

    Update [USERDATA] Set OnlineTime = @OnlineTime + @OnlineTime2 Where strUserId = @id

    DELETE FROM CURRENTUSER WHERE strAccountID = @AccountID
    SET @nRet = 1

    END
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PROC_INSERT_CURRENTUSER]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[PROC_INSERT_CURRENTUSER]
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS OFF
    GO

    /* Karakterlerin Çevrimiçi Sürelerini Hesaplama Yazan : styLemert (Mert Ürün) */
    CREATE PROCEDURE PROC_INSERT_CURRENTUSER
    @AccountID varchar(50),
    @CharID varchar(50),
    @ServerNo varchar(50),
    @ServerIP varchar(50),
    @ClientIP varchar(50),
    @nret smallint output

    AS

    Declare @sayi int, @Exp int, @Np int, @Lvl int, @NP2 int
    Set @sayi = (Select Count(strCharID) From [CURRENTUSER] Where strCharID = @CharID)
    set @Exp = (Select [Exp] From [USERDATA] where strUserId = @CharID)
    set @Np = (Select [Loyalty] From [USERDATA] where strUserId = @CharID)
    set @Lvl = (Select [Level] From [USERDATA] where strUserId = @CharID)
    set @NP2 = (Select [LoyaltyMonthly] From [USERDATA] where strUserId = @CharID)

    If @sayi > 0
    Begin
    Delete From [CURRENTUSER] Where strCharID = @CharID
    End

    INSERT INTO CURRENTUSER (nServerNo, strServerIP, strAccountID, strCharID, strClientIP, Sure, Exp, NP, NP2, Lvl ) Values (@ServerNo, @ServerIP, @AccountID, @CharID, @ClientIP,getdate(), @Exp, @Np, @NP2, @Lvl )
    set @nret=1
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ACCOUNT_LOGOUT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[ACCOUNT_LOGOUT]
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS OFF
    GO

    CREATE PROCEDURE ACCOUNT_LOGOUT
    @AccountID varchar(21),
    @nRet smallint OUTPUT
    AS
    BEGIN

    /* ====== Karakterlerin Çevrimiçi Sürelerini Hesaplama ve Ne yaptıklarını kaydetme ==== styLemert ===== */
    Declare @Giris datetime, @Cikis datetime, @OnlineTime int, @OnlineTime2 int, @id varchar(50), @IP varchar(50),@pExp int,@pNp int,@pNp2 int,@pLvl int,@nExp int,@nNp int,@nNp2 int,@nLvl int
    Declare @pnExp int, @pnNp int, @pnNp2 int, @pnLvl int

    Set @Giris = (Select Sure From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @Cikis = getdate()

    Set @id = (Select [strCharID] From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @IP = (Select [strClientIP] From [CURRENTUSER] Where strAccountID = @AccountID)

    Set @pExp = (Select [Exp] From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @pNp = (Select [Np] From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @pNp2 = (Select [Np2] From [CURRENTUSER] Where strAccountID = @AccountID)
    Set @pLvl = (Select [Lvl] From [CURRENTUSER] Where strAccountID = @AccountID)

    Set @nExp = (Select [Exp] From [USERDATA] Where strUserId = @id)
    Set @nNp = (Select [Loyalty] From [USERDATA] Where strUserId = @id)
    Set @nNp2 = (Select [LoyaltyMonthly] From [USERDATA] Where strUserId = @id)
    Set @nLvl = (Select [Level] From [USERDATA] Where strUserId = @id)

    Set @pnExp = @nExp - @pExp
    Set @pnNp = @nNp - @pNp
    Set @pnNp2 = @nNp2 - @pNp2
    Set @pnLvl = @nLvl - @pLvl

    Set @OnlineTime = (Select OnlineTime From [USERDATA] Where strUserId = @id)
    Set @OnlineTime2 = Datediff(second, @Giris, @Cikis)

    Insert Into [USER_LOG] Values ( @id, @pnExp, @pnNp, @pnNp2, @pnLvl, @IP, @Giris , getdate(),@OnlineTime2)

    Update [USERDATA] Set OnlineTime = @OnlineTime + @OnlineTime2 Where strUserId = @id
    /* ====== Karakterlerin Çevrimiçi Sürelerini Hesaplama ve Ne yaptıklarını kaydetme ==== styLemert ===== */

    DELETE FROM CURRENTUSER WHERE strAccountID = @AccountID
    SET @nRet = 1

    END
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

      Forum Saati Çarş. Ekim 17, 2018 7:40 am