Ergebnis 1 bis 20 von 38

Thema: Sprache in Kampfsystem (Ace)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Hallo Ken,

    Als erstes fügst du folgenden Code unter LDT_SKILL ein:
    Code:
      LDT_SKILL_MES1 = {
          1=>["",""],
          2=>["",""],
          4=>["benutzt Doppelter Hieb!","uses Double Attack!!!"]
          }
      LDT_SKILL_MES2 = {
          1=>["",""],
          2=>["",""],
          4=>["Irgendein Text der als Info drunter erscheint.","Insert something useful here..."]
          }    
      LDT_ENEMY = {
          1=>["Geist","Ghost"],
          2=>["Ratte","Rat"],
          3=>["",""],
          4=>["",""]}
    Hier kannst du die Angriffstexte, equivlanet zur Database, pflegen. Ist vom Aufbau her genauso wie LDT_SKILL.
    LDT_SKILL_MES1 ist der Text, der hinter dem ausführenden Charakter steht.
    LDT_SKILL_MES2 ist der zweite Text, der komplett angezeigt wird (ohne Anwender).
    In dem Beispiel, was ich dort eingetragen habe, erscheint folgender Text, wenn der "Peter" den Skill 4 benutzt:
    Peter benutzt Doppelter Hieb!
    Irgendein Text der als Info drunter erscheint.


    In LDT_ENEMY kannst du die Gegnernamen pflegen.

    Ab der Zeile "def self.basic(basic_id)" das komplette Coding durch folgendes ersetzen:
    Code:
    # Basis-Status
      def self.basic(basic_id)
        return LDT_BASIC[basic_id][$game_switches[LDT_SWITCH] ? 1 : 0]
      end
      
       # Befehle
      def self.command(command_id)
        return LDT_COMMAND[command_id][$game_switches[LDT_SWITCH] ? 1 : 0]
      end 
      
      def self.get_item_text(item)
        if(item.is_a?(RPG::Skill))
          return get_skill_name(item)
        elsif(item.is_a?(RPG::Item))
          return get_item_name(item)
        else
          return item.name
        end
      end
      
      def self.get_skill_name(item)
        if(LDT_SKILL.has_key?(item.id))
          return LDT_SKILL[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.name
        end
      end
      
      def self.get_item_name(item)
        if(LDT_ITEM.has_key?(item.id))
          return LDT_ITEM[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.name
        end
      end
      
      def self.get_message1(item)
        if(LDT_SKILL_MES1.has_key?(item.id))
          return LDT_SKILL_MES1[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.message1
        end
      end
      
      def self.get_message2(item)
        if(LDT_SKILL_MES2.has_key?(item.id))
          return LDT_SKILL_MES2[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.message2
        end
      end
      
      def self.get_subject(subject)
        if(subject.is_a?(Game_Enemy))
          if(LDT_ENEMY.has_key?(subject.enemy_id))
            return LDT_ENEMY[subject.enemy_id][$game_switches[LDT_SWITCH] ? 1 : 0]
          else
            return subject.name
          end
        elsif(subject.is_a?(RPG::Enemy))
          if(LDT_ENEMY.has_key?(subject.id))
            return LDT_ENEMY[subject.id][$game_switches[LDT_SWITCH] ? 1 : 0]
          else
            return subject.name
          end
        else
          return subject.name
        end
      end
    end
    
    class Window_Base
      def draw_item_name(item, x, y, enabled = true, width = 172)
        return unless item
        draw_icon(item.icon_index, x, y, enabled)
        change_color(normal_color, enabled)
        draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
      end
    end
    class Window_BattleLog
      def display_use_item(subject, item)
        tsub = Vocab.get_subject(subject)
        if item.is_a?(RPG::Skill)
          add_text(tsub + Vocab.get_message1(item))
          tmes2 = Vocab.get_message2(item)
          unless tmes2.empty?
            wait
            add_text(tmes2)
          end
        else
          add_text(sprintf(Vocab::UseItem, tsub, Vocab.get_item_text(item)))
        end
      end
    end
    ## Scene Title changes + new window
    class Window_LanguageCommand < Window_Command
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        super(0, 0)
        update_placement
        self.openness = 0
        open
      end
      #--------------------------------------------------------------------------
      # * Get Window Width
      #--------------------------------------------------------------------------
      def window_width
        return 160
      end
      #--------------------------------------------------------------------------
      # * Update Window Position
      #--------------------------------------------------------------------------
      def update_placement
        self.x = (Graphics.width - width) / 2
        self.y = (Graphics.height * 1.6 - height) / 2
      end
      #--------------------------------------------------------------------------
      # * Create Command List
      #--------------------------------------------------------------------------
      def make_command_list
        add_command(Vocab::LDT_LANG[0], :lang1)
        add_command(Vocab::LDT_LANG[1], :lang2)
      end
      #--------------------------------------------------------------------------
      # * Get Activation State of Continue
      #--------------------------------------------------------------------------
      def continue_enabled
        DataManager.save_file_exists?
      end
    end
    class Scene_Title < Scene_Base
      def start
        super
        SceneManager.clear
        Graphics.freeze
        create_background
        create_foreground   
        create_command_window
        create_language_window
        unless($ldt_lang_selected)
          @command_window.visible = false
          @command_window.active = false      
        else
          @language_window.visible = false
          @language_window.active = false 
        end
        play_title_music
      end
      
      def create_language_window
        @language_window = Window_LanguageCommand.new
        @language_window.set_handler(:lang1, method(:command_lang1))
        @language_window.set_handler(:lang2, method(:command_lang2))
        @language_window.visible = true
        @language_window.active = true
      end
      
      def command_lang1()
        $game_switches[Vocab::LDT_SWITCH] = false
        language_selected()
      end
      
      def command_lang2()
        $game_switches[Vocab::LDT_SWITCH] = true
        language_selected()
      end
      
      def language_selected()
        $ldt_lang_selected = true
        @language_window.visible = false
        @language_window.active = false
        Vocab.change_vocab()
        create_command_window
      end
      
      alias ldt_create_command_window create_command_window
      def create_command_window
        ldt_create_command_window
        @command_window.set_handler(:cancel, method(:command_cancel))
      end
      
      def command_cancel
        @command_window.visible = false
        @command_window.active = false
        @language_window.visible = true
        @language_window.active = true
      end
    end
    
    class Game_Enemy < Game_Battler
      alias ldt_initialize initialize
      def initialize(index, enemy_id)
        ldt_initialize(index, enemy_id)
        @original_name = Vocab.get_subject(enemy)
      end
    end
    module DataManager
      class <<self; alias ldt_vocab_load_game load_game end
      def self.load_game(index)
        tlang = $game_switches[Vocab::LDT_SWITCH]
        treturn = ldt_vocab_load_game(index)
        $game_switches[Vocab::LDT_SWITCH] = tlang
        Vocab.change_vocab()
        return treturn
      end
      
      class <<self; alias ldt_vocab_new_game setup_new_game end
      def self.setup_new_game
        tlang = $game_switches[Vocab::LDT_SWITCH]
        treturn = ldt_vocab_new_game
        $game_switches[Vocab::LDT_SWITCH] = tlang
        Vocab.change_vocab()
        return treturn
      end
    end

    Geändert von Linkey (01.08.2018 um 20:59 Uhr)

  2. #2
    Funktioniert tadellos vielen Dank!!

  3. #3
    Da wird sicherlich noch einiges in Zukunft kommen. Hab wie gesagt keine Zeit das alles zu ermitteln, aber so Dinge wie Gegner hatte ich schon auf dem Schirm. Auch Status ("Wurde vergiftet") usw. wird sicherlich noch ein Thema werden

  4. #4
    ich halt dich auf dem Laufenden

  5. #5
    Hallo Linkey, mir ist aufgefallen, daß Itembeschreibungen noch nicht zweisprachig möglich sind. Also die Beschreibungen oben, die man im KS sieht, wenn man auf den Reiter Items geht. Kannst du das noch machen? Und geht es auch, daß ich dort (und bei LDT_SKILL_MES2) auch Icons anzeigen kann?

    Geändert von Ken der Kot (03.08.2018 um 18:50 Uhr)

  6. #6
    Können denn ohne mein Script Icons angezeigt werden? Wenn ich das richtig im Kopf habe greife ich ja nur in den Text ein, den ich für die Ausgabe weiter gebe, ohne die Ausgaben-Funktion umzuschreiben.
    Falls es im Standard nicht möglich ist, müsste ich da den Battlelog anpassen - dazu müsste ich den Maker öffnen, den kenne ich nicht auswendig. => wenn ich zwischendurch mal Zeit und Lust habe, längere Zeit am PC/RPGMaker zu verbringen, schau ich mir das an.

    Die Itembeschreibungen trag ich noch nach, wenn ich mal Luft zwischendurch hab.

  7. #7
    Ja, die Icons sind auch nicht so wichtig, lass das einfach sein, wenn es zu viel Arbeit wäre oder du keine Zeit dafür finden würdest.

    Itembeschreibungen sind da schon wichtiger xD

  8. #8
    Unter LDT_ITEM folgenden Code hinzufügen:
    Code:
    LDT_ITEM_DESC = {
          1=>["Heilt 500 HP.","Restores 500 HP."],
          2=>["",""],
          4=>["",""]
          }
    Hier kannst du pro Item die Beschreibung in beiden Sprachen pflegen.

    Ab Zeile "def self.get_subject(subject)" alles mit folgendem Code ersetzen:
    Code:
    def self.get_subject(subject)
        if(subject.is_a?(Game_Enemy))
          if(LDT_ENEMY.has_key?(subject.enemy_id))
            return LDT_ENEMY[subject.enemy_id][$game_switches[LDT_SWITCH] ? 1 : 0]
          else
            return subject.name
          end
        elsif(subject.is_a?(RPG::Enemy))
          if(LDT_ENEMY.has_key?(subject.id))
            return LDT_ENEMY[subject.id][$game_switches[LDT_SWITCH] ? 1 : 0]
          else
            return subject.name
          end
        else
          return subject.name
        end
      end
      
      def self.get_item_desc(item)
        if(LDT_ITEM_DESC.has_key?(item.id))
          return LDT_ITEM_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.description
        end
      end
    end
    
    class Window_Base
      def draw_item_name(item, x, y, enabled = true, width = 172)
        return unless item
        draw_icon(item.icon_index, x, y, enabled)
        change_color(normal_color, enabled)
        draw_text(x + 24, y, width, line_height, Vocab.get_item_text(item))
      end
    end
    class Window_Help < Window_Base
      def set_item(item)
        set_text(item ? Vocab.get_item_desc(item) : "")
      end
    end
    class Window_BattleLog
      def display_use_item(subject, item)
        tsub = Vocab.get_subject(subject)
        if item.is_a?(RPG::Skill)
          add_text(tsub + Vocab.get_message1(item))
          tmes2 = Vocab.get_message2(item)
          unless tmes2.empty?
            wait
            add_text(tmes2)
          end
        else
          add_text(sprintf(Vocab::UseItem, tsub, Vocab.get_item_text(item)))
        end
      end
    end
    ## Scene Title changes + new window
    class Window_LanguageCommand < Window_Command
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize
        super(0, 0)
        update_placement
        self.openness = 0
        open
      end
      #--------------------------------------------------------------------------
      # * Get Window Width
      #--------------------------------------------------------------------------
      def window_width
        return 160
      end
      #--------------------------------------------------------------------------
      # * Update Window Position
      #--------------------------------------------------------------------------
      def update_placement
        self.x = (Graphics.width - width) / 2
        self.y = (Graphics.height * 1.6 - height) / 2
      end
      #--------------------------------------------------------------------------
      # * Create Command List
      #--------------------------------------------------------------------------
      def make_command_list
        add_command(Vocab::LDT_LANG[0], :lang1)
        add_command(Vocab::LDT_LANG[1], :lang2)
      end
      #--------------------------------------------------------------------------
      # * Get Activation State of Continue
      #--------------------------------------------------------------------------
      def continue_enabled
        DataManager.save_file_exists?
      end
    end
    class Scene_Title < Scene_Base
      def start
        super
        SceneManager.clear
        Graphics.freeze
        create_background
        create_foreground   
        create_command_window
        create_language_window
        unless($ldt_lang_selected)
          @command_window.visible = false
          @command_window.active = false      
        else
          @language_window.visible = false
          @language_window.active = false 
        end
        play_title_music
      end
      
      def create_language_window
        @language_window = Window_LanguageCommand.new
        @language_window.set_handler(:lang1, method(:command_lang1))
        @language_window.set_handler(:lang2, method(:command_lang2))
        @language_window.visible = true
        @language_window.active = true
      end
      
      def command_lang1()
        $game_switches[Vocab::LDT_SWITCH] = false
        language_selected()
      end
      
      def command_lang2()
        $game_switches[Vocab::LDT_SWITCH] = true
        language_selected()
      end
      
      def language_selected()
        $ldt_lang_selected = true
        @language_window.visible = false
        @language_window.active = false
        Vocab.change_vocab()
        create_command_window
      end
      
      alias ldt_create_command_window create_command_window
      def create_command_window
        ldt_create_command_window
        @command_window.set_handler(:cancel, method(:command_cancel))
      end
      
      def command_cancel
        @command_window.visible = false
        @command_window.active = false
        @language_window.visible = true
        @language_window.active = true
      end
    end
    
    class Game_Enemy < Game_Battler
      alias ldt_initialize initialize
      def initialize(index, enemy_id)
        ldt_initialize(index, enemy_id)
        @original_name = Vocab.get_subject(enemy)
      end
    end
    module DataManager
      class <<self; alias ldt_vocab_load_game load_game end
      def self.load_game(index)
        tlang = $game_switches[Vocab::LDT_SWITCH]
        treturn = ldt_vocab_load_game(index)
        $game_switches[Vocab::LDT_SWITCH] = tlang
        Vocab.change_vocab()
        return treturn
      end
      
      class <<self; alias ldt_vocab_new_game setup_new_game end
      def self.setup_new_game
        tlang = $game_switches[Vocab::LDT_SWITCH]
        treturn = ldt_vocab_new_game
        $game_switches[Vocab::LDT_SWITCH] = tlang
        Vocab.change_vocab()
        return treturn
      end
    end

  9. #9
    Danke, eben getestet und es tut. Schade daß man Leuten hier keine positive Bewertung geben kann

  10. #10
    Hmm, es scheint keine Rolle zu spielen, was ich im Skript für Special reinschreibe. Es zeigt mir "Special" an (aus der Database).

    Also es geht um die beiden Skilltypen Special und Magic.

    Geändert von Ken der Kot (07.08.2018 um 13:36 Uhr)

  11. #11
    Der Maker ist mal wieder ganz super aufgebaut. Anstatt über das Vocab-Modul zu gehen, werden die Skilltypen direkt aus der DB gelesen.

    Ganz unten fügst du folgendes ein:
    Code:
    class Window_ActorCommand < Window_Command
      def add_skill_commands
        @actor.added_skill_types.sort.each do |stype_id|
          name = Vocab.get_skilltype(stype_id)
          add_command(name, :skill, true, stype_id)
        end
      end
    end
    class Window_SkillCommand < Window_Command
      def make_command_list
        return unless @actor
        @actor.added_skill_types.sort.each do |stype_id|
          name = Vocab.get_skilltype(stype_id)
          add_command(name, :skill, true, stype_id)
        end
      end
    end
    Zwischen "def self.get_item_desc(item)" und "class Window_Base" fügst du das rote ein:
    Code:
      def self.get_item_desc(item)
        if(LDT_ITEM_DESC.has_key?(item.id))
          return LDT_ITEM_DESC[item.id][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return item.description
        end
      end
      
      def self.get_skilltype(skid)
        if(LDT_SKILLTYPE.has_key?(skid))
          return LDT_SKILLTYPE[skid][$game_switches[LDT_SWITCH] ? 1 : 0]
        else
          return $data_system.skill_types[skid]
        end
      end
    end
    
    class Window_Base
    Unter "LDT_ITEM_DESC = { ..........." fügst du folgendes ein:
    Code:
    # Skilltype ID => [Language switch off][language switch on]
      LDT_SKILLTYPE = {
          1=>["Technik","Special"],
          2=>["Magie","Magic"],
          }

  12. #12
    Funktioniert Astrein, tausend Dank!!!

Berechtigungen

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