给游戏增加一个在线时间的排名记录
Published: Comment: No Comments
Last Modified:2023-12-03 12:04:48
奇迹MU里默认是没有对玩家的在线游戏时间进行记录的,我们可以通过一个触发器来记录玩家账号的在线时间,进而做一个玩家在线时间排名表。
首先我们要通过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
通过如上代码就能实现新增列和记录玩家在线时间的功能。