幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2380|回复: 11

[原创]RM反沉迷系统

[复制链接]

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
发表于 2007-2-26 10:04:16 | 显示全部楼层 |阅读模式
可以让游戏执行固定时间后运行一个程序,提醒玩家要注意休息,
TIME是设定间隔时间,以秒为单位,默认10秒,如果想设为半小时,改为1800即可。
  1. module Graphics
  2.   
  3.   @ask1 = ["你已玩了一小时,请问要关机吗?","反沉迷提示!!"]
  4.   @ask2 = ["如果不关机会直接退出游戏,确定吗?","反沉迷提示!!"]
  5.   CP_ACP = 0
  6.   CP_UTF8 = 65001
  7.   TIME = 10
  8.   @ctext = Array.new
  9.   @m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  10.   @w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  11.   @msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
  12.   @wsm = Proc.new{|i|
  13.          len = @m2w.call(CP_UTF8, 0, i, -1, nil, 0)
  14.          buf = "\0\0" * len
  15.          @m2w.call(CP_UTF8, 0, i, -1, buf, buf.size/2)
  16.          len = @w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  17.          @ctext.push "\0" * len
  18.          @w2m.call(CP_ACP, 0, buf, -1, @ctext.last, @ctext.last.size, nil, nil)
  19.          }
  20.   [@ask1,@ask2].flatten.each{|i| @wsm.call(i)}
  21.   
  22.   @update = method("update") if @update.nil?
  23.   def self.update
  24.      @first = Time.now.sec if !@first
  25.      @atend = Time.now.sec        
  26.      if ((@atend - @first).abs+1) % TIME == 0
  27.         begin
  28.            self.warning{|a,b| @msgbox.call(0, a, b, 1) }
  29.         rescue  Hangup
  30.            exit
  31.         end   
  32.      end  
  33.      @update.call
  34.   end
  35.   def self.warning
  36.       2.times{|j| j == 0 ?
  37.           ((yield @ctext[0], @ctext[1]) == 1 ? (`Shutdown.exe -s -t 10`) : (next)):
  38.           (yield @ctext[2], @ctext[3]) == 1 ? (exit) : (retry)      
  39.         }
  40.   end
  41. end
复制代码
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复

使用道具 举报

89

主题

2333

帖子

3273万

积分

⑧专业

Xavier on Rails

积分
32739794
QQ
发表于 2007-2-26 10:16:02 | 显示全部楼层
这个........没有人会用这个的吧.......
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
 楼主| 发表于 2007-2-26 10:32:01 | 显示全部楼层
引用第1楼xavier2007-02-26 10:16发表的:
这个........没有人会用这个的吧.......

exit是退出,可以取消掉,仅当做提醒,文字内容也可以自己设置.
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

845

主题

1万

帖子

214748万

积分

版主

脑残中……

Rank: 7Rank: 7Rank: 7

积分
2147483647

声命组金赏

发表于 2007-2-26 10:34:36 | 显示全部楼层
Orz………… 太邪恶了…… 所谓反沉迷应该是 游戏进行一小时后经验值会逐渐减少,迫使玩家休息…… 而这个是健康游戏提醒嘛... [s:5]
http://icv.cc声动音缘配音社
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
 楼主| 发表于 2007-2-26 10:44:53 | 显示全部楼层
引用第3楼vvvvvv2007-02-26 10:34发表的:
Orz………… 太邪恶了…… 所谓反沉迷应该是 游戏进行一小时后经验值会逐渐减少,迫使玩家休息…… 而这个是健康游戏提醒嘛... [s:5]

可以把exit改成修改某个全局变量,而获得经验的部分乘以该变量,即可得到经验值逐渐减少的效果.
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

3

主题

232

帖子

583

积分

⑤进阶

哇咔咔~传说中的称号.

积分
583
发表于 2007-2-26 11:26:22 | 显示全部楼层
[s:5] 退出前先把个游戏时间先存起来`再进的时候分歧一下才刚退出多久`` [s:5]
如果才刚退出就立刻人提示多一边```以防刚退出又立刻进游戏了```

另 美兽殿越来越强悍了`` [s:2]
回复 支持 反对

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-2-26 11:29:48 | 显示全部楼层
引用第5楼神思2007-02-26 11:26发表的:
[s:5] 退出前先把个游戏时间先存起来`再进的时候分歧一下才刚退出多久`` [s:5]
如果才刚退出就立刻人提示多一边```以防刚退出又立刻进游戏了```
-_那样反而会让人讨厌你的游戏吧....
回复 支持 反对

使用道具 举报

3

主题

232

帖子

583

积分

⑤进阶

哇咔咔~传说中的称号.

积分
583
发表于 2007-2-26 11:30:32 | 显示全部楼层
[s:4] 既然防止就要防止到底```~~~
回复 支持 反对

使用道具 举报

190

主题

1589

帖子

7万

积分

⑧专业

囙乚囙

积分
71347
发表于 2007-2-26 11:33:27 | 显示全部楼层
lz把if改成switch试试
狂人LV7:神秘兽(强化体)
回复 支持 反对

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-2-26 11:35:28 | 显示全部楼层
我觉得与其开发反沉迷系统,还不如从游戏剧情着手....
在适当的时刻给人停下来喘息的机会...
就像看小说,在每章结束的地方停下来活动的几率,比看到高潮部分停下来的几率大吧~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-25 04:00 , Processed in 0.012635 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表