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

Project1

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

[RMVX发布] 真·加载游戏

[复制链接]

Lv2.观梦者

傻♂逼

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

烫烫烫开拓者

跳转到指定楼层
1
发表于 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
星屑
50
在线时间
94 小时
注册时间
2010-2-23
帖子
14
2
发表于 2011-8-2 23:20:03 | 只看该作者
声明:
    本脚本不适用于99%的用户{:4_147:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
55 小时
注册时间
2009-8-30
帖子
449
3
发表于 2011-8-3 00:08:13 | 只看该作者
这是干啥的,真不好玩
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
341 小时
注册时间
2008-3-16
帖子
372

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

4
发表于 2011-8-3 00:21:27 | 只看该作者
这是下载啊下载 不是加载啊不是加载············

点评

加载不也是下载么?  发表于 2012-2-26 00:19

新浪微博求粉丝    http://weibo.com/foxzu
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

5
发表于 2011-8-3 02:07:51 | 只看该作者
这段HTTP的代码,最早好像是BB崽传进来的

点评

结果是谁写的就真无从考证了……(我记得我又一次看到过原作者了啊……)  发表于 2011-8-3 08:53
嗯,是的,当时还写过个更新程序,后来发现可以更新木马病毒神马的。。。。就没有再继续考虑。。。  发表于 2011-8-3 07:01
-.-
回复 支持 反对

使用道具 举报

乌有君
6
乌有君  发表于 2011-8-3 04:20:16
网速不给力,服务器不给力,否则偶们早就云游戏了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
帖子
3705
7
发表于 2011-8-3 08:41:14 | 只看该作者
还要服务器= =

点评

但是我没V开不了  发表于 2011-8-3 08:52
传说FTP可以用...........  发表于 2011-8-3 08:52
回复 支持 反对

使用道具 举报

Lv1.梦旅人

尽头

梦石
0
星屑
119
在线时间
278 小时
注册时间
2010-6-20
帖子
1280
8
发表于 2011-8-3 09:32:32 | 只看该作者
这是下载游戏数据= =...不是加载游戏数据..

点评

= =加载网络数据……  发表于 2011-8-3 09:41
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
145
在线时间
698 小时
注册时间
2009-11-15
帖子
538
9
发表于 2011-8-3 10:12:24 | 只看该作者
可以加载游戏数据吗?
考上三级了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
145
在线时间
1 小时
注册时间
2011-8-30
帖子
1
10
发表于 2011-8-30 13:14:15 | 只看该作者
加载的游戏数据是什么呀、
66 RPG 3.0
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-14 20:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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