じ☆ve冰风 发表于 2026-7-6 20:16:47

Using RGSS3 with RPG Maker XP

Before I begin, I'd have to say Dargor deserves the credit for a lot of this. I used his tutorial and applied most of it in the process of giving RMXP the capabilities of RGSS3.

Introduction

We will be going through the steps on how to implement RGSS3 into RPG Maker XP. Implementing it of course will give you access to a lot of RGSS3's cool features. Let us begin.

In order to do this, you will need to have RPG Maker VX Ace in hand. Here, we will use RPG Maker VX Ace's RGSS301.dll and Game.exe.

Steps

Step 1: RTP

If you are using the default RTP, export all of it into your Game's Project folder. If you don't, this will come back to bite you later on in this tutorial.

Step 2: RGSS Library and Game.exe


[*]Copy and paste RGSS301.dll to your Game's Project folder and rename it RGSS104E.dll (or whatever your DLL file might be. Look in Game.ini if you aren't sure.)
[*]Replace the Game.exe in your project's folder with RPG Maker VX Ace's Game.exe

Step 3: Scripts


[*]RPG Objects
Open RPG Maker XP
[*]Open the Help Manual (F1)
[*]Open the Script Editor (F11)
[*]Copy all RPG objects from the Help Manual into the Script Editor. Make sure to put all of these scripts ABOVE everything else.
Note that RPG::MoveCommand has an error.
Here's how it looks in the manual:

      class MoveCommand(code = 0, parameters = [])
      def initialize
          @code = code
          @parameters = parameters
      end
      attr_accessor :code
      attr_accessor
arameters
      end
    end

                Code:        
module RPG

Here's how it should look:

      class MoveCommand
      def initialize(code = 0, parameters = [])
          @code = code
          @parameters = parameters
      end
      attr_accessor :code
      attr_accessor
arameters
      end
    end

                Code:        
module RPG

[*]Other Scripts
Some hidden classes such as Tilemap and Window have changed significantly to the point where it might not work anymore.
The most important thing to update is the Tilemap. Like Dargor, I'll also recommend Poccil's Tilemap script. It still works pretty well. Since I was only able to come across a text file of it on 4shared, I will share it here.   Spoilerattr_accessor :changed
def initialize
   @changed=true
   @tiles=
end
def []=(i,value)
   @tiles=value
   @changed=true
end
def [](i)
   return @tiles
end
end

class Tilemap
Animated_Autotiles_Frames = 15
Autotiles = [
    [ , [ 5, 28, 33, 34], , [ 5,6, 33, 34],
      , [ 5, 28, 33, 12], , [ 5,6, 33, 12] ],
    [ , [ 5, 28, 11, 34], , [ 5,6, 11, 34],
      , [ 5, 28, 11, 12], , [ 5,6, 11, 12] ],
    [ , , , ,
      , , , ],
    [ , , [ 5, 30, 35, 36], [ 5, 30, 11, 36],
      , [ 5, 40, 45, 46], , [ 5,6, 45, 46] ],
    [ , , , ,
      , , , [ 5, 42, 47, 48] ],
    [ , , , ,
      , , , [ 1,2,7,8] ]
]
FlashOpacity=
attr_reader :tileset
attr_reader :autotiles
attr_reader :map_data
attr_accessor :flash_data
attr_accessor
riorities
attr_reader :visible
attr_accessor
x
attr_accessor
y
attr_reader :viewport
def initialize(viewport)
    @tileset    = nil# Refers to Map Tileset Name
    @autotiles= CustomTilemapAutotiles.new
    @map_data   = nil# Refers to 3D Array Of Tile Settings
    @flash_data = nil# Refers to 3D Array of Tile Flashdata
    @priorities = nil# Refers to Tileset Priorities
    @visible    = true # Refers to Tileset Visibleness
    @ox         = 0    # Bitmap Offsets
    @oy         = 0    # bitmap Offsets
    @plane       = false
    @selfviewport=Viewport.new(0,0,640,480)
    @viewport=viewport ? viewport : @selfviewport
    @tiles=[]
    @autotileInfo=[]
    @regularTileInfo=[]
    @oldOx=0
    @oldOy=0
    @layer0=Sprite.new(viewport)
    @layer0.visible=true
    @nowshown=false
    @layer0.bitmap=Bitmap.new(@viewport.rect.width*2,@viewport.rect.height*2)
    @flash=nil
    @layer0.ox=0
    @layer0.oy=0
    @oxLayer0=0
    @oyLayer0=0
    @oxFlash=0
    @oyFlash=0
    @layer0.z=0
    @priotiles=[]
    @prioautotiles=[]
    @autosprites=[]
    @framecount=[]
    @tilesetChanged=true
    @flashChanged=false
    @firsttime=true
    @disposed=false
    @usedsprites=false
    @layer0clip=true
    @firsttimeflash=true
    @fullyrefreshed=false
    @fullyrefreshedautos=false
