Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

New Mode7 script / Neo Mode 7 script

This is the default demo map for the neo script that lags for me, with the filter on as it is by default, I believe. When I change the resolution setting (r3) it's fast just fine, but that would kill any effort put into pixel art.

You've got a faster pc and more RAM, but chances are your video card is helping too.

It's just that people should be aware that if they end up advertising a game with this script, systems requirements will be (apparently) higher than they are for RMXP vanilla.
 
Everytime i open a map where this applies, i get

Script 'Neo Mode 7 Part 4' line 537: TypeError Occured
can't convert NilClass into Bitmap

LINE 537: @cache[key].blt(0, 0, self.load_autotile(num), rect)

Is this due to a confliction with other scripts or did i need to do more than just plug the scripts and add the codes to the map name like [NM7]?
 
ragnaroa":d6xq9v1r said:
I'm getting the same error as you Mars, except I get it when I call script from a scene class. For example, "$scene = Scene_Craft.new('Blacksmith')" from the Prexcraft script, gets your error. And whenever I call script from game_temp, or otherwise, I don't receive this error. Wierd.

The same thing is happening to me. Is there anyway around this to call a script. Can you add a scene script into game_temp? I've got a few different scene's I'd like to call through a button press/parallel process.
 
im having an error every time i open menu
maybe you could fix the problem
Code:
# * Custom Menu System (CMS) by mewsterus
# * To install, just insert this in a descriptive code slot right above Main
#===============================================================================
# ¦ Window_Base
#-------------------------------------------------------------------------------
#   Edited by mewsterus
#===============================================================================

class Window_Base    
  #-----------------------------------------------------------------------------
  # @ Draw state
  #-----------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text, 2)
  end
  #-----------------------------------------------------------------------------
  # @ Draw EXP
  #-----------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 48, 32, "Exp")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + width - 48, y, 48, 32, actor.exp_s, 2)
  end
end


#===============================================================================
# ¦ Window_MenuStatus
#-------------------------------------------------------------------------------
#   Edited by mewsterus
#===============================================================================

class Window_MenuStatus < Window_Base
  #-----------------------------------------------------------------------------
  # @ Create the window
  #-----------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 288, 120)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    self.back_opacity = 160
    @actor = actor
    refresh
    self.active = false
  end
  #-----------------------------------------------------------------------------
  # @ Draw contents
  #-----------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 40, 86)
    draw_actor_name(@actor, 0, 0)
    draw_actor_level(@actor, 112, 0)
    draw_actor_class(@actor, 172, 0)
    draw_actor_state(@actor, 0, 20, 108)
    draw_actor_exp(@actor, 112, 20)
    draw_actor_hp(@actor, 112, 40)
    draw_actor_sp(@actor, 112, 60)
  end
  #-----------------------------------------------------------------------------
  # @ Update the window
  #-----------------------------------------------------------------------------
  def update
    super
    if @selected
      self.cursor_rect.set(-8, -8, 272, 104)
    else
      self.cursor_rect.empty
    end
  end
  #-----------------------------------------------------------------------------
  # @ Accept whether window is selected
  #-----------------------------------------------------------------------------
  def selected=(selected)
    @selected = selected
    update
  end
end

#===============================================================================
# ¦ Scene_Menu
#-------------------------------------------------------------------------------
#   Edited by mewsterus
#===============================================================================

