-
Altalify
-
-
Вне сайта
-
Познающий
-
- Сообщений: 13
-
-
|
EgoDragonis пишет:
Используй скрипт)
Вставлять над Main) =begin
Swap Tileset with new passage setting
Версия: 0.4
Автор: BulletXt (bulletxt@gmail.com)
Дата: 13/06/2009
Этот скрипт позволяет вам:
a) Менять наборы тайлов в любой момент
b) сменить один или несколько тайлсетов
c) загружать другую таблицы проходимостей в любой момент
Как это работает:
Создайте папку "extra_tiles" в Graphics/System. Поместите туда дополнительные
тайлсеты. Вы можете давать им имена по своему усмотрению. Прежде чем перемещать
игрока на другую локацию, просто вызовите скрипт внутри события таким образом:
$tileA1 = "fileName"
Вместо "fileName" впишите имя того тайлсета, на который вы хотите произвести
смену. В этом примере изменен тайлсет A1. Вы можете менять один или же несколько
тайлсетов сразу. Пример ниже меняет тайлсеты A1, A4 и E:
$tileA1 = "fileName"
$tileA4 = "fileName"
$tileE = "fileName"
Сразу после выполнения скрипта внутри события, включите переключатель SWAP_TILE
(номер переключателя можно отредактировать ниже). Чтобы вернуться к стандартному
тайлсету локации, просто выключите этот переключатель.
Вы также можете загрузить таблицу проходимости, отличную от оригинальной. Просто
откройте новый проект, скопируйте тайлсеты и выставьте проходимость так, как вам
угодно, сохраните и закройте проект. В папке Data только что созданного проекта
скопируйте файл System.rvdata. Вставьте этот файл в ваш проект в директорию
"extra_tiles" в Graphics\System и переименуйте его ка вам угодно. Убедитесь, что
расширение файла - ".rvdata"
Пример: System.rvdata переименован в: pub.rvdata
Таблица проходимости загружается также, как и тайлсеты. Это значит, что сначала
выполнить скрипт внутри события, а затем включить переключатель
LOAD_PASSAGE_SETTING (номер переключателя можно отредактировать ниже). Вы можете
загрузить таблицу проходимости без смены тайлсетов. Эти две вещи совершенно не
зависят друг от друга.
Скрипт для загрузки таблицы проходимости выглядит следующим образом:
$swap_passages = "filePassage"
Вместо filePassage впишите имя необходимой таблицы проходимости.
Просто выключив оба переключателя, вы автоматически смените таблицу проходимости
и все тайлсеты на стандартные.
Если вы хотите переместить игрокаи сохранить все измененные тайлсеты, и хотите
загрузить стандартный тайлсет A3, просто выполните скрипт такого рода:
$tileA3 = nil
Для такого же результата с таблицей проходимости:
$swap_passages = nil
Это изменит вашу таблицу на стандартную таблицу проходимости.
Трюки:
- Вы можете создать специалльный эффект, как в демо-версиию.
Например, вы можете сделать смену тайлсетов без перехода на локацию.
Для наглядности вы можете сделать смену тайла стены в реальном времени.
Для этого сделайте все для стандартной смены тайлсетов (скрипт + свитч ВКЛ),
затем сразу после этого выполните скрипт внутри эвента: $game_map.tileset.
Этот скрипт перезагружает карту (экран замирает на 30 милисекунд), и у стены
будет уже совсем другой тайл. Также можно работать и с таблицей проходимости:
скрипт + свитч ВКЛ, затем скрипт $game_map.tileset, и к карте будет применена
загруженная таблица проходимости.
=end
############################# КОНФИГУРАЦИЯ #####################################
# Это номер (ID) переключателя, вызывающего систему смены тайлсетов. Он исполь-
# зуется для смены/восстановления тайлсетов. ОН НЕ МЕНЯЕТ ТАБЛИЦУ ПРОХОДИМОСТИ!
# Убедитесь, что включаете переключатель перед вызовом скрипта (как сказано выше)
SWAP_TILE = 81
# Это номер (ID) переключателя, вызывающего систему загрузки таблицы проходимости.
# Он используется для загрузки восстановления таблицы проходжимости. ОН НЕ МЕНЯЕТ
# ТАЙЛСЕТЫ!
# Убедитесь, что включаете переключаетль перед вызовом скрипта (как сказано выше).
LOAD_PASSAGE_SETTING = 82
########################## КОНЕЦ КОНФИГУРАЦИИ ##################################
#==============================================================================
# ** Cache
module Cache_Swap_Tiles
#--------------------------------------------------------------------------
# * Get Character Graphic
# filename : Filename
#--------------------------------------------------------------------------
def self.swap(filename)
load_bitmap("Graphics/System/extra_tiles/", filename)
end
#--------------------------------------------------------------------------
# * Clear Cache
#--------------------------------------------------------------------------
def self.clear
@cache = {} if @cache == nil
@cache.clear
GC.start
end
#--------------------------------------------------------------------------
# * Load Bitmap
#--------------------------------------------------------------------------
def self.load_bitmap(folder_name, filename, hue = 0)
@cache = {} if @cache == nil
path = folder_name + filename
if not @cache.include?(path) or @cache[path].disposed?
if filename.empty?
@cache[path] = Bitmap.new(32, 32)
else
@cache[path] = Bitmap.new(path)
end
end
if hue == 0
return @cache[path]
else
key = [path, hue]
if not @cache.include?(key) or @cache[key].disposed?
@cache[key] = @cache[path].clone
@cache[key].hue_change(hue)
end
return @cache[key]
end
end
end
#initialize global variables
$tileA1 = nil
$tileA2 = nil
$tileA3 = nil
$tileA4 = nil
$tileA5 = nil
$tileB = nil
$tileC = nil
$tileD = nil
$tileE = nil
$swap_passages = nil
################################################################################
class Game_Map
include Cache_Swap_Tiles
alias bulletxt_goodbye_vx_limit_tile_setup setup
def setup(map_id)
#if false, normal vx behavior and exit
if $game_switches[LOAD_PASSAGE_SETTING] == false
bulletxt_goodbye_vx_limit_tile_setup(map_id)
$swap_passages = nil
return
end
path = "Graphics/System/extra_tiles/" + $swap_passages.to_s() + ".rvdata" rescue nil
if $swap_passages != nil
@map_id = map_id
@map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
@display_x = 0
@display_y = 0
# load system settings from that file
new_system_rvdata = load_data(path)
# Use passage settings from that file
@passages = new_system_rvdata.passages
#default vx code
referesh_vehicles
setup_events
setup_scroll
setup_parallax
@need_refresh = false
else
bulletxt_goodbye_vx_limit_tile_setup(map_id)
end
end
#if here, player has done a $game_map.tileset call. It must reload
#map with new passage setting (if it exists) and upate map.
def tileset
#if false, we must update and load default passage
if $game_switches[LOAD_PASSAGE_SETTING] == false
@passages = $data_system.passages
else
#if nil, must reset passage setting to default
if $swap_passages == nil
@passages = $data_system.passages
$scene = Scene_Map.new
return
end
path = "Graphics/System/extra_tiles/" + $swap_passages + ".rvdata" rescue nil
# load system settings from that file
new_system_rvdata = load_data(path)
# Use passage settings from that file
@passages = new_system_rvdata.passages
end
#this updates the map tiles. it does not modify events or anything else.
$scene = Scene_Map.new
end
end
class Spriteset_Map
include Cache_Swap_Tiles
alias bulletxt_lodestone_create_tilemap create_tilemap
def create_tilemap
if $game_switches[SWAP_TILE] == false
bulletxt_lodestone_create_tilemap
$tileA1 = nil
$tileA2 = nil
$tileA3 = nil
$tileA4 = nil
$tileA5 = nil
$tileB = nil
$tileC = nil
$tileD = nil
$tileE = nil
else
bulletxt_lodestone_create_tilemap
path_to_graphic = "extra_tiles/"
#tileA1
tile1 = Cache_Swap_Tiles.swap($tileA1 + ".png") rescue nil
@tilemap.bitmaps[0] = tile1 if $tileA1 != nil#if FileTest.exist?(path_to_graphic + $tileA1.to_s() + ".png")
#tileA2
tile2 = Cache_Swap_Tiles.swap($tileA2 + ".png") rescue nil
@tilemap.bitmaps[1] = tile2 if $tileA2 != nil#if FileTest.exist?(path_to_graphic + $tileA2.to_s() + ".png")
#tileA3
tile3 = Cache_Swap_Tiles.swap($tileA3 + ".png") rescue nil
@tilemap.bitmaps[2] = tile3 if $tileA3 != nil#if FileTest.exist?(path_to_graphic + $tileA3.to_s() + ".png")
#tileA4
tile4 = Cache_Swap_Tiles.swap($tileA4 + ".png") rescue nil
@tilemap.bitmaps[3] = tile4 if $tileA4 != nil#if FileTest.exist?(path_to_graphic + $tileA4.to_s() + ".png")
#tileA5
tile5 = Cache_Swap_Tiles.swap($tileA5 + ".png") rescue nil
@tilemap.bitmaps[4] = tile5 if $tileA5 != nil#if FileTest.exist?(path_to_graphic + $tileA5.to_s() + ".png")
#tileB
tile6 = Cache_Swap_Tiles.swap($tileB + ".png") rescue nil
@tilemap.bitmaps[5] = tile6 if $tileB != nil#if FileTest.exist?(path_to_graphic + $tileB.to_s() + ".png")
#tileC
tile7 = Cache_Swap_Tiles.swap($tileC + ".png") rescue nil
@tilemap.bitmaps[6] = tile7 if $tileC != nil#if FileTest.exist?(path_to_graphic + $tileC.to_s() + ".png")
#tileD
tile8 = Cache_Swap_Tiles.swap($tileD + ".png") rescue nil
@tilemap.bitmaps[7] = tile8 if $tileD != nil#if FileTest.exist?(path_to_graphic + $tileD.to_s() + ".png")
#tileE
tile9 = Cache_Swap_Tiles.swap($tileE + ".png") rescue nil
@tilemap.bitmaps[8] = tile9 if $tileE != nil#if FileTest.exist?(path_to_graphic + $tileE.to_s() + ".png")
end
end
end
class Scene_File < Scene_Base
alias bulletxt_swap_tiles_write_save_data write_save_data
def write_save_data(file)
bulletxt_swap_tiles_write_save_data(file)
Marshal.dump($tileA1, file)
Marshal.dump($tileA2, file)
Marshal.dump($tileA3, file)
Marshal.dump($tileA4, file)
Marshal.dump($tileA5, file)
Marshal.dump($tileB, file)
Marshal.dump($tileC, file)
Marshal.dump($tileD, file)
Marshal.dump($tileE, file)
Marshal.dump($swap_passages.to_s(), file)
end
alias bulletxt_swap_tiles_read_save_data read_save_data
def read_save_data(file)
bulletxt_swap_tiles_read_save_data(file)
$tileA1 = Marshal.load(file)
$tileA2 = Marshal.load(file)
$tileA3 = Marshal.load(file)
$tileA4 = Marshal.load(file)
$tileA5 = Marshal.load(file)
$tileB = Marshal.load(file)
$tileC = Marshal.load(file)
$tileD = Marshal.load(file)
$tileE = Marshal.load(file)
$swap_passages = Marshal.load(file)
end
end
Огромное спасибо.
Если будут ещё вопросы, обязательно всё оформлю как надо.
И вы правы я не ознакомился с правилами, не думал, что задержусь =) Извиняйте!
Хотя довольно сложно для начинающего =)
|