end
def disposed?
   return @disposed
end
def flash_data=(value)
   @flash_data=value
   @flashChanged=true   
end
def update
    if @autotiles.changed
      refresh_autotiles
      repaintAutotiles
    end
    if @flashChanged
      refresh_flash
    end
    if @tilesetChanged
      refresh_tileset
    end
    if @flash
   @flash.opacity=FlashOpacity[(Graphics.frame_count/2) % 6]
    end
    if !(@oldOx==@ox && @oldOy==@oy &&
         !@tilesetChanged &&
         !@autotiles.changed)
      refresh
    end
    if (Graphics.frame_count % Animated_Autotiles_Frames == 0) || @nowshown
      repaintAutotiles
      refresh(true)
    end
    @nowshown=false
    @autotiles.changed=false
    @tilesetChanged=false
end
def priorities=(value)
@priorities=value
@tilesetChanged=true
end
def tileset=(value)
@tileset=value
@tilesetChanged=true
end
def shown?
   return false if !@visible
   ysize=@map_data.ysize
   xsize=@map_data.xsize
   xStart=(@ox/32)-1
   xEnd=((@ox+@viewport.rect.width)/32)+1
   yStart=(@oy/32)-1
   yEnd=((@oy+@viewport.rect.height)/32)+1
   xStart=0 if xStart<0
   xStart=xsize-1 if xStart>=xsize
   xEnd=0 if xEnd<0
   xEnd=xsize-1 if xEnd>=xsize
   yStart=0 if yStart<0
   yStart=ysize-1 if yStart>=ysize
   yEnd=0 if yEnd<0
   yEnd=ysize-1 if yEnd>=ysize
   return (xStart<xEnd && yStart<yEnd)
end
def dispose
return if disposed?
@help.dispose if @help
@help=nil
i=0;len=@autotileInfo.length;while i<len
if @autotileInfo
   @autotileInfo.dispose
   @autotileInfo=nil
end
i+=1
end
i=0;len=@regularTileInfo.length;while i<len
if @regularTileInfo
   @regularTileInfo.dispose
   @regularTileInfo=nil
end
i+=1
end
i=0;len=@tiles.length;while i<len
@tiles.dispose
@tiles=nil
i+=2
end
i=0;len=@autosprites.length;while i<len
@autosprites.dispose
@autosprites=nil
i+=2
end
if @layer0
@layer0.bitmap.dispose if !@layer0.disposed?
@layer0.bitmap=nil if !@layer0.disposed?
@layer0.dispose
@layer0=nil
end
if @flash
@flash.bitmap.dispose if !@flash.disposed?
@flash.bitmap=nil if !@flash.disposed?
@flash.dispose
@flash=nil
end
for i in 0...7
self.autotiles=nil
end
@tiles.clear
@autosprites.clear
@autotileInfo.clear
@regularTileInfo.clear
@tilemap=nil
@tileset=nil
@priorities=nil
@selfviewport.dispose
@selfviewport=nil
@disposed=true
end

