Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Ronivan

1
RMXP Script Database / Re: [XP] Blizz-ABS
August 31, 2020, 10:37:45 pm
Just a question, its possible to delay the damage hit itself, like when you have a long attack animation, you don't want the damage hit to happen at the start of the animation, but rather the end. Its possible to somehow add a delay to this?
2
RMXP Script Database / Re: [XP] Blizz-ABS
August 10, 2020, 01:48:50 pm
Finally found the reason, all thanks to your data. This is what was causing all the issues:


The upper is the correct form, while the lower one was incorrect, and I was using that. If you look at the script I have posted here, you will see that incorrect form too. I don't know why that happened, because the original scripted posted by ForeverZer0 is correct. I'm sure that I'm the one to blame, because I may have changed the code in some moment, trying desperately to find a solution. Anyway, big thanks again for helping me out on this. I triple tested all the situations that I had issues, and now they are gone.
3
RMXP Script Database / Re: [XP] Blizz-ABS
August 10, 2020, 11:15:18 am
Nope, still getting the same undefined tile_map error over and over. Keep in mind that I'm using Visual Studio Code to properly position the classes inside the script, because XP script editor is beyond bad.
4
RMXP Script Database / Re: [XP] Blizz-ABS
August 10, 2020, 10:49:10 am
I did all the following, but still got that undefined method tile_size error at start. I did append the script as blandly said in the description, did the changes in the screen to screen_resolution. Heres the complete resolution compatibility addon I'm using:

module BlizzABS
 
    #===============================================================================
    # ** Controller
    #===============================================================================
   
      class Controller
         
        CX = ((SCREEN_RESOLUTION[0]) - 16) * 4
        CY = ((SCREEN_RESOLUTION[1]) - 16) * 4
       
        def center(x, y, flag = false)
          pix = flag ? $BlizzABS.pixel : 1
          x, y = x * 128 / pix, y * 128 / pix
          m_x = ($game_map.width - $game_map.tile_size[0]) * 128
          m_y = ($game_map.height - $game_map.tile_size[1]) * 128
          ox, oy = x - CX, y - CY
          if ox > m_x
            $game_map.display_x = m_x
          elsif ox < 0
            $game_map.display_x = 0
          else
            $game_map.display_x = ox
          end
          if oy > m_y
            $game_map.display_y = m_y
          elsif oy < 0
            $game_map.display_y = 0
          else
            $game_map.display_y = oy
          end
        end
      end
   
    #===============================================================================
    # ** Utility
    #===============================================================================
     
      class Utility
        def get_fullscreen_area
          return Rect.new($game_map.display_x / 4, $game_map.display_y / 4,
            SCREEN_RESOLUTION[0], SCREEN_RESOLUTION[1])
        end
   
        def get_player_radius
          if $game_player.screen_x > (SCREEN_RESOLUTION[0] / 2)
            x_max = $game_player.screen_x
          else
            x_max = SCREEN_RESOLUTION[0] - $game_player.screen_x
          end
          if $game_player.screen_y > (SCREEN_RESOLUTION[1] / 2)
            y_max = $game_player.screen_y
          else
            y_max = SCREEN_RESOLUTION[1] - $game_player.screen_y
          end
          return Math.hypot(x_max, y_max) / 32
        end
      end
    end
   
   
    #===============================================================================
    # ** Sprite
    #===============================================================================
   
    class Sprite
     
      def in_screen?
        return (self.x.between?(0, SCREEN_RESOLUTION[0]-1) && (self.y-16).between?(0, SCREEN_RESOLUTION[1]-1))
      end
    end
   
    #===============================================================================
    # ** Game_Character
    #===============================================================================
   
    class Game_Character
     
      def in_abseal_range?
        factor = BlizzABS::Config::ABSEAL_FACTOR < 1 ? 1 :
            BlizzABS::Config::ABSEAL_FACTOR.to_i
        return false if @real_x < $game_map.display_x - factor * 128
        return false if @real_y < $game_map.display_y - factor * 128
        return false if @real_x >= $game_map.display_x + (SCREEN_RESOLUTION[0]*4) + factor * 128
        return false if @real_y >= $game_map.display_y + (SCREEN_RESOLUTION[1]*4)+ factor * 128
        return true
      end
   
    end
      
    #===============================================================================
    # ** Map_Battler < Game_Character
    #===============================================================================
   
    class Map_Battler < Game_Character
   
      def in_screen?
        return (((@real_x - $game_map.display_x - 64) / 4).between?(0, SCREEN_RESOLUTION[0]) &&
                ((@real_y - $game_map.display_y - 64) / 4).between?(0, SCREEN_RESOLUTION[1]))
      end
    end
   
    #===============================================================================
    # ** Map_Remote < Map_Battler
    #===============================================================================
   
    class Map_Remote < Map_Battler
   
      def out_of_screen?(add = 0)
        return (self.real_x - $game_map.display_x + add < 0 ||
                self.real_x - $game_map.display_x + add > (SCREEN_RESOLUTION[0]*4) ||
                self.real_y - $game_map.display_y + add < 0 ||
                self.real_y - $game_map.display_y + add > (SCREEN_RESOLUTION[1]*4))
      end 
    end
   
    #===============================================================================
    # ** HUD < Sprite
    #===============================================================================
   
    class HUD < Sprite
     
      alias zer0_resolution_hud_position_init initialize
      def initialize(viewport = nil)
        zer0_resolution_hud_position_init(viewport)
        case BlizzABS::Config::HUD_POSITION
        when 0 then self.x, self.y = 4, 4
        when 1 then self.x, self.y = SCREEN_RESOLUTION[0] - self.bitmap.width - 4, 4
        when 2 then self.x, self.y = 4, (SCREEN_RESOLUTION[1] - 116) 
        end
      end
    end
   
    #===============================================================================
    # ** Minimap < Sprite
    #===============================================================================
   
    class Minimap < Sprite
     
      def initialize
        width, height = SCREEN_RESOLUTION[0] / 4, SCREEN_RESOLUTION[1] / 4
        super(Viewport.new(SCREEN_RESOLUTION[0]-width-4, SCREEN_RESOLUTION[1]-height-4, width, height))
        @autotile = $BlizzABS.cache.image('minimap_autotile')
        create_passable_floor
        self.x = self.y = 0
        viewport.z = 5000
        @events, @names = check_events
        create_sevents
        self.visible = true
        update
      end
   
      def update(override = false)
        create_passable_floor if @map_id != $game_map.map_id
        ev = check_events
        if @events != ev[0] || @names != ev[1]
          @events, @names = ev
          destroy_sevents
          create_sevents
        end
        if $game_system.minimap < 2
          self.ox, self.oy = $game_map.display_x / 16, $game_map.display_y / 16
        elsif !($game_system.turn_button && Input.press?(Input::Turn)) || override
          if self.bitmap.width > SCREEN_RESOLUTION[0]
            border = $game_player.real_x/16 - (SCREEN_RESOLUTION[0] / 2)
            border_x = self.bitmap.width - SCREEN_RESOLUTION[0]
            if border < 0
              self.ox = 0
            elsif border > border_x
              self.ox = border_x
            else
              self.ox = border
            end
          else
            self.ox = self.bitmap.width/2 - (SCREEN_RESOLUTION[0] / 2)
          end
          if self.bitmap.height > SCREEN_RESOLUTION[1]
            border = $game_player.real_y/16 - (SCREEN_RESOLUTION[1] / 2)
            border_y = self.bitmap.height - SCREEN_RESOLUTION[1]
            if border < 0
              self.oy = 0
            elsif border > border_y
              self.oy = border_y
            else
              self.oy = border
            end
          else
            self.oy = self.bitmap.height/2 - (SCREEN_RESOLUTION[1] / 2)
          end
        end
        @sevents.each_index {|i|
            if $game_system.minimap == 2 || @events[i].update?
              @sevents[i].x = self.x + @events[i].real_x / 16
              @sevents[i].y = self.y + @events[i].real_y / 16
              @sevents[i].ox, @sevents[i].oy = self.ox, self.oy
              if @names[i] != '' && !@events[i].dropped? &&
                  (@events[i].is_a?(Map_Actor) ||
                  !@events[i].name.clone.gsub!('\box') {''})
                @sevents[i].src_rect.set((@events[i].direction - 2) * 7, 0, 14, 14)
                @sevents[i].ox += 3
                @sevents[i].oy += 3
              end
            end}
      end
    end
   

   
    #===============================================================================
    # ** Scene_Map
    #===============================================================================
   
    class Scene_Map
     
      def update_minimap
        return if @minimap == nil
        if $game_system.minimap < 2
          @minimap.update
          return
        end
        unless @minimap.viewport.rect.width == SCREEN_RESOLUTION[0] &&
            @minimap.map_id == $game_map.map_id
          @minimap.viewport.rect.set(0, 0, SCREEN_RESOLUTION[0], SCREEN_RESOLUTION[1])
          @minimap.update(true)
        else
          @minimap.update
        end
        if $game_system.turn_button && Input.press?(Input::Turn) &&
            !$game_system.map_interpreter.running? && !@move_route_forcing &&
            !$game_temp.message_window_showing
          if @minimap.bitmap.width > SCREEN_RESOLUTION[0]
            if Input.repeat?(Input::RIGHT)
              if @minimap.ox + SCREEN_RESOLUTION[0] < @minimap.bitmap.width
                $game_system.se_play($data_system.cursor_se)
                @minimap.ox += 32
              else
                $game_system.se_play($data_system.buzzer_se)
              end
            elsif Input.repeat?(Input::LEFT)
              if @minimap.ox > 0
                $game_system.se_play($data_system.cursor_se)
                @minimap.ox -= 32
              else
                $game_system.se_play($data_system.buzzer_se)
              end
            end
          end
          if @minimap.bitmap.height > SCREEN_RESOLUTION[1]
            if Input.repeat?(Input::DOWN)
              if @minimap.oy + SCREEN_RESOLUTION[1] < @minimap.bitmap.height
                $game_system.se_play($data_system.cursor_se)
                @minimap.oy += 32
              else
                $game_system.se_play($data_system.buzzer_se)
              end
            elsif Input.repeat?(Input::UP)
              if @minimap.oy > 0
                $game_system.se_play($data_system.cursor_se)
                @minimap.oy -= 32
              else
                $game_system.se_play($data_system.buzzer_se)
              end
            end
          end
        end
      end
     
      def initialize_selection
        object, r, type, sprites = $game_temp.select_data
        enemy, dead, all = $BlizzABS.util.get_scope_data(object.scope)
        if $tons_version != nil && object.is_a?(RPG::Skill) &&
            ($tons_version >= 6.02 && $game_system.TARGET_EM_ALL &&
            FULL_TARGET_IDS.include?(object.id))
          target_all = all = true
        end
        sprites.each {|sprite| sprite.z += 1000000}
        @index = 0
        Graphics.freeze
        tone = $game_screen.tone
        @spriteset.viewport1.tone = Tone.new(tone.red - 32, tone.green - 32,
            tone.blue - 32, tone.gray)
        $game_system.se_play($data_system.decision_se)
        @win = Window_Help.new
        @win.z, @win.opacity = 10000, 192
        @ranges = [Sprite.new(@spriteset.viewport1),
                   Sprite.new(@spriteset.viewport1)]
        @ranges[0].z = @ranges[1].z = 950000
        color = (target_all ? Color.new(255, 255, 255, 96) : enemy ?
            Color.new(255, 0, 0, 96) : Color.new(0, 128, 255, 96))
        if type == BlizzABS::BEAM && all
          @ranges[0].bitmap = Bitmap.new(SCREEN_RESOLUTION[0], SCREEN_RESOLUTION[1])
          @ranges[1].bitmap = Bitmap.new(SCREEN_RESOLUTION[0]-2, SCREEN_RESOLUTION[1]-2)
          @ranges[0].bitmap.fill_rect(0, 0, SCREEN_RESOLUTION[0], SCREEN_RESOLUTION[1],
            Color.new(255, 255, 0, 160))
          @ranges[0].bitmap.fill_rect(1, 1, SCREEN_RESOLUTION[0]-2, SCREEN_RESOLUTION[1]-2,
            Color.new(0, 0, 0, 0))
          @ranges[1].x = @ranges[1].y = 1
          @ranges[1].bitmap.fill_rect(0, 0, SCREEN_RESOLUTION[0]-2, SCREEN_RESOLUTION[1]-2, color)
        else
          @ranges[0].bitmap = Bitmap.new(r * 2 + 32, r * 2 + 32)
          @ranges[1].bitmap = Bitmap.new(r * 2 + 32, r * 2 + 32)
          @ranges[0].x, @ranges[0].y = $game_player.screen_x, $game_player.screen_y
          @ranges[1].x, @ranges[1].y = $game_player.screen_x, $game_player.screen_y
          @ranges[0].ox, @ranges[0].oy = r + 16, r + 32
          @ranges[1].ox, @ranges[1].oy = r + 16, r + 32
          @ranges[0].bitmap.draw_circle(0, 0, r.to_i + 16, Color.new(255, 255, 0, 160))
          @ranges[0].bitmap.draw_circle(1, 1, r.to_i + 15, Color.new(0, 0, 0, 0))
          @ranges[1].bitmap.draw_circle(1, 1, r.to_i + 15, color)
        end
        if all
          sprites.each {|sprite| sprite.select = 1}
          @win.set_text(BlizzABS::Cache::WORDAll, 1)
        else
          sprites[0].select = 1
          @win.set_text(sprites[0].character.battler.name, 1)
        end
        @ranges[1].color.set(255, 255, 0, (16 - Graphics.frame_count % 32).abs * 8 )
        Graphics.transition
      end
     
    #=== GAME_MAP PART ADDED =============================
    class Game_Map
      attr_reader :tile_size
      alias initiate_tile_size_for_babs initialize
      def initialize
        @tile_size = [SCREEN_RESOLUTION[0], SCREEN_RESOLUTION[1]].collect {|n| (n / 32.0).ceil }
        initiate_tile_size_for_babs
      end
    end
    #=====================================================
