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

Project1

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

[RMVX发布] 真·加载游戏

[复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
发表于 2011-8-2 22:39:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
声明:
    本脚本不适用于99%的用户
作用:
    通过网络按需下载RTP数据
要求:
    你得有个服务器= =,虽然6R的ftp似乎可以起到相同的效果,不过你嘚想好,6r的ftp不支持建立目录<-渣渣
更新:
  1.0.0 120
使用HTTP协议,不支持CRC校验
效果:
  不用再费力的脱离RTP了……你弄不干净的,基础下载量小
使用方法:
    找个空间,把X:\Program Files (x86)\RPG Maker VX\RGSS2
下的Audio和Graphics传上去(也可以把你的一些其他素材也传上去
!注意!
你需要把所有的扩展名改成rxd,或许你可以试试:
rename *.* *.rxd
另外确保您在游戏中没有使用XXX.xxx这样的调用(在RM里面会自动识别扩展名的)
另外对Graphics.transition的渐变图完全不支持,请不要尝试使用。另外您可以把一些教常用也较大的数据放在游戏里而不必上传……:)

图片

代码:
HTTP(请注意这段代码的版权信息,虽然我也不知道原作者是谁= =
  1. class Get_Http_Info

  2.   AGENT = "66RPG Jail"
  3.   INTERNET_OPEN_TYPE_PRECONFIG = 0 # IEの設定を仕様
  4.   INTERNET_OPEN_TYPE_DIRECT = 1 # プロキシを使用しない
  5.   def Get_Http_Info.InternetOpen()
  6.     io = Win32API.new('wininet', 'InternetOpen', %(p, l, p, p, l), 'l')
  7.     hInternet = io.call(AGENT, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
  8.     return hInternet
  9.   end

  10.   def Get_Http_Info.InternetOpenUrl(hSession, url)
  11.     iou = Win32API.new('wininet', 'InternetOpenUrl', %(l, p, p, l, l, l), 'l')
  12.     hService = iou.call(hSession, url, nil, 0, 0, 0)
  13.     return hService
  14.   end

  15.   def Get_Http_Info.InternetReadFile(hService)
  16.     content = ""
  17.     read_size = 1024 # 一次读入文件的尺寸
  18.     irf = Win32API.new('wininet', 'InternetReadFile', %(l, p, i, p), 'i')
  19.     while(true)
  20.       buf = "\0" * read_size
  21.       red = [0].pack('L')
  22.       irf.call( hService, buf, read_size, red )
  23.       if(red.unpack('L') == [0])
  24.       #读到文件末端
  25.         break
  26.       end
  27.       buf.delete!("\0")
  28.       content += buf
  29.     end

  30.     return content
  31.   end
  32.   def Get_Http_Info.NewInternetReadFile(hService,length,cb,f)
  33.   
  34.     content = ""
  35.     read_size = 1024 # 一次读入文件的尺寸
  36.     irf = Win32API.new('wininet', 'InternetReadFile', %(l, p, i, p), 'i')
  37.     id=1
  38.     cb.call(0,length)
  39.     while(true)
  40.       buf = "\0" * read_size
  41.       red = [0].pack('L')
  42.       irf.call( hService, buf, read_size, red )
  43.       #buf.delete!("\0")
  44.       f.write(buf)
  45.       cb.call(id*read_size,length)
  46.       
  47.       if(red.unpack('L') == [0])
  48.       #读到文件末端
  49.         break
  50.       end
  51.       #buf.delete!("\0")
  52.       #content += buf
  53.       id+=1
  54.     end
  55.    
  56.     return content
  57.    
  58.    
  59.   end


  60.   HTTP_QUERY_STATUS_CODE = 19
  61.   CONTENT_LENGTH=5
  62.   def Get_Http_Info.HttpQueryInfo(hService)
  63.     read_size = 1024
  64.     buf = "\0" * read_size
  65.     red = [read_size-1].pack('L')
  66.     hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  67.     isOk = hqi.call( hService, HTTP_QUERY_STATUS_CODE, buf, red, nil)
  68.     buf.delete!("\0")
  69.     return buf
  70.   end
  71.   def Get_Http_Info.HttpQuerySize(hService)
  72.     read_size = 1024
  73.     buf = "\0" * read_size
  74.     red = [read_size-1].pack('L')
  75.     hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  76.     isOk = hqi.call( hService, CONTENT_LENGTH, buf, red, nil)
  77.     buf.delete!("\0")
  78.     return buf
  79.   end
  80.   def Get_Http_Info.InternetCloseHandle(hInternet)
  81.     ich = Win32API.new('winInet', 'InternetCloseHandle', %(l), 'i')
  82.     isOk = ich.call(hInternet)
  83.     return isOk
  84.   end

  85.   HTTP_CODE_OK = "200"

  86.   def Get_Http_Info.get_info(url)
  87.     info = nil
  88.     begin
  89.       hInternet = InternetOpen()
  90.       if(hInternet != 0)
  91.         hService = InternetOpenUrl(hInternet, url)
  92.         if(hService != 0)
  93.           status_code = HttpQueryInfo(hService)
  94.           if(status_code == HTTP_CODE_OK)
  95.             info = InternetReadFile(hService)
  96.           end
  97.           InternetCloseHandle(hService)
  98.         end
  99.         InternetCloseHandle(hInternet)
  100.       end
  101.     rescue
  102.       # 例外发生
  103.       return ""
  104.     end

  105.     ary = []

  106.     info.each_line do |line|
  107.     next if line.empty?
  108.       ary.push line
  109.     end

  110.     return ary[271].scan(/\w+<\/a>/)

  111.   end


  112.   def Get_Http_Info.get_html(url)
  113.     info = nil
  114.     begin
  115.       hInternet = InternetOpen()
  116.       if(hInternet != 0)
  117.         hService = InternetOpenUrl(hInternet, url)
  118.         if(hService != 0)
  119.           status_code = HttpQueryInfo(hService)
  120.           if(status_code == HTTP_CODE_OK)
  121.             info = InternetReadFile(hService)
  122.           end
  123.           InternetCloseHandle(hService)
  124.         end
  125.         InternetCloseHandle(hInternet)
  126.       end
  127.     rescue
  128.       # 例外发生
  129.       return ""
  130.     end
  131.     return info
  132.   end
  133.   def Get_Http_Info.down_load(url,save,cb,fn)
  134.     info = nil
  135.     begin
  136.       
  137.       hInternet = InternetOpen()
  138.       if(hInternet != 0)
  139.         hService = InternetOpenUrl(hInternet, url)
  140.         if(hService != 0)
  141.           status_code = HttpQueryInfo(hService)
  142.           length=HttpQuerySize(hService).to_i
  143.           #p length
  144.           if(status_code == HTTP_CODE_OK)
  145.             f=File.open(fn,"wb")
  146.             info = NewInternetReadFile(hService,length,cb,f)
  147.             f.close
  148.           end
  149.           InternetCloseHandle(hService)
  150.         end
  151.         InternetCloseHandle(hInternet)
  152.       end
  153.     rescue
  154.       # 例外发生
  155.       return ""
  156.     end
  157.     return info
  158.   end
  159. end
  160. #$s=Sprite.new
  161. #$s.bitmap=Bitmap.new(544,24)
  162. #$s.bitmap.fill_rect(0,0,544,24,Color.new(255,255,255))

  163. #p Get_Http_Info.down_load("http://rpg.blue/thread-201129-1-1.html","",proc { |a,b|$s.bitmap.fill_rect(0,0,544*(a/b),24,Color.new(0,0,255)) ;Graphics.update})
复制代码
主程序
  1. unless $@ #和谐F12
  2.   #namespace Yangff
  3.   $Yangff={} if $Yangff.nil?
  4.   if not $Yangff["$WebCache"]
  5.     $Yangff["$WebCache"]="1.0.0 120"
  6.     module Yangff
  7.       module WebCache
  8.         V="1.0.0 120"
  9.         NV = "1.0.1 220"
  10.         FileURL="http://127.0.0.1:1108/RTP/"
  11.         CRC=false # in 1.0.1
  12.         begin
  13.           Width=Graphics.width
  14.           Height=Graphics.height
  15.           RPG="VX"
  16.         rescue
  17.           Width=640
  18.           Height=480
  19.           RPG="XP"
  20.         end
  21.         if CRC
  22.           raise "Sorry.We donot support CRC Check in V#{V} .You may find it in #{NV}"
  23.         end
  24.         def self.cache_file(urls)
  25.           if $Yangff["$WebCache$Background$Viewport"].nil?
  26.             $Yangff["$WebCache$Background$Viewport"]=Viewport.new(0,0,Width,Height)
  27.             $Yangff["$WebCache$Background$Viewport"].z=9999999
  28.             $Yangff["$WebCache$Background$Sprite"] = Sprite.new
  29.             $Yangff["$WebCache$Background$Sprite"].z=  9999900
  30.             $Yangff["$WebCache$Background$Sprite"].bitmap=Bitmap.new(Width,Height)
  31.             $Yangff["$WebCache$Background$Sprite"].bitmap.fill_rect(0,0,Width,Height,Color.new(0,0,0,100))
  32.             $Yangff["$WebCache$Background$Sprite"].viewport=$Yangff["$WebCache$Background$Viewport"]
  33.             $Yangff["$WebCache$Background$SpriteLoop"] = Sprite.new
  34.             $Yangff["$WebCache$Background$SpriteLoop"].viewport=$Yangff["$WebCache$Background$Viewport"]
  35.             $Yangff["$WebCache$Background$SpriteLoop"].z=  9999900
  36.             $Yangff["$WebCache$Background$SpriteLoop"].bitmap=Bitmap.new(Width,24)
  37.           end
  38.           o=Graphics.brightness
  39.           Graphics.transition(1)
  40.           Graphics.fadein(1)
  41.           $Yangff["$WebCache$Background$Viewport"].visible =true
  42.           #returns=[]
  43.           for url in urls
  44.             $Yangff["$WebCache$Background$SpriteLoop"].bitmap.fill_rect(0,0,Width,24,Color.new(255,255,255))
  45.             if not $WebCache[url] #returns
  46.               fn=rand(999999).to_s+rand(999999).to_s+rand(999999).to_s+rand(999999).to_s+rand(999999).to_s+rand(999999).to_s+".rxd"
  47.               $ts=Time.now
  48.               #f=File.open("Cache/#{fn}","wb")
  49.               Get_Http_Info.down_load("#{Yangff::WebCache::FileURL}#{url}.rxd","",proc { |a,b|$Yangff["$WebCache$Background$SpriteLoop"].bitmap.fill_rect(0,0,Width,24,Color.new(255,255,255));$Yangff["$WebCache$Background$SpriteLoop"].bitmap.fill_rect(0,0,Yangff::WebCache::Width*(a.to_f/b.to_f),24,Color.new(0,0,255)) ;str="Downloading #{url}... #{(a.to_f/b.to_f*100).to_i}%  Speed: #{(a.to_f/((Time.now-$ts)*1000)).to_i} k/s" ;rect=$Yangff["$WebCache$Background$SpriteLoop"].bitmap.text_size(str) ;$Yangff["$WebCache$Background$SpriteLoop"].bitmap.draw_text(rect,str,1) ;Graphics.update; Graphics.frame_reset
  50. },"Cache/#{fn}")
  51.               #f.close
  52.               $WebCache[url]="Cache/#{fn}"
  53.               save_data($WebCache,"Data/WebCache.rvdata")
  54.             end
  55.           end
  56.           $Yangff["$WebCache$Background$Viewport"].visible =false
  57.           Graphics.brightness=o
  58.         end
  59.       end
  60.     end
  61.     if not FileTest.directory?("Cache")
  62.       Dir.mkdir("Cache")
  63.       $WebCache={}
  64.     else
  65.       $WebCache=load_data("Data/WebCache.rvdata")
  66.     end
  67.     alias yangff_old_exit exit
  68.     def exit(*args)
  69.       save_data($WebCache,"Data/WebCache.rvdata")
  70.       yangff_old_exit(*args)
  71.     end
  72.     class Bitmap
  73.       alias yangff_old_initialize initialize
  74.       def initialize(*args)
  75.         if args.size>1
  76.           return yangff_old_initialize(*args)
  77.         else
  78.           begin
  79.             return yangff_old_initialize(*args)
  80.           rescue Errno::ENOENT
  81.             Yangff::WebCache.cache_file([args[0]])
  82.             return yangff_old_initialize($WebCache[args[0]])
  83.           end
  84.         end
  85.       end
  86.     end
  87.     class <<Audio
  88.       alias yangff_old_bgm_play bgm_play
  89.       alias yangff_old_bgs_play bgs_play
  90.       alias yangff_old_me_play me_play
  91.       alias yangff_old_se_play se_play
  92.       def bgm_play(*args)
  93.         begin
  94.           yangff_old_bgm_play(*args)
  95.         rescue Errno::ENOENT
  96.           Yangff::WebCache.cache_file([args[0]])
  97.           args[0]=$WebCache[args[0]]
  98.           yangff_old_bgm_play(*args)
  99.         end
  100.       end
  101.       def bgs_play(*args)
  102.         begin
  103.           yangff_old_bgs_play(*args)
  104.         rescue Errno::ENOENT
  105.           Yangff::WebCache.cache_file([args[0]])
  106.           args[0]=$WebCache[args[0]]
  107.           yangff_old_bgs_play(*args)
  108.         end
  109.       end
  110.       def me_play(*args)
  111.         begin
  112.           yangff_old_me_play(*args)
  113.         rescue Errno::ENOENT
  114.           Yangff::WebCache.cache_file([args[0]])
  115.           args[0]=$WebCache[args[0]]
  116.           yangff_old_me_play(*args)
  117.         end
  118.       end
  119.       def se_play(*args)
  120.         begin
  121.           yangff_old_se_play(*args)
  122.         rescue Errno::ENOENT
  123.           Yangff::WebCache.cache_file([args[0]])
  124.           args[0]=$WebCache[args[0]]
  125.           yangff_old_se_play(*args)
  126.         end
  127.       end
  128.       
  129.     end
  130.   end
  131. end
复制代码

评分

参与人数 1星屑 +2 收起 理由
574656549 + 2 网速不快的话,便是坑爹...

查看全部评分

哎呀,蛋疼什么的最有爱了

Lv1.梦旅人

梦石
0
星屑
39
在线时间
115 小时
注册时间
2012-1-23
帖子
103
20
发表于 2015-8-13 10:35:35 | 只看该作者
服务器用HFS搭建
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
756
在线时间
127 小时
注册时间
2013-2-16
帖子
428
19
发表于 2013-2-28 17:47:01 | 只看该作者
擦,你这还发布,不过我倒要研究研究,先抱回去看看!
小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA
回复 支持 反对

使用道具 举报

Lv1.梦旅人

匿·蹤

梦石
0
星屑
65
在线时间
99 小时
注册时间
2006-3-19
帖子
456
18
发表于 2013-2-24 06:19:40 | 只看该作者
咳咳,其实从这个我想到了暗黑3,主程序第53行save其实可以不写盘,直接用$WebCache来达到一系列的目的。那么这样子的话,就可以将一些关键数据,例如 敌人数据、物品数据等核心数据放在服务器上,验证注册后每次开启游戏,远程载入。咳咳,这个比较邪恶了。不过推荐柳大的新游戏《永夜幻想曲》可以考虑采用
卐忍 → 解忍 → 元忍 → 隐忍 → 卍忍 → 匿踪(最终)
完全退步到了卐忍阶段
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2012-3-4
帖子
66
17
发表于 2012-8-23 19:09:21 | 只看该作者
急需用这个啊- -,可是不知道使用方法,(ftp有)求教啊,怎么设置什么的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1257
在线时间
423 小时
注册时间
2011-6-30
帖子
497
16
发表于 2012-6-21 18:32:45 | 只看该作者
为用这个我还得去弄个服务器?
看来我是属于那99%的……
点这里给我发邮件
有事欢迎给我发邮件哟~~
不出意外的话都会回复的哟~~~
邮箱:[email protected]
个人主页:curatorjin.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-1-13
帖子
131
15
发表于 2012-3-4 19:57:29 | 只看该作者
在脚本直接改loading(http://xxx.xxx.xxx/xxx/xxx.xxx这样行不?
坑:


VX脚本;易语言龟速学习中ing。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

音速君

梦石
0
星屑
161
在线时间
1623 小时
注册时间
2011-6-9
帖子
3393

开拓者贵宾

14
发表于 2012-2-12 15:04:44 | 只看该作者
LS挖坟了
话说那重命名怎么回事?
Deartime
RMVA从零学起
【RMVA从零学起】【基础27课】数据库-系统
#2013年11月24日更新
偷懒了好久呢. .
于是最终还是决定暂时不写进阶教程了
先把这些基础的东西仔细说一下.w.
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
724
在线时间
918 小时
注册时间
2010-11-13
帖子
1023
13
发表于 2012-2-12 14:55:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

12
 楼主| 发表于 2011-9-11 10:25:48 | 只看该作者
一瞬间的幻觉 发表于 2011-9-11 05:12
这真不实用啊

脱离RTP比较方便而已……其他的似乎没什么用,不过我是用来加载用户自制素材的
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

11
发表于 2011-9-11 05:12:38 | 只看该作者
{:2_44:}这真不实用啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 23:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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