def bltAutotile(bitmap,x,y,id,frame)
return if frame<0
autotile=@autotiles
return if !autotile
if autotile.height==32
    anim=frame*32
    src_rect=Rect.new(anim,0,32,32)
    bitmap.blt(x,y,autotile,src_rect)
else
    anim=frame*96
    id%=48
    tiles = Autotiles
    src=Rect.new(0,0,0,0)
    for i in 0...4
      tile_position = tiles - 1
      src.set(tile_position % 6 * 16 + anim,
       tile_position / 6 * 16, 16, 16)
      bitmap.blt(i%2*16+x,i/2*16+y, autotile, src)
    end
end
end

def autotileNumFrames(id)
autotile=@autotiles
return 0 if !autotile || autotile.disposed?
frames=1
if autotile.height==32
   frames=autotile.width/32
else
   frames=autotile.width/96
end
return frames
end

def autotileFrame(id)
autotile=@autotiles
return -1 if !autotile || autotile.disposed?
frames=1
if autotile.height==32
   frames=autotile.width/32
else
   frames=autotile.width/96
end
return (Graphics.frame_count/Animated_Autotiles_Frames)%frames
end

def repaintAutotiles
for i in 0...@autotileInfo.length
next if !@autotileInfo
frame=autotileFrame(i)
bltAutotile(@autotileInfo,0,0,i,frame)
end
end

def getAutotile(sprite,id)
anim=autotileFrame(id)
return if anim<0
bitmap=@autotileInfo
if !bitmap
    bitmap=Bitmap.new(32,32)
    bltAutotile(bitmap,0,0,id,anim)
    @autotileInfo=bitmap
end
sprite.bitmap=bitmap if !sprite.equal?(bitmap) || sprite.bitmap!=bitmap
end

def getRegularTile(sprite,id)
if false
sprite.bitmap=@tileset if !sprite.equal?(@tileset) || sprite.bitmap!=@tileset
sprite.src_rect.set((id - 384) % 8 * 32, (id - 384) / 8 * 32,32,32)
else
bitmap=@regularTileInfo
if !bitmap
   bitmap=Bitmap.new(32,32)
   rect=Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32,32,32)
   bitmap.blt(0,0,@tileset,rect)
   @regularTileInfo=bitmap
end
sprite.bitmap=bitmap if !sprite.equal?(bitmap) || sprite.bitmap!=bitmap
end
end

def addTile(tiles,count,xpos,ypos,id)
   if id>=384
   if count>=tiles.length
      sprite=Sprite.new(@viewport)
      tiles.push(sprite,0)
   else
      sprite=tiles
      tiles=0
   end
   sprite.visible=@visible
   sprite.x=xpos
   sprite.y=ypos
   getRegularTile(sprite,id)
   spriteZ=(@priorities==0||!@priorities) ? 0 : ypos+@priorities*32+32
   sprite.z=spriteZ
   count+=2
   else
   if count>=tiles.length
      sprite=Sprite.new(@viewport)
      tiles.push(sprite,1)
   else
      sprite=tiles
      tiles=1
   end
   sprite.visible=@visible
   sprite.x=xpos
   sprite.y=ypos
   getAutotile(sprite,id)
   spriteZ=(@priorities==0||!@priorities) ? 0 : ypos+@priorities*32+32
   sprite.z=spriteZ
   count+=2
   end
   return count
end

def refresh_tileset
i=0;len=@regularTileInfo.length;while i<len
if @regularTileInfo
   @regularTileInfo.dispose
   @regularTileInfo=nil
end
i+=1
end
@regularTileInfo.clear
@priotiles.clear
ysize=@map_data.ysize
xsize=@map_data.xsize
zsize=@map_data.zsize
if xsize>100 || ysize>100
@fullyrefreshed=false
else
for z in 0...zsize
   for y in 0...ysize
    for x in 0...xsize
   id = @map_data
   next if id==0 || !@priorities
   next if @priorities==0
   @priotiles.push()
    end
   end
