查看: 4272|回复: 2

[随意闲聊] vx帧数党的福音,vx使用rgss3运行库,亲测可用

[复制链接]
梦石
0
星屑
50
在线时间
8 小时
注册时间
2008-5-6
回帖
5
发表于 2013-2-22 11:28:44 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 白加黑 于 2013-2-22 12:13 编辑

原帖地址:
ht该死的“新手”限制,权限你妹! tp://forums.rpgmakerweb.com/index.php?/topic/3114-updated-using-rgss3-with-rpg-maker-vx/

va的好处不用多说了,速度快效率高,分辨率解放,等同于vx的改良版,但是固守vx的玩家也很多,主要就是自己所用的游戏脚本系统没有替代品(+1),亦或是素材地图是vx格式无法移植
此方法可以在不破坏游戏文件夹结构的同时让你的游戏轻松搞到120fps,1024*768,请严格按照下面方法执行(第五步除外),执行前备份游戏文件夹
原帖提供的两段代码需要翻墙,特此予以转载
[pre lang="ruby" line="1"]    #===============================================================================
    #         RAFAEL_SOL_MAKER's RGSS2 DATA STRUCTURE FOR ACE (BETA)
    #     SLIM VERSION: LESS 542 LINES IF COMPARED WITH THE PREVIOUS VERSION
    #_______________________________________________________________________________
    #   Description  | It's simply part of the RPG Module Data Structure, extracted
    #                | originally from RPG Maker VX Help file. This version is
    #                | tweaked and intended to run only with the RGSS3 game player.
    #________________|______________________________________________________________
    #     Usage      | Just plug it before any other scripts, including the ones
    #                | from default game engine. Yes, this will be the very first!
    #________________|______________________________________________________________
    # Specifications | Difficulty to Use:
    #                |  * (almost none at all, just plug it correctly)
    #                | Scripting Difficulty:
    #                |  * (few, it's only a data structure after all)
    #                | Compatibility:
    #                |  ??? (it's already made to create compatibility!)
    #                | New Methods:
    #                |  - (none, only old methods already made for RPG Module)
    #                | Overwritten Methods:
    #                |  - (depends on what are you using for)
    #                | Aliased Methods:
    #                |  - RPG::Actor.new
    #                |  - RPG::UsableItem.new
    #                |  - RPG::Skill.new
    #                |  - RPG::Item.new
    #                |  - RPG::EquipItem.new
    #                |  - RPG::Weapon.new
    #                |  - RPG::Enemy.new
    #                |  - RPG::Troop.new
    #                |  - RPG::State.new
    #                |  - RPG::System.new
    #                |  - RPG::System::TestBattler.new
    #________________|______________________________________________________________
    # Special Thanks | -
    #________________|______________________________________________________________
    #===============================================================================
     
    module RPG
      class Area
        def initialize
          @id = 0
          @name = ""
          @map_id = 0
          @rect = Rect.new(0,0,0,0)
          @encounter_list = []
          @order = 0
        end
        attr_accessor :id
        attr_accessor :name
        attr_accessor :map_id
        attr_accessor :rect
        attr_accessor :encounter_list
        attr_accessor :order
      end  
     
      class Actor
          alias rgss2to3_initialize initialize
          def initialize
            rgss2to3_initialize
          @id = 0
          @name = ""
          @exp_basis = 25
          @exp_inflation = 35
          @parameters = Table.new(6,100)
          for i in 1..99
            @parameters[0,i] = 400+i*50
            @parameters[1,i] = 80+i*10
            @parameters[2,i] = 15+i*5/4
            @parameters[3,i] = 15+i*5/4
            @parameters[4,i] = 20+i*5/2
            @parameters[5,i] = 20+i*5/2
          end
          @weapon_id = 0
          @armor1_id = 0
          @armor2_id = 0
          @armor3_id = 0
          @armor4_id = 0
          @two_swords_style = false
          @fix_equipment = false
          @auto_battle = false
          @super_guard = false
          @pharmacology = false
          @critical_bonus = false
        end
        attr_accessor :id
        attr_accessor :name
        attr_accessor :exp_basis
        attr_accessor :exp_inflation
        attr_accessor :parameters
        attr_accessor :weapon_id
        attr_accessor :armor1_id
        attr_accessor :armor2_id
        attr_accessor :armor3_id
        attr_accessor :armor4_id
        attr_accessor :two_swords_style
        attr_accessor :fix_equipment
        attr_accessor :auto_battle
        attr_accessor :super_guard
        attr_accessor :pharmacology
        attr_accessor :critical_bonus
      end
     
      class Class
        def initialize
          @id = 0
          @name = ""
          @position = 0
          @weapon_set = []
          @armor_set = []
          @element_ranks = Table.new(1)
          @state_ranks = Table.new(1)
          @learnings = []
          @skill_name_valid = false
          @skill_name = ""
        end
        attr_accessor :id
        attr_accessor :name
        attr_accessor :position
        attr_accessor :weapon_set
        attr_accessor :armor_set
        attr_accessor :element_ranks
        attr_accessor :state_ranks
        attr_accessor :learnings
        attr_accessor :skill_name_valid
        attr_accessor :skill_name
      end
     
      class UsableItem < BaseItem
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          super
          @common_event_id = 0
          @base_damage = 0
          @variance = 20
          @atk_f = 0
          @spi_f = 0
          @physical_attack = false
          @damage_to_mp = false
          @absorb_damage = false
          @ignore_defense = false
          @element_set = []
          @plus_state_set = []
          @minus_state_set = []
        end
        def for_one? # Overwrite: +4
          return [1, 3, 4, 7, 9, 11].include?(@scope)
        end
        def for_two?
          return [5].include?(@scope)
        end
        def for_three?
          return [6].include?(@scope)
        end
        def for_random? # Overwrite: -3
          return [4, 5, 6].include?(@scope)
        end
        def dual?
          return [3].include?(@scope)
        end
        def need_selection? # Overwrite: +3
          return [1, 3, 7, 9].include?(@scope)
        end
        attr_accessor :common_event_id
        attr_accessor :base_damage
        attr_accessor :variance
        attr_accessor :atk_f
        attr_accessor :spi_f
        attr_accessor :physical_attack
        attr_accessor :damage_to_mp
        attr_accessor :absorb_damage
        attr_accessor :ignore_defense
        attr_accessor :element_set
        attr_accessor :plus_state_set
        attr_accessor :minus_state_set
      end
     
      class Skill < UsableItem
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          super
          @hit = 100
        end
        attr_accessor :hit
      end
     
      class Item < UsableItem
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          super
          @hp_recovery_rate = 0
          @hp_recovery = 0
          @mp_recovery_rate = 0
          @mp_recovery = 0
          @parameter_type = 0
          @parameter_points = 0
        end
        attr_accessor :hp_recovery_rate
        attr_accessor :hp_recovery
        attr_accessor :mp_recovery_rate
        attr_accessor :mp_recovery
        attr_accessor :parameter_type
        attr_accessor :parameter_points
      end
     
      class EquipItem  < BaseItem  
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          super
          @atk = 0
          @def = 0
          @spi = 0
          @agi = 0
          @element_set = []
          @state_set = []
        end   
        attr_accessor :atk
        attr_accessor :def
        attr_accessor :spi
        attr_accessor :agi
        attr_accessor :element_set
        attr_accessor :state_set
      end
     
      class Weapon < EquipItem  
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          super
          @hit = 95
          @two_handed = false
          @fast_attack = false
          @dual_attack = false
          @critical_bonus = false
        end   
        attr_accessor :hit
        attr_accessor :two_handed
        attr_accessor :fast_attack
        attr_accessor :dual_attack
        attr_accessor :critical_bonus
      end
     
      class Armor < EquipItem
        def initialize
          super
          @kind = 0
          @eva = 0
          @prevent_critical = false
          @half_mp_cost = false
          @double_exp_gain = false
          @auto_hp_recover = false
        end   
        attr_accessor :kind
        attr_accessor :eva
        attr_accessor :prevent_critical
        attr_accessor :half_mp_cost
        attr_accessor :double_exp_gain
        attr_accessor :auto_hp_recover
      end
     
      class Enemy
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          @id = 0
          @name = ""
          @maxhp = 10
          @maxmp = 10
          @atk = 10
          @def = 10
          @spi = 10
          @agi = 10
          @hit = 95
          @eva = 5
          @drop_item1 = RPG::Enemy::DropItem.new
          @drop_item2 = RPG::Enemy::DropItem.new
          @levitate = false
          @has_critical = false
          @element_ranks = Table.new(1)
          @state_ranks = Table.new(1)
          @note = ""
        end
        attr_accessor :id
        attr_accessor :name
        attr_accessor :maxhp
        attr_accessor :maxmp
        attr_accessor :atk
        attr_accessor :def
        attr_accessor :spi
        attr_accessor :agi
        attr_accessor :hit
        attr_accessor :eva
        attr_accessor :drop_item1
        attr_accessor :drop_item2
        attr_accessor :levitate
        attr_accessor :has_critical
        attr_accessor :element_ranks
        attr_accessor :state_ranks
        attr_accessor :note
      
        class DropItem
          def initialize
            @kind = 0
            @item_id = 1
            @weapon_id = 1
            @armor_id = 1
            @denominator = 1
          end
          attr_accessor :kind
          attr_accessor :item_id
          attr_accessor :weapon_id
          attr_accessor :armor_id
          attr_accessor :denominator
        end
      
        class Action
          def initialize
            @kind = 0
            @basic = 0
            @skill_id = 1
            @condition_type = 0
            @condition_param1 = 0
            @condition_param2 = 0
            @rating = 5
          end
          def skill?
            return @kind == 1
          end
          attr_accessor :kind
          attr_accessor :basic
          attr_accessor :skill_id
          attr_accessor :condition_type
          attr_accessor :condition_param1
          attr_accessor :condition_param2
          attr_accessor :rating
        end
      end
     
      class Troop
        class Member
          alias rgss2to3_initialize initialize
          def initialize
            rgss2to3_initialize
            @immortal = false
          end
          attr_accessor :immortal
        end
      end
     
      class State
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          @id = 0
          @name = ""
          @icon_index = 0
          @priority = 5 # Overwrite: 5 instead 50
          @atk_rate = 100
          @def_rate = 100
          @spi_rate = 100
          @agi_rate = 100
          @nonresistance = false
          @offset_by_opposite = false
          @slip_damage = false
          @reduce_hit_ratio = false
          @battle_only = true
          @release_by_damage = false
          @hold_turn = 0
          @auto_release_prob = 0
          @element_set = []
          @state_set = []
          @note = ""
        end
        attr_accessor :id
        attr_accessor :name
        attr_accessor :icon_index
        attr_accessor :atk_rate
        attr_accessor :def_rate
        attr_accessor :spi_rate
        attr_accessor :agi_rate
        attr_accessor :nonresistance
        attr_accessor :offset_by_opposite
        attr_accessor :slip_damage
        attr_accessor :reduce_hit_ratio
        attr_accessor :battle_only
        attr_accessor :release_by_damage
        attr_accessor :hold_turn
        attr_accessor :auto_release_prob
        attr_accessor :element_set
        attr_accessor :state_set
        attr_accessor :note   
      end
     
      class System
        alias rgss2to3_initialize initialize
        def initialize
          rgss2to3_initialize
          @passages = Table.new(8192)
        end
        attr_accessor :passages
      
        class Terms
          def initialize
            @level = ""
            @level_a = ""
            @hp = ""
            @hp_a = ""
            @mp = ""
            @mp_a = ""
            @atk = ""
            @def = ""
            @spi = ""
            @agi = ""
            @weapon = ""
            @armor1 = ""
            @armor2 = ""
            @armor3 = ""
            @armor4 = ""
            @weapon1 = ""
            @weapon2 = ""
            @attack = ""
            @skill = ""
            @guard = ""
            @item = ""
            @equip = ""
            @status = ""
            @save = ""
            @game_end = ""
            @fight = ""
            @escape = ""
            @new_game = ""
            @continue = ""
            @shutdown = ""
            @to_title = ""
            @cancel = ""
            @gold = ""
          end
          attr_accessor :level
          attr_accessor :level_a
          attr_accessor :hp
          attr_accessor :hp_a
          attr_accessor :mp
          attr_accessor :mp_a
          attr_accessor :atk
          attr_accessor :def
          attr_accessor :spi
          attr_accessor :agi
          attr_accessor :weapon
          attr_accessor :armor1
          attr_accessor :armor2
          attr_accessor :armor3
          attr_accessor :armor4
          attr_accessor :weapon1
          attr_accessor :weapon2
          attr_accessor :attack
          attr_accessor :skill
          attr_accessor :guard
          attr_accessor :item
          attr_accessor :equip
          attr_accessor :status
          attr_accessor :save
          attr_accessor :game_end
          attr_accessor :fight
          attr_accessor :escape
          attr_accessor :new_game
          attr_accessor :continue
          attr_accessor :shutdown
          attr_accessor :to_title
          attr_accessor :cancel
          attr_accessor :gold
      
          class TestBattler
            alias rgss2to3_initialize initialize
            def initialize
              rgss2to3_initialize
              @weapon_id = 0
              @armor1_id = 0
              @armor2_id = 0
              @armor3_id = 0
              @armor4_id = 0
            end
            attr_accessor :weapon_id
            attr_accessor :armor1_id
            attr_accessor :armor2_id
            attr_accessor :armor3_id
            attr_accessor :armor4_id
          end
        end
      end
    end
[/pre]

[pre lang="ruby" line="1"]    #===============================================================================
    #        RAFAEL_SOL_MAKER's RGSS2 TO RGSS3 FIXES(Work-in-Progress) v0.2
    #_______________________________________________________________________________
    #   Description  | Some fixes if you plan to put your Ace game to run on RGSS3.
    #                | It was proven it's not hard at all, and there are some
    #                | advantages, like a faster and better Ruby, improved Audio
    #                | classes, creation of bitmaps with more than 2048x2048 pixels,
    #                | using a exclusive (and coding flexible) layer to autoshadows,
    #                | and some other cool features.
    #________________|______________________________________________________________
    #     Usage      | Plug it above any custom scripts, below default engine ones.
    #________________|______________________________________________________________
    # Specifications | Difficulty to Use:
    #                |  * (almost none at all)
    #                | Scripting Difficulty:
    #                |  * * ½ (I particularly don't recommend to edit it)
    #                | Compatibility:
    #                |  ??? (it's already made to create compatibility!)
    #                | New Methods:
    #                |  - Tilemap.passages
    #                | Overwritten Methods:
    #                |  - (none)
    #                | Aliased Methods:
    #                |  - Game_Map.setup
    #                |  - Window_Base.initialize
    #                |  - Spriteset_Map.create_tilemap
    #________________|______________________________________________________________
    #  Known Issues  | This is a W.I.P. version, so, it's expected to be incomplete.
    #                | Probably with more tests some problems and bugs can appear...
    #________________|______________________________________________________________
    # Special Thanks | Migetman12
    #________________|______________________________________________________________
    #===============================================================================
     
     
    #===============================================================================
    #   Tilemap Fix  | Well, it's surprising that only it's needed to fix Tilemap!
    #________________|______________________________________________________________
    #===============================================================================
    class Tilemap
      def passages=(value)
        @passages = value
      end  
    end
     
    #===============================================================================
    # Autoshadow Fix | Here let's use the RGSS3 fourth Tilemap layer to do it
    #________________|______________________________________________________________
    #===============================================================================
    class Game_Map
      alias __setup setup
      def setup(map_id)   
        __setup(map_id)
        __data = data   
        __data.resize(__data.xsize,  __data.xsize, 4)
        for x in 0...(__data.xsize - 1)
          for y in 0...(__data.ysize - 1)  
            if __data[x, y, 0] >= 4352 && __data[x, y + 1 ,0] >= 4352 &&
            __data[x + 1, y + 1, 0] < 4352
                      # If you dont want to use autoshadows, change the 5 below to 0
              __data[x + 1, y + 1, 3] = 5
            end        
          end
        end
      end  
    end
     
    #===============================================================================
    # Window Padding | Only changing its default from 12 to 16
    #________________|______________________________________________________________
    #===============================================================================
    class Window_Base < Window
      alias __initialize initialize
      def initialize(x, y, width, height)
        __initialize(x, y, width, height)
        self.padding = 16
      end
    end
     
    #===============================================================================
    #  Tile Priority | To show some tiles above the hero correctly
    #________________|______________________________________________________________
    #===============================================================================
    class Spriteset_Map  
      alias __create_tilemap create_tilemap
      def create_tilemap
        __create_tilemap
        @tilemap.flags = $game_map.passages # $data_system.passages
      end
    end
[/pre]

使用方法:(我这里写的简略不明,最好查看原帖)
准备工作:安装va和vx,提取需要的文件及vx rtp,备份原来的工程,建议使用容错脚本
1.将你游戏中需要的所有素材拷贝到游戏文件夹内,最好包括rtp,新工程将不能识别系统默认的rtp位置(但是能识别va的)
2.拷贝rmva的game.exe(原来游戏的exe没用了)和rgss300.dll到游戏所在的文件夹中,将rmva的game.ini改名为Game_Ace.ini拷贝放入,请将game.ini和Game_Ace.ini中的“RTP=RPGVX”都改为“RTP=”以避免素材混乱
3.新建一个批处理文件,内容如下

@echo off
COPY Game_Ace.ini Game.ini
COPY Data\Scripts.rvdata Data\Scripts.rvdata2
START Game.exe
将此bat放在游戏根目录下

4.打开游戏,将最上面的两段代码插入到main上面,删除main并用以下代码替换原来的main
  1. rgss_main{
  2. Graphics.freeze
  3. Font.default_name = [ "SimHei", "黑体", "DFKai-SB", "標楷體", "Verdana"]#带注释的为转载者添加,恢复vx默认字体
  4. Graphics.resize_screen(640,480)#分辨率随意改~1024也能支持
  5. $scene = Scene_Title.new
  6. #Graphics.frame_rate = 120#这句看情况自行diy
  7. $scene.main while $scene != nil
  8. Graphics.transition(30)
  9. }
复制代码
5.删除你游戏所在的文件夹并清空回收站,最好对游戏所在的硬盘进行完全擦除或低级格式化(这句是里人格写的,与作者和转载者无关)
6.关于改完后的工程:
  #那个bat文件的作用就是将你当前编辑好的脚本转化为rgss3可是别的脚本格式,外加重定位game.ini,再不修改脚本的情况下无需重复运行
  #在每次脚本修改后需要运行一次bat文件,以将脚本更新为rgss3所支持的格式,技术党可以将game.exe和bat打包成一个exe即可解决所有问题
  #使用的编辑工具依然是rmvx,兼容之前的vx脚本~
  #vx编辑器中直接测试游戏依然可用
7.作者说这个还只是beta版,有bug,不过经过测试,即使是极复杂的脚本系统也没有发现错误,万一出现bug,请诸位多从自己身上找原因,谢谢

评分

参与人数 2星屑 +18 收起 理由
summer92 + 6 我很赞同
sai90306 + 12 塞糖

查看全部评分

梦石
0
星屑
1547
在线时间
688 小时
注册时间
2009-11-11
回帖
2692
发表于 2013-3-19 07:12:39 | 显示全部楼层
好- -,VX效率好象比ACE高点

嘿。嘿。嘿
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部