Recent posts

Pages1 2 3 ... 10
1
General Discussion / Re: RPG Maker Fes
Last post by Stanmor - October 18, 2019, 08:21:24 am
As a beginner, I actually don't mind it's streamlined. Very nice!
2
Welcome! / Re: New maker incoming!
Last post by KK20 - October 17, 2019, 03:08:31 pm
Ah, I tempted another to join XPA... good...good...

Welcome! I see your name in the Discord already, so feel free to ask questions there too.
3
Welcome! / New maker incoming!
Last post by Degenpy - October 17, 2019, 02:58:14 pm
Hi everyone,  :)
I've been reading this forum for quite a while now and I have found so many answers to my questions regarding my RPG Maker project here so I felt like I should join you guys!
My game was created using RM XP and a few month ago I discovered the awesome RM XP Ace project on this forum and this completely transformed my game for the best. This is why I really want to thank everyone involved in this project.  :-*
I recently got into programming using Ruby and did a few scripts already like a craft system and a quest system. I still have a lot to learn as I want to create a CBS for my game so if you don't mind, I may ask you questions regarding RGSS.
Anyway, I'm really happy to join you guys, see you soon!  :D
4
Tutorial Database / Re: [XP] RMXPAce -- Using the ...
Last post by kreiss - October 15, 2019, 01:46:57 pm
Oh my god, it work !
Thanks a lot !
5
Tutorial Database / Re: [XP] RMXPAce -- Using the ...
Last post by KK20 - October 15, 2019, 11:59:52 am
Towards the bottom you see
if defined?(Hangup) #xp
Try changing it to
if true
Since this is technically XP, we need the methods defined below it.
6
Tutorial Database / Re: [XP] RMXPAce -- Using the ...
Last post by kreiss - October 15, 2019, 09:51:02 am
Hi KK20 !

Is it possible to have a compitibility with this script ?

# Scroll Pictures 1.0 for XP, VX & VXAce by Zeus81
 
class Game_Scroll_Picture < Game_Picture
  attr_accessor :z, :map_anchor, :texture, :texture_ox, :texture_oy, :erased
  def initialize(number)
    @z  , @map_anchor, @texture                , @texture_ox, @texture_oy, @erased =
    1000, 1          , Game_Picture.new(number), 0          , 0          , false
    super(number)
  end
  def erase() @erased = true end
  def update
    super
    @texture.update
    @texture_ox -= @texture.x / 10.0
    @texture_oy -= @texture.y / 10.0
  end
end
 
class Sprite_Scroll_Picture < Sprite
  dll = FileTest.directory?('System') ? 'System/ZEUS' : 'ZEUS'
  GrayscaleMaskBlt = Win32API.new(dll, 'GrayscaleMaskBlt', 'iiiiiiiiii', 'i')
  def initialize(viewport, picture)
    super(viewport)
    @picture, @last_args = picture, []
  end
  def dispose
    bitmap.dispose if bitmap
    super
  end
  def update
    return unless self.visible = !@picture.name.empty? && !@picture.texture.name.empty?
    if @last_mask_name != @picture.name
      @last_mask_name = @picture.name.dup
      bitmap.dispose if bitmap
      mask = cache(@picture.name)
      self.bitmap = Bitmap.new(mask.width, mask.height)
    end
    if @picture.origin != 0
      self.ox = bitmap.width / 2
      self.oy = bitmap.height / 2
    else self.ox = self.oy = 0
    end
    self.x = @picture.x - @picture.map_anchor * map_display_x
    self.y = @picture.y - @picture.map_anchor * map_display_y
    self.z = @picture.z
    self.zoom_x = @picture.zoom_x / 100.0
    self.zoom_y = @picture.zoom_y / 100.0
    self.opacity = @picture.opacity
    self.blend_type = @picture.blend_type
    self.angle = @picture.angle
    self.tone = @picture.tone
    return unless self.visible = on_screen?
    super
    args = [bitmap.__id__ << 1, 0, cache(@picture.name).__id__ << 1, 0,
            cache(@picture.texture.name).__id__ << 1, 0,
            @picture.texture_ox.to_i, @picture.texture_oy.to_i,
            @picture.texture.zoom_x.to_i, @picture.texture.zoom_y.to_i]
    return if @last_args == args
    @last_args.replace(args)
    GrayscaleMaskBlt.call(*args)
  end
  def on_screen?
    x1, y1, w1, h1 = x, y, (bitmap.width*zoom_x).to_i, (bitmap.height*zoom_y).to_i
    w2, h2 = screen_width, screen_height
    if angle == 0
      x1, y1 = x1-w1/2, y1-h1/2 if ox != 0
      x1<w2 and x1+w1>0 and y1<h2 and y1+h1>0
    else
      x1, y1, r1 = (x1-w2/=2).abs, (y1-h2/=2).abs, Math.hypot(w1, h1)
      r1 /= 2 if ox != 0
      x1<=w2+r1 and y1<=h2+r1 and (x1<=w2 or y1<=h2 or Math.hypot(x1-w2,y1-h2)<=r1)
    end
  end
  if defined?(Hangup) #xp
    def cache(filename) RPG::Cache.picture(filename) end
    def screen_width()  640                          end
    def screen_height() 480                          end
    def map_display_x() $game_map.display_x / 4      end
    def map_display_y() $game_map.display_y / 4      end
  else                #vx & vxace
    def cache(filename) Cache.picture(filename)      end
    def screen_width()  Graphics.width              end
    def screen_height() Graphics.height              end
    if RUBY_VERSION == '1.8.1' #vx
      def map_display_x() $game_map.display_x / 8    end
      def map_display_y() $game_map.display_y / 8    end
    else                      #vxace
      def map_display_x() $game_map.display_x * 32  end
      def map_display_y() $game_map.display_y * 32  end
    end
  end
end
 
class Game_Map
  attr_reader :scroll_pictures
  alias zeus81_scroll_pictures_setup setup
  def setup(map_id)
    @scroll_pictures = {}
    zeus81_scroll_pictures_setup(map_id)
  end
  alias zeus81_scroll_pictures_update update
  def update(*args)
    @scroll_pictures.delete_if {|i, p| p.erased}
    @scroll_pictures.each_value {|p| p.update}
    zeus81_scroll_pictures_update(*args)
  end
end
 
class Spriteset_Map
  alias zeus81_scroll_pictures_dispose dispose
  def dispose
    @scroll_picture_sprites.each_value {|s| s.dispose}
    zeus81_scroll_pictures_dispose
  end
  alias zeus81_scroll_pictures_update update
  def update
    @scroll_picture_sprites ||= {}
    @scroll_picture_sprites.delete_if do |i, s|
      s.dispose if result = !$game_map.scroll_pictures.has_key?(i)
      result
    end
    for i, p in $game_map.scroll_pictures
      s = @scroll_picture_sprites[i] ||= Sprite_Scroll_Picture.new(@viewport1, p)
      s.update
    end
    zeus81_scroll_pictures_update
  end
end
 
if defined?(Hangup) #xp
 
  class Interpreter
    def execute_command
      if @index < @list.size-1
        @parameters = @list[@index].parameters
        method_name = "command_#{@list[@index].code}"
        return send(method_name) if respond_to?(method_name)
      else command_end
      end
      return true
    end
    def scroll_picture(id)
      $game_map.scroll_pictures[id] ||= Game_Scroll_Picture.new(id)
    end
    def scroll_picture_mask()    scroll_picture_setup(0) end
    def scroll_picture_texture() scroll_picture_setup(1) end
    def scroll_picture_setup(type)
      i = @index
      while(@list[i += 1].code.between?(231, 235))
        @list[i].parameters << type if @list[i].code < 233
        @list[i].code += 810000
      end
      return true
    end
    def command_810231
      picture = scroll_picture(@parameters[0])
      picture = picture.texture if @parameters[-1] != 0
      x, y = @parameters[4], @parameters[5]
      x, y = $game_variables[x], $game_variables[y] if @parameters[3] != 0
      picture.show(@parameters[1], @parameters[2], x, y, @parameters[6],
                  @parameters[7], @parameters[8], @parameters[9])
      return true
    end
    def command_810232
      picture = scroll_picture(@parameters[0])
      picture = picture.texture if @parameters[-1] != 0
      x, y = @parameters[4], @parameters[5]
      x, y = $game_variables[x], $game_variables[y] if @parameters[3] != 0
      picture.move(@parameters[1]*2, @parameters[2], x, y, @parameters[6],
                  @parameters[7], @parameters[8], @parameters[9])
      return true
    end
    def command_810233
      scroll_picture(@parameters[0]).rotate(@parameters[1])
      return true
    end
    def command_810234
      scroll_picture(@parameters[0]).start_tone_change(@parameters[1], @parameters[2]*2)
      return true
    end
    def command_810235
      id = @parameters[0]
      scroll_picture(id).erase if $game_map.scroll_pictures.has_key?(id)
      return true
    end
  end
 