end
@fullyrefreshed=true
end
end

def refresh_flash
if @flash_data && !@flash
@flash=Sprite.new(viewport)
@flash.visible=true
@flash.z=1
@flash.blend_type=1
@flash.bitmap=Bitmap.new(@viewport.rect.width*2,@viewport.rect.height*2)
@firsttimeflash=true
elsif !@flash_data && @flash
@flash.bitmap.dispose if @flash.bitmap
@flash.dispose
@flash=nil
@firsttimeflash=false
end
end

def refresh_autotiles
i=0;len=@autotileInfo.length;while i<len
if @autotileInfo
   @autotileInfo.dispose
   @autotileInfo=nil
end
i+=1
end
i=0;len=@autosprites.length;while i<len
if @autosprites
   @autosprites.dispose
   @autosprites=nil
end
i+=2
end
@autosprites.clear
@autotileInfo.clear
@prioautotiles.clear
hasanimated=false
for i in 0...7
numframes=autotileNumFrames(48*(i+1))
hasanimated=true if numframes>=2
@framecount=numframes
end
if hasanimated
ysize=@map_data.ysize
xsize=@map_data.xsize
zsize=@map_data.zsize
if xsize>100 || ysize>100
    @fullyrefreshedautos=false
else
    for y in 0...ysize
   for x in 0...xsize
      haveautotile=false
      for z in 0...zsize
       id = @map_data
       next if id==0 || id>=384 || @priorities!=0 || !@priorities
       next if @framecount<2
       haveautotile=true
       break
      end
      @prioautotiles.push() if haveautotile
   end
    end
    @fullyrefreshedautos=true
end
else
@fullyrefreshedautos=true
end
end

def map_data=(value)
@map_data=value
@tilesetChanged=true
end

def refreshFlashSprite
return if !@flash || @flash_data.nil?
ptX=@ox-@oxFlash
ptY=@oy-@oyFlash
if !@firsttimeflash && !@usedsprites &&
    ptX>=0 && ptX+@viewport.rect.width<=@flash.bitmap.width &&
    ptY>=0 && ptY+@viewport.rect.height<=@flash.bitmap.height
@flash.ox=0
@flash.oy=0
@flash.src_rect.set(ptX.round,ptY.round,
   @viewport.rect.width,@viewport.rect.height)
return
end
width=@flash.bitmap.width
height=@flash.bitmap.height
bitmap=@flash.bitmap
ysize=@map_data.ysize
xsize=@map_data.xsize
zsize=@map_data.zsize
@firsttimeflash=false
@oxFlash=@ox-(width>>2)
@oyFlash=@oy-(height>>2)
@flash.ox=0
@flash.oy=0
@flash.src_rect.set(width>>2,height>>2,
   @viewport.rect.width,@viewport.rect.height)
@flash.bitmap.clear
@oxFlash=@oxFlash.floor
@oyFlash=@oyFlash.floor
xStart=(@oxFlash>>5)
xStart=0 if xStart<0
yStart=(@oyFlash>>5)
yStart=0 if yStart<0
xEnd=xStart+(width>>5)+1
yEnd=yStart+(height>>5)+1
xEnd=xsize if xEnd>=xsize
yEnd=ysize if yEnd>=ysize
if xStart<xEnd && yStart<yEnd
yrange=yStart...yEnd
xrange=xStart...xEnd
tmpcolor=Color.new(0,0,0,0)
for y in yrange
   ypos=(y<<5)-@oyFlash
   for x in xrange
   xpos=(x<<5)-@oxFlash
   id = @flash_data
   r=(id>>8)&15
   g=(id>>4)&15
   b=(id)&15
   tmpcolor.set(r*16,g*16,b*16)
   bitmap.fill_rect(xpos,ypos,32,32,tmpcolor)
   end
