Project1

标题: 能不能别用系统时间判断 [打印本页]

作者: 汪洋洋    时间: 2016-9-19 14:02
标题: 能不能别用系统时间判断
$game_variables[999] = Time.Internet.hour
$game_variables[998] = Time.Internet.min       能不能用Internet 来判断时间 做的防止修改的效果?
作者: 喵呜喵5    时间: 2016-9-19 14:09
玩家无法联网或者联网失败时打算如何处理?
作者: 喵呜喵5    时间: 2016-9-19 16:19
  1. module M5WT20160919
  2.   module_function
  3.   def get
  4.     url = "http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"
  5.     result = (Win32API.new("Urlmon", "URLDownloadToCacheFile", "ippiii", "i").
  6.     (0,url,buf="\0"*1024,1024,0,0); open(buf.sub(/\0+$/){}, 'rb'){|p| p.read})
  7.     result.match(/timestamp":"(.+?)"/) ? Time.at($1.to_i) : nil
  8.   end
  9. end
复制代码

插入脚本,然后用 M5WT20160919.get 可以返回一个Time对象

几点说明:
1.API接口使用这个服务,每小时有配额限制,如果太多人在用或者用的太频繁的话要交钱才能用
http://www.k780.com/api/life.time
2.联网获取时间的方式为阻塞的,意思就是,如果玩家网络不好的话,游戏会卡住直到联网成功,
另外,即使网络好的话联网照样要时间,意思就是,你把这个东西扔到并行事件里面循环跑的话,游戏瞬间会卡到爆炸
3.获取数据异常时,该方法返回nil
作者: QQ蚊子湯    时间: 2016-9-19 16:32
本帖最后由 QQ蚊子湯 于 2016-9-19 16:33 编辑



沒有實測,不知道讀取的速度,不過像這樣加入等待時間 每隔一段時間才獲取時間應該行得通吧

順帶一提 上面應該不能ˊ直接套到變數 我隨便瞎扯的(X)
作者: 喵呜喵5    时间: 2016-9-19 16:38
本帖最后由 喵呜喵5 于 2016-9-19 16:39 编辑
QQ蚊子湯 发表于 2016-9-19 16:32
沒有實測,不知道讀取的速度,不過像這樣加入等待時間 每隔一段時間才獲取時間應該行得通吧

順帶一提 上 ...


1.可以赋值为变量
2.300帧也就是5秒就要获取一次,究竟是怎样的需求会要求这么高的时间同步?半小时同步一次我都觉得太频繁了,网络时间始终在走又不会被玩家改变,需要使用的时候(比如在判断的时候)获取不就好了,你这样等于每5秒游戏卡一下
作者: QQ蚊子湯    时间: 2016-9-19 17:18
本帖最后由 QQ蚊子湯 于 2016-9-19 17:26 编辑
喵呜喵5 发表于 2016-9-19 16:38
1.可以赋值为变量
2.300帧也就是5秒就要获取一次,究竟是怎样的需求会要求这么高的时间同步?半小时同步 ...


因為LZ曾在別的帖子說過想要用時間控制地圖出個明怪,5秒確實有點快,不過這也是提個概念而已

更節省的方法是地圖移動的時候順便判斷一下
缺點是不會產生網游那種怪物在眼前刷新的感覺


也可以像這樣 在條件達成的時候就不繼續獲取



作者: 喵呜喵5    时间: 2016-9-19 17:48
QQ蚊子湯 发表于 2016-9-19 17:18
因為LZ曾在別的帖子說過想要用時間控制地圖出個明怪,5秒確實有點快,不過這也是提個概念而已

更節省的 ...

所以都说了……由于是阻塞的,所以你这个事件设置实际上等于:在条件达成的时候游戏就不断卡顿卡顿卡顿卡顿卡顿卡顿卡顿




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1