else                #vx & vxace
 
  class Game_Interpreter
    if RUBY_VERSION == '1.8.1' #vx
      def wait(duration) @wait_count = duration end
      def execute_command
        if @index < @list.size-1
          @params, @indent = @list[@index].parameters, @list[@index].indent
          method_name = "command_#{@list[@index].code}"
          return send(method_name) if respond_to?(method_name)
        else command_end
        end
        return true
      end
    end
    def scroll_picture(id)
      $game_map.scroll_pictures[id] ||= Game_Scroll_Picture.new(id)
    end
    def scroll_picture_mask()    scroll_picture_setup(0) end
    def scroll_picture_texture() scroll_picture_setup(1) end
    def scroll_picture_setup(type)
      i = @index
      while(@list[i += 1].code.between?(231, 235))
        @list[i].parameters << type if @list[i].code < 233
        @list[i].code += 810000
      end
    end
    def command_810231
      picture = scroll_picture(@params[0])
      picture = picture.texture if @params[-1] != 0
      x, y = @params[4], @params[5]
      x, y = $game_variables[x], $game_variables[y] if @params[3] != 0
      picture.show(@params[1], @params[2], x, y, @params[6],
                  @params[7], @params[8], @params[9])
      return true
    end
    def command_810232
      picture = scroll_picture(@params[0])
      picture = picture.texture if @params[-1] != 0
      x, y = @params[4], @params[5]
      x, y = $game_variables[x], $game_variables[y] if @params[3] != 0
      picture.move(@params[2], x, y, @params[6], @params[7],
                  @params[8], @params[9], @params[10])
      wait(@params[10]) if @params[11]
      return true
    end
    def command_810233
      scroll_picture(@params[0]).rotate(@params[1])
      return true
    end
    def command_810234
      scroll_picture(@params[0]).start_tone_change(@params[1], @params[2])
      wait(@params[2]) if @params[3]
      return true
    end
    def command_810235
      id = @params[0]
      scroll_picture(id).erase if $game_map.scroll_pictures.has_key?(id)
      return true
    end
  end
 
end

And the DLL

I try de fixed it in different way, but I always have this error :



Thanks for your XPA system !
7
Tutorials / Batch method - Converting mult...
Last post by Crixus - October 05, 2019, 04:01:06 pm



Introduction:
Learn how to convert batch graphics for use in Rm2k/2k3, Game Maker (Old Version), MMFusion (Old Version) and other engines that use 8-Bit graphics.

An example is the images in this topic, originally the size of 378 Kb (24/32 bits), now the size of 120 Kb (8 bits).



Tutorial:

Downloading FastStone PhotoResizer.
QuoteAlert: If you are not the administrator of your machine download the portable version.

Browse or drag all images into the software.
Quote
FS-PR1.png

Now select in "Output Format" the PNG option:
Quote
FS-PR2.png

Click on "Settings", a window will appear, just change the "Colors" field to 256.
Quote
FS-PR3.png

Turn on the "Output Folder" option and set a folder to store the converted graphics.
Do not do this in the same folder, you may damage the original graphics.

QuoteAlert:
If you are running Windows Vista (or higher) and need to use MSPaint to do any editing, the image will be converted 24 or 32-bit again..

The required settings have already been applied:
Quote
FS-PR4.png

Now to convert just hit the "Convert" button and wait for the progress.



Checking the result:

Go to the output folder, right click on any image and select "Properties":
Quote
FS-PR5.png

Click on "Details", the Bit Intensity line should be number 8.
If it's 24 or 32, that's why you made a mistake converting.
Quote
FS-PR6.png


EXTRA:
Keeping the tree structure of folders:

Browse the software to the project folder, select "CTRL" only the folders with graphics.
Now press the Add button:

FS-PR7.png


After conversion, in the output folder you will find a copy of all graphic folders:

FS-PR8.png
8
Tutorials / [XP] Avoiding Mistakes with Ti...
Last post by Crixus - October 04, 2019, 01:47:37 am
About:
This tutorial will teach you how to avoid the classic difficulty of using multilayer TILESETs that has been happening a lot since RpgmakerXP was released.
How many times have you not created a non-working Tileset block and kept banging your head to know why? So find out now.

Source: https://rpgmakerworld.smfnew2.com/graphic-tutorials/(xp)-avoiding-mistakes-with-tilesets-locks

Start by downloading the Tileset template right here:

[XP-Template-Tileset.png]


Editing Correctly:
Open Template with an image editor (which supports 32-bit PNG).

I will use this sample tileset:

[XP-check-tileset-example.png]

Copy the image from "Tileset" to TEMPLATE.:

[XP-check-tileset-1.png]

Then you will create a unique background color for transparency:

[XP-check-tileset-2.png]

If you are using MS Paint, use a color you do not have in the "Tileset" color palette:

[XP-check-tileset-3.png]

Where there is nothing you leave the color of TEMPLATE which is green-color and pink-color:.

[XP-check-tileset-4.png]



Finishing and testing:
If you are an advanced image editor save as a new file PNG 32-Bit (with transparency).
If it is in MS Paint save as PNG only.

Use the same filename as the original Tileset to replace in the editor.

Now you can see exactly which tiles you should not use:

[XP-check-tileset-5.png]


To clear map objects use the first AUTOTILE, the one with no graph. This is the only one that does not affect "blockages" and "passages" in any layer:

[XP-check-tileset-6.png]
9
RMXP Script Database / Re: [XP] Terrain Step Sound
Last post by AmareusRedink - September 13, 2019, 01:42:33 am
and the end the problem was one of the scripts I used, Bruh.
10
RMMV Script Database / Re: [MV] Ultra Mode 7
Last post by Blizzard - September 12, 2019, 04:13:41 am
Unfortunately making events with tile graphics work is not as easy as it may seem. The map rendering code is completely separate from the sprites on the screen and map tiles in events are rendered as sprites. In order to make them work, a complete rewrite of the sprite system in PIXI would be required to support 3D coordinates properly. Since a lot of code depends on the sprite system, it requires rewriting a lot more other code just to make the sprites work and not break everything else. So this is a feature that I won't be implementing.



Can you explain the event rise? If it's what I think it is, this plugin might help you solve that issue: https://forums.rpgmakerweb.com/index.php?threads/character-anchors.105599/



If you want to use zooming, you should use UM7 directly. Other plugins will likely cause issues, because the map rendering in UM7 had to be rewritten completely so it's mostly incompatible with map zooming plugins.
As for the path indicator, I'll fix that. It slipped my mind to apply proper zooming to it. xD

As for the additional stuff for the path indicator, this can be done as a completely separate plugin and it's actually outside of the scope of this one. I don't actually intend to make any more plugins for MV (except for maybe a good localization system). I mostly shared this plugin since I already created it for my own game and I know that people have been looking for a good Mode 7 script since the RMXP days.



You can zoom into the map by changing the camera Z distance coordinate. The rest requires a little bit of extra coding. I likely won't be implementing it, because it's a very, very specific feature and it changes the controls. I was actually asked the same question recently so you can look up some extra info here in these posts: https://forums.rpgmakerweb.com/index.php?threads/ultra-mode-7.94100/page-36#post-991164



As for the sprite priority, this is yet again a 3D issue. Since mountains are flat tiles and sprites are rendered after/above the map, this isn't fixable in a classic sense. Those are simply technical limitations of essentially using a 3D map in a 2D engine/game. Besides limiting the pitch angles the player can have in the game, I can suggest two ways to go about this:

1. When using a flat map, you might want to consider turning UM7 off for them. That way the standard code for maps will be used and the tiles that appear above characters will be rendered properly.
2. Create events for "upstanding" graphics likes mountains or trees. If you run into event render order issues, this is because MV doesn't use a Z coordinate for render order anymore as RMXP did. This guy had the same problem: https://forums.rpgmakerweb.com/index.php?threads/ultra-mode-7.94100/page-37#post-1000156 and Arend suggested to use MOG Event Sensor to fix it.

I actually had a similar issue in my game. I solved it by limiting the pitch to a value that still makes everything look good while also adding a bit of code to make sure characters are rendered from top to bottom on the screen to create the illusion of depth for sprites (along with scale obviously).
Pages1 2 3 ... 10