end
end
end


def refreshLayer0(autotiles=false)
ptX=@ox-@oxLayer0
ptY=@oy-@oyLayer0
if !autotiles && !@firsttime && !@usedsprites &&
    ptX>=0 && ptX+@viewport.rect.width<=@layer0.bitmap.width &&
    ptY>=0 && ptY+@viewport.rect.height<=@layer0.bitmap.height
if @layer0clip
   @layer0.ox=0
   @layer0.oy=0
   @layer0.src_rect.set(ptX.round,ptY.round,
   @viewport.rect.width,@viewport.rect.height)
else
   @layer0.ox=ptX.round
   @layer0.oy=ptY.round
   @layer0.src_rect.set(0,0,@layer0.bitmap.width,@layer0.bitmap.height)
end
return true
end
width=@layer0.bitmap.width
height=@layer0.bitmap.height
bitmap=@layer0.bitmap
ysize=@map_data.ysize
xsize=@map_data.xsize
zsize=@map_data.zsize
if autotiles
return true if @fullyrefreshedautos && @prioautotiles.length==0
return true if !shown?
xStart=(@oxLayer0>>5)
xStart=0 if xStart<0
yStart=(@oyLayer0>>5)
yStart=0 if yStart<0
xEnd=xStart+(width>>5)+1
yEnd=yStart+(height>>5)+1
xEnd=xsize if xEnd>xsize
yEnd=ysize if yEnd>ysize
return true if xStart>=xEnd || yStart>=yEnd
trans=Color.new(0,0,0,0)
temprect=Rect.new(0,0,0,0)
tilerect=Rect.new(0,0,32,32)
range=0...zsize
overallcount=0
count=0
if !@fullyrefreshedautos
   for y in yStart..yEnd
    for x in xStart..xEnd
   haveautotile=false
   for z in range
      id = @map_data
      next if id<48 || id>=384 || @priorities!=0 || !@priorities
      next if @framecount<2
      haveautotile=true
      break
   end
   next if !haveautotile
   overallcount+=1
   xpos=(x<<5)-@oxLayer0
   ypos=(y<<5)-@oyLayer0
   bitmap.fill_rect(xpos,ypos,0,0,trans) if overallcount<=2000
   for z in range
      id = @map_data
      next if id<48 || @priorities!=0 || !@priorities
      if overallcount>2000
       count=addTile(@autosprites,count,xpos,ypos,id)
       next
      elsif id>=384
       temprect.set((id - 384) % 8 * 32, (id - 384) / 8 * 32,32,32)
       bitmap.blt(xpos,ypos,@tileset,temprect)
      else
       tilebitmap=@autotileInfo
       if !tilebitmap
      anim=autotileFrame(id)
      next if anim<0
      tilebitmap=Bitmap.new(32,32)
      bltAutotile(tilebitmap,0,0,id,anim)
      @autotileInfo=tilebitmap
       end
       bitmap.blt(xpos,ypos,tilebitmap,tilerect)
      end
   end
    end
   end
else
   for tile in @prioautotiles
    x=tile
    y=tile
    next if x<xStart||x>xEnd
    next if y<yStart||y>yEnd
    overallcount+=1
    xpos=(x<<5)-@oxLayer0
    ypos=(y<<5)-@oyLayer0
    bitmap.fill_rect(xpos,ypos,0,0,trans) if overallcount<=2000
    for z in range
   id = @map_data
   next if id<48 || @priorities!=0 || !@priorities
   if overallcount>2000
      count=addTile(@autosprites,count,xpos,ypos,id)
      next
   elsif id>=384
      temprect.set((id - 384) % 8 * 32, (id - 384) / 8 * 32,32,32)
      bitmap.blt(xpos,ypos,@tileset,temprect)
   else
      tilebitmap=@autotileInfo
      if !tilebitmap
      anim=autotileFrame(id)
      next if anim<0
      tilebitmap=Bitmap.new(32,32)
      bltAutotile(tilebitmap,0,0,id,anim)
      @autotileInfo=tilebitmap
      end
      bitmap.blt(xpos,ypos,tilebitmap,tilerect)
   end
    end
   end
