Доброго времени суток! Хочу попросить помощи в разборе или поиске похожего скрипта.
Хочу сделать так чтобы картинки ИД с
1 по
30 показывались под событиями и персонажем.
Мне помогли таким скриптом:
module Soul
module LayeredPicture
F_PIC = 1 # id первой картинки
L_PIC = 50 # id последней
end
end
class Spriteset_Map
include Soul::LayeredPicture
#--------------------------------------------------------------------------
# ● Alias Listings
#--------------------------------------------------------------------------
unless method_defined?(:soul_layered_picture_initialize)
alias_method(:soul_layered_picture_initialize, :initialize)
end
unless method_defined?(:soul_layered_picture_dispose)
alias_method(:soul_layered_picture_dispose, :dispose)
end
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
soul_layered_picture_initialize
for i in F_PIC..L_PIC
@picture_sprites[i-1] = Sprite_Picture.new(@viewport1, $game_map.screen.pictures[i])
end
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
soul_layered_picture_dispose
for i in F_PIC..L_PIC
@picture_sprites[i-1].dispose
end
end
end
class Sprite_Picture < Sprite
include Soul::LayeredPicture
#---------------------------------------------------------------------------
# * Alias Listings
#---------------------------------------------------------------------------
unless method_defined?(:soul_layered_picture_update)
alias_method(:soul_layered_picture_update, :update)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
soul_layered_picture_update
self.z = 1 if (@picture.number >= F_PIC and @picture.number <= L_PIC)
end
end
Так же нашел похожий скрипт:
#===============================================================
# ● [VXAce] ◦ Pictures under Characters ◦ □
# * Show pictures under characters on map but above map tiles *
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 22/02/2009
# ◦ Version: 1.0
#
# This works but not compatible with the other scripts
#
#--------------------------------------------------------------
# ◦ Update:
#--------------------------------------------------------------
# □ Version 1.0 (22/02/2009)
# - Unlimited numbers of picture under characters
#
#--------------------------------------------------------------
# ◦ Compatibility:
#--------------------------------------------------------------
# □ This script will rewrite 0 method(s):
#
#
# □ This script will alias 2 method(s):
# Spriteset_Map.create_pictures
# Sprite_Picture.update
#
# □ This script should work with most scripts
#
#--------------------------------------------------------------
# ◦ Installation:
#--------------------------------------------------------------
# 1) This script should be placed JUST AFTER ▼ Materials.
#
# □ Like this:
# ▼ Materials
# *Pictures under Characters
# ...
# ...
# ▼ Main Process
# Main
#
# 2) Setup this script in Setup Part below.
#
#--------------------------------------------------------------
# ◦ How to use:
#--------------------------------------------------------------
# □ Place this script and setup in the setup part.
#
#=================================================================
class Spriteset_Map
#=================================================================
# ++ Setup Part
#-----------------------------------------------------------------
FIRST_PICBELOW_ID = 15 # First ID of picture that will show below characters
LAST_PICBELOW_ID = 20 # Last ID of picture that will show below characters
# For example, if you set FIRST to 10 and LAST to 15, picture ID 10-15
# will show below characters on map.
#=================================================================
alias wora_picbelow_sprsetmap_crepic create_pictures
#--------------------------------------------------------------------------
# * Create Picture Sprite
#--------------------------------------------------------------------------
def update_pictures
$game_map.screen.pictures.each do |pic|
case pic.number
when FIRST_PICBELOW_ID..LAST_PICBELOW_ID
#puts 'below'
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport1, pic)
else
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
end
@picture_sprites[pic.number].update
## Mithran's pic fix code ~Kread
if pic.name == ""
$game_map.screen.pictures.remove(pic.number)
@picture_sprites[pic.number].dispose
@picture_sprites[pic.number] = nil
end
end
end
end
class Sprite_Picture < Sprite
alias wora_picbelow_sprpic_upd update
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update(*args)
wora_picbelow_sprpic_upd(*args)
## Override's Mithran Picture Fix ~Kread
if @picture.number.between?(Spriteset_Map::FIRST_PICBELOW_ID,
Spriteset_Map::LAST_PICBELOW_ID)
self.z = 50
end
end
end
Они выполняют свою функцию и персонаж с событиями находится над картинками. Но проблема заключается в том что нарушена последовательность слоев. Например картинка(1) слоя 4 может быть выше слоя 20 картинки(2). Если поменять цифры слоев местами не помогает.
Вызов изображения у меня записан скриптом:
screen.pictures[2].show("01/2", 0, 312, 200, 100, 100, 255, 0)
Если у кого есть возможность посмотрите пожалуйста эту демку(1.5мб):
yadi.sk/d/2R05nIEFmjfu5
Строчка от скрипта
MOG_Picture_Effects:
"picture_position(3,-2)" Первая цифра это ИД слоя(картинки), вторая это просто значение для того чтобы картинка привязывалась к координатам карты, поэтому оно всегда -2.
У меня сделано так:
picture_position(3,-2)
screen.pictures[3].show("01/k", 1, 312, 200, 100, 100, 255, 0)
picture_position(2,-2)
screen.pictures[2].show("01/z", 1, 24, 216, 100, 100, 255, 0)
Скрипты между собой не конфликтуют, проверил без MOG_Picture_Effects.
Возможно дело не в скрипте а моей невнимательности.