end
   
[\code]
5
RMXP Script Database / Re: [XP] Blizz-ABS
August 09, 2020, 11:37:44 pm
I tried to change values in the controller section, which kinda solved the screen position issue; however, the area of the screen don't move, and if I move outside it, the enemies disappear and my spells animation don't work. This custom screen size will not work with Blizz-ABS I'm afraid.
6
RMXP Script Database / Re: [XP] Blizz-ABS
August 09, 2020, 09:47:17 pm
Renaming the stances won't solve it either. Although the game crashes when I move my character, its in the same position, on the upper-left. Even if I move it to the corner, it still fixes the center of the screen on the upper-left. I can tell this is an issue with the Blizz-ABS because it don't behave like that if I remove the ABS and play it. This I tested with XPA Screen, I'm not using the other anymore.
7
RMXP Script Database / Re: [XP] Blizz-ABS
August 09, 2020, 06:52:50 pm
Big thanks. Everything here seems to slowly fit together and work properly. I thought that I could use an idle animated animation because the sprites I use actually have animated idle, which is supposed to be play when no action is being executed. It didn't troubled me with the character animation, because the only part I did animated was the hair, which is not something essential. The only thing I would like to have with Blizz ABS is the 8 direction movement with a unique diagonal animation. I have these diagonal animations in place, but it seems that this system don't make use of this kind of sprite for diagonal moves.

Edit: I swap to the your XPA custom screen script, which work properly with Blizz ABS; however, I found the same strange behavior on screen position, which my player is locked in the upper-left corner of the screen.
8
RMXP Script Database / Re: [XP] Blizz-ABS
August 09, 2020, 03:51:05 pm
For the rest, everything here seems to be working in order. The issue I still have is not related to the ABS itself, but rather from the Custom Resolution (DLL-less) 0.97e, which is working properly with Blizz ABS, except for the player is not correctly centered on the screen. The player position is fixed in the upper-left corner of the screen. I'm trying to tweak the Custom Resolution script trying to find the centering method, but so far I haven't found it.
9
RMXP Script Database / Re: [XP] Blizz-ABS
August 09, 2020, 10:28:09 am
I didn't knew they should not be animated. I used the RMXP event option to animate the event graphic. I guess the issue may be coming from this.

Moving animation:



Idle animation:
10
RMXP Script Database / Re: [XP] Blizz-ABS
August 08, 2020, 10:11:40 pm
Thanks again for the reply. This have indeed solved not only the strange animation thing after attacking the target, but the one I was having here while further testing the animation during enemy skill damage, which sometimes was causing the incorrect number of frames appearing. However, this did not solve the flickering of enemy animation if idle is enabled. In fact I noticed now that it actually is not even playing the moving animation; it just show the idle, and when it moves, it shows nothing. I'll look on this because I feel like I'm doing something wrong on my part here.
11
RMXP Script Database / Re: [XP] Blizz-ABS
August 08, 2020, 11:48:20 am
I've found a minor issue with enemies idle animation that may be related to the multiple frames script. If use the enemy idle animation option, the walking animation of the said enemy flicker sometimes, and when the said enemy is hit during battle, for a short moment, it plays the idle animation, but without considering the multiple frames script, which display the picture of all frames at once.
12
RMXP Script Database / Re: [XP] Blizz-ABS
August 06, 2020, 09:12:23 am
Thanks again for this lesson. I still need to get a better understand of this battle system, but at least now I have the will to get going with it.
13
RMXP Script Database / Re: [XP] Blizz-ABS
August 05, 2020, 03:01:53 pm
Alright, first issue found with my attacking animation. It won't play the attacking animation, which has 6 frames. I'll post here the attack animation I'm using for this test in particular:



