给游戏增加一个在线时间的排名记录


Published:   Comment: No Comments

游戏数据库

奇迹MU里默认是没有对玩家的在线游戏时间进行记录的,我们可以通过一个触发器来记录玩家账号的在线时间,进而做一个玩家在线时间排名表。
OnlineMinutes.jpg
首先我们要通过SQL查询分析器,给MuOnline数据库的MEMB_STAT表增加一个名为OnlineMinutes的列,用以记录玩家的在线时间。然后通过相应的SQL指令来新建一个触发器,当玩家每次上下线时把在线的时间差记录进OnlineMinutes列中,用于对玩家的在线时间排序。以下是相关的代码

IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'MEMB_STAT' AND COLUMN_NAME = 'OnlineMinutes')
BEGIN
    ALTER TABLE MEMB_STAT
    ADD OnlineMinutes INT NOT NULL DEFAULT 0;
END
GO

CREATE PROCEDURE WZ_DISCONNECT_MEMB
@memb___id varchar(10)
 AS
Begin    
set nocount on
    Declare  @find_id varchar(10)    
    Declare @ConnectStat tinyint
    Set @ConnectStat = 0     
    Set @find_id = 'NOT'
    select @find_id = S.memb___id from MEMB_STAT S INNER JOIN MEMB_INFO I ON S.memb___id = I.memb___id 
           where I.memb___id = @memb___id
    if( @find_id <> 'NOT' )    
    begin        
        update MEMB_STAT set ConnectStat = @ConnectStat, DisConnectTM = getdate(), OnlineMinutes = OnlineMinutes+(DATEDIFF(mi,ConnectTM,getdate()))
         where memb___id = @memb___id
            -- TIMEONLINE  by yaoge
    end
end

GO

通过如上代码就能实现新增列和记录玩家在线时间的功能。

Last Modified:2023-12-03 12:04:48

我有话说