RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
mode7 compatibility issues

0 Members and 1 Guest are viewing this topic.

**
Rep:
Level 82
Hello!
This is my first topic here, my name is Irene and I'm from Spain.
I've finally found a "mode7" script that works for me (is the following, in the link)

http://www.creationasylum.net/forum/index.php?showtopic=21599

But this scripts have 2 compatibility issues for me:

1.caterpillar
2.reflection

1. The caterpillar script:
If I use the caterpillar script form Tons Of Add Ons, the mode7 script somehow "disables" the caterpillar script. I don't get any error screen, it's just the party members won't appear following the leader. They're in the party and everything works as if the caterpillar script wasn't even there.
If i use an independent caterpillar script, it works. but when i enter the map where mode7 is active, i get this error: "Script Sprite_Character line 29: NoMethodError. Undefined method `tile_id' for #<viewport:0x3959ca0>"
This is the independent caterpillar script:
Spoiler for:
Code: [Select]
#
# Train_Actor
#
# fukuyama@alles.or.jp
#

# ????????????
# true ???????????
# TRAIN_ACTOR_TRANSPARENT_SWITCH = false
TRAIN_ACTOR_TRANSPARENT_SWITCH = true

# ????????????
# ??????????ON???????
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20

# ??
#Input::DOWN = 2
#Input::LEFT = 4
#Input::RIGHT = 6
#Input::UP = 8
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5

class Game_Party_Actor < Game_Character
def initialize
super()
@through = true
end
def setup(actor)
# ??????????????????
if actor != nil
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
# ?????????????
@opacity = 255
@blend_type = 0
end
def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
#--------------------------------------------------------------------------
# ? ????
# turn_enabled : ?????????????????
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# ????
if turn_enabled
turn_down
end
# ???????
if passable?(@x, @y, Input::DOWN)
# ????
turn_down
# ?????
@y += 1
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_enabled : ?????????????????
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# ????
if turn_enabled
turn_left
end
# ???????
if passable?(@x, @y, Input::LEFT)
# ????
turn_left
# ?????
@x -= 1
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_enabled : ?????????????????
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# ????
if turn_enabled
turn_right
end
# ???????
if passable?(@x, @y, Input::RIGHT)
# ????
turn_right
# ?????
@x += 1
end
end
#--------------------------------------------------------------------------
# ? ????
# turn_enabled : ?????????????????
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# ????
if turn_enabled
turn_up
end
# ???????
if passable?(@x, @y, Input::UP)
# ????
turn_up
# ?????
@y -= 1
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_lower_left
# ?????????
unless @direction_fix
# ?????????????????????????
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
end
# ??????? ?????????????????
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
# ?????
@x -= 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_lower_right
# ?????????
unless @direction_fix
# ?????????????????????????
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
end
# ??????? ?????????????????
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
# ?????
@x += 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_upper_left
# ?????????
unless @direction_fix
# ?????????????????????????
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
end
# ??????? ?????????????????
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
# ?????
@x -= 1
@y -= 1
end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def move_upper_right
# ?????????
unless @direction_fix
# ?????????????????????????
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
end
# ??????? ?????????????????
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
# ?????
@x += 1
@y -= 1
end
end

def set_move_speed(move_speed)
@move_speed = move_speed
end
end

class Spriteset_Map
def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end
def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
index_game_player = 0
@character_sprites.each_index do |i|
if @character_sprites[i].character.instance_of?(Game_Player)
index_game_player = i
break
end
end
for character in characters.reverse
@character_sprites.unshift(
Sprite_Character.new(@viewport1, character)
)
end
@setup_actor_character_sprites_flag = true
end
end
end

class Scene_Map
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end

class Game_Party
def set_transparent_actors(transparent)
@transparent = transparent
end
def setup_actor_character_sprites
if @characters == nil
@characters = []
for i in 1 .. 4
@characters.push(Game_Party_Actor.new)
end
end
if @actors_chach == nil
@actors_chach = []
end
if @actors_chach != @actors
@actors_chach = @actors.clone
for i in 1 .. 4
@characters[i - 1].setup(actors[i])
end
end
if $scene.instance_of?(Scene_Map)
$scene.setup_actor_character_sprites(@characters)
end
end
def update_party_actors
setup_actor_character_sprites
transparent = $game_player.transparent
if transparent == false
if TRAIN_ACTOR_TRANSPARENT_SWITCH
transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
else
transparent = $game_player.transparent
end
end
for character in @characters
character.transparent = transparent
character.set_move_speed($game_player.get_move_speed)
character.update
end
end
def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
if @move_list == nil
@move_list = []
end
for i in 0 .. 10
@move_list[i] = nil
end
end
def move_party_actors
if @move_list == nil
@move_list = []
for i in 0 .. 10
@move_list[i] = nil
end
end
@move_list.each_index do |i|
if @characters[i] != nil
case @move_list[i].type
when Input::DOWN
@characters[i].move_down(@move_list[i].args[0])
when Input::LEFT
@characters[i].move_left(@move_list[i].args[0])
when Input::RIGHT
@characters[i].move_right(@move_list[i].args[0])
when Input::UP
@characters[i].move_up(@move_list[i].args[0])
when DOWN_LEFT
@characters[i].move_lower_left
when DOWN_RIGHT
@characters[i].move_lower_right
when UP_LEFT
@characters[i].move_upper_left
when UP_RIGHT
@characters[i].move_upper_right
when JUMP
@characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
end
end
end
end
class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end
def type() return @type end
def args() return @args end
end
def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end
def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::DOWN,turn_enabled)
end
def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end
def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end
def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end
def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end
def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end
def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end
def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end
def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end

