collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: Sehr einfacher Tileset-Changer  (Gelesen 2619 mal)

Offline Kasaar

  • Epic Scripter !!
  • Eventmeister
  • ***
  • Beiträge: 305
  • Satanistischer Misantroph... noch Fragen? ]:)
Sehr einfacher Tileset-Changer
« am: Oktober 24, 2009, 09:09:40 »
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
Spoiler for Hiden:
#-------------------------------------------------------------------------------
#
#                           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
« Letzte Änderung: Oktober 24, 2009, 13:59:09 von Sartek »
Besucht mich auf


Und gebt Kommentare im Blog =)

Re: Sehr einfacher Tileset-Changer

Offline Franky

  • Blutiger Fortgeschrittener
  • Eventmeister
  • ***
  • Beiträge: 390
Re: Sehr einfacher Tileset-Changer
« Antwort #1 am: Oktober 24, 2009, 10:54:40 »
Sieht ja ganz nett aus, aber ob es wirklich so einfach ist, werde ich noch erfahren xD.

Re: Sehr einfacher Tileset-Changer

Offline Emelie Rose

  • Meisterköchin
  • Eventmeister
  • ***
  • Beiträge: 329
Re: Sehr einfacher Tileset-Changer
« Antwort #2 am: Oktober 24, 2009, 13:18:25 »
Wie muss ich das jetzt verstehen?

Kann man dadurch das tileA verlängern oder wie?

Re: Sehr einfacher Tileset-Changer

Offline Kasaar

  • Epic Scripter !!
  • Eventmeister
  • ***
  • Beiträge: 305
  • Satanistischer Misantroph... noch Fragen? ]:)
Re: Sehr einfacher Tileset-Changer
« Antwort #3 am: Oktober 24, 2009, 13:31:01 »
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...:
Spoiler for Hiden:
(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:
Spoiler for Hiden:
Ich hab hier die Variable mit der ID 1 genommen...

Wenn das Event dann im Game aufgerufen wird sieht die Map so aus:
Spoiler for Hiden:

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 ;) )
« Letzte Änderung: Oktober 24, 2009, 13:58:18 von Sartek »
Besucht mich auf


Und gebt Kommentare im Blog =)

Re: Sehr einfacher Tileset-Changer

Offline Emelie Rose

  • Meisterköchin
  • Eventmeister
  • ***
  • Beiträge: 329
Re: Sehr einfacher Tileset-Changer
« Antwort #4 am: Oktober 24, 2009, 14:51:50 »
Ach so ist das^^

danke fürs erklären.

Re: Sehr einfacher Tileset-Changer

Offline Galadriela

  • Event-Jongleur
  • **
  • Beiträge: 57
    • Meine Bücher
Re: Sehr einfacher Tileset-Changer
« Antwort #5 am: Juli 11, 2010, 10:00:44 »
wieder ne blöde frage von mir was ist ein  "elsif"? grübel
-------------------------------------------------------
oh mann, ich wußte nicht das das elsif im script steht ;D ich dachte es wäre einer der befehle im maker und dachte ich hab was übersehen.
der script ist super einfach und sobald ich endlich rauskriege wie das mit den variablen geht, kann ich es super gebrauchen ;D
« Letzte Änderung: Juli 16, 2010, 21:32:23 von Galadriela »

Re: Sehr einfacher Tileset-Changer

Offline Michael Funkel

  • Event-Jongleur
  • **
  • Beiträge: 52
  • Derzeit fleißig am scripten
Re: Sehr einfacher Tileset-Changer
« Antwort #6 am: Juli 11, 2010, 10:39:20 »
@ Galadriela:

Diese Frage gehört ja wohl kaum in diesen Thread, aber ich beantworte sie kurz mal...
Innerhalb eines if-Blocks kann es sowohl else, als auch elsif geben (allerdings darf es nur ein else und das am Schluss geben). Das elsif ist eine Bedingung, die erfüllt werden muss, wenn die if-Bedingung nicht gegeben ist.
Beispiel: Wenn Variable A den Wert 1 hat, mache das (...), ansonsten, wenn Variable B den Wert 1 hat, mache das (...) => Dies wäre jetzt der elsif-Teil. Er wird nur ausgeführt, wenn Variable A einen anderen Wert als 1, DAFÜR ABER Variable B den Wert 1 hat. Danach kann entweder ein weiteres elsif folgen, ein else oder aber das abschließende end.
Und nie vergessen - Wir haben nur eine Welt...
Wenn sie zerbricht haben wir zwei.

Ruby sollte sich als Standard-Sprache etablieren!

Bitte bewahrt uns vorm Verhungern!

 


 Bild des Monats

rooftop party

Views: 3614
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal