设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3075|回复: 10
打印 上一主题 下一主题

[已经过期] 我想让游戏设时间限制, 过几天就打不开那种,xp能.....

[复制链接]

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
跳转到指定楼层
1
发表于 2015-3-16 16:33:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 惊天动地 于 2015-3-19 15:51 编辑

我想让xp游戏设时间限制, 过几天就打不开那种,即使改动电脑时间也不能运行的,能做到吗?能编脚本吗 ?最好有范例  请指教

点评

再一个,电脑时间是可以改的.  发表于 2015-3-16 17:03
你發錯区了~  发表于 2015-3-16 17:03
可以,但是首先你要发对地方.  发表于 2015-3-16 17:02

Lv1.梦旅人

梦石
0
星屑
50
在线时间
11 小时
注册时间
2015-3-6
帖子
12
11
发表于 2015-3-27 18:03:09 | 只看该作者
https://rpg.blue/forum.php?mod=viewthread&tid=377728
这个也可以,这个是注册表方法
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
380
在线时间
602 小时
注册时间
2014-5-8
帖子
699
10
发表于 2015-3-21 19:36:30 | 只看该作者
本帖最后由 布罗利 于 2015-3-21 19:53 编辑

需要获取百度的时间,这里用到一个脚本,至于作者嘛我也不知道是谁了,这个脚本收藏好长时间了,如果作者看到请理解
RUBY 代码复制
  1. module ReadTime
  2.   module Config
  3.     #小时,分钟,秒设置的变量编号
  4.     HOUR   = 1
  5.     MINUTE = 2
  6.     SECOND = 4
  7.  
  8.     #年月日
  9.     YEAR  = 9
  10.     MON   = 10
  11.     MDAY  = 11
  12.   end
  13. end
  14.  
  15.  
  16.  
  17.  
  18. module SAFX
  19.   module_function
  20.  
  21.   def to_param(a)
  22.     case a when Integer then "L" when String then "p" end
  23.   end
  24.  
  25.   def to_ptr(a)
  26.     case a  when Integer then a when String then [a].pack('p').unpack("L").first end
  27.   end
  28.  
  29.   def api(dll,func)
  30.     lambda{|*args|
  31.        Win32API.new(dll,func,args.map{|x|to_param(x)}, 'i').call(*args)
  32.     }
  33.   end
  34.  
  35.   def memread(addr, size)
  36.                         buf = "\0"*size
  37.                         api('Kernel32','RtlMoveMemory').call buf, addr, size
  38.                         buf
  39.         end
  40. end
  41.  
  42. module ReadTime
  43.  
  44.  
  45.  
  46.   class << self
  47.     TYPE_VOIDP = "L"
  48.     PTRLEN = 4
  49.     include SAFX
  50.     extend SAFX
  51.     %w[gethostbyname socket connect send recv closesocket].each{|name|
  52.        define_method(name, &api('ws2_32', name))
  53.     }
  54.     api('ws2_32', 'WSAStartup').call 0x202, "\0"*2048
  55.  
  56.     def get
  57.         # get IP
  58.         baidu =  gethostbyname("open.baidu.com\0")
  59.         raise "不能ping到open.baidu.com" if baidu == 0
  60.         addr = memread(baidu+PTRLEN*3, PTRLEN)
  61.                                 addr = addr.unpack(TYPE_VOIDP).first
  62.                                 addr = memread(addr, PTRLEN)
  63.                                 addr = addr.unpack(TYPE_VOIDP).first
  64.                                 addr = memread(addr, PTRLEN)
  65.                                 u = addr.unpack("L").first
  66.  
  67.         #setup TCP
  68.         tcpclient = socket(2, 1, 6)
  69.         raise "无法初始化TCP" if tcpclient == -1
  70.         #connect
  71.         result = connect tcpclient, [2, 80, u].pack("SnLx8"), 16
  72.         raise "不能连接到open.baidu.com" if result == -1
  73.  
  74.         #make request
  75.         req = "GET /special/time/ HTTP/1.1\r\n"  <<
  76.               "host: open.baidu.com\r\n" <<
  77.               "\r\n" <<
  78.               "\r\n\r\n"
  79.         #send
  80.         send tcpclient, req, req.length, 0
  81.  
  82.         #receive
  83.         buf = "\0"*1024
  84.         ret = ""
  85.         while true
  86.           len = recv tcpclient, buf, buf.length, 0
  87.           break if len < 1
  88.           ret << buf[0, len]
  89.         end
  90.  
  91.         #shutdown
  92.         closesocket tcpclient
  93.  
  94.         ret = ret.unpack("C*").pack("C*")
  95.         number = ret[/HTTP\/1\.1 (\d+)/, 1].to_i
  96.  
  97.         if number != 200
  98.           raise "HTTP错误: #{number}"
  99.         end
  100.  
  101.  
  102.         #gettime
  103.         val = ret[/window\.baidu_time\((\d+)\)/, 1].to_i
  104.         if val == 0
  105.           raise "网络数据格式已变更,请联系作者"
  106.         end
  107.         curtime = Time.at val / 1000
  108.         $game_variables[ReadTime::Config::HOUR] = curtime.hour
  109.         $game_variables[ReadTime::Config::MINUTE] = curtime.min
  110.         $game_variables[ReadTime::Config::SECOND] = curtime.sec
  111.  
  112.         $game_variables[ReadTime::Config::YEAR] = curtime.year
  113.         $game_variables[ReadTime::Config::MDAY] = curtime.mday
  114.         $game_variables[ReadTime::Config::MON] = curtime.mon
  115.  
  116.      end
  117.   end
  118. end
  119.  
  120. def 获取时间
  121.   ReadTime.get
  122. end




