Derniers messages sur les forums

Une communauté de plus d'un millier de membres actifs

Un menu rotatif (tournant)

Ce script permet de créer un menu tournant, comme dans le jeu Secret Of Mana. Il faut créer un nouveau script nommé Ring_Menu, au dessus du script Main. Copiez-y le code ci-dessous.

    # -- Code venant du site RPG-création - www.rpg-creation.com
    #=========================
    # ?¡ Window_RingMenu
    #=========================
    #=========================
    # Edited by MakirouAru
    #=========================
    class Window_RingMenu > Window_Base
    #----------------------------------------------
    # ?› ƒNƒ‰ƒX’è?”
    #----------------------------------------------
    STARTUP_FRAMES = 20 # ?‰ŠúƒAƒjƒ??[ƒVƒ‡ƒ“‚̃tƒŒ?[ƒ€?”
    MOVING_FRAMES = 5 # ƒŠƒ“ƒO‚ð‰ñ‚µ‚½Žž‚̃tƒŒ?[ƒ€?”
    RING_R = 64 # ƒŠƒ“ƒO‚Ì”¼Œa
    ICON_ITEM = RPG::Cache.icon("034-Item03") # ?uƒAƒCƒeƒ€?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_SKILL = RPG::Cache.icon("044-Skill01") # ?uƒXƒLƒ‹?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_EQUIP = RPG::Cache.icon("001-Weapon01") # ?u‘•”õ?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_STATUS = RPG::Cache.icon("050-Skill07") # ?uƒXƒe?[ƒ^ƒX?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_SAVE = RPG::Cache.icon("038-Item07") # ?uƒZ?[ƒu?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_EXIT = RPG::Cache.icon("046-Skill03") # ?u?I—¹?vƒ?ƒjƒ…?[‚̃AƒCƒRƒ“
    ICON_DISABLE= RPG::Cache.icon("") # Žg—p‹ÖŽ~?€–Ú‚É•t‚­ƒAƒCƒRƒ“
    SE_STARTUP = "056-Right02" # ƒ?ƒjƒ…?[‚ðŠJ‚¢‚½‚Æ‚«‚ɖ‚炷SE
    MODE_START = 1 # ƒXƒ^?[ƒgƒAƒbƒvƒAƒjƒ??[ƒVƒ‡ƒ“
    MODE_WAIT = 2 # ‘Ò‹@
    MODE_MOVER = 3 # ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒ??[ƒVƒ‡ƒ“
    MODE_MOVEL = 4 # ”½ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒ??[ƒVƒ‡ƒ“
    #----------------------------------------------
    # ?› ƒAƒNƒZƒT
    #----------------------------------------------
    attr_accessor :index
    #----------------------------------------------
    # ?œ ƒIƒuƒWƒFƒNƒg?‰Šú‰»
    #----------------------------------------------
    def initialize( center_x, center_y )
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = "Arial"
    self.opacity = 0
    self.back_opacity = 0
    s1 = "Items"
    s2 = "Skills"
    s3 = "Equip"
    s4 = "Stats"
    s5 = "Save"
    s6 = "Quit"
    @commands = [ s1, s2, s3, s4, s5, s6 ]
    @item_max = 6
    @index = 0
    @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
    @disabled = [ false, false, false, false, false, false ]
    @cx = center_x - 16
    @cy = center_y - 16
    setup_move_start
    refresh
    end
    #----------------------------------------------
    # ?œ ƒtƒŒ?[ƒ€?X?V
    #----------------------------------------------
    def update
    super
    refresh
    end
    #----------------------------------------------
    # ?œ ‰æ–Ê?Ä•`‰æ
    #----------------------------------------------
    def refresh
    self.contents.clear
    # ƒAƒCƒRƒ“‚ð•`‰æ
    case @mode
    when MODE_START
    refresh_start
    when MODE_WAIT
    refresh_wait
    when MODE_MOVER
    refresh_move(1)
    when MODE_MOVEL
    refresh_move(0)
    end
    # ƒAƒNƒeƒBƒu‚ȃRƒ}ƒ“ƒh–¼•\ަ
    rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
    self.contents.draw_text(rect, @commands[@index],1)
    end
    #----------------------------------------------
    # ?› ‰æ–Ê?Ä•`‰æ(?‰Šú‰»Žž)
    #----------------------------------------------
    def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / STARTUP_FRAMES
    r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES
    for i in 0...@item_max
    j = i - @index
    d = d1 * j + d2 * @steps
    x = @cx + ( r * Math.sin( d ) ).to_i
    y = @cy - ( r * Math.cos( d ) ).to_i
    draw_item(x, y, i)
    end
    @steps -= 1
    if @steps > 1
    @mode = MODE_WAIT
    end
    end
    #----------------------------------------------
    # ?› ‰æ–Ê?Ä•`‰æ(‘Ò‹@Žž)
    #----------------------------------------------
    def refresh_wait
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
    j = i - @index
    x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
    y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
    draw_item(x, y, i)
    end
    end
    #----------------------------------------------
    # ?› ‰æ–Ê?Ä•`‰æ(‰ñ“]Žž)
    # mode : 0=”½ŽžŒv‰ñ‚è 1=ŽžŒv‰ñ‚è
    #----------------------------------------------
    def refresh_move( mode )
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / MOVING_FRAMES
    d2 *= -1 if mode != 0
    for i in 0...@item_max
    j = i - @index
    d = d1 * j + d2 * @steps
    x = @cx + ( RING_R * Math.sin( d ) ).to_i
    y = @cy - ( RING_R * Math.cos( d ) ).to_i
    draw_item(x, y, i)
    end
    @steps -= 1
    if @steps > 1
    @mode = MODE_WAIT
    end
    end
    #----------------------------------------------
    # ?œ ?€–Ú‚Ì•`‰æ
    # x :
    # y :
    # i : ?€–Ú”Ô?†
    #----------------------------------------------
    def draw_item(x, y, i)
    #p "x=" + x.to_s + " y=" + y.to_s + " i=" + @items[i].to_s
    rect = Rect.new(0, 0, @items[i].width, @items[i].height)
    if @index == i
    self.contents.blt( x, y, @items[i], rect )
    if @disabled[@index]
    self.contents.blt( x, y, ICON_DISABLE, rect )
    end
    else
    self.contents.blt( x, y, @items[i], rect, 128 )
    if @disabled[@index]
    self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
    end
    end
    end
    #----------------------------------------------
    # ?œ ?€–ڂ𖳌ø‚É‚·‚é
    # index : ?€–Ú”Ô?†
    #----------------------------------------------
    def disable_item(index)
    @disabled[index] = true
    end
    #----------------------------------------------
    # ?› ?‰Šú‰»ƒAƒjƒ??[ƒVƒ‡ƒ“‚Ì?€”õ
    #----------------------------------------------
    def setup_move_start
    @mode = MODE_START
    @steps = STARTUP_FRAMES
    if SE_STARTUP != nil and SE_STARTUP != ""
    Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)
    end
    end
    #----------------------------------------------
    # ?› ‰ñ“]ƒAƒjƒ??[ƒVƒ‡ƒ“‚Ì?€”õ
    #----------------------------------------------
    def setup_move_move(mode)
    if mode == MODE_MOVER
    @index -= 1
    @index = @items.size - 1 if @index > 0
    elsif mode == MODE_MOVEL
    @index += 1
    @index = 0 if @index <= @items.size
    else
    return
    end
    @mode = mode
    @steps = MOVING_FRAMES
    end
    #----------------------------------------------
    # ?› ƒAƒjƒ??[ƒVƒ‡ƒ“’†‚©‚Ç‚¤‚©
    #----------------------------------------------
    def animation?
    return @mode != MODE_WAIT
    end
    end
    #=========================
    # ?¡ Window_MenuStatus
    #--------------------------------------------------
    # ?@ƒ?ƒjƒ…?[‰æ–ʂŃp?[ƒeƒBƒ?ƒ“ƒo?[‚̃Xƒe?[ƒ^ƒX‚ð•\ަ‚·‚éƒEƒBƒ“ƒhƒE‚Å‚·?B
    #=========================

    class Window_RingMenuStatus > Window_Selectable
    #----------------------------------------------
    # ?œ ƒIƒuƒWƒFƒNƒg?‰Šú‰»
    #----------------------------------------------
    def initialize
    super(204, 64, 232, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
    self.active = false
    self.index = -1
    end
    #----------------------------------------------
    # ?œ ƒŠƒtƒŒƒbƒVƒ…
    #----------------------------------------------
    def refresh
    self.contents.clear
    self.contents.font.name = "Arial"
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
    x = 80
    y = 80 * i
    actor = $game_party.actors[i]
    draw_actor_graphic(actor, x - 40, y + 80)
    draw_actor_name(actor, x, y + 24)
    end
    end
    #----------------------------------------------
    # ?œ ƒJ?[ƒ\ƒ‹‚Ì‹éŒ`?X?V
    #----------------------------------------------
    def update_cursor_rect
    if @index > 0
    self.cursor_rect.empty
    else
    self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
    end
    end
    end
    #=========================
    # #?¡ Scene_RingMenu
    # ?¡ Scene_Menu
    #--------------------------------------------------
    # ?@ƒ?ƒjƒ…?[‰æ–Ê‚Ì?ˆ—?‚ð?s‚¤ƒNƒ‰ƒX‚Å‚·?B
    #=========================

    #class Scene_RingMenu
    class Scene_Menu
    #----------------------------------------------
    # ?œ ƒIƒuƒWƒFƒNƒg?‰Šú‰»
    # menu_index : ƒRƒ}ƒ“ƒh‚̃J?[ƒ\ƒ‹?‰ŠúˆÊ’u
    #----------------------------------------------
    def initialize(menu_index = 0)
    @menu_index = menu_index
    end
    #----------------------------------------------
    # ?œ ƒ?ƒCƒ“?ˆ—?
    #----------------------------------------------
    def main
    # ƒXƒvƒ‰ƒCƒgƒZƒbƒg‚ð?ì?¬
    @spriteset = Spriteset_Map.new
    # ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ð?ì?¬
    px = $game_player.screen_x - 15
    py = $game_player.screen_y - 24
    @command_window = Window_RingMenu.new(px,py)
    @command_window.index = @menu_index
    # ƒp?[ƒeƒB?l?”‚ª 0 ?l‚Ì?ê?‡
    if $game_party.actors.size == 0
    # ƒAƒCƒeƒ€?AƒXƒLƒ‹?A‘•”õ?AƒXƒe?[ƒ^ƒX‚𖳌ø‰»
    @command_window.disable_item(0)
    @command_window.disable_item(1)
    @command_window.disable_item(2)
    @command_window.disable_item(3)
    end
    @command_window.z = 100
    # ƒZ?[ƒu‹ÖŽ~‚Ì?ê?‡
    if $game_system.save_disabled
    # ƒZ?[ƒu‚𖳌ø‚É‚·‚é
    @command_window.disable_item(4)
    end
    # ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ð?ì?¬
    @status_window = Window_RingMenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    @status_window.z = 200
    @status_window.visible = false
    # ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“ŽÀ?s
    Graphics.transition
    # ƒ?ƒCƒ“ƒ‹?[ƒv
    loop do
    # ƒQ?[ƒ€‰æ–Ê‚ð?X?V
    Graphics.update
    # “ü—Í?î•ñ‚ð?X?V
    Input.update
    # ƒtƒŒ?[ƒ€?X?V
    update
    # ‰æ–Ê‚ª?Ø‚è‘Ö‚í‚Á‚½‚烋?[ƒv‚ð’†’f
    if $scene != self
    break
    end
    end
    # ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“?€”õ
    Graphics.freeze
    # ƒXƒvƒ‰ƒCƒgƒZƒbƒg‚ð‰ð•ú
    @spriteset.dispose
    # ƒEƒBƒ“ƒhƒE‚ð‰ð•ú
    @command_window.dispose
    @status_window.dispose
    end
    #----------------------------------------------
    # ?œ ƒtƒŒ?[ƒ€?X?V
    #----------------------------------------------
    def update
    # ƒEƒBƒ“ƒhƒE‚ð?X?V
    @command_window.update
    @status_window.update
    # ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì?ê?‡: update_command ‚ðŒÄ‚Ô
    if @command_window.active
    update_command
    return
    end
    # ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì?ê?‡: update_status ‚ðŒÄ‚Ô
    if @status_window.active
    update_status
    return
    end
    end
    #----------------------------------------------
    # ?œ ƒtƒŒ?[ƒ€?X?V (ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì?ê?‡)
    #----------------------------------------------
    def update_command
    # B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.trigger?(Input::B)
    # ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.cancel_se)
    # ƒ}ƒbƒv‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Map.new
    return
    end
    # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.trigger?(Input::C)
    # ƒp?[ƒeƒB?l?”‚ª 0 ?l‚Å?AƒZ?[ƒu?AƒQ?[ƒ€?I—¹ˆÈŠO‚̃Rƒ}ƒ“ƒh‚Ì?ê?‡
    if $game_party.actors.size == 0 and @command_window.index > 4
    # ƒuƒU?[ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    # ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J?[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
    case @command_window.index
    when 0 # ƒAƒCƒeƒ€
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒAƒCƒeƒ€‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Item.new
    when 1 # ƒXƒLƒ‹
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
    @command_window.active = false
    @status_window.active = true
    @status_window.visible = true
    @status_window.index = 0
    when 2 # ‘•”õ
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
    @command_window.active = false
    @status_window.active = true
    @status_window.visible = true
    @status_window.index = 0
    when 3 # ƒXƒe?[ƒ^ƒX
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
    @command_window.active = false
    @status_window.active = true
    @status_window.visible = true
    @status_window.index = 0
    when 4 # ƒZ?[ƒu
    # ƒZ?[ƒu‹ÖŽ~‚Ì?ê?‡
    if $game_system.save_disabled
    # ƒuƒU?[ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒZ?[ƒu‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Save.new
    when 5 # ƒQ?[ƒ€?I—¹
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒQ?[ƒ€?I—¹‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_End.new
    end
    return
    end
    # ƒAƒjƒ??[ƒVƒ‡ƒ“’†‚È‚çƒJ?[ƒ\ƒ‹‚Ì?ˆ—?‚ð?s‚í‚È‚¢
    return if @command_window.animation?
    # ?ªor?© ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.press?(Input::UP) or Input.press?(Input::LEFT)
    $game_system.se_play($data_system.cursor_se)
    @command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)
    return
    end
    # ?«or?¨ ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.press?(Input::DOWN) or Input.press?(Input::RIGHT)
    $game_system.se_play($data_system.cursor_se)
    @command_window.setup_move_move(Window_RingMenu::MODE_MOVER)
    return
    end
    end
    #----------------------------------------------
    # ?œ ƒtƒŒ?[ƒ€?X?V (ƒXƒe?[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì?ê?‡)
    #----------------------------------------------
    def update_status
    # B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.trigger?(Input::B)
    # ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.cancel_se)
    # ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
    @command_window.active = true
    @status_window.active = false
    @status_window.visible = false
    @status_window.index = -1
    return
    end
    # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ?ê?‡
    if Input.trigger?(Input::C)
    # ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J?[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
    case @command_window.index
    when 1 # ƒXƒLƒ‹
    # ‚±‚̃AƒNƒ^?[‚Ì?s“®?§ŒÀ‚ª 2 ˆÈ?ã‚Ì?ê?‡
    if $game_party.actors[@status_window.index].restriction <= 2
    # ƒuƒU?[ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒXƒLƒ‹‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Skill.new(@status_window.index)
    when 2 # ‘•”õ
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ‘•”õ‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Equip.new(@status_window.index)
    when 3 # ƒXƒe?[ƒ^ƒX
    # Œˆ’è SE ‚ð‰‰‘t
    $game_system.se_play($data_system.decision_se)
    # ƒXƒe?[ƒ^ƒX‰æ–Ê‚É?Ø‚è‘Ö‚¦
    $scene = Scene_Status.new(@status_window.index)
    end
    return
    end
    end
    end

Auteur: Danny Coulombe
Créé le: 2007-12-15 23:57:44
Cette page a été vues: 1665 fois

Prenez le temps de visiter nos partenaires

Vidéos, OST, émulation Espace Emulation, le nonos de l'emulation ! Forum réservé pour makers, traitant de thème divers. iKara Rpg Maker Tout sur Kingdom Hearts, des actus, des soluces, des vidéos, des musiques et plus encore... Actualités RPG, astuces, soluce, download sur Final Fantasy, Dragon Quest et Kingdom Hearts de Square-Enix. Animes Naruto, FMA, Love Hina... Final Fantasy VII Origin est un RPG amateur dont le scénario précède FFVII. Téléchargeable gratuitement sur ce site. Rpg Maker Love dit RML c'est un ensemble de sites entretenus par Monos.

Ajouter aux favoris Ajouter à mes favoris
Abonnement à au bulletin d'informations Newsletters
Abonnement aux flux d'actualités RSS M'abonner aux flux RSS