Tak, jak jsem už jednou psal, zdejší komunita zřejmě o tileset swapperu ještě neslyšela, pojďme to změnit
O co jde? Ti z vás, kteří zkoušeli RMVX a nějaký jiný RM, určitě vás u VXka štvalo, že máte omezenou paletu s grafikou a jediný způsob jak jí rozšířit bylo přidat si paletu "E" nebo si existující palety nahradit. Swapper ale dokáže, že si můžete pro jakoukoli mapu zvolit jakoukoli grafiku, kterou vytvoříte/naleznete a je tu i možnost pomocí swapperu tvořit různé eventy změny prostředí v reálném čase, jednoduchým spuštěním switche a navrácení původní grafiky vypnutím téhož switche.
Jak to funguje? Vytvořte si složku s názvem "extra_tiles" ve složce Graphics/System ve vašem projektu. Do této složky vložte veškeré tilesety, které chcete využívat - pojmenovat je můžete jak je libo. V okamžik, kdy tileset chcete použít, v eventu vložte funkci "callscript" (poslední stránka s funkcemi, uplně dole) a vepište $tileA1 = "VášNázev" (tileA1 je příklad, můžete využít jakoukoli paletu, kterou chcete změnit - "VášNázev" vyplňte názvem vašeho tilesetu, tím se část palety "A" změní z původní grafiky na grafiku vámi nově nahranou, můžete v jednom callscriptu změnit jen jednu, dvě a nebo všechny palety, je to jen na vás -> příklad: $tileA1 = "VášNázev" $tileA4 = "VášNázev" $tileE = "VášNázev" Hned po callscriptu musíte spustit switch pro výmenu tilesetu (deafultně jde o switch 100, ve scripteditoru si ho můžete změnit) pro návrat původní grafiky pak stačí tento switch vypnout. (Např. si uděláte kovárnu, při vstupu do ní změníte tileset C na tileset kovárny, spustíte switch - při odchodu se switch opět vypne a v mapě už se bude zobrazovat C tileset původní)
Průchodnost Důležitá věc, kterou určitě budete chtít využít je změna průchodnosti. Pokud máte Tileset C, určitě v něm máte nastavenou průchudnost - aby hráč nemohl projít pevnými objekty apod. Bohužel však při změně tilesetu průchodnost zůstává, není však problém ji předělat.
-> Nejlepší cesta, jak si nastavit průchodnost pro nový tileset je otevřít si nový projekt, ve kterém vymažete defaultní tilesety a místo nich si dáte nové, které ve svém hlavním projektu chcete využít (pojmenujete je jako ty původní A1,A2......D) a nastavíte si průchodnost tak, jak jste zvyklí. Projekt uložte a otevřete si v něm složku "data" a zkopírujte si soubor "System.rvdata" nakopírujte jej do složky "extra_tiles" a pojmenujte ho jak chcete, jen zanechte jeho koncovku .rvdata (např. kovarna.rvdata)
-> Změna průchodnosti je řešena stejně jako změna tilesetu, nejdříve společně se změnou tilesetu (klidně i bez ní, můžete si tak pohrávat s průchodností za účelem nějaké minihry apod.) provedeme callscriptem i změnu průchodu a to takto: $swap_passages = "VášNázev" (VášNázev = vámi pojmenovaný soubor s koncovkou .rvdata) a poté musí být spuštěn switch pro změnu průchodnosti (Defaultně jde o switch 99, opět je ve scripteditoru možné si zvolit, o jaký switch by mělo jít)
Změna v reálném čase Pokud si přejete, aby se tileset změnil automaticky po spuštění eventu (stisknutím tlačítka, vstupem na event atd.), vložte pod callscripty a switche ještě jeden callscript-> $game_map.tileset Pokud však bude změna provedena až po přenosu hráče na jinou mapu, není třeba vkládat tento call script.
a) Swap a tileset at any time b) you can swap all tilesets or n tilesets c) you can load a new passage setting any time you want
How it works: Create a folder named "extra_tiles" inside Graphics/System. Place your new tilesets there. They can be named as you like. Before doing a map transfer, do a simple callscript inside the event like this: $tileA1 = "fileName"
Replace "fileName" with the tileset you want to change. In that example, it will swap tile set A1. You can swap all tilesets or just some of them. For example you can swap TileA1, TileA4 and TileE doing as said above: $tileA1 = "fileName" $tileA4 = "fileName" $tileE = "fileName"
Immediately after the script call/s inside event, turn the SWAP_TILE switch ON (this can be set below). To reset default tileset, before a map transfer simply turn the switch to OFF.
This said, you can also load a new passage setting. Simply open a new project, set the passagesettings as you want, save and close. Get into Data folder and copy System.rvdata to your real project. Paste it always inside "extra_tiles" and rename it to anything you want. Be sure file extension ends with ".rvdata" . Example: System.rvdata is renamed to: pub.rvdata
Passage setting gets loaded exactly like tilesets, this means that first you do the script call inside event and then you turn the LOAD_PASSAGE_SETTING switch ON(this can be set below). You can load a new passage setting without swapping any tiles. The 2 things are totally indipendent. The script call to load a passage setting is like this: $swap_passages = "filePassage" Replace filePassage with the passage setting file you want to load.
By simply turning both switches to OFF, you automatically reset passage setting to default one and reset all tilesets to default. If instead you want to do a map transfer and keep your swapped tilesets but want to reset only TileA3,simply do a script call of this type: $tileA3 = nil Same behaviour is for passage setting, simply set: $swap_passages = nil and that will reset passage setting to default.
Tricks:
- you can create a special effect as seen in the demo. For example, you can make a tile swap without doing a map transfer. You can for instance make a wall change real time its tile! To do this, do the normal call for swapping (callscript + switch ON), then immediatley after do this callscript: $game_map.tileset This callscript will reload the map (screen freezes for 30 milliseconds) so the final effect is that the wall has magically a new tile! Same thing is for passagesetting, you can load a new passage setting in real time by simply doing (callscript + switch ON) and then $game_map.tileset.
# This is a switch ID, if ON it calls the swapping system. This is # used for swapping/resetting tile sets. THIS DOES NOT CHANGE PASSAGE SETTINGS. # Be sure to turn the switch ON only after doing the callscript (as said above). SWAP_TILE = 100
# This is a switch ID, if ON it calls the passage setting system. This is # used for loading/resetting new passage settings. # THIS DOES NOT SWAP TILE SETS. # Be sure to turn the switch ON only after doing the callscript (as said above). LOAD_PASSAGE_SETTING = 99
########################## END CONFIGURATION ###################################
#-------------------------------------------------------------------------- # * 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
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
Další velmi užitečná utilitka, bez které by celé využití tileset swapperu v editoru byla opravdu oříškem je prográmek swap_tileset. Společně se všemi pluginy ho nakopírujte do složky se svým projektem. Důležité je, abyste měli všechny defaultní tilesety ve složce Graphics/system (v původnímy názvy TileA1, TileA2....) Po spušetění byste měli ihned pochopit, jak funguje, jednoduše nahrajete grafiku nového tilesetu, která nahradí původní grafiku. Zpusťte poté editor vašeho projektu - místo původních tilesetů v paletě nyní uvidíte ty, kterými jste je nahradili, to vám pomůže při výměně tilesetů.
Program ZDE ke stažení. A TADY si můžete stáhnout tilesety z RMXP Nakonec si ZDE můžete stáhnout demo přímo od autora scriptu - pomocí něj je pochopení funkce swapperu možná ještě jasnější.
Vypadá to dobře. Jen by jsi mněl ještě upozornít, že tileset musí být v PNG . další věc, je hezké že tu dáváš tilesety do XP, ale VX používá jiný formát. Oprav mě pokud mi něco ušlo...
legition píše:Vypadá to dobře. Jen by jsi mněl ještě upozornít, že tileset musí být v PNG . další věc, je hezké že tu dáváš tilesety do XP, ale VX používá jiný formát. Oprav mě pokud mi něco ušlo...
Tak že musí být v PNG asi každý ví, ze stránky kterou jsem přiložil stahuješ přímo PNG... Co se týče formátu tak jediné, co se liší je velikost postav, na tom, jak se rozkouskuje tileset nezáleží, navíc jsou čtverečky pořád stejně veliké...
Já třeba používám JPG nebo BMP, když nepotřebuji průhlednost..
a kté velikosti. Xp využívá tilesety o velikosti 256x576, ale VX používá 512x512. Takže pokud nemáš program který ti ty čtverečky nepřeskládá do daného formátu, tak tilesety XP nemůžeš použít.
Sorry, bral jsem ty defaultní, ale máš pravdu. Jen, nechci aby to vypadalo že do toho rípu. Ten script se bude určitě hodně používat. Kdybych o něm věděl dříve možná bych i markuse dělal jinak. Jen upozorňuji, aby se tu pak nešířily, matoucí informace. Prostě Tilesety do VX z XP buď musíš nějak převést. Nebo použiješ jiné tilesety do VX, na netu jich je taky docela dost.
legition píše:Sorry, bral jsem ty defaultní, ale máš pravdu. Jen, nechci aby to vypadalo že do toho rípu. Ten script se bude určitě hodně používat. Kdybych o něm věděl dříve možná bych i markuse dělal jinak. Jen upozorňuji, aby se tu pak nešířily, matoucí informace. Prostě Tilesety do VX z XP buď musíš nějak převést. Nebo použiješ jiné tilesety do VX, na netu jich je taky docela dost.
Já XPčkovský tilesety používám a zatím jsem na žádný problém nenarazil...
V tom případě, nechceš mi poslat ukázku, jak používáš tilesetyz XP do VX?? Kdybych to pochopil, určitě by mi to usnadnilo plno věcí.. a určitě nejen mně..
Tak jako musím konstatovat,že tenhle prográmeček je mazec. Díky za něj. Nevim jestli o tom víte,ale možná jo,tak i přesto Vám sem dám link na snad novou verzi.Minimálně pro mě to noví bylo http://sourceforge.net/projects/lodesto ... es/SwapXT/ Stahujte to SwapXT