查看: 3593|回复: 10

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

[复制链接]
梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
回帖
140
发表于 2015-3-16 16:33:19 | 显示全部楼层 |阅读模式

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

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

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

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

点评

再一个,电脑时间是可以改的.  发表于 2015-3-16 17:03
你發錯区了~  发表于 2015-3-16 17:03
可以,但是首先你要发对地方.  发表于 2015-3-16 17:02
梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
回帖
140
 楼主| 发表于 2015-3-16 17:04:29 | 显示全部楼层
那麻烦您给个范例行吗
回复

使用道具 举报

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
回帖
140
 楼主| 发表于 2015-3-16 18:49:07 | 显示全部楼层
是发错了  可我改不回来了 ,麻烦您告诉我 这个问题怎么弄好吗  ?千恩万谢
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 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 各类型脚本/插件定制
回复

使用道具 举报

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

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

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

使用道具 举报

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

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

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

点评

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

使用道具 举报

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

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

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

使用道具 举报

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

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

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

点评

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

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

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

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

使用道具 举报

梦石
0
星屑
400
在线时间
602 小时
注册时间
2014-5-8
回帖
602
发表于 2015-3-21 19:36:30 | 显示全部楼层
本帖最后由 布罗利 于 2015-3-21 19:53 编辑

需要获取百度的时间,这里用到一个脚本,至于作者嘛我也不知道是谁了,这个脚本收藏好长时间了,如果作者看到请理解
[pre lang="ruby"]module ReadTime
  module Config
    #小时,分钟,秒设置的变量编号
    HOUR   = 1
    MINUTE = 2
    SECOND = 4

    #年月日
    YEAR  = 9
    MON   = 10
    MDAY  = 11
  end
end




module SAFX
  module_function

  def to_param(a)
    case a when Integer then "L" when String then "p" end
  end

  def to_ptr(a)
    case a  when Integer then a when String then [a].pack('p').unpack("L").first end
  end

  def api(dll,func)
    lambda{|*args|
       Win32API.new(dll,func,args.map{|x|to_param(x)}, 'i').call(*args)
    }
  end

  def memread(addr, size)
                        buf = "\0"*size
                        api('Kernel32','RtlMoveMemory').call buf, addr, size
                        buf
        end
end

module ReadTime



  class << self
    TYPE_VOIDP = "L"
    PTRLEN = 4
    include SAFX
    extend SAFX
    %w[gethostbyname socket connect send recv closesocket].each{|name|
       define_method(name, &api('ws2_32', name))
    }
    api('ws2_32', 'WSAStartup').call 0x202, "\0"*2048

    def get
        # get IP
        baidu =  gethostbyname("open.baidu.com\0")
        raise "不能ping到open.baidu.com" if baidu == 0
        addr = memread(baidu+PTRLEN*3, PTRLEN)
                                addr = addr.unpack(TYPE_VOIDP).first
                                addr = memread(addr, PTRLEN)
                                addr = addr.unpack(TYPE_VOIDP).first
                                addr = memread(addr, PTRLEN)
                                u = addr.unpack("L").first

        #setup TCP
        tcpclient = socket(2, 1, 6)
        raise "无法初始化TCP" if tcpclient == -1
        #connect
        result = connect tcpclient, [2, 80, u].pack("SnLx8"), 16
        raise "不能连接到open.baidu.com" if result == -1

        #make request
        req = "GET /special/time/ HTTP/1.1\r\n"  <<
              "host: open.baidu.com\r\n" <<
              "\r\n" <<
              "\r\n\r\n"
        #send
        send tcpclient, req, req.length, 0

        #receive
        buf = "\0"*1024
        ret = ""
        while true
          len = recv tcpclient, buf, buf.length, 0
          break if len < 1
          ret << buf[0, len]
        end

        #shutdown
        closesocket tcpclient

        ret = ret.unpack("C*").pack("C*")
        number = ret[/HTTP\/1\.1 (\d+)/, 1].to_i

        if number != 200
          raise "HTTP错误: #{number}"
        end


        #gettime
        val = ret[/window\.baidu_time\((\d+)\)/, 1].to_i
        if val == 0
          raise "网络数据格式已变更,请联系作者"
        end
        curtime = Time.at val / 1000
        $game_variables[ReadTime::Config::HOUR] = curtime.hour
        $game_variables[ReadTime::Config::MINUTE] = curtime.min
        $game_variables[ReadTime::Config::SECOND] = curtime.sec

        $game_variables[ReadTime::Config::YEAR] = curtime.year
        $game_variables[ReadTime::Config::MDAY] = curtime.mday
        $game_variables[ReadTime::Config::MON] = curtime.mon

     end
  end
end

def 获取时间
  ReadTime.get
end
[/pre]



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


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

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部