module Game_Player_Module
def update
$game_party.update_party_actors
super
end
def moveto( x, y )
super
$game_party.moveto_party_actors( x, y )
end
def move_down(turn_enabled = true)
if passable?(@x, @y, Input::DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_lower_left
# ??????? ?????????????????
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
# ??????? ?????????????????
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
# ??????? ?????????????????
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
# ??????? ?????????????????
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end
def jump(x_plus, y_plus)
# ????????
new_x = @x + x_plus
new_y = @y + y_plus
# ???? (0,0) ??????????????????
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end

# -----------------------------------------------
# move_speed ??????????
# -----------------------------------------------
def get_move_speed
return @move_speed
end
end

class Game_Player
include Game_Player_Module
end

If someone could fix that problem, I'd be most grateful.


2. Sprite reflection:
This script makes your sprite reflect in some surfaces, like water. If I add the mode7 script, this one becomes also "disabled": It doesnt show any error screen, but the sprites won't reflect, even if mode7 is not activated in that map.
This is the script just in case.

Spoiler for:
Code: [Select]
#==============================================================================
# ? Sprite_Mirror
# Based on Sprite_Shadow, modified by Rataime
#==============================================================================

class Sprite_Mirror < RPG::Sprite

attr_accessor :character
attr_accessor :events
attr_accessor :event_y

def initialize(viewport=nil)
 super(viewport)
 @character = $game_player
 @events=0
 @event_y=0
 self.opacity=0
 update
end

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)
     @cw = bitmap.width / 4
     @ch = bitmap.height / 4
     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
   if @character.direction==8
     sy = 0 * @ch
   end
   if @character.direction==2
     sy = 3 * @ch
   end
   self.src_rect.set(sx, sy, @cw, @ch)
 end
 self.x = @character.screen_x
 self.y = self.event_y-($game_player.screen_y-self.event_y).abs+30
 self.z = 10
 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

#===================================================
# ? CLASS Sprite_Character edit
#===================================================

class Sprite_Character < RPG::Sprite
alias mirror_initialize initialize

def initialize(viewport, character = nil)
  @character = character
  super(viewport)
  if character.is_a?(Game_Player)
   $game_map.mirror=Sprite_Mirror.new(viewport)
  end
  mirror_initialize(viewport, @character)
end

alias mirror_update update

def update
 mirror_update
 if (@mirror!=nil and character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["m"])
   if $game_player.screen_y-self.y<80 and self.y<$game_player.screen_y and ($game_player.screen_x-self.x).abs<17
     if (character.list[1]!=nil and character.list[1].code == 108)
       @mirror.opacity=character.list[1].parameters[0].to_f
     else
       @mirror.opacity=$game_player.opacity
     end
     @mirror.events=self.id
     @mirror.event_y=self.y
   else
     if @mirror.events==self.id
       @mirror.events=0
     else
       if @mirror.events==0
         @mirror.opacity=0
       end
     end
   end
 end
 @mirror=$game_map.mirror
 if character.is_a?(Game_Player)
   @mirror.update
 end
end

end

#===================================================
# ? CLASS Scene_Save edit
#===================================================
class Scene_Save < Scene_File

alias mirror_write_save_data write_save_data

def write_save_data(file)
  $game_map.mirror = nil
  mirror_write_save_data(file)
end
end

#===================================================
# ? CLASS Game_Map edit
#===================================================
class Game_Map
attr_accessor :mirror
end

#===================================================
# ? CLASS Scene_Map edit
#===================================================
class Spriteset_Map

alias mirror_map_initialize initialize

def initialize
  $game_map.mirror=nil
  mirror_map_initialize
end
end

********
Furry Philosopher
Rep:
Level 94
Rawr?
2013 Best RPG Maker User (Creativity)Randomizer - GIAW 11Gold - GIAW 11 (Hard)Secret Santa 2013 ParticipantFor frequently finding and reporting spam and spam bots2012 Best RPG Maker User (Programming)2012 Best RPG Maker User (Mapping)Secret Santa 2012 ParticipantGold - GIAW 9Project of the Month winner for September 2008For taking a crack at the RMRK Wiki2011 Best RPG Maker User (Programming)2011 Kindest Member2011 Best Veteran2010 Most Deserving Of A Promotion2010 Best RPG Maker User (Technical)
I'm not really sure about the second one, that looks to be a hard one to manage to be honest.

For the first one, however, I'm pretty sure that Blizzard had something to fix that on his home forum.
Check out his site and look around, I think you'll find it: http://forum.chaos-project.com/index.php




**
Rep:
Level 82
Ok, i went to that forum to have a look... and here is what Blizzard says about it:
Quote
Also that may run slow on your computer.. and you cant use caterpillar, however you can summon and use traps..

Anyways, the mode7 script I'm using is not the Blizzard's one, because it just doesn't seem to work for me. I constantly get error messages even if i copy and paste the scripts to a new project.

The script i'm using is the one that is in the link.

Thak you for your response, you were very quick!

(I hope my english is not too bad...)