Seite 1 von 4 1234 LetzteLetzte
Ergebnis 1 bis 20 von 71

Thema: [XP] Standardscripte die man haben sollte!

  1. #1

    [XP] Standardscripte die man haben sollte!

    Weiß nicht ob's richtig ist oder ich das überhaupt darf, aber da es auf unserer Seite ja keine echte Referenzliste für Ruby oder den RMXP allgemein gibt hab' ich mir überlegt das ich wenigstens mal die Standardscripte (Advanced Messagescript und Vollbildmodus) posten sollte - Sachen die man halt standardmäßig braucht, egal was man für ein Spiel macht (naja, fast egal zummindest). Ich habe die Sachen einfach aus meinen Beständen kopiert, weiß auch nicht genau ob das AMS noch aktuell ist. Sollte es illegal sein weil die Sachen nicht von mir sind dann soll ein Mod eures Vertrauens den Thread wieder löschen. Andernfalls wäre es nicht verkert es zu pinnen, denn ich wurde schon öfter nach dem AMS gefragt.


    EDIT: Ups, da sind offenbar einige Zeichenketten zu Smilies mutiert. Ich guck besser mal ob ich die Code-Klammern hinkriege...


    naja, ich poste erstmal:

    Advanced Message Script
    Code:
    #===================================================
    # ■ AMS - Advanced Message Script - R4 [Update #2]
    #===================================================
    # For more infos and update, visit:
    # www.dubealex.com (Creation Asylum)
    #
    # Edited, Fixed and Enhanced by: Dubealex
    # Original Script Core by: XRXS Scripter (Jap Dudes)
    # HTML Hexadecimal color feature from: Phylomorphis 
    #
    # Special Thanks:
    # Rabu: For enabling the Show Face feature in an encrypted project
    #
    # To found all my new features, search the following:  #NEW
    # To configure the button to skip the dialog, search:  #SKIP_TEXT_CODE
    #
    # May 18, 2005
    #===================================================
    
    LETTER_BY_LETTER_MODE = true   #Set the letter by letter mode ON/OFF          
    
    #===================================================
    # ▼ CLASS AMS Begins
    #===================================================
    class AMS
     
     attr_accessor :name_box_x_offset
     attr_accessor :name_box_y_offset 
     attr_accessor :font_type
     attr_accessor :name_font_type
     attr_accessor :font_size
     attr_accessor :name_font_size
     attr_accessor :message_box_opacity 
     attr_accessor :name_box_skin
     attr_accessor :name_box_text_color
     attr_accessor :message_box_text_color
     attr_accessor :message_box_skin
     attr_accessor :name_box_width
     attr_accessor :name_box_height
     attr_accessor :message_width
     attr_accessor :message_height
     attr_accessor :message_x
     attr_accessor :message_y_bottom
     attr_accessor :message_y_middle
     attr_accessor :message_y_top
     attr_accessor :event_message_x_ofset
     attr_accessor :event_message_y_ofset
      
    def initialize
      
     @name_box_x_offset = 0       #Choose the X axis offset of the name bos. default= 0
     @name_box_y_offset = -10    #Choose the Y axis offset of the name bos. default= -10
     @name_box_width = 8           #Choose the width of the Name Box. default= 8  
     @name_box_height = 26        #Choose the height of the Name Box. default= 26
     
     @font_type = "Tahoma"           #Choose the Font Name (Case Sensitive) for message box
     @name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box
     @font_size = 22                      #Choose the default Font Size for message box text
     @name_font_size = 22            #Choose the deafault Font Size for Name Box text
     @name_box_text_color=0        #Choose the Text Color of the Name Box
     @message_box_text_color=0   #Choose the Text Color of the Message Box
     
     @message_box_opacity = 160            #Choose the opacity of the message window. Default=160
     @message_box_skin = "001-Blue01"   #Choose the WindowSkin for the Message Box
     @name_box_skin = "001-Blue01"       #Choose the WindowSkin for the Name Box
     
     @message_width = 480          #Choose the width size of the message box. Default=480
     @message_height = 160         #Choose the height size of the message box. Default=160
     @message_x = 80                  #Choose the X position of the message box. Default=80
     @message_y_bottom = 304    #Choose the Y bottom position of the message box. Default=304
     @message_y_middle = 160    #Choose the Y middle position of the message box. Default=160
     @message_y_top = 16           #Choose the Y top position of the message box. Default=16
     
     @event_message_x_ofset = 0   #Choose the X position offset of the event message. Default=0
     @event_message_y_ofset = 48   #Choose the Y position offset of the event message. Default=48
     
    end
    end
    #===================================================
    # ▲ CLASS AMS Ends
    #===================================================
    
    
    #===================================================
    # ▼ Class Window_Message Begins
    #===================================================
    class Window_Message < Window_Selectable   
    
    alias xrxs9_initialize initialize
    
    def initialize
    
    @alex_skip = false
    
    xrxs9_initialize
    
    if $soundname_on_speak == nil then
      $soundname_on_speak = ""
    end
    
    $gaiji_file = "./Graphics/Gaiji/sample.png"
    
    if FileTest.exist?($gaiji_file)
      @gaiji_cache = Bitmap.new($gaiji_file)
    else
      @gaigi_cache = nil
    end
    @opacity_text_buf = Bitmap.new(32, 32)
    end
    
    
    #--------------------------------------------------------------------------
    
    alias xrxs9_terminate_message terminate_message
    
    def terminate_message
     
    if @name_window_frame != nil
      @name_window_frame.dispose
      @name_window_frame = nil
    end
    
    if @name_window_text  != nil
      @name_window_text.dispose
      @name_window_text  = nil
    end
    xrxs9_terminate_message
    end
    
    #--------------------------------------------------------------------------
    
    def refresh
     
    self.contents.clear
    self.contents.font.color = text_color($ams.message_box_text_color)
    self.contents.font.name = $ams.font_type
    self.contents.font.size = $ams.font_size
    self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
    @x = @y = @max_x = @max_y = @indent = @lines = 0
    @face_indent = 0
    @opacity = 255
    @cursor_width = 0
    @write_speed = 0
    @write_wait = 0
    @mid_stop = false
    @face_file = nil
    @popchar = -2
    
    if $game_temp.choice_start == 0
      @x = 8
    end
    
    if $game_temp.message_text != nil
      @now_text = $game_temp.message_text
      if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
         @face_file = $1 + ".png"
         @x = @face_indent = 128
        if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
          self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
        end
        @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
      end
    
      begin
      last_text = @now_text.clone
      @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
      end until @now_text == last_text
      @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
       end
      
      #NEW
      #Dubealex's Stop Skip Text ON-OFF
      @now_text.gsub!(/\\[%]/) { "\100" }
      #End new command
       
      #NEW
      #Dubealex's Show Monster Name Feature
       @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
       $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
       end
       #End new command
       
      #NEW
      #Dubealex's Show Item Price Feature
       @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
       $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
       end
       #End new command
       
      #NEW
      #Dubealex's Show Hero Class Name Feature
       @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
       $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
       end
       #End new command
       
      #NEW
      #Dubealex's Show Current Map Name Feature
       @now_text.gsub!(/\\[Mm]ap/) do
       $game_map.name    != nil ? $game_map.name    : ""
       end
       #End new command
       
      #NEW
      #Dubealex's Choose Name Box Text Color
       @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
       $ams.name_box_text_color=$1.to_i
       @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
       end
       #End new command
       
      name_window_set = false
      if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
        name_window_set = true
        name_text = $1
        @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
      end
    
      if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
        @popchar = $1.to_i
        if @popchar == -1
          @x = @indent = 48
          @y = 4
        end
        @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
      end
    
      @max_choice_x = 0
      if @popchar >= 0
        @text_save = @now_text.clone
        @max_x = 0
        @max_y = 4
        for i in 0..3
          line = @now_text.split(/\n/)[3-i]
          @max_y -= 1 if line == nil and @max_y <= 4-i
          next if line == nil
          line.gsub!(/\\\w\[(\w+)\]/) { "" }
          cx = contents.text_size(line).width
          @max_x = cx if cx > @max_x
          if i >= $game_temp.choice_start
            @max_choice_x = cx if cx > @max_choice_x
          end
        end
        self.width = @max_x + 32 + @face_indent
        self.height = (@max_y - 1) * 32 + 64
        @max_choice_x -= 68
        @max_choice_x -= @face_indent*216/128
      else
        @max_x = self.width - 32 - @face_indent
        for i in 0..3
          line = @now_text.split(/\n/)[i]
          next if line == nil
          line.gsub!(/\\\w\[(\w+)\]/) { "" }
          cx = contents.text_size(line).width
          if i >= $game_temp.choice_start
            @max_choice_x = cx if cx > @max_choice_x
          end
        end
        @max_choice_x += 8
      end
      @cursor_width = 0
      @now_text.gsub!(/\\\\/) { "\000" }
      @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
      @now_text.gsub!(/\\[Gg]/) { "\002" }
      @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
      @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
      
       #NEW 
       #Dubealex's Permanent Color Change
       @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
         $ams.message_box_text_color= $1.to_i
        @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
         end
       #End of new command
       
       #NEW 
       #Dubealex's Font Change Feature
        @now_text.gsub(/\\[Tt]\[(.*?)\]/) do
         buftxt = $1.to_s
         $ams.font_type = buftxt
         @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
         end
       #End of new command
       
      @now_text.gsub!(/\\[.]/) { "\005" }
      @now_text.gsub!(/\\[|]/) { "\006" }
      @now_text.gsub!(/\\[>]/) { "\016" }
      @now_text.gsub!(/\\[<]/) { "\017" }
      @now_text.gsub!(/\\[!]/) { "\020" }
      @now_text.gsub!(/\\[~]/) { "\021" }
      @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
      @now_text.gsub!(/\\[Ii]/) { "\023" }
      @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
      @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
      @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
      @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
      
      reset_window
      
      if name_window_set
        color=$ams.name_box_text_color
        off_x =  $ams.name_box_x_offset
        off_y =  $ams.name_box_y_offset
        space = 2
        x = self.x + off_x - space / 2
        y = self.y + off_y - space / 2
        w = self.contents.text_size(name_text).width + $ams.name_box_width + space
        h = $ams.name_box_height + space
        @name_window_frame = Window_Frame.new(x, y, w, h)
        @name_window_frame.z = self.z + 1
        x = self.x + off_x + 4
        y = self.y + off_y
        @name_window_text  = Air_Text.new(x, y, name_text, color)
        @name_window_text.z = self.z + 2
      end
    end
    
    reset_window
    
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
    end
    
    #--------------------------------------------------------------------------
    
    def update
     
    super
    
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
      end
      return
    end
    @now_text = nil if @now_text == "" 
    
    if @now_text != nil and @mid_stop == false
      if @write_wait > 0
        @write_wait -= 1
        return
      end
      text_not_skip = LETTER_BY_LETTER_MODE
      while true
        @max_x = @x if @max_x < @x
        @max_y = @y if @max_y < @y
        if (c = @now_text.slice!(/./m)) != nil
          if c == "\000"
            c = "\\"
          end
          
          if c == "\001"
            @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
            temp_color = $1
            color = temp_color.to_i
            leading_x = temp_color.to_s.slice!(/./m)
            if leading_x == "#"
              self.contents.font.color = hex_color(temp_color)
              next
            end
            if color >= 0 and color <= 7
              self.contents.font.color = text_color(color)
            end
            next
          end
    
          if c == "\002"
            if @gold_window == nil and @popchar <= 0
              @gold_window = Window_Gold.new
              @gold_window.x = 560 - @gold_window.width
              if $game_temp.in_battle
                @gold_window.y = 192
              else
                @gold_window.y = self.y >= 128 ? 32 : 384
              end
              @gold_window.opacity = self.opacity
              @gold_window.back_opacity = self.back_opacity
            end
            c = ""
          end
    
          if c == "\003"
            @now_text.sub!(/\[([0-9]+)\]/, "")
            speed = $1.to_i
            if speed >= 0 and speed <= 19
              @write_speed = speed
            end
            c = ""
          end
    
          if c == "\004"
            @now_text.sub!(/\[(.*?)\]/, "")
            buftxt = $1.dup.to_s
            if buftxt.match(/\//) == nil and buftxt != "" then
              $soundname_on_speak = "Audio/SE/" + buftxt
            else
              $soundname_on_speak = buftxt.dup
            end
            c = ""
          elsif c == "\004" 
            c = ""
          end
          
          if c == "\005"
            @write_wait += 5
            c = ""
          end
          
          if c == "\006"
            @write_wait += 20
            c = ""
          end
          
          if c == "\016"
            text_not_skip = false
            c = ""
          end
          
          if c == "\017"
            text_not_skip = true
            c = ""
          end
          
          if c == "\020"
            @mid_stop = true
            c = ""
          end
          
          if c == "\021"
            terminate_message
            return
          end
          
          if c == "\023"
            @indent = @x
            c = ""
          end
    
          if c == "\024"
            @now_text.sub!(/\[([0-9]+)\]/, "")
            @opacity = $1.to_i
            color = self.contents.font.color
            self.contents.font.name = $ams.font_type
            self.contents.font.size = $ams.font_size
            self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
            c = ""
          end
    
          if c == "\025"
            @now_text.sub!(/\[([0-9]+)\]/, "")
            self.contents.font.size = [[$1.to_i, 6].max, 32].min
            c = ""
          end
    
          if c == "\026"
            @now_text.sub!(/\[([0-9]+)\]/, "")
            @x += $1.to_i
            c = ""
          end
          
          if c == "\027"
            @now_text.sub!(/\[(.*?)\]/, "")
            @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
            if $soundname_on_speak != ""
              Audio.se_play($soundname_on_speak)
            end
          c = ""
          end
    
          if c == "\030"
            @now_text.sub!(/\[(.*?)\]/, "")
            self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
            if $soundname_on_speak != ""
              Audio.se_play($soundname_on_speak)
            end
            @x += 24
            c = ""
          end
    
          if c == "\n"
            @lines += 1
            @y += 1
            @x = 0 + @indent + @face_indent
            if @lines >= $game_temp.choice_start
              @x = 8 + @indent + @face_indent
              @cursor_width = @max_choice_x
            end
            c = ""
          end
          
          if c == "\022"
            @now_text.sub!(/\[([0-9]+)\]/, "")
            @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
            c = ""
          end
          
          #NEW
          #Dubealex's Text Skip On/OFF Command
           if c == "\100"
              if @alex_skip==false
                 @alex_skip=true
              else
                @alex_skip=false
              end
             c = ""
           end  
           #end of new command
                                       
          if c != ""
            self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
            @x += self.contents.text_size(c).width
            if $soundname_on_speak != "" then
              Audio.se_play($soundname_on_speak)
            end
          end
          
    #SKIP_TEXT_CODE
    
    # B = Escape, 0 (On The NumPad), X 
    # C = Enter, Space Bar and C
    # A = Shift, Z 
    
      if Input.press?(Input::C) # <-- Change the value on that line
        if @alex_skip==false      
        text_not_skip = false
        end
          end
        else
          text_not_skip = true
          break
        end
        
        if text_not_skip
          break
        end
      end
      @write_wait += @write_speed
      return
    end
    
    if @input_number_window != nil
      @input_number_window.update
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
          @input_number_window.number
        $game_map.need_refresh = true
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    
    if @contents_showing
      if $game_temp.choice_max == 0
        self.pause = true
      end
      
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      
      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        if @mid_stop
          @mid_stop = false
          return
        else
          terminate_message
        end
      end
      return
    end
    
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      refresh
      Graphics.frame_reset
      self.visible = true
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    
    if self.visible
      @fade_out = true
      self.opacity -= 48
      if self.opacity == 0
        self.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
      end
      return
    end
    end
    
    #--------------------------------------------------------------------------
    
    def get_character(parameter)
    
    case parameter
    when 0  
      return $game_player
    else 
      events = $game_map.events
      return events == nil ? nil : events[parameter]
    end
    end
    
    #--------------------------------------------------------------------------
    
    def reset_window
    
    #MESSAGE_SIZE
    #MESSAGE_POSITION
    
    if @popchar >= 0
      events = $game_map.events
      if events != nil
        character = get_character(@popchar)
        x = [[character.screen_x -  $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
        y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
        self.x = x
        self.y = y
      end
    elsif @popchar == -1
      self.x = -4
      self.y = -4
      self.width = 648
      self.height = 488
    else
      if $game_temp.in_battle
        self.y = 16
      else
        case $game_system.message_position
        when 0  
          self.y = $ams.message_y_top
        when 1  
          self.y = $ams.message_y_middle
        when 2  
          self.y = $ams.message_y_bottom
        end
        self.x = $ams.message_x
        if @face_file == nil
          self.width = $ams.message_width
          self.x = $ams.message_x
        else
          if self.width <= 600
            self.width = 600
            self.x -=60
           end 
        end
        self.height = $ams.message_height
      end
    end
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    self.contents.font.color = text_color($ams.message_box_text_color)
    self.contents.font.name = $ams.font_type
     self.contents.font.size = $ams.font_size
    if @face_file != nil
      self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
    end
    if @popchar == -1
      self.opacity = 255
      self.back_opacity = 0
    elsif $game_system.message_frame == 0
      self.opacity = 255
      self.back_opacity = $ams.message_box_opacity
    else
      self.opacity = 0
      self.back_opacity = $ams.message_box_opacity
    end
    end
    
    #--------------------------------------------------------------------------
    
    def gaiji_draw(x, y, num)
    
    if @gaiji_cache == nil
      return 0
    else
      if @gaiji_cache.width < num * 24
        return 0
      end
    
      if self.contents.font.size >= 20 and self.contents.font.size <= 24
        size = 24
      else
        size = self.contents.font.size * 100 * 24 / 2200
      end
    
      self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
    
      if $soundname_on_speak != "" then
        Audio.se_play($soundname_on_speak)
      end
      return size
    end
    end
    
    #--------------------------------------------------------------------------
    
    def line_height
    return 32
    
    if self.contents.font.size >= 20 and self.contents.font.size <= 24
      return 32
    else
      return self.contents.font.size * 15 / 10
    end
    end
    
    #--------------------------------------------------------------------------
    
    def ruby_draw_text(target, x, y, str,opacity)
    
    sizeback = target.font.size
    target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
    rubysize = [rubysize, 6].max
    opacity = [[opacity, 0].max, 255].min
    split_s = str.split(/,/)
    split_s[0] == nil ? split_s[0] = "" : nil
    split_s[1] == nil ? split_s[1] = "" : nil
    
    height = sizeback + rubysize
    width  = target.text_size(split_s[0]).width
    
    target.font.size = rubysize
    ruby_width = target.text_size(split_s[1]).width
    target.font.size = sizeback
    
    buf_width = [target.text_size(split_s[0]).width, ruby_width].max
    
    width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
    
    if opacity == 255
      target.font.size = rubysize
      target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
      target.font.size = sizeback
      target.draw_text(x, y, width, target.font.size, split_s[0])
      return width
    else
      if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
        @opacity_text_buf.dispose
        @opacity_text_buf = Bitmap.new(buf_width, height)
      else
        @opacity_text_buf.clear
      end
      @opacity_text_buf.font.size = rubysize
      @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
      @opacity_text_buf.font.size = sizeback
      @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
      if sub_x >= 0
        target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
      else
        target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
      end
      return width
    end
    end
    
    #--------------------------------------------------------------------------
    
    def convart_value(option, index)
    option == nil ? option = "" : nil
    option.downcase!
    
    case option
    when "i"
      unless $data_items[index].name == nil
        r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
      end
    when "w"
      unless $data_weapons[index].name == nil
        r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
      end
    when "a"
      unless $data_armors[index].name == nil
        r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
      end
    when "s"
      unless $data_skills[index].name == nil
        r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
      end
    else
      r = $game_variables[index]
    end
    
    r == nil ? r = "" : nil
    return r
    end
    
    #--------------------------------------------------------------------------
    
    def dispose
    terminate_message
    
    if @gaiji_cache != nil
      unless @gaiji_cache.disposed?
        @gaiji_cache.dispose
      end
    end
    
    unless @opacity_text_buf.disposed?
      @opacity_text_buf.dispose
    end
    
    $game_temp.message_window_showing = false
    if @input_number_window != nil
      @input_number_window.dispose
    end
    super
    end
    
    #--------------------------------------------------------------------------
    
    def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
    end
    end
    #=========================================
    # ▲ CLASS Window_Message Ends
    #=========================================
    
    
    #=========================================
    # ▼ Class Window_Frame Begins
    #=========================================
    class Window_Frame < Window_Base
    
    def initialize(x, y, width, height)
    super(x, y, width, height)
    self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
    self.contents = nil
    end
    
    #--------------------------------------------------------------------------
    
    def dispose
    super
    end
    end
    #=========================================
    # ▲ CLASS Window_Frame Ends
    #=========================================
    
    
    #=========================================
    # ▼ CLASS Game_Map Additional Code Begins
    #=========================================
    class Game_Map
    
    #Dubealex's Addition (from XRXS) to show Map Name on screen
    def name
     $map_infos[@map_id]
    end
    end
    #=========================================
    # ▲ CLASS Game_Map Additional Code Ends
    #=========================================
    
    
    #=========================================
    # ▼ CLASS Scene_Title Additional Code Begins
    #=========================================
    class Scene_Title
    
    #Dubealex's Addition (from XRXS) to show Map Name on screen
     $map_infos = load_data("Data/MapInfos.rxdata")
     for key in $map_infos.keys
       $map_infos[key] = $map_infos[key].name
     end
     
     #Dubealex's addition to save data from the AMS in the save files
     $ams = AMS.new
     
    end
    #=========================================
    # ▲ CLASS Scene_Title Additional Code Ends
    #=========================================
    
    
    #=========================================
    # ▼ CLASS Window_Base Additional Code Begins
    #=========================================
    class Window_Base < Window
    
    #Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
    def hex_color(string)
      red = 0
      green = 0
      blue = 0
      if string.size != 6
        print("Hex strings must be six characters long.")
        print("White text will be used.")
        return Color.new(255, 255, 255, 255)
      end
      for i in 1..6
        s = string.slice!(/./m)
        if s == "#"
          print("Hex color string may not contain the \"#\" character.")
          print("White text will be used.")
          return Color.new(255, 255, 255, 255)
        end
        value = hex_convert(s)
        if value == -1
          print("Error converting hex value.")
          print("White text will be used.")
          return Color.new(255, 255, 255, 255)
        end
        case i
        when 1
          red += value * 16
        when 2
          red += value
        when 3
          green += value * 16
        when 4
          green += value
        when 5
          blue += value * 16
        when 6
          blue += value
        end
      end
      return Color.new(red, green, blue, 255)
    end
    
    #--------------------------------------------------------------------------
    
    def hex_convert(character)
      case character
       when "0"
         return 0
      when "1"
         return 1
      when "2"
         return 2
      when "3"
         return 3
      when "4"
         return 4
      when "5"
         return 5
      when "6"
         return 6
      when "7"
         return 7
      when "8"
         return 8
      when "9"
         return 9
      when "A"
         return 10
      when "B"
         return 11
      when "C"
         return 12
      when "D"
         return 13
      when "E"
         return 14
      when "F"
         return 15
       end
      return -1
    end
    end
    #=========================================
    # ▲ CLASS Window_Base Additional Code Ends
    #=========================================
    
    
    #=========================================
    # ▼ Class Air_Text Begins 
    #=========================================
    class Air_Text < Window_Base
    
    def initialize(x, y, designate_text, color=0)
     
    super(x-16, y-16, 32 + designate_text.size * 12, 56)
    self.opacity      = 0
    self.back_opacity = 0
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    w = self.contents.width
    h = self.contents.height
    self.contents.font.name = $ams.name_font_type
    self.contents.font.size = $ams.name_font_size
    self.contents.font.color = text_color(color)
    self.contents.draw_text(0, 0, w, h, designate_text)
    end
    
    #--------------------------------------------------------------------------
    
    def dispose
    self.contents.clear
    super
    end
    end 
    #==========================================
    # ▲ CLASS Air_Text  Ends
    #==========================================
    
    
    #===================================================
    # ▼ CLASS Scene_Save Additional Code Begins
    #===================================================
    class Scene_Save < Scene_File
     
     alias ams_original_write_save_data write_save_data
     
     def write_save_data(file)
       ams_original_write_save_data(file)
       Marshal.dump($ams, file)
     end
     
    end
    #===================================================
    # ▲ CLASS Scene_Save Additional Code Ends
    #=================================================== 
    
    
    #===================================================
    # ▼ CLASS Scene_Load Additional Code Begins
    #===================================================
    class Scene_Load < Scene_File
     
     alias ams_original_read_save_data read_save_data
     
     def read_save_data(file)
       ams_original_read_save_data(file)
       $ams      = Marshal.load(file)
     end
     
    end
    #===================================================
    # ▲ CLASS Scene_Load Additional Code Ends
    #===================================================
    ReadMe für das AMS

    www.dubealex.com (Creation Asylum)
    Instruction Manual:
    Each of those "commands" are to be used in your message events.

    Change the text color temporarly (Default):
    \c[ColorID]
    Insert the color ID of your choice. All colors are coded in Window_Base starting at line #39, 0 is white.

    Change the text color temporarly (Hexadecimal):
    \c[#000000]
    Enter an Hexadecimal color code as in HTML in there. For example:

    #000000 = black
    #FFFFFF = white

    Show the gold window:
    \G
    This will show a gold window in the top-right corner of the screen, with the amount of gold the player have in possesion.

    Show the hero's name:

    \n[HeroID]

    Use the hero ID of the hero's name you want to display in the message box.

    Show the monter's name:

    \m[MonsterID]

    Use the monster ID of the monster's name you want to display in the message box. This function was added by Dubealex.

    Show an item's price:

    \Price[ItemID]

    Use the item ID of the item's price you want to display in the message box. This function was added by Dubealex.

    Show the current map name:

    \Map

    This will show the name of the map you are currently on. This function was added by Dubealex.

    Show a face graphic in your message box:

    \f[FaceName]

    FaceName must be the filename of a graphic file found in the directoyr Graphics\Pictures of your RPG Maker XP project. The file must be a PNG of 96X96 pixels. You do not need to write the file extention.

    Show the class name of a character:

    \Class[HeroID]

    Use the hero ID of the hero's class name you want to display in the message box. This function was added by Dubealex.

    Show variables, items, weapons, armor and skill names:

    \v[xID]

    You must replace the x by the first lettter of what you want to modify, it goes as follows:

    Variable = Do not write anything, use the standard \v[VariableID]
    Items = i + itemID --> \v[iID]
    Armors = a + armorID --> \v[aID]
    Weapons = w + weaponID --> \v[wID]
    Skills = s + skillID --> \v[sID]

    Show a name or other info in a name box:

    \Name[text]

    Use this to show a name box above the message box that will contains the text you specified. You can also use variable and other commands such as "Show hero name" in that name box. As the following example:

    \Name[\v[12]] --> Will show the value of variable ID# 12 in the name box.
    \Name[Dubealex] --> Will show "Dubealex" in the name box.
    \Name[\n[1]] --> Will show the name of hero ID# 1 in the name box.

    Modify the text opacity:

    \o[Opacity]

    Use this to modify the opacity of the text in the message box. Enter a number between 0 and 255, where 255 is fully opaque and 0 is fully transparent.

    Modify the text speed:

    \s[Speed]

    Use this to modify the speed of the text in the message box. Enter a number between 1 and 19, where 19 is the slowest.

    Modify the text size:

    \h[Size]

    Use this to modify the size of the text in the message box. Enter a number between 6 and 32, where 32 is the biggest.

    Show the message box above player or events:

    \p[Option]

    Use this to set the window to appear whether above the player or any event present in your map. Use the following options:

    \p[Event ID]
    \P[0]
    \p[-1]

    Using "\p[Event ID]" will put the window on top of the specified event ID.
    Using "\p[0]" will put the window on top of the player.
    Using "\p[-1]" will make a window without background and without borders.

    Add wait in message and other commands like that:

    \| --> Wait for 1 second
    \. --> Wait for .25 second
    \~ --> Auto close window at last letter
    \! --> Wait for key input from the player
    \\ --> Will show the backslash \ character

    Set the letter by letter ON/OFF temporarly:

    \< --> Will set it ON
    \> --> Will set it OFF

    Change the font in a message box (permanent):

    \t[FontName]

    FontName must be a .TTF found in Windows\Fonts and must be case sensitive. The changes made to the font will be permanent. So remember to do another command to revert it to anything you want. This script now works with the parenthesis, new in R3... So no worry about that ! It's safe now. This feature was added by Dubealex.

    Play an SE as the letter are shown (permanent):

    \a[FileName]

    File must be in directory Audio\SE
    Remember to set that effect OFF when you dont need it anymore using \a[] Leaving the brackets empty, or else the SE will be heard on all window from this point on.

    Display text as a superscript:

    \[First]second

    The "FIRST" will be at normal size, and "SECOND" will be a little bit higher on the line, as a superscript.

    Allow / Disallow Text Skip button (permanent):

    \%

    Use this command to toggle the text skip button to whether enabled or disabled. It's useful if you want to control the flow of some stories and you don't want the player to be able to skip the text by himself. Remember that the changes are permanent, meaning that if you use it once to disable the text skip, it will stay like that. Remember to do it once again to revert the text skip to enabled for the rest of the game. Feature added by Dubealex.

    Modify the text color of the name box (permanent):

    \z[ColorID]

    Use this as you use the normal color command \c[ColorID] - But this time it will set the color used in the name box; and the changes will be permanent. So remember to do it once again to change the color back. Feature added by Dubealex.

    Change the color of the text in message box permanentatly:

    \Color[ColorID]

    Use this as you use the normal color command \c[ColorID] - But this time it will set the color used in the message box permanently; meaning you wont have to use a color command on each message event from now on. Remember to do another command like this to revert the color to something you want. Feature added by Dubealex.

    Customize other aspects of the AMS:

    In the first lines of the AMS, you can customize things.

    Those lines help you configure the default you will use in the AMS; so you can now specify the font name and size for both message box and name box independatly, and set their windowskin; which will not affect any other windows as the menus.

    You can also set the position and size of the name box, just play with the values and test it. The default are written in the comments aside each line so you cannot "mess" the script up.

    I also created an object named $ams that hold all those values for you, and it saves them in your save files, and load them when you load a game. This means that if you changed the font in the middle of your game, save the game, and reload the game, the font will still be the one you specified in the middle of your game -- This would not have worked in any other message script.

    You can also access those settings to read or write to them in your game using the ATTR_ACCESSOR I created.

    Have fun, and report any bug in this topic. But take note that some bug may occur because of other script, and I may not be able to help if it's the case.


    Fullscreen-Automatik

    Code:
    unless $keybd 
    $keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v' 
    $keybd.call 0xA4, 0, 0, 0 
    $keybd.call 13, 0, 0, 0 
    $keybd.call 13, 0, 2, 0 
    $keybd.call 0xA4, 0, 2, 0 end
    Direkt in Main reinkopieren, vor "begin"!



    Weitere Scripte gibt's im Creation Asylum unter: http://www.dubealex.com/creation_asylum/

    oder RMXP.net

    Sollte was fehlen oder nicht gehen bitte bescheid sagen!

    MfG

    Lil_Lucy

    Geändert von Caro (11.06.2015 um 00:39 Uhr)

  2. #2
    omg wie wärs wennde die scripts verlinkst da sonst diese rthread noch mächtig groß wird :rolleyes

    Hier noch n script den ich besonders bevorzuge:

    Hinterherlaufen

    Nazira

  3. #3
    Saubere Arbeit Lil_Lucy! Respekt und ein dickes Lob an dich! Wir bestimmt vielen hilfreich sein!

  4. #4
    Habs zwar mittlerweile gefunden, aber trotzdem ein Lob an dich das du es doch noch gepostet hast denke mal das man den Thread hier noch erweitern könnte und vorallem Pinnen sollte

  5. #5

    Anti Lag Script

    Ich möchte noch ein weiteres Script vorstellen, welches meiner Meinung nach in jedes RmXp Spiel hinein gehört.
    Es ist natürlich nicht von mir sondern von Near Fantastica aus dem Creation Asylum

    Mit dem Anti Lag Script werden "Ruckler" vermieden, die durch Maps mit vielen Events entstehen.
    Es funktioniert auch in Verbindung mit anderen Ruby-Scripts die sich auf Events beziehen.
    So ruckelt eine große Map mit über 300 Event, die jeweils einen Echtzeit animierten Schatten haben, nicht.

    Soviel ich weiss werden damit die Events, die nicht aktive sind und sich nicht im Sichtfeld des Spielers befinden angehalten.
    Da bin ich mir jetzt aber nicht sicher und ich kann leider auch kein Ruby.

    Das Script muss lediglich in ein Neues Script über Main kopiert werden und arbeitet dann selbstständig.
    Code:
    #======================================
    # ■ Anti Event Lag Script
    #======================================
    #  By: Near Fantastica
    #   Date: 12.06.05
    #   Version: 3
    #======================================
    
    #======================================
    # ■ Game_Map
    #======================================
    
    class Game_Map
     #--------------------------------------------------------------------------
     def in_range?(object)
       screne_x = $game_map.display_x
       screne_x -= 256
       screne_y = $game_map.display_y
       screne_y -= 256
       screne_width = $game_map.display_x
       screne_width += 2816
       screne_height = $game_map.display_y
       screne_height += 2176
       return false if object.real_x <= screne_x-32
       return false if object.real_x >= screne_width+32
       return false if object.real_y <= screne_y-32
       return false if object.real_y >= screne_height+32
       return true
     end
     #--------------------------------------------------------------------------
     def update
       if $game_map.need_refresh
         refresh
       end
       if @scroll_rest > 0
         distance = 2 ** @scroll_speed
         case @scroll_direction
         when 2
           scroll_down(distance)
         when 4
           scroll_left(distance)
         when 6  
           scroll_right(distance)
         when 8  
           scroll_up(distance)
         end
         @scroll_rest -= distance
       end
       for event in @events.values
         if in_range?(event) or event.trigger == 3 or event.trigger == 4
           event.update
         end
       end
       for common_event in @common_events.values
         common_event.update
       end
       @fog_ox -= @fog_sx / 8.0
       @fog_oy -= @fog_sy / 8.0
       if @fog_tone_duration >= 1
         d = @fog_tone_duration
         target = @fog_tone_target
         @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
         @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
         @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
         @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
         @fog_tone_duration -= 1
       end
       if @fog_opacity_duration >= 1
         d = @fog_opacity_duration
         @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
         @fog_opacity_duration -= 1
       end
     end
    end
    
    #======================================
    # ■ Spriteset_Map
    #======================================
    
    class Spriteset_Map
     #--------------------------------------------------------------------------
     def in_range?(object)
       screne_x = $game_map.display_x
       screne_x -= 256
       screne_y = $game_map.display_y
       screne_y -= 256
       screne_width = $game_map.display_x
       screne_width += 2816
       screne_height = $game_map.display_y
       screne_height += 2176
       return false if object.real_x <= screne_x
       return false if object.real_x >= screne_width
       return false if object.real_y <= screne_y
       return false if object.real_y >= screne_height
       return true
     end
     #--------------------------------------------------------------------------
     def update
       if @panorama_name != $game_map.panorama_name or
          @panorama_hue != $game_map.panorama_hue
         @panorama_name = $game_map.panorama_name
         @panorama_hue = $game_map.panorama_hue
         if @panorama.bitmap != nil
           @panorama.bitmap.dispose
           @panorama.bitmap = nil
         end
         if @panorama_name != ""
           @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
         end
         Graphics.frame_reset
       end
       if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
         @fog_name = $game_map.fog_name
         @fog_hue = $game_map.fog_hue
         if @fog.bitmap != nil
           @fog.bitmap.dispose
           @fog.bitmap = nil
         end
         if @fog_name != ""
           @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
         end
         Graphics.frame_reset
       end
       @tilemap.ox = $game_map.display_x / 4
       @tilemap.oy = $game_map.display_y / 4
       @tilemap.update
       @panorama.ox = $game_map.display_x / 8
       @panorama.oy = $game_map.display_y / 8
       @fog.zoom_x = $game_map.fog_zoom / 100.0
       @fog.zoom_y = $game_map.fog_zoom / 100.0
       @fog.opacity = $game_map.fog_opacity
       @fog.blend_type = $game_map.fog_blend_type
       @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
       @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
       @fog.tone = $game_map.fog_tone
       i=0
       for sprite in @character_sprites
         if sprite.character.is_a?(Game_Event)
           if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
             sprite.update
             i+=1
           end
         else
           sprite.update
           i+=1
         end
       end
       #p i
       @weather.type = $game_screen.weather_type
       @weather.max = $game_screen.weather_max
       @weather.ox = $game_map.display_x / 4
       @weather.oy = $game_map.display_y / 4
       @weather.update
       for sprite in @picture_sprites
         sprite.update
       end
       @timer_sprite.update
       @viewport1.tone = $game_screen.tone
       @viewport1.ox = $game_screen.shake
       @viewport3.color = $game_screen.flash_color
       @viewport1.update
       @viewport3.update
     end
    end

    Geändert von Macros (14.01.2006 um 13:03 Uhr)

  6. #6
    @Macros: Stimmt, von dem Script hab' ich schon gehört! Ich habe es nie ausprobiert da ich bisher keine Verwendung dafür hatte. Allerdings hatte ich mal Gerüchte gehört die besagten das es in der englischen Verkaufsversion Probleme verursacht hat. Wenn du oder irgendwer anders mir noch schnell bestätigen könnten das es ordnungsgemäß funktioniert würde ich es mit in den ersten Post aufnehmen!

  7. #7
    Eine weitere Sache, die für alle hoffentlich bald unentbehrlich wird ist das SDK (Standard Development Kit).

    Das Problem ist, daß viele Scripte untereinander inkompatibel sind, weil sie teilweise diesselben Teile der Standardskripte überschreiben. Zwei Skripte zum zusammen arbeiten umzuschreiben ist eine schwierige und mühselige Arbeit. Werden es deutlich mehr als zwei Skripte, steigt der Aufwand ins Extreme und nicht jeder ist so fit in Ruby, daß er das überhaupt machen könnte.

    Das SDK ist ein Versuch der RMXP.net Mitglieder, genau dieses Problem zu minimieren. Das SDK splittet dabei die Standardskripte in viele kleine Untermethoden, dadurch wird die Wahrscheinlichkeit, daß zwei Skripte diesselbe Methode überschreiben minimiert.

    Die Skripte müssen natürlich mit dem SDK kompatibel sein. Viele der großen Skripter unterstützen das SDK indem sie ihre neuen Skripte SDK-kompatibel rausbringen und auch alte Skripte werden wohl mit der Zeit entsprechend modifiziert.
    Das ein Skript SDK-kompatibel ist, wird durch eine kleine Grafik im Anfangspost des entsprechenden Threads auf rmxp.net symbolisiert.

    Ich hoffe, das immer mehr Leute das SDK in ihre Spiele einbauen und seine Verbreitung so fördern. Denn wenn immer mehr Skriptbenutzer das SDK verwenden müssen auch die Skriptschreiber zwangsläufig SDK-kompatibel schreiben. Letztendlich spart es allen Beteiligten viel Ärger.

    Link zum SDK-Thread

    Edit: URL geupdated

    Geändert von MagicMagor (30.05.2006 um 18:23 Uhr)

  8. #8
    @Lil_Lucy
    Leider kann ich dir nicht beweisen, dass es keine Probleme gibt.
    Ich habe es zwar in meinem Spiel, aber da ich erst vor kurzen auf den Xp umgestiegen binn, bin ich gerade noch am Scripten für das Ks andere grundliegende Technik.
    Hier allerdings findest du eine Demo wo gut gezeigt, dass es funktioniert.
    Öffne es im Maker und starte auf der Map Lag Test.
    Dann kannst du ja mahl das Anti Lag Script löschen und du solltest einen erheblichen Unterschied sehen.

  9. #9
    Ich erreiche aus irgendeinem Grund RMXP.net seit einer ganzen Weile schon nicht mehr, auch eure Links gehen bei mir nicht. Dachte bisher die Seite wär das Problem, aber wenn's bei euch geht liegt das Problem wohl bei mir. Werd mal versuchen das zu lösen, dann schau ich mir das Script an!

    EDIT: Kriegs einfach nicht hin... Cookies löschen hat nix gebracht und ich weiß nicht worans noch liegen kann. Die Seite will einfach nicht geladen werden, kann mir jemand helfen?

    EDITIDITIT: Wie ich sehe wurde ich gepinnt! YIPPIE, das hab' ich mir schon immer gewünscht!!! XD

    RMXP.net erreiche ich aber immernoch nicht... Das war beim Creation Asylum auch mal ne Weile so, jetzt gehts wieder. Vielleicht gibt sich dann auch dashier irgendwann, aber vorher kann ich das mit dem SDK nicht nachschauen.

    Geändert von Lil_Lucy (15.01.2006 um 18:43 Uhr)

  10. #10
    O.K., hier mal was auf eigene Faust, das heist das hab ich mir selber zusammengepfuscht und zwar ohne viel über Ruby zu wissen. Bei mir funktioniert es, aber wer's benutzen will tut das auf EIGENE GEFAHR!!!

    Wenn jemand mit Ahnung das liest soll er mir bitte mitteilen was er denkt, ob es unvollständig, fehlerhaft oder gar gefährlich ist (glaub ich eigentlich nicht), dann lösche ich es sofort wieder!

    Das ganze soll dem Zweck dienen die Dauer des 'Fade's beim "Playertransfer" (von einer Map zur anderen) zu steuern, und zwar in beliebigen Framezahlen. Das heist, wer will dass das Überblenden zur nächsten Map schnell von statten geht während es an anderer Stelle mal dem Effekt halber länger dauert kann den Wert einfach via Callscript neu setzen.

    Um das umzusetzen öffnet man erstmal den Scripteditor des Makers und sucht sich "scene_map" raus. Dort scrollt man ganz runter bis zur Zeile 272! Der Code der dort steht müßte so aussehen:

    Code:
        if $game_temp.transition_processing
          # Clear transition processing flag
          $game_temp.transition_processing = false
          # Execute transition
          Graphics.transition(20)
    Die letzte Zeile,
    Code:
     
    Graphics.transition(20)
    ist die auf die es ankommt. Die in () stehende 20 gibt die Framezahl an die der ganze Spaß dauern soll. Wer den Wert nur einmal einstellen will kann das direkt tun, aber wer ihn desöfteren neu einstellen möchte sollte diese Zahl gegen eine Variable ersetzen, z.B. so:

    Code:
    Graphics.transition($trans_wait)
    Dadurch wird statt einer Zahl der in der Variable gespeicherte Wert als Zeitangabe verwendet.

    Das kleine Problem ist das es diese Variable nicht gibt, man muß sie also zu Spielbegin erst erstellen. Alternativ könnte man auch eine der In-Game-Variablen ($game_variables[nummer der Variable]) verwenden wodurch man sie direkt via Clickscript modifizieren könnte, das hab ich aber nicht ausprobiert.

    Um sie zu erstellen habe ich sie in "scene_title" in unter def "command_new_game" mit eingebaut. Direkt unter "$scene = scene_map.new" einfach "$trans_wait = 20" einfügen, bzw. den namen der Variable die ihr verwenden wollt und den von euch angestrebten Startwert. Das ganze bewirkt dann das eine Variable "$trans_wait" erstellt und auf den Wert 20 gesetzt wird. Bei jedem Playertransfer wird dann der in dieser variable gespeicherte Wert als Frameangabe für die dauer des Fades (sofern dieser eingestellt ist) verwendet.

    Allerdings wird diese Variable nur dann erstellt wenn man ein neues Spiel startet. Sollte man das Spiel beenden und einen Speicher laden wird das Spiel beim ersten Teleport abbrechen da es die angeforderte Variable nicht gibt!

    Aus diesem Grund muß man dafür sorgen das die variable abgespeichert, und auch geladen wird! Hierzu öffnet man "scene_save" und scrollt ganz runter zu diesen ganzen "Marshal.dump (XX)"-Teilen. Fügt direkt unter dem letzten Marshal.dump einen weiteren ein, der eure trans_wait Variable speichert:

    Code:
     
    Marshal.dump($trans_wait, file)
    Dadurch wird die Variable mit in die Savefile geschrieben. Um sie laden zu können muß der Maker aber auch wissen das es etwas zu laden gibt, daher muß diese Info auch noch in die "scene_load" aufgenommen werden. Dot also ebenfalls ganz runter scrollen und unterhalb des letzten "Marshal.load" einen weiteren nach dem gleichen Schema einfügen:

    Code:
     
    $trans_wait         = Marshal.load(file)
    Um die Transferdauer jetzt nach belieben einstellen zu können muß man nurnoch "$trans_wait" auf den gewünschten Wert setzen. Das geht mit dem Eventbefehl "Script", der letzte in der Befehlsliste, ganz unten rechts auf der letzten Seite. Hier gibt man einfach folgendes ein:

    Code:
     
    $trans_wait = XX
    XX ist dann natürlich die Framezahl, lasst euch nicht einfallen hier Buchstaben einzusetzen, das würde der Maker natürluch nicht verstehen!

    Achso: das Ganze hat nur dann Auswirkungen wenn die "Fading"-Option bei "Transfer Player" auf "Yes" steht, sonst nicht!

    So, wie gesagt, bei mir hat alles bisher problemfrei funktioniert aber das ändert nichts daran das all das komplett selbst zusammengepfuscht ist, ich übernehmen keinerlei Verantwortung für Fehler und Probleme die dadurch entstehen. Eigentlich, nach allem was ich davon verstehe dürfte es keine Probleme damit geben da nichts weiter getan wurde als einen festen Wert durch eine Variable zu erstetzen und diese zu definieren und abzuspeichern.

    Wenn jemand einen Fehler findet, oder einen anderen grund warum ich den ganzen Quatsch lieber wieder löschen sollte, bitte posten!

    MfG

    Lil_Lucy

  11. #11
    sieht ganz vernünftig aus, aber da gibts auch nicht viel, dass man falsch machen könnte^^
    allerdings denke ich, es wäre sinnvoller eine ingame-variable zu nehmen, da es das modifizieren von save/load ersparen würde ...

  12. #12
    Sicher, das hab ich ja auch angedeutet, allerdings ist dashier nicht sooo viel aufwändiger und man spart sich die In-Game-Variable. Nicht dass es da einen Mangel gäbe, aber ich hab's halt so gemacht...

  13. #13
    joah, eh egal, mehraufwand ist minimal ~ aber per ingame-variable wärs vor allem für nicht-ruby-fähige leute wesentlich bedienungsfreundlicher, weil sie dann nur ne einfache variable bedienen müssen und kein script ausführen ...

  14. #14
    Da die Links im RmXP FAQ Thread bie mir net klappen, könnte mir jemand ein Skript für ein SK oder ein Menü sagen.
    Oder mir sagen wie man das Menü umstylt.

  15. #15
    Code:
    #================================================ 
    # Aliases and redefines draw_text so that a sadow is drawn 
    # Made by: Ultimate Jesus 
    #================================================ 
    
    class Bitmap 
    
    ShadowIndent = 2                      # Size of the shadow (usually 1..3) 
    ShadowColour = Color.new(0, 0, 0, 200)# the colour of the shadow 
                                         #   the 4th value is transparency (0-255) 
                                          
     unless @ja_ta_feito == 1 # Fix for F12 Rebot by P@nCHo 
       alias draw_text_plain draw_text 
       @ja_ta_feito = 1 
     end 
      
     def draw_text(arg1 = 0, arg2 = 0, arg3 = 0, arg4 = 0, arg5 = 0, arg6 = 0) 
       if arg1.is_a?(Rect) 
         x = arg1.x 
         y = arg1.y 
         width = arg1.width 
         height = arg1.height 
         string = arg2 
         align = arg3 
       else 
         x = arg1 
         y = arg2 
         width = arg3 
         height = arg4 
         string = arg5 
         align = arg6 
       end 
       colour = self.font.color.dup 
       self.font.color = ShadowColour 
       draw_text_plain(x + ShadowIndent, y + ShadowIndent, width, height, string, align) 
       self.font.color = colour 
       draw_text_plain(x, y, width, height, string, align) 
     end 
    end
    Schatten Schrift.


    Einfach das teil als neues Script einfügen ganz oben und fertig.

  16. #16
    Ähm... könntet ihr bitte wenn ihr hier Scripte postet noch etwas ausführlicher werden. Ein paar Angaben zur genauen Funktion (Schattenschrift alleine reicht mir z.B. nicht, um zu wissen/mir vorzustellen wie es letztlich bei mir aussieht) und der Quelle von der ihr's habt. Wenn bekannt währe es auch schön mit anzugeben welche Teile des Standardscriptes überschrieben werden um Kompatibilitätsprobleme zu vermeiden.

  17. #17
    Hmm evt könnt ihr mir bei meinem Problem weiterhelfen. Wäre zwar eigentlich kein Problem das ganze auch mit RPG-Maker Scrpits zu lösen wäre aber schon schöner, wenn es so gehen würde wie ich mir das vorstelle und habe für den maker eigentlich keine lust mich mit ruby zu beschäftigen.

    bevor ich nur laber folgende problematik besteht:
    ich benutze ein 8 Frame Movement System. Dadurch sieht das Savemenü sehr unschönaus, da die Figur im endeffekt zwei mal angezeigt wird, da der Maker das Charset noch immer in nur 4 und nicht in 8 teile unterteilt. was ich im endeffekt bräuchte wäre, dass das ganze so umgeschrieben wird, dass die Battle-Grafik eines Spielers im Savemenü angezeigt wird anstatt des normalen Charsets.
    wäre nett wenn sich mal wer mit befassen könnte

    Zitat Zitat von Lil_Lucy
    Fullscreen-Automatik

    Code:
    unless $keybd 
    $keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v' 
    $keybd.call 0xA4, 0, 0, 0 
    $keybd.call 13, 0, 0, 0 
    $keybd.call 13, 0, 2, 0 
    $keybd.call 0xA4, 0, 2, 0 end
    Direkt in Main reinkopieren, vor "begin"!
    klappt bei mir nicht, spiel stürzt ab und sämmtliche funktionen wie maustasten oder tastatureinstellungen sind auf den Kopf gestellt.

  18. #18
    Tut mir Leid, aber das gehört echt nicht HIER her! Das ist ein Problem das dich und dein Spiel betrifft und kein Standardscript das man haben sollte.
    Die Lösung des Problems könntest du von miraus hierher posten aber die Frage selbst stellst du besser in einem eignen Thread, anstatt denhier zuzumüllen!

    Ich denke das du auch nicht viel Glück hättest hier Hilfe zu finden, da ein neuer Thread garantiert eher wahrgenommen wird als Posting in einem Bestehenden.

  19. #19
    Zitat Zitat von Lil_Lucy

    Fullscreen-Automatik

    Code:
    unless $keybd 
    $keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v' 
    $keybd.call 0xA4, 0, 0, 0 
    $keybd.call 13, 0, 0, 0 
    $keybd.call 13, 0, 2, 0 
    $keybd.call 0xA4, 0, 2, 0 end
    Direkt in Main reinkopieren, vor "begin"!


    Das Skript hab ich grad verwendet und alle Funktionen meines Pcs sind ausgefallen! ich konnte garnichts mehr machen, noch nicht maln Programm öffnen oder schließen, musste neu satrten und jetzt gehts GOTTSEIDANK wieder, aber könnte mir jemand den Fullscreen-Mode posten, der auch funktioniert und nicht meinen ganzen PC lahm legt!

  20. #20
    Dieser Thread ist kein Diskussionsthread, hier sollen nur die Scripte gepostet werden. Warum das Script bei dir nicht funktioniert kann ich nicht sagen, aber da es bei vielen anderen funktioniert, scheint wohl eher dein PC ein Problem zu haben.

Berechtigungen

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