This worries me, because I have animation with several different number of frames, including the enemies too.
14
RMXP Script Database / Re: [XP] Blizz-ABS
August 04, 2020, 10:18:47 am
A big, big, BIG thanks for this edit. At my first test with a clean project, it worked by activating the Action Sprites. I'll began my understand of this ABS now and test it further on.

15
RMXP Script Database / Re: [XP] Blizz-ABS
August 03, 2020, 08:59:07 am
Thanks for remembering me. Its really been a while, but I decided to give it another try here. Here a sprite with 8 frames movement:



Thanks for looking in to this issue for me.
16
RMXP Script Database / Re: [XP] Blizz-ABS
August 02, 2020, 07:30:53 pm
So its been really a long time since I last did any work on RMXP. I knew about this ABS, but after implementation, it had a major issue with a custom script of mine. My script allow a free control over sprites frames without changing the name of the sprite, but when use with your script, it no longer work. I tried change the position with no avail. I'll publish my custom script down here:

#==============================================================================
# Extra Frames
# por COGHWELL
# Edit by KK20
# http://members.jcom.home.ne.jp/cogwheel/
#==============================================================================
# KK20's Note: The following instructions are no longer relevant to this script.
# The number of frames a character sprite uses is determined by the amount
# configured in the configuration below.
#==============================================================================
# O script permite que a imagem do character tenha mais que 4 frames.
#
# Para definir a quantidade de frames basta definir o nome adicione [X]
# ao seu nome, onde X é o numero de frames.
#
# Ex.:
# 001-Fighter01[7].png
#
# Isto significa que o 001-Fighter01 terá 7 frames
#==============================================================================
module ExtraFramesConfig
  def self.char_frames(name)
    case name
    #--------------------------------------------------------------------------
    # Begin Configuration
    # Format:
    #             when 'filename' then return FRAMES
    #
    # Any names not configured will be assumed to have 4 frames (RMXP default)
    #--------------------------------------------------------------------------
    when 'Char - Rohan' then return 8
    when 'Char - Rohan2' then return 8
    when 'Char - Rohan Ladder' then return 8
    when 'Char - Rohan2 Ladder' then return 8
    when 'Char - Rohan_quarter' then return 8
    when 'Char - Elenwen' then return 8
    when 'Char - Elenwen Ladder' then return 8
    when 'Char - Elenwen2' then return 8
    when 'Char - Elenwen2 Ladder' then return 8
    when 'Char - Lucain' then return 8
    when 'Char - Lucain2' then return 8
    when 'Char - Lucain Ladder' then return 8
    when 'Char - Lucain2 Ladder' then return 8
    when 'Char - Ramza' then return 8
    when 'Char - Ramza Ladder' then return 8
    when 'Char - Artanis' then return 8
    when 'Char - Artanis Ladder' then return 8
    when 'Char - Judeau' then return 8
    when 'Char - Judeau Ladder' then return 8
    when 'Char - Agrias' then return 8
    when 'Char - Agrias Ladder' then return 8
#---------------------------------------------------------------
    when 'Rag - Goo' then return 8
    when 'Measure - Portals 01' then return 15
    when 'Measure - Spawn' then return 5
    when 'Measure - Mana Crystal 01' then return 9
    when 'Poring' then return 8
    when 'Rag - Myconid' then return 8
    when 'Rag - Mossy Myconid' then return 8
    when 'Rag - Willow' then return 5
    when 'Rag - Willow 2' then return 5
    when 'Rag - Boa' then return 6
    when 'Rag - Bat' then return 8
    when 'Rag - Knight M-1' then return 8
    when 'Rag - Swordsman M-1' then return 8
    when 'Rag - Swordsman M-2' then return 8
    when 'Rag - Archer M-1' then return 8
    when 'Rag - Botaring' then return 6
    when 'Rag - Corruption' then return 6
    when 'Rag - Schist' then return 5
    when 'Rag - Ochu' then return 7
    when 'Rag - Banshee' then return 6
    when 'Rag - Wraith' then return 6
    when 'Rag - Hopper' then return 7
    when 'Rag - Dolomedes' then return 6
    when 'Rag - Raydric' then return 6
    when 'Rag - Raydric Archer' then return 6
    when 'Rag - Abyss Knight' then return 8
    when 'Rag - Parasite' then return 6
    when 'Rag - Thief M1' then return 8
   
   
    #--------------------------------------------------------------------------
    # End of Configuration
    #--------------------------------------------------------------------------
    else
      return 4
    end
  end
end

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  def update
    if jumping?
      update_jump
    elsif moving?
      update_move
    else
      update_stop
    end
    frames = ExtraFramesConfig.char_frames(@character_name)
    if frames != 4
      @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
      if @anime_count * (frames - 1) / 4 > 18 - @move_speed * 3
        if not @step_anime and @stop_count > 0
          @pattern = @original_pattern
        else
          @pattern = @pattern % (frames - 1) + 1
        end
        @anime_count = 0
      end
    else
      if @anime_count > 18 - @move_speed * 2
        if not @step_anime and @stop_count > 0
          @pattern = @original_pattern
        else
          @pattern = (@pattern + 1) % 4
        end
        @anime_count = 0
      end
    end
    if @wait_count > 0
      @wait_count -= 1
      return
    end
    if @move_route_forcing
      move_type_custom
      return
    end
    if @starting or lock?
      return
    end
    if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
      case @move_type
      when 1
        move_type_random
      when 2
        move_type_toward_player
      when 3
        move_type_custom
      end
    end
  end
end


