赞 | 0 |
VIP | 15 |
好人卡 | 5 |
积分 | 1 |
经验 | 41438 |
最后登录 | 2020-7-9 |
在线时间 | 99 小时 |
Lv1.梦旅人 匿·蹤
- 梦石
- 0
- 星屑
- 65
- 在线时间
- 99 小时
- 注册时间
- 2006-3-19
- 帖子
- 456
|
本帖最后由 OCTSJimmy 于 2013-3-6 20:05 编辑
这里有两个思路:
思路1:
一、首先需要用到这篇文章的东西:
http://rpg.blue/thread-201237-1-1.html
二、这段是Windows的BAT脚本:- title 获取网络时间,同步到本机(需联网)
- del /f /s /q "%userprofile%\Local Settings\Admin\Temporary Internet Files\*.*"
- rem 这句的作用是清除IE的临时文件,否则时间可能会不准。路径请自行修改。
- cd /d "%tmp%"
- rem 至临时文件目录
- (
- echo With CreateObject^("Microsoft.XMLHTTP"^)
- rem VBS脚本,建立XMLHTTP通信对象
- echo .open "get", "http://open.baidu.com/special/time/", False
- rem VBS脚本,以get模式打开[url]http://open.baidu.com/special/time/[/url]
- echo .send
- rem 发送get请求
- echo WScript.echo DateAdd^("s",CLng^(Left^(Split^(Split^(.responseText,"baidu_time("^)^(1^),")"^)^(0^),10^)^),"1970-1-1 8:00"^)
- rem 日期加法运算(秒,取整(左取(切割(切割(源代码,"baidu_time(")(切割后的后半部分),")")(切割后的前半部分),10位)),"1970-1-1 8:00")
- rem 即对日期:1970-1-1 8:00做加法运算,加上自源代码中取出的 "baidu_time(XXX)"中XXX的前10位 的秒数
- echo End With
- rem 结束通信对象的With
- )>gettime.vbs
- rem 以上脚本全部写入gettime.vbs
- for /f "tokens=1*" %%i in ('cscript //nologo gettime.vbs') do date %%i & time %%j
- rem 获得gettime.vbs的执行结果进入BAT的变量i,每列步进一个变量,并做操作 设定系统日期 为i ,设定系统时间为 j
- rem 每列步进一个变量即:假如第一列进入变量i,第二列就进入变量j,第三列就进入变量k........
- echo 本机系统时间设置完成!
- pause
复制代码 这个脚本的作用是从 http://open.baidu.com/special/time/ 抓取时间,并同步给系统。
三、可以结合以上两点,强制从网络同步时间。
缺陷:
1、没有删除IE临时文件,造成baidu_time(XXXX)的XXX值过旧,从而引起时间偏差。
2、需要网络支持
思路2:
可以双项判定 系统时间,以及RM自带的游戏经过时间。
一颗菜的起始时间需要用两个量表示:A当前系统时间 B游戏经过时间,判定是否成熟,就使用AND判定。
这个是伪代码,进用作思路提供:
- if cai.a <= 当前系统时间 and cai.b + 60*60*12 <= 游戏经过时间
- p "菜成熟啦"
- else
- if cai.a <= 当前系统时间 and cai.b + 60*60*12 > 游戏经过时间
- p "由于你修改了系统时间,所以菜黄掉了"
- else
- if cai.a > 当前系统时间 and cai.b + 60*60*12 <= 游戏经过时间
- p "变速齿轮,把菜都捣烂啦"
- end
- end
- end
复制代码 =============================================================
补充,思路2巨大BUG——没有考虑到关闭RM的情况,那么可以这样子修正:
关闭RM前,写入当前时间进入某变量,开始游戏时也写入当前系统时间进入另一个变量。
假设该变量名分别为close_time_system, open_time_system,close_over_time_system, 其表示关闭游戏系统时间与开启游戏系统时间,以及关闭游戏后经过的累积时间
那么上面的伪代码需要改为:
- close_over_time_system += open_time_system - close_time_system
- if 转为秒数(当前系统时间 - (open_time_system - close_time_system) - close_over_time_system - cat.a) >= 60*60*12 and 当前游戏时间 - cat.b >= 60*60*12
- p "菜成熟啦"
- else
- if 转为秒数(当前系统时间 - (open_time_system - close_time_system) - close_over_time_system - cat.a) >= 60*60*12 and 当前游戏时间 - cat.b < 60*60*12
- p "由于你修改了系统时间,所以菜黄掉了"
- else
- if 转为秒数(当前系统时间 - (open_time_system - close_time_system) - close_over_time_system - cat.a) < 60*60*12 and 当前游戏时间 - cat.b >= 60*60*12
- p "变速齿轮,把菜都捣烂啦"
- end
- end
- end
复制代码 |
|