class Scene_Menu
  #-----------------------------------------------------------------------------
  # @ Accept indeces
  #-----------------------------------------------------------------------------
  def initialize(menu_index = 0, status_index = 0)
    @menu_index = menu_index
    @status_index = status_index
  end
  #-----------------------------------------------------------------------------
  # @ Start the scene
  #-----------------------------------------------------------------------------
  def main
    @sprite = Spriteset_Map.new
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Status"
    s5 = "MemoryCard"
    s6 = "End Game"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    @command_window.back_opacity = 160
    @command_window.x = 0
    @command_window.y = 640
    if $game_party.actors.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    @steps_window = Window_Steps.new
    @steps_window.x = -320
    @steps_window.y = 0
    @steps_window.back_opacity = 160
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = -224
    @playtime_window.back_opacity = 160
    @gold_window = Window_Gold.new
    @gold_window.x = -384
    @gold_window.y = 192
    @gold_window.back_opacity = 160
    if $itemdrop_enabled
      @itemdrop = Window_Command.new(160, ["Basic", "Equipment", "Quest"])
    else
      @itemdrop = Window_Base.new(240, 144, 160, 128)
    end
    @itemdrop.x = -160
    @itemdrop.y = 256
    @itemdrop.back_opacity = 160
    @itemdrop.active = false
    @status_windows = []
    for i in 0...$game_party.actors.size
      @status_windows.push(Window_MenuStatus.new($game_party.actors[i]))
      @status_windows[i].x = 672 + i * 64
      @status_windows[i].y = i * 120 + (240 - $game_party.actors.size * 60)
      @status_windows[i].active = true
    end
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      if @steps_window.x < 0
        @steps_window.x += 32
      end
      if @playtime_window.y < 96
        @playtime_window.y += 32
      end
      if @gold_window.x < 0
        @gold_window.x += 32
      end
      for i in 0...$game_party.actors.size
        if @status_windows[i].x > 366
          @status_windows[i].x -= 64
        end
      end
      if @command_window.y > 256
        @command_window.y -= 32
      else
        update
      end
      if $scene != self
        break
      end
    end
    for i in 0..12
      @gold_window.x -= 32
      if i >= 1
        @steps_window.x -= 32
      end
      if i >= 2
        @playtime_window.y -= 32
        @command_window.y += 32
      end
      if i >= 3
        @status_windows[0].x += 64
        @itemdrop.x -= 32
      end
      if i >= 4 and $game_party.actors.size >= 2
        @status_windows[1].x += 64
      end
      if i >= 5 and $game_party.actors.size >= 3
        @status_windows[2].x += 64
      end
      if i >= 7 and $game_party.actors.size >= 4
        @status_windows[3].x += 64
      end
      Graphics.update
    end
    Graphics.freeze
    @sprite.dispose
    @command_window.dispose
    @steps_window.dispose
    @playtime_window.dispose
    @gold_window.dispose
    @itemdrop.dispose
    for i in 0...$game_party.actors.size
      @status_windows[i].dispose
    end
  end
  #-----------------------------------------------------------------------------
  # @ Update the scene
  #-----------------------------------------------------------------------------
  def update
    @sprite.update
    @command_window.update
    @steps_window.update
    @playtime_window.update
    @gold_window.update
    @itemdrop.update
    for i in 0...$game_party.actors.size
      @status_windows[i].update
    end
    if @command_window.active
      update_command
      return
    end
    if @status_windows_active
      update_status
      return
    end

    if @itemdrop.active
      update_itemdrop
      return
    end
  end
  #-----------------------------------------------------------------------------
  # @ Update the command window
  #-----------------------------------------------------------------------------
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 0 and @command_window.index < 4
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)

        if $itemdrop_enabled
          loop do
            if @itemdrop.x < 160
              @itemdrop.x += 40
            else
              break
            end
            Graphics.update
          end
          @command_window.active = false
          @itemdrop.active = true
          return
        end
        $scene = Scene_Item.new
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_windows_active = true
        @status_windows[@status_index].selected = true
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_windows_active = true
        @status_windows[@status_index].selected = true
      when 3
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_windows_active = true
        @status_windows[@status_index].selected = true
      when 4
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to MNemorycard screen
        $scene = Scene_MemoryCard.new
      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_End.new
     end
      return
    end
  end
  #-----------------------------------------------------------------------------
  # @ Update the status windows
  #-----------------------------------------------------------------------------
  def update_status
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @status_window_active = false
      @status_windows[@status_index].selected = false
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 1
        if $game_party.actors[@status_index].restriction >= 2
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Skill.new(@status_index)
      when 2
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Equip.new(@status_index)
      when 3
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Status.new(@status_index)
      end
      return
    end
    if Input.repeat?(Input::DOWN)
      if Input.trigger?(Input::DOWN) or @status_index<$game_party.actors.size-1
        $game_system.se_play($data_system.cursor_se)
        @status_windows[@status_index].selected = false
        @status_index = (@status_index + 1) % $game_party.actors.size
        @status_windows[@status_index].selected = true
        return
      end
    end
    if Input.repeat?(Input::UP)
      if Input.trigger?(Input::UP) or @status_index > 0
        $game_system.se_play($data_system.cursor_se)
        @status_windows[@status_index].selected = false
        @status_index = (@status_index + $game_party.actors.size - 1) %
                    $game_party.actors.size
        @status_windows[@status_index].selected = true
        return
      end
    end
  end
  #-----------------------------------------------------------------------------
  # @ Update the itemdrop window
  #-----------------------------------------------------------------------------
  def update_itemdrop
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      loop do
        if @itemdrop.x > -160
          @itemdrop.x -= 40
        else
          break
        end
        Graphics.update
      end
      @itemdrop.active = false
      @command_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Item.new(@itemdrop.index + 20)
    end
  end
end

and why are some layer are floating in air when i change the terrain tag to 1 or 2
 
Zankoku no Yami":1740677g said:
Everytime i open a map where this applies, i get

Script 'Neo Mode 7 Part 4' line 537: TypeError Occured
can't convert NilClass into Bitmap

LINE 537: @cache[key].blt(0, 0, self.load_autotile(num), rect)