#================================================= =============================
# ■ Sprite_Character
#================================================= =============================
class Sprite_Character < RPG::Sprite
  #--------------------------------------------------------------------------
  def update
    super
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
        @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
        @character.character_hue)
        frames = ExtraFramesConfig.char_frames(@character.character_name)
        if frames != 4
          @cw = bitmap.width / frames
          @ch = bitmap.height / 4
        else
          @cw = bitmap.width / 4
          @ch = bitmap.height / 4
        end
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    self.visible = (not @character.transparent)
    if @tile_id == 0
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
  end
end

#================================================= =============================
# ■ Window_Base
#================================================= =============================
class Window_Base < Window
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    frames = ExtraFramesConfig.char_frames(actor.character_name)
    if frames != 4
      cw = bitmap.width / frames
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 4
      ch = bitmap.height / 4
    end
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
end

#================================================= =============================
# ■ Window_SaveFile
#================================================= =============================
class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    name = "File #{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    if @file_exist
      for i in 0...@characters.size
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        frames = ExtraFramesConfig.char_frames(@characters[i][0])
        if @characters[i][0][/\[(\d+)\]/]
          cw = bitmap.width / frames
          ch = bitmap.height / 4
        else
        cw = bitmap.width / 4
        ch = bitmap.height / 4
      end
      src_rect = Rect.new(0, 0, cw, ch)
      x = 300 - @characters.size * 32 + i * 64 - cw / 2
      self.contents.blt(x, 68 - ch, bitmap, src_rect)
    end
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 8, 600, 32, time_string, 2)
    self.contents.font.color = normal_color
    time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
    self.contents.draw_text(4, 40, 600, 32, time_string, 2)
    end
  end
end

#================================================= =============================
# ■ Game_Player
#================================================= =============================
class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  def anime_update
    frames = ExtraFramesConfig.char_frames(@character_name)
    if frames != 4
      @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
      if @anime_count * (frames - 1) / 4 > 18 - @move_speed * 2
        if not @step_anime and @stop_count > 0
          @pattern = @original_pattern
        else
          @pattern = @pattern % ($1.to_i - 1) + 1
        end
        @anime_count = 0
      end
    else
      if @anime_count > 18 - @move_speed * 2
        if not @step_anime and @stop_count > 0
          @pattern = @original_pattern
        else
          @pattern = (@pattern + 1) % 4
        end
        @anime_count = 0
      end
    end
  end
end

I would really appreciate any help on this subject because I really want to use this script.
17
Resources / Ronivan's Tileset [MV]
July 27, 2016, 02:09:36 am
So hello everyone! Its been quite a while since I last posted something here. I've changed to RPG Maker MV now, and of course, still there are no good battle system yet. So I decided
to tweak a little in creating my own Tilesets for it. So far thats all I have done.

Spoiler'd images - KK20
Spoiler: ShowHide

Spoiler: ShowHide

Spoiler: ShowHide

Spoiler: ShowHide

Spoiler: ShowHide


I'm still learning how to create tilesets for it. I started this project in RPG Maker MV forums, but I'll be very happy to publish it here too. Hope its of everyone taste.

You can download it here:
https://drive.google.com/file/d/0B4o_oljSQH76SF9DQWNxbHZvVlU/view?usp=sharing
18
RMXP Script Database / Re: [XP] Blizz-ABS
November 03, 2015, 07:22:27 pm
Thanks but unfortunately I have found a major problem, which is my special multi frame script, for my animations. You see I use Ragnarok Online sprites for both characters and enemies, Blizz ABS don't allow me to use
my custom multi frame script made by KK20. Both ABS and my frame script conflicts. Its too bad, I thought I was going to like this ABS system, but at least died before I we wasted effort on it. Its a shame it fails in something so simple as a sprite frames animations limit.
19
RMXP Script Database / Re: [XP] Blizz-ABS
November 03, 2015, 02:32:11 pm
Sir I would like to know if I could use my controller on Blizz ABS. The only things I've found was for RMX-OS, which is not what I'm looking for. Its possible to use my controller in this system?
20
Script Requests / Re: [XP] HP/MP Absorb
June 07, 2015, 07:02:33 pm
Oh lol sorry, I supose I should. Its Atoa Custom Battle System.