end
Graphics.frame_reset if overallcount>2000
@usedsprites=false
return true
end
return false if @usedsprites
@firsttime=false
@oxLayer0=@ox-(width>>2)
@oyLayer0=@oy-(height>>2)
if @layer0clip
@layer0.ox=0
@layer0.oy=0
@layer0.src_rect.set(width>>2,height>>2,
   @viewport.rect.width,@viewport.rect.height)
else
@layer0.ox=(width>>2)
@layer0.oy=(height>>2)
end
@layer0.bitmap.clear
@oxLayer0=@oxLayer0.floor
@oyLayer0=@oyLayer0.floor
xStart=(@oxLayer0>>5)
xStart=0 if xStart<0
yStart=(@oyLayer0>>5)
yStart=0 if yStart<0
xEnd=xStart+(width>>5)+1
yEnd=yStart+(height>>5)+1
xEnd=xsize if xEnd>=xsize
yEnd=ysize if yEnd>=ysize
if xStart<xEnd && yStart<yEnd
tmprect=Rect.new(0,0,0,0)
yrange=yStart...yEnd
xrange=xStart...xEnd
for z in 0...zsize
   for y in yrange
    ypos=(y<<5)-@oyLayer0
    for x in xrange
   xpos=(x<<5)-@oxLayer0
   id = @map_data
   next if id==0 || @priorities!=0 || !@priorities
   if id>=384
       tmprect.set((id - 384) % 8 * 32, (id - 384) / 8 * 32,32,32)
       bitmap.blt(xpos,ypos,@tileset,tmprect)
   else
       frame=autotileFrame(id)
       bltAutotile(bitmap,xpos,ypos,id,frame)
   end
    end
   end
end
Graphics.frame_reset
end
return true
end
def getResizeFactor
return $ResizeFactor ? $ResizeFactor : 1.0
end
def ox=(val)
   val=(val*getResizeFactor).to_i
   val=(val/getResizeFactor).to_i
   wasshown=self.shown?
   @ox=val.floor
   @nowshown=(!wasshown && self.shown?)
end
def oy=(val)
   val=(val*getResizeFactor).to_i
   val=(val/getResizeFactor).to_i
   wasshown=self.shown?
   @oy=val.floor
   @nowshown=(!wasshown && self.shown?)
end
def visible=(val)
   wasshown=@visible
   @visible=val
   @nowshown=(!wasshown && val)
end
def refresh(autotiles=false)
@oldOx=@ox
@oldOy=@oy
usesprites=false
if @layer0
@layer0.visible=@visible
usesprites=!refreshLayer0(autotiles)
if autotiles && !usesprites
   return
end
else
usesprites=true
end
refreshFlashSprite
vpx=@viewport.rect.x
vpy=@viewport.rect.y
vpr=@viewport.rect.width+vpx
vpb=@viewport.rect.height+vpy
xsize=@map_data.xsize
ysize=@map_data.ysize
minX=(@ox/32)-1
maxX=((@ox+@viewport.rect.width)/32)+1
minY=(@oy/32)-1
maxY=((@oy+@viewport.rect.height)/32)+1
minX=0 if minX<0
minX=xsize-1 if minX>=xsize
maxX=0 if maxX<0
maxX=xsize-1 if maxX>=xsize
minY=0 if minY<0
minY=ysize-1 if minY>=ysize
maxY=0 if maxY<0
maxY=ysize-1 if maxY>=ysize
count=0
if minX<maxX && minY<maxY
@usedsprites=usesprites || @usedsprites
if @layer0
   @layer0.visible=false if usesprites
