Ergebnis 1 bis 17 von 17

Thema: [RMXP] Kann ich die Macken des Makers bei Animation und Textbox beheben?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Es sollte, theoretisch, kein Problem sein das Message-System so um zu schreiben, dass Zeilenumbrücke automatisch geschehen. Ich verstehe sowieso nicht, weshalb man die Zeilenumbrücke im Maker manuell setzen muss.
    Aber ohne weitere Änderungen vorzunehmen wird es dir wohl nicht so sehr bei deinem Problem helfen wie du es gerne hättest. Man muss immer die Vor- und Nachteile für einen selbst abwägen.

  2. #2
    Hey,

    vielleicht ist dieser Ansatz das, was du suchst. Du kannst Kommentare in Events verwenden, die dann in Texte umgewandelt werden.
    Allerdings kam ich noch nicht dazu, das Script auch zu testen. Hab's nur kurz erstellt und an 2-3 Beispielen getestet. Sollten dir irgendwelche Fehler ins Gesicht springen, gibt einfach Bescheid.

    Füge das folgende Script einfach über Main ein:
    Code:
    class Interpreter
    
      # call command_108 method if comment command is used
      alias org_execute_command execute_command
      def execute_command
        if(@index < @list.size)
          if(@list[@index].code == 108) #comment command
            return command_108
          else
            return org_execute_command
          end
        else
          command_end
          return true
        end
      end
      
      def command_108
        mls = 448 # max textsize per line
        text = @list[@index].parameters[0] # first line of the comment command
        
        #for every addtional command line (code = 408) // max. 5 additional lines
        for i in 1..5
          if(@list[@index+i].code == 408)
            text += @list[@index+i].parameters[0]
          else
            break
          end
        end
        
        #after extracting texts, delete old comment lines from event command list
        for i in 0..4
          if(@list[@index+5-i].code == 408)
            @list.delete_at(@index+5-i)
          else
            break
          end
        end
        
        tmsgbx = Bitmap.new(1,1)
        
        # multiple lines needed?
        if(tmsgbx.text_size(text).width>mls)
          iLength = 0
          textarray = [""]
          ## create Substrings
          substrings = text.scan(/\S+|\s+/)
          ## check if line size limit is reached and switch to next line
          substrings.each do |ttext|
            subsize = tmsgbx.text_size(ttext).width
            linesize = tmsgbx.text_size(textarray[iLength]).width
            if(( subsize + linesize) > mls)
              iLength = iLength + 1
            end
            if(textarray[iLength]!=nil)
              textarray[iLength]= textarray[iLength]+ttext
            else
              ttext.slice!(/\s*/)
              textarray[iLength]= ttext
            end
          end
          ## insert every line as command list element
          added = 1
          textarray.each_with_index do |msgtext,indx|
            if(indx == 0)
              @parameters = msgtext
              @list[@index].code = 101
            else
              @list.insert(@index+added, RPG::EventCommand.new()) 
              @list[@index+added].parameters[0] = msgtext
              @list[@index+added].code = (indx % 4) == 0 ? 101 : 401
              added += 1
            end
          end
          command_101
        else
        ## one-liner
          command_101
        end    
      end
    end

  3. #3
    Hier noch eine kleine Anpassung (mit dem Befehl #nl kann man einen Zeilenumbruch erzwingen)

    Code:
    class Interpreter
    
      # call command_108 method if comment command is used
      alias org_execute_command execute_command
      def execute_command
        if(@index < @list.size)
          if(@list[@index].code == 108) #comment command
            return command_108
          else
            return org_execute_command
          end
        else
          command_end
          return true
        end
      end
      
      def command_108
        mls = 448 # max textsize per line
        text = @list[@index].parameters[0] # first line of the comment command
        
        #for every addtional command line (code = 408) // max. 5 additional lines
        for i in 1..5
          if(@list[@index+i].code == 408)
            text += @list[@index+i].parameters[0]
          else
            break
          end
        end
        
        #after extracting texts, delete old comment lines from event command list
        for i in 0..4
          if(@list[@index+5-i].code == 408)
            @list.delete_at(@index+5-i)
          else
            break
          end
        end
        
        tmsgbx = Bitmap.new(1,1)
        
        # multiple lines needed?
        if(tmsgbx.text_size(text).width>mls)
          iLength = 0
          textarray = [""]
          ## create Substrings
          substrings = text.scan(/\S+|\s+/)
          ## check if line size limit is reached and switch to next line
          substrings.each do |ttext|
            if(ttext == "#nl")
              iLength = iLength + 1
              textarray << ""
              next
            end
            
            subsize = tmsgbx.text_size(ttext).width
            linesize = tmsgbx.text_size(textarray[iLength]).width
            if(( subsize + linesize) > mls)
              iLength = iLength + 1
            end
            
            if(textarray[iLength]!=nil)
              textarray[iLength]= textarray[iLength]+ttext
            else
              ttext.slice!(/\s*/)
              textarray[iLength]= ttext
            end
          end
          ## insert every line as command list element
          added = 1
          textarray.each_with_index do |msgtext,indx|
            if(indx == 0)
              @parameters = msgtext
              @list[@index].code = 101
              @list[@index].parameters[0] = msgtext
            else
              @list.insert(@index+added, RPG::EventCommand.new()) 
              @list[@index+added].parameters[0] = msgtext
              @list[@index+added].code = (indx % 4) == 0 ? 101 : 401
              added += 1
            end
          end
          command_101
        else
        ## one-liner
          command_101
        end    
      end
    end

    Geändert von Linkey (22.07.2014 um 06:18 Uhr) Grund: Testbefehl "p(substrings)" aus dem Skript entfernt.

  4. #4
    Also um alten Scheiß nochmal aufzuwärmen: Ich habe grad mal gegoogelt, wegen dem Problem mit der 3-Zeilen-Textbox und es scheint einen Patch zu geben, der dieses behebt. Dummerweise scheint es zumindest mit der Steam-Version des RMXP nicht zu funktionieren, die lässt sich dann nicht mehr starten. Hat irgendjemand Lust das mal mit der Nicht-Steam-Version auszuprobieren, bzw. hat den Versuch schon hinter sich? Der Patch verändert nur die Startdatei, man muss also kein komplettes BackUp machen und der Schaden ist dann auch schnell behoben.

    EDIT: Link vergessen: http://rpgcrisis.net/forums/files/fi...ur-text-lines/

    Geändert von Lil_Lucy (27.08.2014 um 18:34 Uhr)

  5. #5
    Hey,

    Punkt1:
    Kenne ich, ich bin da ganz bei dir! Damals in meinem alten Projekt wo ich aufwendige Cutscenes erstellt habe, in denen auch schnelle Char Animationen nötig waren wie z.B. animierte Kämpfe die mehr waren als das übliche show battle animation auf char mit der id x, musste ich auch auf rgss zurück greifen. Zu der Zeit hatte mir soweit ich mich erinnern kann Monsta, ein altes Mitglied im rpg-studio, was kleines gebastelt. Damit war es mir möglich komfortabel per call script die char grafik jederzeit zu ändern, auch unabhängig ob sich das Event bewegt oder nicht. Hat mir in dem Fall sehr weiter geholfen und mehr Möglichkeiten gebracht. Ich schau mal, ob ich das raus kramen kann.

    Punkt2:
    Warum nutzt du nicht einfach den Limes Patch, gibts im rpg-studio zu finden.
    http://www.rpg-studio.org/forum/inde...596#post531596
    Funzt nur mit einer legalen aktuellen Maker Version und ändert nicht die Dateien auf der Festplatte. Hab allerdings keine Steam Version, sollte da aber kein Unterschied sein!?

  6. #6
    Zitat Zitat von schmoggi Beitrag anzeigen
    Warum nutzt du nicht einfach den Limes Patch, gibts im rpg-studio zu finden.
    http://www.rpg-studio.org/forum/inde...596#post531596
    Funzt nur mit einer legalen aktuellen Maker Version und ändert nicht die Dateien auf der Festplatte. Hab allerdings keine Steam Version, sollte da aber kein Unterschied sein!?
    Kannte ich noch nicht, danke. Aber kann man den noch irgendwo anders runter laden? Möchte mich ungern nur für die eine Datei extra dort im Forum anmelden...

Berechtigungen

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