ГлавнаяФорумRPG MakerСкрипты/ПлагиныRPG Maker XPОстальные скриптыXP Yami engine ace - Overlay mapping
Войти на сайт
×
ТЕМА: XP Yami engine ace - Overlay mapping
XP Yami engine ace - Overlay mapping 9 года 2 мес. назад #85157
|
Автор: Yami
Адаптация под XP: strelokhalfer Дата релиза оригинального скрипта: 16.04.2012 Дата переноса: 20.09.2015 Описание: Данный скрипт автоматически загружает привязанную к определенной карте картинку. Может использоваться при создании статичного освещения (например, свет от уличного фонаря, лампы или какой-нибудь таинственной фигни - все зависит от фантазии автора). Да, это можно сделать и через привязанную к координатам события картинку, но с этим скриптом это делается куда проще, плюс картинку не придется постоянно стирать или показывать снова. Достоинства: + прост в освоении + существенно снижает временные затраты при работе с внешним видом проекта за счет того, что не приходится настраивать положение картинки + наложенные картинки можно менять, изменяя значение переменной, к которой они приписаны. Таким образом, можно сделать переключение на день и ночь с зажигающимися и гаснущими фонарями или что-нибудь в этом роде Выявленные недостатки версии для XP: - возможно некорректное отображение картинки. Правится увеличением значений ground.z, light.z, shadow.z и par.z в строках под номерами: 181, 187, 192 и 196 соответственно. выявленный методом научного тыка оптимальный вариант значения (по крайней мере для параллакса и света) = 1000. В текущей версии скрипта это исправлено. Инструкция по использованию: 1) Закинуть скрипт перед main и после Scene_debug 2) В папке Graphics проекта создать папку Overlay 3) В редакторе сделать картинку размером с вашу карту. Для этого лучше воспользоваться скриптом Map screenshot, скачать его можно здесь. этот скрипт позволяет нажатием F6 во время игры сделать скриншот всей карты, так что не придется заморачиваться с размерами, а просто открыть скрин в фотошопе и добавить на него новые слои, а после окончания работ удалить слой со скрином. 4) Сохранить получившийся результат в созданную в пункте 2 папку в формате jpg или png под названием parX-Y, groundX-Y, lightX-Y, shadowX-Y. Префиксы par, light, ground и shadow обозначают, соответственно, параллакс, землю, свет и тень. X - номер карты, Y - значение указанной в скрипте переменной, при котором будет показываться данное изображение 5) Сделать офигенный проект с отличной картинкой. Скрипт: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #==============================================================================
#
# XP Yami Engine Ace - Overlay Mapping
# -- Официальное обновление: 2012.04.16
# -- Русифицация и адаптация на Ace: 2015.09.20
# -- Сложность: Просто
# -- Ничего не требуется.
#==============================================================================
$imported = {} if $imported.nil?
$imported["YSE-OverlayMapping"] = true
#==============================================================================
# Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script based on Hanzo Kimura's idea. This will automatically load map's
# overlay by map ID, and a map can have more than one image per layer, so you
# don't have to create two or more map just for day/night or when an event occur.
#
#==============================================================================
# Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Create a folder in Graphics and name it Overlay.
# Put all of your overlay into Graphics/Overlay.
# Your overlay file will have the name: "Filename Prefix" + Map-ID + "-" + Number
# which "Filename Prefix" is the one you will config below
# Map-ID is your map's ID
# Number is 1, 2, 3, ... using for Overlay Variables.
#
# Example: Graphics/Overlay/ground2-1.png
# Which means this will be ground layer, for map 2, variable = 1
#
# Light/Shadow must be .jpg
# Parallax/Ground must be .png
#
#==============================================================================
module YSA
module OVERLAY
LIGHT_SWITCH = 129 # Turn on/off light layer
SHADOW_SWITCH = 120 # Turn on/off shadow layer
PARALLAX_SWITCH = 131 # Turn on/off parallax layer
GROUND_SWITCH = 132 # Turn on/off ground layer
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Overlay Variables -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# A map can have more than one image per layer, that means you can have a
# different light/shadow for day and night, or have a different ground when
# an event occured.
#--------------------------------------------------------------------------
# Default: 1
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LIGHT_VARIABLE = 15 # Switch to another light
SHADOW_VARIABLE = 15 # Switch to another shadow
PARALLAX_VARIABLE = 16 # Switch to another parallax
GROUND_VARIABLE = 16
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Filename Prefix -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This will make this script automatic, it will check if there are layers in
# overlay folder
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
LIGHT = "light" # Light layer's filename prefix
SHADOW = "shadow" # Shadow layer's filename prefix
PARALLAX = "par" # Parallax layer's filename prefix
GROUND = "ground" # Ground layer's filename prefix
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Overlay Opacity -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This will make this script automatic, it will check if there are layers in
# overlay folder
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
GROUND_OPACITY = 255
PARALLAX_OPACITY = 255
LIGHT_OPACITY = 128
SHADOW_OPACITY = 96
end #OVERLAY
end # YSA
#==============================================================================
# �� Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# �� Cache
#==============================================================================
module RPG
module Cache
#--------------------------------------------------------------------------
# new method: overlay
#--------------------------------------------------------------------------
def self.overlay(filename)
begin
self.load_bitmap("Graphics/Overlay/", filename)
rescue
self.empty_bitmap
end
end
def self.empty_bitmap
Bitmap.new(32, 32)
end
end # Cache
end
#==============================================================================
# �� DataManager
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# alias method: setup_new_game
#--------------------------------------------------------------------------
alias ovm_main main;
def main
ovm_main
setup_overlay_mapping
end
#--------------------------------------------------------------------------
# new method: setup_overlay_mapping
#--------------------------------------------------------------------------
def setup_overlay_mapping
# Control switches
$game_switches[YSA::OVERLAY::LIGHT_SWITCH] = true
$game_switches[YSA::OVERLAY::SHADOW_SWITCH] = true
$game_switches[YSA::OVERLAY::GROUND_SWITCH] = true
$game_switches[YSA::OVERLAY::PARALLAX_SWITCH] = true
# Control variables
$game_variables[YSA::OVERLAY::LIGHT_VARIABLE] = 1
$game_variables[YSA::OVERLAY::SHADOW_VARIABLE] = 1
$game_variables[YSA::OVERLAY::GROUND_VARIABLE] = 1
$game_variables[YSA::OVERLAY::PARALLAX_VARIABLE] = 1
end
end # DataManager
#==============================================================================
# �� Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias overlay_initialize initialize
def initialize
overlay_initialize
create_overlay_map
update
end
#--------------------------------------------------------------------------
# new method: create_overlay_map
#--------------------------------------------------------------------------
def create_overlay_map
@current_light = 0
@current_shadow = 0
@current_par = 0
@current_ground = 0
# Ground Layer$game_map
@ground = Sprite.new(@viewport1)
@ground.opacity = YSA::OVERLAY::GROUND_OPACITY
# Light Layer
@light = Sprite.new(@viewport1)
@light.opacity = YSA::OVERLAY::LIGHT_OPACITY
@light.blend_type = 1
@light.z = 1000
# Shadow Layer
@shadow = Sprite.new(@viewport1)
@shadow.opacity = YSA::OVERLAY::SHADOW_OPACITY
@shadow.blend_type = 2
@shadow.z = 1000
# Parallax Layer
@par = Sprite.new(@viewport1)
@par.opacity = YSA::OVERLAY::PARALLAX_OPACITY
@par.z = 1000
end
#--------------------------------------------------------------------------
# new method: dispose_overlay_map
#--------------------------------------------------------------------------
def dispose_overlay_map
@ground.dispose
@light.dispose
@shadow.dispose
@par.dispose
end
alias over_dispose dispose
def dispose
over_dispose
dispose_overlay_map
end
alias over_update update
def update
update_overlay
over_update
end
#--------------------------------------------------------------------------
# new method: update_overlay
#--------------------------------------------------------------------------
def update_overlay
update_om_ground
update_om_par
update_om_light
update_om_shadow
end
#--------------------------------------------------------------------------
# new method: update_om_ground
#--------------------------------------------------------------------------
def update_om_ground
return unless @ground
@ground.visible = $game_switches[YSA::OVERLAY::GROUND_SWITCH] if @ground.visible != $game_switches[YSA::OVERLAY::GROUND_SWITCH]
@ground.ox = $game_map.display_x / 4 if @ground.ox != $game_map.display_x / 4
@ground.oy = $game_map.display_y / 4 if @ground.oy != $game_map.display_y / 4
if @current_ground != $game_variables[YSA::OVERLAY::GROUND_VARIABLE]
filename = YSA::OVERLAY::GROUND
filename += $game_map.map_id.to_s
filename += "-" + $game_variables[YSA::OVERLAY::GROUND_VARIABLE].to_s
@ground.bitmap = RPG::Cache.overlay(filename)
@current_ground = $game_variables[YSA::OVERLAY::GROUND_VARIABLE]
end
end
#--------------------------------------------------------------------------
# new method: update_om_par
#--------------------------------------------------------------------------
def update_om_par
return unless @par
@par.visible = $game_switches[YSA::OVERLAY::PARALLAX_SWITCH] if @par.visible != $game_switches[YSA::OVERLAY::PARALLAX_SWITCH]
@par.ox = $game_map.display_x / 4 if @par.ox != $game_map.display_x / 4
@par.oy = $game_map.display_y / 4 if @par.oy != $game_map.display_y / 4
if @current_par != $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE]
filename = YSA::OVERLAY::PARALLAX
filename += $game_map.map_id.to_s
filename += "-" + $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE].to_s
@par.bitmap = RPG::Cache.overlay(filename)
@current_par = $game_variables[YSA::OVERLAY::PARALLAX_VARIABLE]
end
end
#--------------------------------------------------------------------------
# new method: update_om_light
#--------------------------------------------------------------------------
def update_om_light
return unless @light
@light.visible = $game_switches[YSA::OVERLAY::LIGHT_SWITCH] if @light.visible != $game_switches[YSA::OVERLAY::LIGHT_SWITCH]
@light.ox = $game_map.display_x / 4 if @light.ox != $game_map.display_x / 4
@light.oy = $game_map.display_y / 4 if @light.oy != $game_map.display_y / 4
if @current_light != $game_variables[YSA::OVERLAY::LIGHT_VARIABLE]
filename = YSA::OVERLAY::LIGHT
filename += $game_map.map_id.to_s
filename += "-" + $game_variables[YSA::OVERLAY::LIGHT_VARIABLE].to_s
@light.bitmap = RPG::Cache.overlay(filename)
@current_light = $game_variables[YSA::OVERLAY::LIGHT_VARIABLE]
end
end
#--------------------------------------------------------------------------
# new method: update_om_shadow
#--------------------------------------------------------------------------
def update_om_shadow
return unless @shadow
@shadow.visible = $game_switches[YSA::OVERLAY::SHADOW_SWITCH] if @shadow.visible != $game_switches[YSA::OVERLAY::SHADOW_SWITCH]
@shadow.ox = $game_map.display_x / 4 if @shadow.ox != $game_map.display_x / 4
@shadow.oy = $game_map.display_y / 4 if @shadow.oy != $game_map.display_y / 4
if @current_shadow != $game_variables[YSA::OVERLAY::SHADOW_VARIABLE]
filename = YSA::OVERLAY::SHADOW
filename += $game_map.map_id.to_s
filename += "-" + $game_variables[YSA::OVERLAY::SHADOW_VARIABLE].to_s
@shadow.bitmap = RPG::Cache.overlay(filename)
@current_shadow = $game_variables[YSA::OVERLAY::SHADOW_VARIABLE]
end
end
end # Spriteset_Map
#==============================================================================
# �� Scene_Map
#==============================================================================
class Scene_Map# < Scene_Base
#--------------------------------------------------------------------------
# alias method: post_transfer
#--------------------------------------------------------------------------
alias overlay_transfer_player transfer_player
def transfer_player
overlay_transfer_player
@spriteset.dispose_overlay_map
@spriteset.create_overlay_map
@spriteset.update
#overlay_post_transfer
end
end # Scene_Map
#==============================================================================
#
# �� End of File
#
#============================================================================== |
Всего хорошего, и спасибо за рыбу
Последнее редактирование: 9 года 2 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.
|
XP Yami engine ace - Overlay mapping 9 года 2 мес. назад #85168
|
Скрипт обновлен (поправлены баги с картинками и выставлены новые значения координаты z, так что оверлей корректно отображается поверх карты), код смотрим в первом посте.
|
Всего хорошего, и спасибо за рыбу
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.259 секунд