把这个脚本插入到脚本Main之前,然后弄个事件,用事件的脚本功能,写上获取时间
这样1号和2号变量就变成百度时间了,1号是小时,2号是分钟
然后用个事件判断,如果1、2号变量到了一定的程度,就结束游戏
具体见范例吧


限制游戏试玩时间.rar (189.23 KB, 下载次数: 43)

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33497
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

9
发表于 2015-3-19 17:50:21 | 只看该作者
惊天动地 发表于 2015-3-19 15:48
可能是我的问题模糊,我想 最好能设定使用时间 ,但改电脑时间无效的那种,能做到吗?谢谢老师 ...

我给你的有设定时间啊,也许说得太含蓄了,LZ不能理解;
再一个,如果改电脑时间无效的话,就要获取网络时间;
第三个,最近在加紧填坑,较为费时间的东西你还是找其他老师吧。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
8
 楼主| 发表于 2015-3-19 15:48:08 | 只看该作者
芯☆淡茹水 发表于 2015-3-16 19:23
插入到脚本最上部,可调节里面的限制天数。

在游戏打包发给别人玩之前,或自己测试时  时限已到 ,

可能是我的问题模糊,我想 最好能设定使用时间 ,但改电脑时间无效的那种,能做到吗?谢谢老师

点评

你你就去找那位老师写入注册表嗒~  发表于 2015-3-19 17:40
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
7
 楼主| 发表于 2015-3-19 15:38:34 | 只看该作者
芯☆淡茹水 发表于 2015-3-16 19:23
插入到脚本最上部,可调节里面的限制天数。

在游戏打包发给别人玩之前,或自己测试时  时限已到 ,

有位老师说  写入注册表比较安全,怎样写入注册表呢? 谢谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
6
 楼主| 发表于 2015-3-16 20:33:53 | 只看该作者
芯☆淡茹水 发表于 2015-3-16 19:23
插入到脚本最上部,可调节里面的限制天数。

在游戏打包发给别人玩之前,或自己测试时  时限已到 ,

您好,我复制进去了,能打开,没报错, 我是脚本盲  ,别见笑, 比如说我设置1天后失效,或十分钟后失效,怎么改数字呢   在哪改呢?谢谢!万分感谢

点评

给你的脚本里,有“ 绿色 ”注释 前面的数字。  发表于 2015-3-16 20:53
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
5
 楼主| 发表于 2015-3-16 20:27:53 | 只看该作者
芯☆淡茹水 发表于 2015-3-16 19:23
插入到脚本最上部,可调节里面的限制天数。

在游戏打包发给别人玩之前,或自己测试时  时限已到 ,

老师你好
我游戏Data 里没有Timedata.rxdata    找了半天没看到啊   
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33497
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2015-3-16 19:23:46 | 只看该作者
本帖最后由 芯☆淡茹水 于 2015-3-16 19:27 编辑

插入到脚本最上部,可调节里面的限制天数。

在游戏打包发给别人玩之前,或自己测试时  时限已到 ,
可把 Data 文件夹下的 Timedata.rxdata 文件删掉。
  1. unless FileTest.exist?("Data/Timedata.rxdata")
  2.   f = File.open("Data/Timedata.rxdata", "wb")
  3.   time = Time.now
  4.   Marshal.dump(time, f)
  5.   f.close
  6. else
  7.   f = File.open("Data/Timedata.rxdata", "rb")
  8.   old_time = Marshal.load(f)
  9.   f.close
  10.   if Time.now - old_time >= 86400 #<= 秒。 86400 秒 = 1 天
  11.     p "使用时限已到!"
  12.     exit
  13.   end
  14. end
复制代码

点评

你说呢?==  发表于 2015-3-22 17:27
加密游戏在data里面创建文件貌似看不到吧···  发表于 2015-3-22 17:23
文件更好删除==  发表于 2015-3-22 17:15
注册表可清除  发表于 2015-3-22 12:36
写入注册表比较安全吧==  发表于 2015-3-17 08:16

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
3
 楼主| 发表于 2015-3-16 18:49:07 | 只看该作者
是发错了  可我改不回来了 ,麻烦您告诉我 这个问题怎么弄好吗  ?千恩万谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-30 06:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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