- UltimaSasukeMembre
- Nombre de messages : 88
Age : 29
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011
MOG Chain Commands
Lun 2 Jan 2012 - 18:59
Bon, bah déjà je propose se script car il n'étais présent que dans les demandes de script, mais personne ne l'as mis ici.
Et ensuite étant portugais j'en ais profité pour le traduire en 1 minute ^^ (Plus facile que les scripts anglais je trouve =P)
Donc que fait se script, et bien il permet de faire une combinaison de touches (boutons) pour, si vous réussissez, d'activer un interrupteur. Toutes les instructions sont dans le script.
Voici le script seul pour ceux qui l'avait déjà utilisé avant (donc qui on les images) :
Et voici la démo de Moghunter avec les images, et le script traduit : Démo
Et si quelqu'un a les images mais en FR sa serais sympa de partager =)
Et ensuite étant portugais j'en ais profité pour le traduire en 1 minute ^^ (Plus facile que les scripts anglais je trouve =P)
Donc que fait se script, et bien il permet de faire une combinaison de touches (boutons) pour, si vous réussissez, d'activer un interrupteur. Toutes les instructions sont dans le script.
Voici le script seul pour ceux qui l'avait déjà utilisé avant (donc qui on les images) :
- Code:
#===============================================================================
# +++ MOG - Chain Commands (v1.0) +++
#===============================================================================
# Par Moghunter
# http://www.atelier-rgss.com
#===============================================================================
# Système de boutons pour activer des interrupteurs.
#
# Ce script utilise les images suivante : (Graphics/System)
#
# Cursor.png
# Chain_Command.png
# Chain_Layout.png
# Chain_Timer_Layout.png
# Chain_Timer_Meter.png
#
#===============================================================================
#
# Pour appeller le script, utilisez la commande suivant :
#
# chain_commands(ID)
#
# ID - ID de l'interrupteur.
#
#===============================================================================
module MOG_CHAIN_COMMANDS
#==============================================================================
# CHAIN_COMMAND = { INTERRUPTEUR_ID => [COMMANDE] }
#
# INTERRUPTEUR_ID = ID de l'Interrupteur
# COMMANDES = Définie ici la séquence de bontons.
# (Pour faire cette séquence utilise les commandes du dessous)
#
# "Down" ,"Up" ,"Left" ,"Right" ,"Shift" ,"D" ,"S" ,"A" ,"Z" ,"X" ,"Q" ,"W"
#
# Exemple d'utilisation :
#
# 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"]
}
#Durée pour faire la séquence. (La durée est multiplié par le nombres de
#commandes) *60 = 1 sec
CHAIN_INPUT_DURATION = 30
#Si la séquence est bien faite, utilise l'effet :
CHAIN_RIGHT_SE = "Chime1"
#Sinon, si elle est fause utilisé :
CHAIN_WRONG_SE = "Buzzer1"
#Interrupteur que le mode active automatiquement :
CHAIN_AUTOMATIC_MODE_SWITCH_ID = 20
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
@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 SceneManager.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
@spriteset.update
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
SceneManager.call(Scene_Map)
$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)
SceneManager.call(Scene_Map)
$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
$mog_rgss3_chain_commands = true
Et voici la démo de Moghunter avec les images, et le script traduit : Démo
Et si quelqu'un a les images mais en FR sa serais sympa de partager =)
- GummyStaffeux retraité
- Nombre de messages : 2666
Age : 33
Localisation : Belgique
Distinction : Modérateur imprévisible
Papy Lolo' [Nabots Nimousse]
Date d'inscription : 27/01/2008
Re: MOG Chain Commands
Lun 2 Jan 2012 - 19:01
Merci pour la trad, + 1 pt de participation
- XsoulMembre
- Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013
Re: MOG Chain Commands
Dim 18 Aoû 2013 - 14:16
Bonjour, j'ai un problème avec ce script et j'aurais beaucoup aimé un petit coup de pouce.
J'en aurai besoin pour mon projet.
Voici mon problème : quand le script se finit le coffre ne s'ouvre pas et il faut relancer l'event, j'ai mis une branche conditionnelle pour le cas où on réussit et le cas où on rate.
Si j'ai compris lorsque l'on gagne un switch ID s'active automatiquement, dans l'exemple ici c'est 20, j'ai changé pour mettre 183 et je vous link ma page d'event.
" />
Ma variable coffre correspond simplement à compter pour un événement commun qui informe le nombre de coffres découverts avec des textes en fonction. Les pictures sont simplement des PNG par dessus ma map en parallax.
Si quelqu'un peut me dire ce que je fais mal ça m'arrangerait beaucoup!
Merci d'avance
J'en aurai besoin pour mon projet.
Voici mon problème : quand le script se finit le coffre ne s'ouvre pas et il faut relancer l'event, j'ai mis une branche conditionnelle pour le cas où on réussit et le cas où on rate.
Si j'ai compris lorsque l'on gagne un switch ID s'active automatiquement, dans l'exemple ici c'est 20, j'ai changé pour mettre 183 et je vous link ma page d'event.
" />
Ma variable coffre correspond simplement à compter pour un événement commun qui informe le nombre de coffres découverts avec des textes en fonction. Les pictures sont simplement des PNG par dessus ma map en parallax.
Si quelqu'un peut me dire ce que je fais mal ça m'arrangerait beaucoup!
Merci d'avance
- SpytjeAdministrateur
- Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008
Re: MOG Chain Commands
Dim 18 Aoû 2013 - 14:34
Je pense que l'interrupteur dans ta condition est mauvais essaie avec l'id "5" qui correspond à chain_commands(5)
_________________
- XsoulMembre
- Nombre de messages : 237
Distinction : aucune
Date d'inscription : 05/03/2013
Re: MOG Chain Commands
Dim 18 Aoû 2013 - 15:00
omg ça marche xD
merci beaucoup (j'ai tant cherché et c'était pourtant si évident :o)
merci beaucoup (j'ai tant cherché et c'était pourtant si évident :o)
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum