Hallo leute hab auch mal ein Script für die Öffentlichkeit erstellt...
Es ist zwar nix großes und jeder der sich damit n bisschen beschäftigt wäre auch darauf gekommen...
aber naja ;)
Ich kam mit den anderen Tile-set Changern einfach nicht zurecht.. deshal hab ich mir einfach mal selbst eins zusammengeschnitten... Wems so geht wie mir kann es ja benutzen... es ist wirklich sehr einfach zu verstehen :)
Aber rede ich mal nicht sehr viel drum rum...
Das Script
#-------------------------------------------------------------------------------
#
# Very Easy Tileset-Changer
# *Made by Sartekk
# Don't claim as your owns
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
#
#
# Die Verwendung des Scripts ist eigentlich ziemlich einfach...
# ihr seht unter "def create_tilemap" die ganzen aufgelisteten Images.
# wenn ihr eine neue Palette hinzufügen wollt, erstellt ihr unter dem 1. Block
# ein neues elsif und dann die condition, für welche das Tileset geändert
# werden soll... Danach kopiert ihr einfach den Code-Block von else:
# @tilemap = Tilemap.new(@viewport1)
# @tilemap.bitmaps[0] = Cache.system("TileA1")
# @tilemap.bitmaps[1] = Cache.system("TileA2")
# @tilemap.bitmaps[2] = Cache.system("TileA3")
# @tilemap.bitmaps[3] = Cache.system("TileA4")
# @tilemap.bitmaps[4] = Cache.system("TileA5")
# @tilemap.bitmaps[5] = Cache.system("TileB")
# @tilemap.bitmaps[6] = Cache.system("TileC")
# @tilemap.bitmaps[7] = Cache.system("TileD")
# @tilemap.bitmaps[8] = Cache.system("TileE")
# @tilemap.map_data = $game_map.data
# @tilemap.passages = $game_map.passages
# Und fügt diesen in euer soeben erstelltes elsif ein
#
# Nun nur noch die Namen der Images ändern, wie z.B.:
# @tilemap.bitmaps[5] = Cache.system("TileBr")
# @tilemap.bitmaps[6] = Cache.system("TileCr")
#
# den Screen updaten lassen z.B.
# durch ein Call-Script-Event mit $scene = Scene_Map.new
# oder durch charakter-transfer und fertig =)
#
# Aber Achtung: Achtet darauf das die Passability der neuen Palette
# bei jedem tile genauso ist wie in eurem standart...
# diese wird nämlich übernommen
#
#-------------------------------------------------------------------------------
#
# Natürlich muss die Condition keine Variable sein...
# Sie kann auch ein Switch oder sonst irgendwas sein...
# Beispiele:
# $game_switches[id] == true/false
# $game_party.has_item?($data_items[id])
# $game_party.has_item?($data_weapons[id],equipt?(true/false))
# $game_party.has_item?($data_armors[id],equipt?(true/false))
#
#-------------------------------------------------------------------------------
class Spriteset_Map
CONDITION_ID = 5
def create_tilemap
if $game_variables[CONDITION_ID] == 0
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system("TileA1")
@tilemap.bitmaps[1] = Cache.system("TileA2")
@tilemap.bitmaps[2] = Cache.system("TileA3")
@tilemap.bitmaps[3] = Cache.system("TileA4")
@tilemap.bitmaps[4] = Cache.system("TileA5")
@tilemap.bitmaps[5] = Cache.system("TileB")
@tilemap.bitmaps[6] = Cache.system("TileC")
@tilemap.bitmaps[7] = Cache.system("TileD")
@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
elsif $game_variables[CONDITION_ID] == 1 # Ein Beispiel für ein neues elsif
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system("TileA1")
@tilemap.bitmaps[1] = Cache.system("TileA2")
@tilemap.bitmaps[2] = Cache.system("TileA3")
@tilemap.bitmaps[3] = Cache.system("TileA4")
@tilemap.bitmaps[4] = Cache.system("TileA5")
@tilemap.bitmaps[5] = Cache.system("TileBr")
@tilemap.bitmaps[6] = Cache.system("TileCr")
@tilemap.bitmaps[7] = Cache.system("TileD")
@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
# Hier ein neues elsif erstellen
end
end
end
Beispiel ist sogar auch drin vorhanden :)
Ich habe mir einfach 2 neue Images importiert mit dem Namen TileBr und TileCr...
Wie funktionierts?
Also zunächst erstellt ihr ein neues elsif für eure Abfrage...(In meinem Beispiel mit Variable)
als nächstes kopiert ihr den ganzen Block des Standart-Tilesets... das wäre das hier:
@tilemap = Tilemap.new(@viewport1)
@tilemap.bitmaps[0] = Cache.system("TileA1")
@tilemap.bitmaps[1] = Cache.system("TileA2")
@tilemap.bitmaps[2] = Cache.system("TileA3")
@tilemap.bitmaps[3] = Cache.system("TileA4")
@tilemap.bitmaps[4] = Cache.system("TileA5")
@tilemap.bitmaps[5] = Cache.system("TileB")
@tilemap.bitmaps[6] = Cache.system("TileC")
@tilemap.bitmaps[7] = Cache.system("TileD")
@tilemap.bitmaps[8] = Cache.system("TileE")
@tilemap.map_data = $game_map.data
@tilemap.passages = $game_map.passages
und für es unter euer elsif ein...
Jetzt nur noch die Namen der zu ändernden Tiles ändern
und fertig :)
Jetzt nur noch mit einem Call Script "$scene = Scene_Map.new" die Map refreshen oder mit einem Charakter-Transfer und fertig ;)
Hoffe es ist nicht zu überfflüssig und es wird gebraucht werden ;)
mfG Sartekk
Ne nicht verlängern... lass es mich mal so ausdrücken:
Es wechselt die Tilesets...
Nehmen wir mal an du benötigst für Map 1 das Standart tileset...
aber für map 2 benötigst du ganz andere tiles, kannst deine standarts aber nicht ändern weil du von denen auch alle brauchst... mit dem Script machst du dir einfach noch ein 2. 3. 4. usw. Tileset... Wenn du jetzt die Variable erhöhst auf die zahl, wo die abfrage für dein anderes Tileset erfüllt wird, hast du die tilesets...
Ich setzte mich mal grad dran nen Beispiel mit Images zu machen und editier sie hier rein.
-----------------------------------------------------------------------------------------------
EDIT:
Also ich habs jetz mal hier n bisschen mit images...
Meine gewünschten Tilesets sind die von Mack... hab die jetzt mal folgendermaßen genannt:
macTileA1
macTileA2
macTileA3
macTileA4
macTileA5
macTileB
macTileC
macTileD
macTileE
*also immer nur ein mac davor gesetzt damit der Name nicht gleich ist...
Als nächstes habe ich mit viel hin und her geschaut, auf welcher position die mack-tiles sind wo im moment die normalen sind... Das sieht natürlich ein bisschen komisch aus...:
(http://img5.imageshack.us/img5/8599/vorher.png)
(Am besten ist es wenn man die Tilesets noch modifiziert... also das man die tiles nicht nur auf die Felder abstimmt, sondern auch auf die passability... weil die neuen Tiles die passability der alten sets übernimmt...
Um das Tileset zu wechseln wird jetzt ein Event enötigt... Das sollte folgendermaßen aussehen:
(http://img5.imageshack.us/img5/1928/commands.png)
Ich hab hier die Variable mit der ID 1 genommen...
Wenn das Event dann im Game aufgerufen wird sieht die Map so aus:
(http://img25.imageshack.us/img25/7468/nacher.png)
es ist auch möglich die map mit einem Charaktertransfer zu updaten...
(Bei dem Call Script ist es besser mit Fade out/Fade in zu arbeiten weils sonst bisschen blöd aussieht ;) )