end
if @fullyrefreshed
   for prio in @priotiles
    next if prio<minX||prio>maxX
    next if prio<minY||prio>maxY
    id=prio
    xpos=(prio<<5)-@ox
    ypos=(prio<<5)-@oy
    count=addTile(@tiles,count,xpos,ypos,id)
   end
else
   for z in 0...@map_data.zsize
    for y in minY..maxY
   for x in minX..maxX
      id = @map_data
      next if id==0 || !@priorities
      next if @priorities==0
      xpos=(x<<5)-@ox
      ypos=(y<<5)-@oy
      count=addTile(@tiles,count,xpos,ypos,id)
   end
    end
   end
end
end
if count<@tiles.length
bigchange=(count<=(@tiles.length*2/3)) && (@tiles.length*2/3)>25
j=count;len=@tiles.length;while j<len
   sprite=@tiles
   @tiles=-1
   if bigchange
    sprite.dispose
    @tiles=nil
    @tiles=nil
   elsif !@tiles.disposed?
    sprite.visible=false if sprite.visible
   end
   j+=2
end
@tiles.compact! if bigchange
end
end

end

                Code:        
class CustomTilemapAutotiles






[*]As for the Window/Windowskin, there's two steps you'll have to do here.

[*]Because of the changed libraries, you're now going to need a windowskin that can work with RPG Maker VX. You could either use an RPG Maker VX windowskin or if you'd prefer to keep your RMXP Windowskin, you could use my RMXP to RMVX (Ace) windowskin converter script and add that above main.

[*]Because RGSS3 now has a padding property, windows will start to appear slightly awkward, like so:

http://i48.tinypic.com/2nc2idz.png

Because of this, you'll need to copy this snippet and paste it above main as well:

# ** Window_Base
#------------------------------------------------------------------------------
#This class is for all in-game windows.
#==============================================================================

class Window_Base
alias_method
rmxptorgss3_initialize, :initialize)
def initialize(*args)
    rmxptorgss3_initialize(*args)
    self.padding = 16
end
end

                Code:        
#==============================================================================




[*]Next up, we're going to have to do a complete rewrite of main. Why? Because Game.exe shuts itself down now, that's why. Copy and paste this code onto main.

# ** Main
#------------------------------------------------------------------------------
#After defining each class, actual processing begins here.
#==============================================================================

rgss_main {
$DEBUG = $TEST = true            # Remove this when your project is finished.
Graphics.resize_screen(640, 480) # Resizes the screen.
# Prepare for transition
Graphics.freeze
$scene = Scene_Title.new
# Call main method as long as $scene is effective
$scene.main while $scene != nil
Graphics.transition(20)
}

                Code:        
#==============================================================================

[*]Bringing back print
This is optional, but for those who liked print... here's a quick snippet to bring that back.

# ** Kernel
#------------------------------------------------------------------------------
#A module defining the methods that can be referred to by all classes.
#Object classes are included in this module
#==============================================================================

module Kernel
def print(*args)
    msgbox(*args)
end
end

                Code:        
#==============================================================================




Step 4: Fonts
Because it's now using the RGSS3 Library and VX Ace's Game.exe, your project will now look for a font named VL Gothic.
You should find the Fonts folder in C:\Program Files (x86)\Common Files\Enterbrain\RGSS3\RPGVXAce.
[*]Copy the folder and paste it into your project's folder.

FAQ / Issues


[*]Q: I'm getting a Failed to Load Scripts error.
A: Rename Game.rgssad to Game.rgss3a
[*]Q: I'm getting a Failed to Load Archive error when trying to run an encrypted game.
A: I hate to not have any good news, but I'm clueless as to how to fix it.

Demo

Coming soon.


本贴来自国际rpgmaker官方论坛作者:PK8处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/using-rgss3-with-rpg-maker-xp.2936/
页: [1]
查看完整版本: Using RGSS3 with RPG Maker XP