Is this due to a confliction with other scripts or did i need to do more than just plug the scripts and add the codes to the map name like [NM7]?
You cannot load save files from before you added the script.
 
Oh, like the SNES effect, ok, thisis AWESOME, but 1 problem: lag.
I download the demo in the first post, is that demo the final or the "correct" / full version, right?.

Thanks, and sorry if I´m a n00b :D.
 
Good Lord. GET GOING MAN! If you can program this you should be professional! COME ON MAN! TIMES A WASTING!

Not to say VX and XP arn't real programing...

...

C# FTW!
 
Exouthing":2yjq9pli said:
Oh, like the SNES effect, ok, thisis AWESOME, but 1 problem: lag.
I download the demo in the first post, is that demo the final or the "correct" / full version, right?.

Thanks, and sorry if I´m a n00b :D.

Lag? It shouldn't lag that much if you use it right. I've been able to do that: http://www.youtube.com/watch?v=BEOa7LsxA7Y
with a 255x255 map, half of it is filled with animated autotiles and it doesn't lag at all. Well, sometimes it drops below 60 FPS (60 and not 40 because I'm using RGSS2 and the RGSS2 Player) but it never goes under 50.
 
The script is in the demo. Press F11, it will open the script editor and then you can copy paste the 5 parts of the script in your project.
 

Hadeki

Member

Every time I try to use the call script command "$scene.spriteset.tilemap.M7_set_p(45)", I get this message: "NoMethodError occurred while running the script. undefined method for `M7_set_p' for #<Tilemap_mode7:0x6a80748>".
And then when I try to use "$scene.spriteset.tilemap.mode7_set(45)" it tells me I have the "wrong number of arguments(0 for 1)".
I've tried both of these commands on multiple maps. A really big one, and then a small one. I have no idea what's going on.

Someone mentioned a .dll file from the demo, but I can't find it.
 
I'm getting a

Script "Neo Mode 7 Part 5' line 493: TypeError Occurred. can't convert NilClass into bitmap

as soon as I test my game from New Game, not using an old save or anything like that.

What could be the problem?

EDIT: Line 493 is:

Code:
     @map_tileset.blt(32 * ((k - 1) % 8), 32 * ((k - 1) / 8), bitmap, rect)


SECOND EDIT: I fixed it, I had an empty layer. Now I get another error insteadl.

Script "Neo Mode 7 Part 3' line 299: TypeError Occurred. nil can't be coerced into Fixnum

Line 299 is:

Code:
    self.y -= 32 * @character.height * zoom_y # height correction

How do I define the character's height in every map? The "@character.height" variable seems to be giving me problems.
 
@Kirby: You could use a common event that includes this script command: $game_player.height = value

@MCaladtogel: About heights, how does one gradually increase the players, or an event's height? (if you're even reading this topic anymore)
 
Hi!!!! well im new one..... and i have a question.....

My project works with Blizz ABS, and he tell me that exist a way to create a compatibility with this ABS.... i really need this awesome script for my work....is the only way that i have to continue this project.... can you help me???
 

Hadeki

Member

Kirby4life0":p9qzwniu said:
I'm getting a Script "Neo Mode 7 Part 5' line 493: TypeError Occurred. can't convert NilClass into bitmap as soon as I test my game from New Game, not using an old save or anything like that. What could be the problem?
EDIT: Line 493 is:
Code:
     @map_tileset.blt(32 * ((k - 1) % 8), 32 * ((k - 1) / 8), bitmap, rect)
SECOND EDIT: I fixed it, I had an empty layer. Now I get another error instead.
Script "Neo Mode 7 Part 3' line 299: TypeError Occurred. nil can't be coerced into Fixnum
Line 299 is:
Code:
    self.y -= 32 * @character.height * zoom_y # height correction
How do I define the character's height in every map? The "@character.height" variable seems to be giving me problems.

The error caused by line 493 is the same error I'm getting. How did you fix it? I removed "2" from the list of terrain ID's the script uses which sort of fixed it, but that's severely inconvenient. Using terrain ID's 1 and 2 works for just a couple maps though... It's really weird.
Also, did you fix the second error?
 
MGCaladtogel":18fye5ln said:
Neo Mode7 script

This new mode7 script is written from an old french script I created, and it is far different from Mewsterus's Mode07 script.

Features
  • flat maps (not curved)
  • high resolution (each screen line is independent)
  • map looping (x or/and y)
  • animated autotiles
  • (new version) Tiles with fixed terrain_tag not drawn flat with the map

Demo

new (24/04/08) :
http://www.rpg-palace.com/downloads/details.php?id=174
or
http://www.mediafire.com/?nmywdamii1z

'ello
I'm using (or trying to use) this script but ran up with a problem. When I leave a map with M7 to a non m7, or go from non m7 to a m7, it stops working. No errors or anything popup, the map just doesn't go mode 7. Any help?
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top