Ergebnis 1 bis 6 von 6

Thema: [VX Ace] Probleme mit Tileset-Wechsel

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Danke schon mal für die Antwort. Ja, ich behalte den Lösungsansatz auch auf jeden Fall im Hinterkopf und wüsste momentan keinen anderen.
    Events sparen würde ich dadurch aber nicht, weil die Events ja so oder so vorhanden sind. Ich habe sie halt nur so programmiert, dass sie für beide Tilesets geeignet sind. Ok, einige wenige storyrelevante Events würde man vielleicht sparen, aber so besonders fällt das eigentlich nicht ins Gewicht. Ich könnte höchstens die Seiten der Events reduzieren, wodurch ich dann an jedem Event herumfisseln müsste. Das wäre auch ein bisschen nervig, weil die Burg relativ groß ist. Das sieht man auf dem Beispielsbild nicht.

    Ich versuche halt Maps zu sparen, weil ihre Anzahl beim Ace begrenzt ist (auf 500, glaube ich). Und, ja, das könnte bei meinem umfangreichen Spiel wirklich ein Problem werden. Vielleicht wäre die bessere Frage, wie ich die Anzahl der Maps erweitern kann.

    Wie auch immer, ich beginne mich mit der Idee anzufreunden. Es würde im weiteren Spielverlauf schon einiges bei der Programmierung unkomplizierter machen.

    Geändert von Coppelia (20.12.2017 um 12:15 Uhr)

  2. #2
    Hey Coppelia,

    du kannst folgendes Script über Main einfügen.
    CH_TILESET füllst du mit den Switches, die aktiv sein müssen. Im Array ist die erste Zahl dann die ID des neuen Tilesets gefolgt von beliebig vielen MapIDs, für welche das Script ausgeführt werden soll.
    Habe dir ein Beispiel (rot markiert) eingefügt, welches du durch die richtigen Werte ersetzen musst. In dem Beispiel würde, wenn Switch 153 ON wäre, auf den Maps 79,80 und 81 das Tileset auf 45 geändert.
    Wenn Switch 555 ON wäre, würden die Maps 82 und 83 das Tileset 46 zugewiesen bekommen.

    Bei jedem Laden der Map wird geprüft, ob der entsprechende Switch aktiv ist und wenn ja, ob diese Map "vom Wechsel betroffen" ist.
    Das sollte funktionieren - und so wird die Map beim Laden schon richtig dargestellt - nicht erst hinterher.

    Code:
    #SwitchID=>[NewTilesetID,Map1,Map2,Map3....]
    class Game_Map
      CH_TILESET = {153=>[45,79,80,81],555=>[46,82,83]}
      
      alias ldt_setup_events setup_events
      def setup_events 
        CH_TILESET.each do |ckey,cval|
          if($game_switches[ckey])
            if(cval[1..cval.size].include?(@map_id))
              @tileset_id = cval[0]
              @map.tileset_id = cval[0]
              break
            end
          end
        end
        ldt_setup_events
      end  
    end
    Edit: PS: Ich mache dies extra in der "setup_events" Methode, statt in der allgemeine "setup" Methode von Game_Map, weil du bereits viele Scripts verwendest, die Game_Map Methoden umschreiben. Die "setup_events" Methode ist die erste, auf welche das Tileset Einfluss nimmt und am leichtesten per Alias aufzurufen, weil ich von der Methode selbst nichts ändern muss und so keine Probleme auftreten sollten, falls die anderen Scripts auch darauf zugreifen.

    Geändert von Linkey (20.12.2017 um 13:02 Uhr)

  3. #3
    Wow, Linkey, das ist toll! Ich konnte es heute morgen ausprobieren, und es funktioniert super. Mal wieder. Ganz herzlichen Dank. Dann kann ich mir die zusätzlichen Maps ja doch sparen.
    Das wird natürlich in die Credits aufgenommen.

    Eigentlich könnte so eine Funktion gut zum Standard des Makers gehören - wozu sonst tauscht man Tilesets aus?

    Ich tausche tatsächlich auch noch an einer anderen Stelle des Spiels das Tileset aus, und natürlich trat das Problem dort auch auf. Aber es war bisher weder mir noch jemandem sonst aufgefallen.

  4. #4
    Klasse!

    Das wäre ja nur aufgefallen, wenn man darin speichert und dann so steht, dass es beim Laden direkt auffällt. Wenn man nicht genau darauf achtet, sieht man das nicht.
    Gerade beim "Laden" nutzt man die Zeit nochmal um irgendetwas anderes zu machen und schon übersieht man es

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •