Project1

标题: 如何设置联网后无法运行游戏 [打印本页]

作者: 楼主是我的女仆    时间: 2014-7-22 23:16
标题: 如何设置联网后无法运行游戏
正在填的新坑中有一些解题之类的不希望有人从网上找答案,所以希望能有一个脚本可以判定,联网之后不能打开游戏或者清除存档。
作者: 恐惧剑刃    时间: 2014-7-22 23:41
只要联网就不能游戏这还了得——

干脆生成一Time.now
如果答题的时间间隔过短就终止游戏
作者: 双黄连2_副本2    时间: 2014-7-23 00:04
人家玩你游戏还要特地关网?解密游戏太难的话没意思太简单的话就没人查答案,最要命的是别人一手拿手机查一手玩...
作者: 芯☆淡茹水    时间: 2014-7-23 08:28
就像LS所说,断网别人照样能查。
可以做一些智力小游戏,过关后才能进入下一场景。比如 R考场 的水晶游戏。
作者: wolves    时间: 2014-7-23 08:34
本帖最后由 wolves 于 2014-7-23 21:52 编辑

你非要弄的话我这儿有个脚本。
内容如下:
在所有脚本运行前面加入以下脚本
  1. if FileTest.exist?("logo.png")
  2.   File.delete("logo.png")
  3. end
复制代码
在main前加入以下脚本
  1. #==============================================================================
  2. # ★ Part.1 RMzas! RMODFS For Rmxp
  3. #------------------------------------------------------------------------------
  4. # Rock Man Zero Additions Studio Online Download File System
  5. #                                        Version 2012.10.08.01.SP4 By ML4455739
  6. #------------------------------------------------------------------------------
  7. # 使用这个系统,你能在你的游戏和服务器10s网速范围在线下载任意文件。
  8. # 如果加入Loading画面,便使边玩边下成为可能。感谢亿万星辰提供基础代码。
  9. #==============================================================================
  10. =begin

  11. 说明:
  12.   1. 本系统几乎无冲突可能,注册了RWA的用户可完美兼容RMzas的在线更新系统。
  13.   2. 使用本系统前,你的本地计算机需要连接到互联网,同时配备一个服务器。
  14.   3. 从59行开始直到100行,就是请您自定义的设置。
  15.   4. 不需要66RPG头像获取的,左拐删除地址补正脚本。
  16.   
  17. 方法:
  18.   一,在线下载图片: 下载而来的文件放入指定的Graphics/子文件夹
  19.     事件脚本:g_dl("图像文件夹子文件夹名","文件名.jpg")
  20.     例子:    g_dl("Autotiles","007-G_Undulation01.png")
  21.               g_dl("Pictures","Dash.png")
  22.               
  23.   二,在线下载音乐: 下载而来的文件放入指定的Audio/子文件夹
  24.     事件脚本:a_dl("音乐文件类型名","文件名.mid")
  25.     例子:    a_dl("BGM","057-Negative06.mid")
  26.               a_dl("SE","movesnd.ogg")
  27.               
  28.   三,在线下载文件: 下载而来的文件放入路径,无路径则在主目录下
  29.     事件脚本:f_dl("\文件夹名/文件名.xxx")
  30.     例子:    f_dl("news.txt")
  31.               f_dl("\Data/rar/help.rar")
  32. 方法:
  33. Interpreter::GURL = "http://rpg.blue/static/image/common/"
  34. g_dl("Pictures","logo.png")
  35. 注意:
  36.   I.  虽然RM是有自动分辨后缀名的功能,但你的网络服务器没有,
  37.       使用事件脚本函数时,请注意写对后缀名,“/”也不能写成“\”,
  38.       如果文件下载成功却是无效文件,可能就是文件路径相关输入不正确。
  39.       非直链网盘等下载地址不固定的服务器无法应用本系统。请注意大小写。
  40.   
  41.   II. 下面这个函数可以用于判断文件是否存在,
  42.       显示、播放前判断一下,避免因不成功下载造成找不到文件报错。
  43.       if FileTest.exist?("\Graphics/Pictures/Zero.jpg")
  44.   
  45.   III.  超过10s未能下载下来的文件或弹出“脚本已备份”并退出,
  46.       被下载的文件建议不超过1000kb,请为低网速玩家着想。
  47.       当然,您可以通过其他的脚本来根除这个限制。
  48.   
  49.   IV. 该系统无法代替自动在线更新系统,不能对Data进行版本识别、替换。
  50.    
  51.   V.  该系统会大量消耗服务器的流量,建议图片、音乐、文件三向分流。
  52.       如果您使用范例中提供的服务器,我们不保证其稳定性。
  53.       
  54.   VI. 删除223行以下的Part.2脚本即可直接不显示任何提示。
  55.   
  56. =end

  57. class Interpreter
  58.   
  59.   # ·图片下载所用的服务器根目录网址,可以与音乐的一样
  60.   GURL = "http://rmzas.xp3.biz/"
  61.   # 这个地址可以通过Interpreter::GURL来修改
  62.   
  63.   # ·下载任务开始前弹出的提示,为空字符串则不显示
  64.   READ = ""
  65.   
  66.   # ·图片下载完成后弹出的提示,为空字符串则不显示
  67.   GDOK = ""
  68.   
  69.   # ·图片下载失败后弹出的提示,为空字符串则不显示
  70.   GDNO = ""
  71.   
  72.   # ·音乐下载所用的服务器根目录网址,可以与图片的一样
  73.   AURL = ""
  74.   # 这个地址可以通过Interpreter::AURL来修改
  75.   
  76.   # ·音乐下载完成后弹出的提示,为空字符串则不显示
  77.   ADOK = ""
  78.   
  79.   # ·音乐下载失败后弹出的提示,为空字符串则不显示
  80.   ADNO = ""
  81.   
  82.   # ·文件下载所用的服务器根目录网址,可以与图片的一样
  83.   FURL = "http://rmzas.xp3.biz/"
  84.   # 这个地址可以通过Interpreter::FURL来修改
  85.   
  86.   # ·文件下载完成后弹出的提示,为空字符串则不显示
  87.   FDOK = ""
  88.   
  89.   # ·文件下载失败后弹出的提示,为空字符串则不显示
  90.   FDNO = ""

  91.   # ·即使同名文件已经存在本地也继续进行联网下载。(true/false)
  92.   UNEXIST = false
  93.   # 提示:如果网络上的文件内容有更新的话就可以更新的说,但流量..
  94.   
  95.   # ·因为API操作出现问题时是否退出游戏?(true/false)
  96.   EXIT = false
  97.   
  98.   # ·您是否希望能够得到RMzas工作室的后续支持?(true/false)
  99.   RWA_OK = true # 这可能会些微的占用您的内存,输入false,将取消注册到RMzas
  100.   
  101. #------------------------------------------------------------------------------
  102.     # RWA 赤翼社区脚本联盟 注册开始
  103.     if RWA_OK
  104.       $rwascript ||= {}
  105.       $rwascript["RMOLDownloadForXP"] = [121008.01]
  106.     end
  107.     # RWA 赤翼社区脚本联盟 注册结束
  108. #------------------------------------------------------------------------------

  109.   def rwa_chain_api
  110.     return if !RWA_OK
  111.     unless $rwascript.include?("RMOnlineUpdate")
  112.       @@shellexecute = Win32API.new('urlmon.dll', 'URLDownloadToFileA',
  113.                                               '%w(l p p l l)', 'l')
  114.     end
  115.   end
  116.         
  117.   def g_dl(path, picname)
  118.     dl_process(path, picname, type = "Graphics")
  119.   end
  120.    
  121.   def a_dl(path, sndname)
  122.     dl_process(path, sndname, type = "Audio")
  123.   end
  124.    
  125.   def f_dl(filename)
  126.     path = nil
  127.     dl_process(path, filename, type = "File")
  128.   end

  129.   def dl_process(path, name, type)
  130.     Scene_Map.new.text_show(READ) if $rwascript.include?("RmIMapTextSForXP")
  131.     if !need_download?(path, name, type)
  132.        # 无需下载
  133.     else
  134.       if !get_file_root(path, name, type)
  135.         $scene = nil if EXIT
  136.       else
  137.         Graphics.update
  138.         if !download_full(type)
  139.           $scene = nil if EXIT
  140.         else
  141.           @@dl_into = true
  142.           chain_printer_imts(type)
  143.         end # if !download_fun
  144.       end # if !get_file_root
  145.     end # if !need_download?
  146.   end # def
  147.   
  148.   def need_download?(path, name, type)
  149.     return true if UNEXIST
  150.       if type == "Graphics"
  151.         judge = FileTest.exist?("\Graphics/#{path}/#{name}")
  152.       elsif type == "Audio"
  153.         judge = FileTest.exist?("\Audio/#{path}/#{name}")
  154.       else
  155.         judge = FileTest.exist?("#{name}")
  156.       end
  157.     return (judge ? false : true)
  158.   end

  159.   def get_file_root(path, name, type)
  160.     if type == "Graphics"
  161.       @file_root = ["\Graphics/#{path}/#{name}"]
  162.     elsif type == "Audio"
  163.       @file_root = ["\Audio/#{path}/#{name}"]
  164.     else
  165.       @file_root = ["#{name}"]
  166.     end # if type
  167.     @download_listed = []
  168.     rwa_chain_api if RWA_OK
  169.     return true
  170.   end

  171.   def download_full(type)
  172.     for file in @file_root
  173.       name = file;      file = file.split("/")
  174.       url = file[file.size - 1]
  175.       if type == "Graphics"
  176.         url = "#{GURL}" + "#{url}"
  177.       elsif type == "Audio"
  178.         url = "#{AURL}" + "#{url}"
  179.       else
  180.         url = "#{FURL}" + "#{url}"
  181.       end
  182.       if not $rwascript.include?("RMOnlineUpdate")
  183.         shell = @@shellexecute.call(0, url, name, 0, 0)
  184.       else
  185.         shell = $rwascript["RMOnlineUpdate"][1].call(0, url, name, 0, 0)
  186.       end
  187.       if shell != 0
  188.         @@dl_into = false
  189.         chain_printer_imts(type)
  190.         download_ok = false
  191.         return download_ok
  192.       else
  193.         @download_listed.push(file)
  194.       end # if shell != 0
  195.       download_ok = true
  196.     end # for
  197.   end # def

  198.   def chain_printer_imts(type)
  199.     if type == "Graphics"
  200.       @@dl_into ? mes = GDOK : mes = GDNO
  201.     elsif type == "Audio"
  202.       @@dl_into ? mes = ADOK : mes = ADNO
  203.     else
  204.       @@dl_into ? mes = FDOK : mes = FDNO
  205.     end # if type
  206.     if RWA_OK
  207.       if $rwascript.include?("RmIMapTextSForXP")
  208.         Scene_Map.new.text_show("#{mes}")
  209.       else
  210.         print mes if mes != ""
  211.       end
  212.     else
  213.       print mes if mes != ""
  214.     end # if RWA_OK
  215.   end # def

  216. end # class
  217. #==============================================================================
  218. # ★ Part.2 RMzas! IMTS For RMXP
  219. #------------------------------------------------------------------------------
  220. # Instant Map Text Show                           Version 2012.10.03.02 By imsy
  221. #------------------------------------------------------------------------------
  222. # Chain RMODFS  |  随手一写,此后是坑。
  223. #------------------------------------------------------------------------------
  224.     # RWA 赤翼社区脚本联盟 注册开始
  225. #    if Interpreter::RWA_OK
  226. #      $rwascript ||= {}
  227. #      $rwascript["RmIMapTextSForXP"] = [121003.02]
  228. #    end
  229.     # RWA 赤翼社区脚本联盟 注册结束
  230. #------------------------------------------------------------------------------
  231. #class Scene_Map
  232.   
  233. #  def text_show(d)
  234. #    return if d == ""
  235. #    $imts ||= []
  236. #    $imts[1] ||= 0
  237. #    $imts[1] += 1
  238. #    $imts[0] = Sprite.new
  239. #    $imts[0].bitmap = Bitmap.new(640,480)
  240. #    $imts[0].x = 435
  241. #    $imts[0].y = 5 + $imts[1] * 20
  242. #    $imts[1] = 0 if $imts[0].y > 450
  243. #    $imts[0].z = 5000
  244. #    $imts[0].bitmap.font.name = "黑体"
  245. #    $imts[0].bitmap.font.bold = true
  246. #    $imts[0].bitmap.font.size = 16
  247. #    $imts[0].bitmap.draw_text(0, 0, 220, 25, d, 1)
  248. #  end
  249.   
  250. #  alias text_show_renew update
  251. #  def update
  252. #    text_show_renew
  253. #    return if $imts.class != Array
  254. #    return if $imts[0].class != Sprite
  255. #    return if $imts[0].disposed?
  256. #    $imts[0].update
  257. #    $imts[0].opacity -= 1
  258. #    $imts[0].dispose if $imts[0].opacity <= 0
  259. #  end
  260.   
  261. #end
复制代码
然后在游戏开始时候建立个事件插入以下脚本自动执行一次:
  1. Interpreter::FURL =
  2. "http://rpg.blue/static/image/common/"

  3. f_dl("""logo.png")
复制代码
  1. if FileTest.exist?("logo.png")
  2.   File.delete("logo.png")
  3.   exit
  4. end
复制代码

作者: 楼主是我的女仆    时间: 2014-7-23 10:06
wolves 发表于 2014-7-23 09:34
你非要弄的话我这儿有个脚本。
内容如下:然后在游戏开始时候建立个事件插入以下脚本自动执行一次: ...

这个完全不对我是要玩家只能在不联网的情况下才能打开游戏,你的是要联网才能打开游戏
作者: wolves    时间: 2014-7-23 21:44
本帖最后由 wolves 于 2014-7-23 21:53 编辑
楼主是我的女仆 发表于 2014-7-23 10:06
这个完全不对我是要玩家只能在不联网的情况下才能打开游戏,你的是要联网才能打开游戏 ...


联网了的话就存在logo.png了,就满足条件就exit了。
第一段脚本有两种可能
1.存在logo.png 即下载成功
2.不存在logo.png 即下载失败
第二段脚本对logo.png是否存在进行判定
如果存在,证明联网了,那么就exit
如果不存在,证明没联网,那么就继续游戏。
作者: 楼主是我的女仆    时间: 2014-7-23 22:35
wolves 发表于 2014-7-23 22:44
联网了的话就存在logo.png了,就满足条件就exit了。
第一段脚本有两种可能
1.存在logo.png 即下载成功

呃···我没太看明白而且也没有服务器之类的东西,那么这个脚本可以直接用?
作者: myownroc    时间: 2014-7-23 23:37
我完全可以用一台电脑单机玩,用另一台电脑上网查答案。
作者: 楼主是我的女仆    时间: 2014-7-24 00:29
myownroc 发表于 2014-7-24 00:37
我完全可以用一台电脑单机玩,用另一台电脑上网查答案。

确实可以,不过我不认为会有人为了作弊什么的开两台电脑,因为那样被人看到恐怕也会被人认为不正常吧?
作者: RyanBern    时间: 2014-7-24 09:26
LZ这个问题是病态的,所谓上有政策下有对策,你反作弊工作做得这样明显,势必要激发玩家的“逆反”情绪。即使不开两个电脑找,那么我就不能把游戏退了,记录下问题之后联网找答案么?LZ玩游戏好歹玩了很久吧,你见过哪个游戏为了防止玩家搜攻略然后就只能在断网的环境下玩么?那些知名的解题游戏,我想难度也不见得比LZ自己弄的要简单吧。游戏应该难住玩家是不假,但是如果真的发生卡关情况的话,你的第一反应是不是“到网上找攻略”?如果是,你自己都这样想,为何要强制别人不允许找答案呢?如果不是,游戏长时间卡在一个地方过不去,恐怕你的游戏也要被“回收站一日游”了。这是每个游戏作者都不希望看到的事情吧。

好了,吐槽完毕。5L的脚本我看了,稍加改动应该满足要求。不过我再说一次,即使实现了LZ的效果,也没有任何意义。如果再这样争执下去,本人只有强行结贴&&锁帖了。
作者: 楼主是我的女仆    时间: 2014-7-24 11:48
RyanBern 发表于 2014-7-24 10:26
LZ这个问题是病态的,所谓上有政策下有对策,你反作弊工作做得这样明显,势必要激发玩家的“逆反”情绪。即 ...

你知道我填的坑是什么类型的游戏吗我只是觉得我做的那种类型的游戏只有少数人或者有些人偷懒的才会去作弊,这个主要是针对后者的
作者: 恐惧剑刃    时间: 2014-7-24 12:19
本帖最后由 恐惧剑刃 于 2014-7-24 12:49 编辑

首先需要慎重的告诉你RPG游戏的通关率很低~再由于RM游戏质量整体偏低,所以能玩RM游戏的人就更少。
现在你还不让人联网,要把最后一点玩家也要赶跑吗?

你说人为了玩你的游戏连QQ都不上…………这得有多爱啊~你确定你的游戏质量能有如此之高,如果不能——这不是逼玩家delete么


或许你应该改个标题  比如
怎么用API判断本机的联网状态

百度搜索InternetGetConnectedState函数是可以判断联网状态的~召唤API大神~

另外,像《梦幻西游2》我玩科举的时候就一直问梦幻精灵
你看看人家的商业游戏,直接告诉你答案……




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