Войти на сайт
×
ТЕМА: Swap Tileset VX
Swap Tileset VX 15 года 3 мес. назад #28026
|
Автор скрипта и программного обеспечения: bulletXt. Swap Tileset with new passage setting Версия: 0.4 Автор: BulletXt (Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) Дата: 13/06/2009 Этот скрипт позволяет вам: a) Менять наборы тайлов в любой момент b) сменить один или несколько тайлсетов c) загружать другую таблицы проходимостей в любой момент. Скрипт и инструкция по использованию скрипта (русский перевод): ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] =begin Swap Tileset with new passage setting Версия: 0.4 Автор: BulletXt (Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.) Дата: 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 = 1 # Это номер (ID) переключателя, вызывающего систему загрузки таблицы проходимости. # Он используется для загрузки восстановления таблицы проходжимости. ОН НЕ МЕНЯЕТ # ТАЙЛСЕТЫ! # Убедитесь, что включаете переключаетль перед вызовом скрипта (как сказано выше). LOAD_PASSAGE_SETTING = 2 ########################## КОНЕЦ КОНФИГУРАЦИИ ################################## #============================================================================== # ** 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 Эта небольшая программа с GUI предназначена для непосредственной работы в RPG Maker VX в процессе создания карт. Использования этой прогаммы имеет смысл в том случае, если вы используете мой скрипт Swap Tileset (см. выше, прим. перев). Во время создания карты просто кликните соответствующую кнопку в программе, и она сменит тайлсет на новый, и отобразит непосредственно в RPG Maker (щелкните на другой карте, чтобы изменения были применены). Это очень просто и очень полезно во время создания карт. Для работы программы потребуется следующее: - Microsoft Visual C++ 2005 Redistributable (или выше). Если приложение отказывается запускаться и в этом случае, установитеЭТО. - ВСЕ файлы программы должны быть скопированы в корневую папку вашего проекта (директорию, содержащую Game.exe и пр.) - Вы должны скопировать все свои стандартные тайлсеты в папку Graphics/System. Это значит, что там должны расолагаться TileA[n],TileB,TileC,TileD и TileE. Конечно, они могут быть и стандартные из RTP, или ваши собственные, важно чтобы в директории присутствовали тайлсеты с такими именами. Вот и все, стоит повториться, сказав, что программа работает только с моим скриптом Swap Tileset. Убедитесь, что прочитали все интсрукции. Скрипт меняет тайлсеты во время игры, а программа меняет тайлсеты только во время реадктирования карт, для упрощения процесса. Скриншоты: Лицензия: Программа написана на C++ с Qt4 Framework toolkit. Программа распространяется на основании GNU General Public License 3. Ресурсы доступны здесь. Скачать программу можно здесь. Cheers, BulletXt. ======================================================== Источники материалов: Скрипт для смены тайлсетов в игре - здесь. Программа для отображения тайлсетов в RPG Maker VX - здесь. ======================================================== Перевод помощи к скрипту и поста bulletXt: The Joker. |
Последнее редактирование: 15 года 3 мес. назад от The Joker. Причина: Правка BB-кодов.
Администратор запретил публиковать записи гостям.
|
Swap Tileset VX 15 года 3 мес. назад #28035
|
юзаю тоже этот скпипт.
есть в нем пара багов, а так в принцыпе норм. |
Последнее редактирование: 15 года 3 мес. назад от Ice.
Администратор запретил публиковать записи гостям.
|
Время создания страницы: 0.194 секунд