| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 1 |  
| 积分 | 8 |  
| 经验 | 15263 |  
| 最后登录 | 2017-5-29 |  
| 在线时间 | 194 小时 |  
 Lv2.观梦者 
	梦石0 星屑770 在线时间194 小时注册时间2012-6-1帖子720 | 
| 本帖最后由 1715063941 于 2013-8-6 18:20 编辑 
 要连帖……
 这是脚本设置复活点的脚本复制代码#===============================================================================
# +++ MOG - Chain Commands (v1.4) +++
#===============================================================================
# By Moghunter                                                                
# http://www.atelier-rgss.com                      
#===============================================================================
# Sistema de sequência de botões para ativar switchs. 
# 
# Serão necessárias as seguintes imagens. (Graphics/System)
#
# Chain_Cursor.png
# Chain_Command.png
# Chain_Layout.png
# Chain_Timer_Layout.png
# Chain_Timer_Meter.png
#
#===============================================================================
#
# Para ativar o script use o comando abaixo.  (*Call Script)
#
# chain_commands(ID)
#
# ID - Id da switch.
#
#===============================================================================
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 1.4 - Correção do crash aleatório.
# v 1.3 - Melhoria no sistema de dispose
# v 1.2 - Melhoria na codificação e correção de alguns glitches.
# v 1.1 - Animação de fade ao sair da cena de chain.
#       - Opção de definir a prioridade da hud na tela.
#==============================================================================
module MOG_CHAIN_COMMANDS 
 #==============================================================================
 # CHAIN_COMMAND = { SWITCH_ID => [COMMAND] }
 #
 # SWITCH_ID = ID da switch 
 # COMMANDS = Defina aqui a sequência de botões. 
 #            (Para fazer a sequência use os comandos abaixo)   
 #  
 # "Down" ,"Up" ,"Left" ,"Right" ,"Shift" ,"D" ,"S" ,"A" ,"Z" ,"X" ,"Q" ,"W"
 # 
 # Exemplo de utilização
 #
 # CHAIN_SWITCH_COMMAND = { 
 # 25=>["Down","D","S","Right"],
 # 59=>["Down","Up","Left","Right","Shift","D","S","A","Z","X","Q","W"],
 # 80=>["Shift","D"]
 # } 
 #chain switch command=(n) so game switch=(n)
 #==============================================================================
 CHAIN_SWITCH_COMMAND = {
 5=>["X","Right","Left","Z","Z"], 
 6=>["Left","Right","Left","Right","Left","Right","Q","Z","Up","A","S",
      "Down","D","Z","Right","Up","Up","Z","W","Left","Down","D","A","W"],
 8=>["Up","Down","Left","Right","Z"]}
 #Duração para colocar os comandos. (A duração é multiplicado pela quantidade
 #de comandos) *60 = 1 sec
 CHAIN_INPUT_DURATION = 30 
 #Som ao acertar. 
 CHAIN_RIGHT_SE = "Chime1"
 #Som ao errar.
 CHAIN_WRONG_SE = "Buzzer1"
 #Switch que ativa o modo automático.
 CHAIN_AUTOMATIC_MODE_SWITCH_ID = 20
 #Definição da prioridade da hud na tela
 CHAIN_HUD_Z = 300
end
#===============================================================================
# ■ Chain Commands
#===============================================================================
class Chain_Commands 
   include MOG_CHAIN_COMMANDS 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------       
  def initialize
      @action_id = $game_temp.chain_switch_id
      @chain_command = CHAIN_SWITCH_COMMAND[@action_id]
      @chain_command = ["?"] if @chain_command == nil  
      duration = [[CHAIN_INPUT_DURATION, 1].max, 9999].min
      @timer_max = duration * @chain_command.size
      @timer = @timer_max
      @slide_time = [[60 / duration, 10].max, 60].min
      @change_time = 0
      if $game_switches[CHAIN_AUTOMATIC_MODE_SWITCH_ID] 
         @auto = true
      else
         @auto = false
      end
      [url=home.php?mod=space&uid=10462]@Com[/url] = 0  
  end    
  
 #--------------------------------------------------------------------------
 # ● Main
 #--------------------------------------------------------------------------     
 def main
     dispose
     @background_sprite = Sprite.new
     @background_sprite.bitmap = SceneManager.background_bitmap2
     create_chain_command
     create_cusrsor
     create_layout
     create_meter
     create_text
     create_number 
     Graphics.transition
     loop do
          Graphics.update
           Input.update
           update
           break if SceneManager.scene != self
     end
     dispose
 end  
      
 #--------------------------------------------------------------------------
 # ● Create Cursor
 #--------------------------------------------------------------------------             
 def create_cusrsor
     @fy_time = 0
     @fy = 0
     @com_index = 0
     @cursor = Sprite.new
     @cursor.bitmap = Cache.system("Chain_Cursor")
     @cursor.z = 4 + CHAIN_HUD_Z
     @cursor_space = ((@bitmap_cw + 5) * @chain_command.size) / 2
     if @chain_command.size <= 20
        @cursor.x = (544 / 2) - @cursor_space + @cursor_space * @com_index 
     else   
        @cursor.x = (544 / 2)
     end  
     @cursor.y = (416 / 2) + 30    
 end 
 
 #--------------------------------------------------------------------------
 # ● Create Chain Command
 #--------------------------------------------------------------------------       
 def create_chain_command
     @image = Cache.system("Chain_Command")     
     width_max = ((@image.width / 13) + 5) * @chain_command.size
     @bitmap = Bitmap.new(width_max,@image.height * 2)
     @bitmap_cw = @image.width / 13
     @bitmap_ch = @image.height  
     index = 0
     for i in @chain_command
         command_list_check(i) 
         bitmap_src_rect = Rect.new([url=home.php?mod=space&uid=10462]@Com[/url] * @bitmap_cw, 0, @bitmap_cw, @bitmap_ch)
         if index == 0
            @bitmap.blt(index * (@bitmap_cw + 5) , 0, @image, bitmap_src_rect)
         else
            @bitmap.blt(index * (@bitmap_cw + 5) , @bitmap_ch, @image, bitmap_src_rect)
         end
         index += 1
     end
     [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
     @sprite.bitmap = @bitmap
     if @chain_command.size <= 15
        @sprite.x = (544 / 2) - ((@bitmap_cw + 5) * @chain_command.size) / 2
        @new_x = 0
     else   
        @sprite.x = (544 / 2)
        @new_x = @sprite.x 
     end   
     @sprite.y = (416 / 2) + 30  - @bitmap_ch  - 15
     @sprite.z = 3 + CHAIN_HUD_Z
     @sprite.zoom_x = 1.5
     @sprite.zoom_y = 1.5
 end
 
 #--------------------------------------------------------------------------
 # * create_layout
 #--------------------------------------------------------------------------  
 def create_layout
     @back = Plane.new
     @back.bitmap = Cache.system("Chain_Layout")
     @back.z = 0
     @layout = Sprite.new
     @layout.bitmap = Cache.system("Chain_Timer_Layout")
     @layout.z = 1 + CHAIN_HUD_Z
     @layout.x = 160
     @layout.y = 150
  end
 #--------------------------------------------------------------------------
 # * create_meter
 #--------------------------------------------------------------------------  
 def create_meter
     @meter_flow = 0
     @meter_image = Cache.system("Chain_Timer_Meter")
     @meter_bitmap = Bitmap.new(@meter_image.width,@meter_image.height)
     @meter_range = @meter_image.width / 3
     @meter_width = @meter_range * @timer / @timer_max
     @meter_height = @meter_image.height
     @meter_src_rect = Rect.new(@meter_range, 0, @meter_width, @meter_height)
     @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect) 
     @meter_sprite = Sprite.new
     @meter_sprite.bitmap = @meter_bitmap
     @meter_sprite.z = 2 + CHAIN_HUD_Z
     @meter_sprite.x = 220
     @meter_sprite.y = 159
     update_flow
 end  
 
 #--------------------------------------------------------------------------
 # ● Create Text
 #--------------------------------------------------------------------------        
 def create_text 
     @text = Sprite.new
     @text.bitmap = Bitmap.new(200,32)
     @text.z = 2 + CHAIN_HUD_Z
     @text.bitmap.font.name = "Georgia"
     @text.bitmap.font.size = 25
     @text.bitmap.font.bold = true
     @text.bitmap.font.italic = true
     @text.bitmap.font.color.set(255, 255, 255,220)
     @text.x = 230
     @text.y = 100
 end
 
 #--------------------------------------------------------------------------
 # ● Create Number
 #--------------------------------------------------------------------------        
 def create_number 
     @combo = 0
     [url=home.php?mod=space&uid=27178]@Number[/url] = Sprite.new
     @number.bitmap = Bitmap.new(200,64)
     @number.z = 2 + CHAIN_HUD_Z
     @number.bitmap.font.name = "Arial"
     @number.bitmap.font.size = 24
     @number.bitmap.font.bold = true
     @number.bitmap.font.color.set(0, 255, 255,200)
     @number.bitmap.draw_text(0, 0, 200, 32, "Ready",1)         
     @number.x = 30
     @number.y = 100
 end 
 
 #--------------------------------------------------------------------------
 # ● Pre Dispose
 #--------------------------------------------------------------------------       
 def exit
     loop do 
         Graphics.update
         @sprite.x += 5 
         @layout.x -= 5
         @meter_sprite.x -= 5
         @text.x -= 2
         @text.opacity -= 5
         @sprite.opacity -= 5
         @layout.opacity -= 5
         @meter_sprite.opacity -= 5 
         @number.opacity -= 5
         @back.opacity -= 5
         @cursor.visible = false    
         break if @sprite.opacity == 0
     end
     SceneManager.call(Scene_Map)
 end
   
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------      
 def dispose
     return if @layout == nil
     Graphics.freeze
     @background_sprite.bitmap.dispose
     @background_sprite.dispose
     @bitmap.dispose
     @sprite.bitmap.dispose
     @sprite.dispose
     @cursor.bitmap.dispose
     @cursor.dispose  
     @meter_image.dispose
     @meter_bitmap.dispose
     @meter_sprite.bitmap.dispose
     @meter_sprite.dispose
     @layout.bitmap.dispose  
     @layout.dispose
     @layout = nil
     @back.bitmap.dispose
     @back.dispose
     @text.bitmap.dispose
     @text.dispose
     @number.bitmap.dispose
     @number.dispose
     @image.dispose 
 end
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------      
 def update
     update_command
     update_cursor_slide
     update_flow
     update_change_time
 end
 
 #--------------------------------------------------------------------------
 # ● Change_Time
 #--------------------------------------------------------------------------        
 def update_change_time
     return unless @auto
     @change_time += 1
     check_command(-1) if @change_time >= CHAIN_INPUT_DURATION - 1
 end
 
 #--------------------------------------------------------------------------
 # ● Update Flow
 #--------------------------------------------------------------------------       
 def update_flow
     @timer -= 1
     @meter_sprite.bitmap.clear
     @meter_width = @meter_range * @timer / @timer_max
     @meter_src_rect = Rect.new(@meter_flow, 0, @meter_width, @meter_height)
     @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)  
     @meter_flow += 20 
     @meter_flow = 0 if @meter_flow >= @meter_image.width - @meter_range       
     wrong_command if @timer == 0 and @auto == false
  end  
   
 #--------------------------------------------------------------------------
 # ● Update Command
 #--------------------------------------------------------------------------       
 def update_command
     return if @auto
     if Input.trigger?(Input::X)
        check_command(0)
     elsif Input.trigger?(Input::Z)  
        check_command(1)
     elsif Input.trigger?(Input::Y)  
        check_command(2)
     elsif Input.trigger?(Input::A)    
        check_command(3)
     elsif Input.trigger?(Input::C)           
        check_command(4)
     elsif Input.trigger?(Input::B)        
        check_command(5)
     elsif Input.trigger?(Input::L)        
        check_command(6)
     elsif Input.trigger?(Input::R)        
        check_command(7)        
     elsif Input.trigger?(Input::RIGHT)      
        check_command(8)
     elsif Input.trigger?(Input::LEFT)
        check_command(9)
     elsif Input.trigger?(Input::DOWN)
        check_command(10)
     elsif Input.trigger?(Input::UP)  
        check_command(11)
     end   
 end  
   
 #--------------------------------------------------------------------------
 # ● command_list_check
 #--------------------------------------------------------------------------       
 def command_list_check(command) 
     case command
         when "A"
            @com = 0  
         when "D"
            @com = 1  
         when "S"
            @com = 2
         when "Shift"
            @com = 3
         when "Z" 
            @com = 4
         when "X"
            @com = 5
         when "Q"
            @com = 6
         when "W"
            @com = 7            
         when "Right"
            @com = 8
         when "Left"
            @com = 9
         when "Down"
            @com = 10
         when "Up"  
            @com = 11
         else   
            @com = 12           
     end 
 end   
 
 #--------------------------------------------------------------------------
 # ● check_command
 #--------------------------------------------------------------------------            
 def check_command(com)
     index = 0
     if com != -1
        right_input = false
        for i in @chain_command
           if index == @com_index
              command_list_check(i) 
              right_input = true if @com == com
           end  
          index += 1  
       end  
     else  
       command_list_check(@com_index)
       @change_time = 0
       right_input = true
     end  
     if right_input 
        refresh_number
        next_command
     else  
        wrong_command
     end  
 end  
   
 #--------------------------------------------------------------------------
 # ● Next Command
 #--------------------------------------------------------------------------            
 def next_command   
     @com_index += 1   
     Audio.se_play("Audio/SE/" + CHAIN_RIGHT_SE, 100, 100)
     if @com_index == @chain_command.size
        $game_switches[@action_id] = true
        exit
        $game_map.need_refresh = true
     end  
     refresh_command 
     refresh_text(0) 
 end     
 
 #--------------------------------------------------------------------------
 # ● wrong_command
 #--------------------------------------------------------------------------              
 def wrong_command
     Audio.se_play("Audio/SE/" + CHAIN_WRONG_SE, 100, 100)
     refresh_text(1)
     exit
     $game_player.jump(0,0)
 end
   
 #--------------------------------------------------------------------------
 # ● Refresh Command
 #--------------------------------------------------------------------------                
 def refresh_command
     @sprite.bitmap.clear
     index = 0
     for i in @chain_command
         command_list_check(i) 
         bitmap_src_rect = Rect.new(@com * @bitmap_cw, 0, @bitmap_cw, @bitmap_ch)
         if @com_index == index
            @bitmap.blt(index * (@bitmap_cw + 5) , 0, @image, bitmap_src_rect)
         else
            @bitmap.blt(index * (@bitmap_cw + 5) , @bitmap_ch, @image, bitmap_src_rect)
         end
         index += 1
       end
     if @chain_command.size > 15  
        @new_x = (544 / 2) - ((@bitmap_cw + 5) * @com_index)
     else   
        @cursor.x = (544 / 2) - @cursor_space + ((@bitmap_cw + 5) * @com_index)
     end
 end  
 
 #--------------------------------------------------------------------------
 # ● Refresh Text
 #--------------------------------------------------------------------------               
 def refresh_text(type)
     @text.bitmap.clear
     if type == 0
        if @com_index == @chain_command.size
           @text.bitmap.font.color.set(55, 255, 55,220)
           @text.bitmap.draw_text(0, 0, 200, 32, "Perfect!",1)              
        else  
           @text.bitmap.font.color.set(55, 155, 255,220)
           @text.bitmap.draw_text(0, 0, 200, 32, "Success!",1)              
        end
     else
        @text.bitmap.font.color.set(255, 155, 55,220)
        if @timer == 0
           @text.bitmap.draw_text(0, 0, 200, 32, "Time Limit!",1)  
        else  
           @text.bitmap.draw_text(0, 0, 200, 32, "Fail!",1)   
        end
     end  
     @text.x = 230   
     @text.opacity = 255 
 end
 
 #--------------------------------------------------------------------------
 # ● Refresh Number
 #--------------------------------------------------------------------------               
 def refresh_number
     @combo += 1
     @number.bitmap.clear
     @number.bitmap.font.size = 34
     @number.bitmap.draw_text(0, 0, 200, 32, @combo.to_s,1)          
     @number.opacity = 255 
     @number.zoom_x = 2
     @number.zoom_y = 2
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Cursor Slide
 #--------------------------------------------------------------------------           
 def update_cursor_slide    
     @sprite.zoom_x -= 0.1 if @sprite.zoom_x > 1
     @sprite.zoom_y -= 0.1 if @sprite.zoom_y > 1
     @text.x -= 2 if @text.x > 210 
     @text.opacity -= 5 if @text.opacity > 0
     @sprite.x -= @slide_time if @sprite.x > @new_x and @chain_command.size > 15
     if @number.zoom_x > 1
        @number.zoom_x -= 0.1
        @number.zoom_y -= 0.1
     end
     if @fy_time > 15
        @fy += 1
     elsif @fy_time > 0
        @fy -= 1
     else   
        @fy = 0
        @fy_time = 30
     end  
     @fy_time -= 1 
     @cursor.oy = @fy     
 end  
end
#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
 attr_accessor :chain_switch_id
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------         
  alias mog_chain_commands_initialize initialize
  def initialize
      @chain_switch_id = 0
      mog_chain_commands_initialize
  end  
    
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  
 #--------------------------------------------------------------------------
 # ● Chain Commands
 #--------------------------------------------------------------------------           
  def chain_commands(switch_id = 0)
      return if switch_id <= 0
      $game_temp.chain_switch_id = switch_id
      SceneManager.call(Chain_Commands)
      wait(1)
  end
  
end
#===============================================================================
# ■ SceneManager
#===============================================================================
class << SceneManager
  @background_bitmap2 = nil
  
  #--------------------------------------------------------------------------
  # ● Snapshot For Background2
  #--------------------------------------------------------------------------
  def snapshot_for_background2
      @background_bitmap2.dispose if @background_bitmap2
      @background_bitmap2 = Graphics.snap_to_bitmap
  end
  
  #--------------------------------------------------------------------------
  # ● Background Bitmap2
  #--------------------------------------------------------------------------
  def background_bitmap2
      @background_bitmap2
  end
  
end
#===============================================================================
# ■ Scene Map
#===============================================================================
class Scene_Map < Scene_Base
  
  #--------------------------------------------------------------------------
  # ● Terminate
  #--------------------------------------------------------------------------  
  alias mog_chain_commands_terminate terminate
  def terminate
      SceneManager.snapshot_for_background2
      mog_chain_commands_terminate      
  end
  
end  
$mog_rgss3_chain_commands = true
似乎要打开ID为 977 978 995的开关
 
 似乎打开时复活点才会生效
 
 
 另外现在特别讨厌伸手党
 | 
 评分
查看全部评分
 |