您当前的位置:首页 > 其他技术 > 其他技术

神泣SF利用数据库作业实现在线泡点

本文出处:网游动力作者:本站发布时间:2010-12-19阅读次数:

1. 在 PS_Userdata 的操作:
一 选择这个数据库PS_userdata 选择表: user_master 右键 设计表 , 添加下列东西
列名 数据类型 长度 允许空
Ap     int       4      打钩     下面 默认值填0
Online int       4      打钩     下面 默认值填0

2;查找PS_userdata库usp_Try_GameLogin_Taiwan储存过程内以下位置:
-- Log Insert
IF( @Status = 0 OR @Status = 16 OR @Status = 32 OR @Status = 48 OR @Status = 64 OR @Status = 80 )
BEGIN
            UPDATE Users_Master SET Online = 1 WHERE UserUID = @UserUID   ----增加这句(当账号上线设置Online值为1)
            EXEC usp_Insert_LoginLog_E @SessionID=@SessionID, @UserUID=@UserUID, @UserIP=@UserIP, @LogType=0, @LogTime=@LoginTime, @LoginType=@LoginType
END

3;查找usp_Try_GameLogout_R内以下位置:
IF( LEN(@dd) = 1 )
BEGIN
            SET @dd = 0 + @dd
END
UPDATE Users_Master SET Online = 0 WHERE UserUID = @UserUID ----增加这句(当角色下线,设置Online值为0)

SET @Sql = N
INSERT INTO PS_GameLog.dbo.UserLog
(SessionID, UserUID, LogType, LogTime, LogoutType, ErrType)
VALUES(@SessionID, @UserUID, @LogType, @LogTime, @LogoutType, @ErrType)

在线送点卡功能实现操作:

只有在线的玩家才会送

1、打开SQL企业管理器。选择 “管理” - >“ 作业” - >  “新建作业”

随便写上一个作业名,但是建议大家最好作业名能反映你写的这个功能的意思,比如这个是实现泡积分功能的,我就写一个泡积分作为作业名。

2、"步骤"分页卡中,选"新建"
数据库选ps_userdata
命令如下:
update Users_Master set Point = Point + 10, ap = ap +10 where Online = 1

POINT 和 AP 里面的 10 意思就是 说 一分钟送多少点!
AP 可以查看 XX 人在线 一共送了多少点,可以换算出他在线多少分钟!
最后点确定!

最后选 "调度"分页卡,新建一个调度。比如每周的周日0点启动一次。
到此,神泣的泡点功能就实现了。

说明,这个功能的实现主要是依赖于数据库的作业功能来实现的。思路是账号登陆时,设置online为1。那么在利用作业的分时特点,设置它没过x分钟就执行一次数据库语句,语句执行的依据是根据账号是否在线来执行的。