Ergebnis 1 bis 5 von 5

Thema: Rpg Vx Ace: Skills als Fenster im unteren Bereich des Fensters

  1. #1

    Rpg Vx Ace: Skills als Fenster im unteren Bereich des Fensters

    Hallo Community,

    in Yanflys Kampfsystem werden Skills nicht über den ganzen Bildschirm verteilt angezeigt, sondern schön als Message im unteren Bereich des Bildschirms. Ich will das auch so haben. Allerdings kann ich nicht Yanflys Kampfsystem benutzen, weil das mit meinen bisherigen Scripten nicht kompatibel ist. Ich müsste nochmals ganz von vorn anfangen, was ich nach monatelanger Arbeit an meinem KS einfach nicht will.

    Lange Rede kurzer Sinn: Kann mir jemand helfen, die Skills nach unten zu navigieren? (nur ohne das Face, das brauch ich nicht.)

    Was ich schon selbst versucht habe:


    Kann jemand helfen?

    Ken der Kot
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken acs-03.jpg  

    Geändert von Ken der Kot (12.09.2018 um 10:41 Uhr)

  2. #2
    Ein ganz vorsichtiges "Bump" an dieser Stelle (Y)

  3. #3
    Hey Ken,

    wir haben dich gerde erst vor einer Woche darauf aufmerksam gemacht, doch bitte nicht unnötig in so kurzen Abständen Doppelposts ohne jeglichen Sinn zu verfassen. Dieser Thread war nicht einmal weit nach unten gerutscht. Obwohl du dich bei der Ermahnung eigentlich einsichtig gezeigt hast, hat es nun den Anschein das du dich nicht daran hälst. Du erhälst daher für gehäuftes Spamen eine Verwarnung von mir. Für weitere Fragen diesbezüglich kannst du dich bei mir über PN melden.

    Trotzdem wünsche ich dir natürlich, dass sich noch jemand findet der dir bei deiner Frage helfen kann!

  4. #4
    Ich helfe hier im Forum wirklich gerne bei technischen Dingen mit dem Maker. Muss aber auch sagen, dass mich solche Bumps auch eher abschrecken zu helfen.
    In der Freizeit sollte man sich nicht wie auf der stressigen Arbeit fühlen

    Aber du hättest den Ansatz, Yanlfys Script an den entsprechenden Stellen zu kopieren, ruhig weiterverfolgen können. Ich habe nichts anderes gemacht (außer die breite des Skill/Item-Windows vergrößert, da du das Face ja nicht haben wolltest - also kann man auch den ganzen Platz nutzen - außerdem habe ich das entfernt, was explizit für Yanflys Script hinzugefügt wurde - was du nicht benötigst). Das sollten alle betroffenen Methoden sein, aber teste es am besten fleißig:
    Code:
    class Scene_Battle < Scene_Base
      alias scene_battle_create_skill_window_abe create_skill_window
      def create_skill_window
        scene_battle_create_skill_window_abe
        @skill_window.height = @info_viewport.rect.height
        @skill_window.width = Graphics.width# - @actor_command_window.width
        @skill_window.y = Graphics.height - @skill_window.height
      end
      
      alias scene_battle_create_item_window_abe create_item_window
      def create_item_window
        scene_battle_create_item_window_abe
        @item_window.height = @skill_window.height
        @item_window.width = @skill_window.width
        @item_window.y = Graphics.height - @item_window.height
      end
      
      alias scene_battle_next_command_abe next_command
      def next_command
        @status_window.show
        redraw_current_status
        @actor_command_window.show
        scene_battle_next_command_abe
      end
      
      alias scene_battle_prior_command_abe prior_command
      def prior_command
        redraw_current_status
        scene_battle_prior_command_abe
      end
      
      def redraw_current_status
        return if @status_window.index < 0
        @status_window.draw_item(@status_window.index)
      end
      
      
      alias scene_battle_command_skill_abe command_skill
      def command_skill
        scene_battle_command_skill_abe
        @status_window.hide
        @actor_command_window.hide
      end
      
      alias scene_battle_command_item_abe command_item
      def command_item
        scene_battle_command_item_abe
        @status_window.hide
        @actor_command_window.hide
      end
      
      alias scene_battle_on_skill_cancel_abe on_skill_cancel
      def on_skill_cancel
        scene_battle_on_skill_cancel_abe
        @status_window.show
        @actor_command_window.show
      end
      
      alias scene_battle_on_item_cancel_abe on_item_cancel
      def on_item_cancel
        scene_battle_on_item_cancel_abe
        @status_window.show
        @actor_command_window.show
      end
      
      alias scene_battle_on_actor_cancel_abe on_actor_cancel
      def on_actor_cancel
        scene_battle_on_actor_cancel_abe
        case @actor_command_window.current_symbol
        when :skill
          @skill_window.show
        when :item
          @item_window.show
        end
      end
      
      alias scene_battle_on_enemy_cancel_abe on_enemy_cancel
      def on_enemy_cancel
        scene_battle_on_enemy_cancel_abe
        if @skill_window.visible || @item_window.visible
          @help_window.show
        else
          @help_window.hide
        end
      end
      
      alias scene_battle_on_actor_ok_abe on_actor_ok
      def on_actor_ok
        scene_battle_on_actor_ok_abe
        @status_window.show
      end
      
    end
    Der Vorteil von Alias ist, dass du nicht die Methode selbst überschreibst. Hier mal ein fiktives Beispiel.
    Basis Methode:
    Code:
    def calculate_damage
       return attacker.attack - attacker.defense
    end
    Script A fügt dieser Methode nun einen Bonus schaden hinzu, anhand gesammelter Bonus Items:
    Code:
    alias calculate_damage_scripta calculate_damage
    def calculate_damage
      dmg = calulate_damage_scripta       <- das ruft die original methode auf
      return dmg + bonus_items.count
    end
    Jetzt fügst du Script B hinzu, welches den schaden um die anzahl der absolvierten kämpfe erhöht.
    Code:
    alias calculate_damage_scriptb calculate_damage
    def calculate_damage
      dmg = calulate_damage_scriptb       <- das ruft die original methode auf (da script a auch schon drin ist, wird hier script a aufgerufen)
      return dmg + number_of_battles
    end
    In diesem Fall ist es egal, ob du Script A benutzt oder Script B oder beide - es funktioniert immer. Weil die Methode "calculate_damage" nicht überschrieben wird, sondern mittels alias erweitert.
    Natürlich können Scripts dadurch immer noch inkompatibel sein, weil die Erweiterungen sich gegenseitig stören könnten.

  5. #5
    @ csg: Ja, hab ich mir selber zuzuschreiben. Mach nur bitte das "Läuft ab: Nie" raus, damit das nicht bis 2035 in meinem Profil steht. Sieht nicht gut aus

    @ Linkey: Vielen Dank es funktioniert. Nur wenn man bei einem Skill zb einen Actor auswählen muss, sieht es noch nicht schön aus, weil das Actor_Window mit dem Skill_Window überlappt. Eventuell liese sich das so anpassen,dass das Skill Window verschwindet, wenn man einen Skill auf einen Helden anwenden soll? Dazu müsste daneben auch am besten wieder das Auswahlfenster (Attack, Skills, Item...) angezeigt werden, damit es gut aussieht. Kannst du mir dabei helfen? Ich bump auch nicht mehr dann.

    EDIT:

    Habs soweit geschafft, dass das Fenster so angezeigt wird wie ich will. Will jetzt nur noch, dass das Fenster dahinter (Skill_window) weg ist, wenn ein Actor oder Gegner ausgewählt wird.

    Code:
    class Scene_Battle < Scene_Base
      alias scene_battle_create_skill_window_abe create_skill_window
      def create_skill_window
        scene_battle_create_skill_window_abe
        @skill_window.height = @info_viewport.rect.height
        @skill_window.width = Graphics.width - @actor_command_window.width
        @skill_window.y = Graphics.height - @skill_window.height
        @skill_window.x = 128
      end
      
      alias scene_battle_create_item_window_abe create_item_window
      def create_item_window
        scene_battle_create_item_window_abe
        @item_window.height = @skill_window.height
        @item_window.width = @skill_window.width
        @item_window.y = Graphics.height - @item_window.height
      end
      
      alias scene_battle_next_command_abe next_command
      def next_command
        @status_window.show
        redraw_current_status
        @actor_command_window.show
        scene_battle_next_command_abe
      end
      
      alias scene_battle_prior_command_abe prior_command
      def prior_command
        redraw_current_status
        scene_battle_prior_command_abe
      end
      
      def redraw_current_status
        return if @status_window.index < 0
        @status_window.draw_item(@status_window.index)
      end
      
      
      alias scene_battle_command_skill_abe command_skill
      def command_skill
        scene_battle_command_skill_abe
        @status_window.hide
        @actor_command_window.show
      end
      
      alias scene_battle_command_item_abe command_item
      def command_item
        scene_battle_command_item_abe
        @status_window.hide
        @actor_command_window.hide
      end
      
      alias scene_battle_on_skill_cancel_abe on_skill_cancel
      def on_skill_cancel
        scene_battle_on_skill_cancel_abe
        @status_window.show
        @actor_command_window.show
      end
      
      alias scene_battle_on_item_cancel_abe on_item_cancel
      def on_item_cancel
        scene_battle_on_item_cancel_abe
        @status_window.show
        @actor_command_window.show
      end
      
      alias scene_battle_on_actor_cancel_abe on_actor_cancel
      def on_actor_cancel
        scene_battle_on_actor_cancel_abe
        case @actor_command_window.current_symbol
        when :skill
          @skill_window.show
        when :item
          @item_window.show
        end
      end
      
      alias scene_battle_on_enemy_cancel_abe on_enemy_cancel
      def on_enemy_cancel
        scene_battle_on_enemy_cancel_abe
        if @skill_window.visible || @item_window.visible
          @help_window.show
        else
          @help_window.hide
        end
      end
      
      alias scene_battle_on_actor_ok_abe on_actor_ok
      def on_actor_ok
        scene_battle_on_actor_ok_abe
        @status_window.show
      end
      
    end
    EDIT 2: Ok, brauche echt Hilfe, weil ich hab jetzt @skill_window.hide an so ziemlich jeder Stelle im Skript eingefügt und das macht nicht, was ich will!

    Thread gelöst.

    Vielen Dank an alle, die geholfen haben und mich auf den richtigen Weg führten.

    Geändert von Ken der Kot (14.09.2018 um 13:01 Uhr)

Berechtigungen

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