Connexion automatique

Pas encore membre ? Inscrivez-vous ici !
Vous avez oublié votre mot de passe ? On vous aide ici

AccueilPage d'accueilFAQRechercherS'enregistrerConnexion

Sélecteur de thème :


Partagez | .
[Résolu]Script chain commands pour RGSS3

Lunri
Marin

Marin
avatar

Nombre de messages : 664
Age : 27
Capacités : débutant
Distinction : aucune
Date d'inscription : 31/07/2011

MessageSujet: [Résolu]Script chain commands pour RGSS3   Mer 28 Déc 2011 - 4:35

Bonjour j'aurais une assez grosse demande Embarassed
Convertir ce script de moghunter pour ace:

Code:
#===============================================================================
# +++ MOG VX - Chain Commands v1.0 +++ (2011/03/10)
#===============================================================================
# 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)
#
# 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)
#
# $scene = Chain_Commands.new(ID)
#
# ID - Id da switch.
#
#===============================================================================
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"
 #
 # Exenplo 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 = {
 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"]
 }
 #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
end

#===============================================================================
# ■ Chain Commands
#===============================================================================
class Chain_Commands
  include MOG_CHAIN_COMMANDS
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------     
  def initialize(action_id)
      @action_id = action_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
      @com = 0 
  end   
 
 #--------------------------------------------------------------------------
 # ● Main
 #--------------------------------------------------------------------------   
 def main
    @spriteset = Spriteset_Map.new
    create_chain_command
    create_cusrsor
    create_layout
    create_meter
    create_text
    create_number
    Graphics.transition
    loop do
          Graphics.update
          Input.update
          update
          break if $scene != self
    end
    pre_dispose
    Graphics.freeze
    dispose
 end 
     
 #--------------------------------------------------------------------------
 # ● Create Cursor
 #--------------------------------------------------------------------------           
 def create_cusrsor
    @fy_time = 0
    @fy = 0
    @com_index = 0
    @cursor = Sprite.new
    @cursor.bitmap = Cache.system("Cursor")
    @cursor.z = 4
    @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(@com * @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
    @sprite = 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
    @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
    @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
    @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
    @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
    @number = Sprite.new
    @number.bitmap = Bitmap.new(200,64)
    @number.z = 2
    @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 pre_dispose
    for i in 0..35
      @sprite.x += 5
      @sprite.opacity -= 25
      @layout.x -= 5
      @meter_sprite.x -= 5
      @layout.opacity -= 25
      @meter_sprite.opacity -= 25 
      @text.x -= 2
      if i < 15 and @text.zoom_x < 1.5
          @text.zoom_x += 0.1
          @text.zoom_y += 0.1
      end 
      @cursor.visible = false
      if @number.zoom_x > 1
          @number.zoom_x -= 0.1
          @number.zoom_y -= 0.1
      end     
      Graphics.update     
    end 
 end
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------     
 def dispose
    @spriteset.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   
    @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
        $scene = Scene_Map.new
        $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)
    $scene = Scene_Map.new
    $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

$mog_rgssvx_chain_commands = true


Je sais que ca prend énormément de temps et je remercie grandement la personne qui voudra bien s'y pencher dessus ^^


Dernière édition par Lunri le Ven 30 Déc 2011 - 3:27, édité 1 fois
 
Skillo
Staffieux retraité

Staffieux retraité
avatar

Nombre de messages : 526
Age : 28
Localisation : Rennes
Capacités : très bon
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 18/01/2008

MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   Mer 28 Déc 2011 - 5:16

Déja si tu pouvait expliquer ce que fait ton script ça nous ferait gagner du temps.
 
Lunri
Marin

Marin
avatar

Nombre de messages : 664
Age : 27
Capacités : débutant
Distinction : aucune
Date d'inscription : 31/07/2011

MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   Mer 28 Déc 2011 - 5:25

En gros une séquence de bouton (touches fléchés, A, Z , S , D ) s’affiche à l’écran avec une barre de temps. Le joueur doit donc appuyer sur les différentes touches dans l’ordre dans le temps imparti. S’il réussi un interrupteur est activé.

 
Yasan
Fantassin

Fantassin
avatar

Nombre de messages : 149
Age : 32
Capacités : moyen
Distinction : aucune
Date d'inscription : 18/01/2011

MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   Mer 28 Déc 2011 - 6:19

Juste pour dire que Moghunter lancé son premier script Ace ! Il faut espérer qu'il convertira ses anciens !
 
Yasan
Fantassin

Fantassin
avatar

Nombre de messages : 149
Age : 32
Capacités : moyen
Distinction : aucune
Date d'inscription : 18/01/2011

MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   Jeu 29 Déc 2011 - 22:42

http://www.atelier-rgss.com/RGSS/System/ACE_SYS02.html

Ca y est ! Moghunter a converti son script ! Tu as de la chance Wink
 
Lunri
Marin

Marin
avatar

Nombre de messages : 664
Age : 27
Capacités : débutant
Distinction : aucune
Date d'inscription : 31/07/2011

MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   Ven 30 Déc 2011 - 3:26

Merci ^^
 
Contenu sponsorisé




MessageSujet: Re: [Résolu]Script chain commands pour RGSS3   

 

   Page 1 sur 1

 Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum