Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Un menu rotatif (tournant)

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

1RPG Maker XP Un menu rotatif (tournant) le Lun 25 Avr - 21:42

Zerow117


Membre
Membre
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:
# -- 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

EDT DE ZARBI : Idem pour cette fois, en-code tes scripts.

Voir le profil de l'utilisateur

2RPG Maker XP Re: Un menu rotatif (tournant) le Ven 29 Avr - 18:11

Venox


Fondateur
Fondateur
Encore une fois merci du partage !
Il faudrait que tu rajoute un screen aussi s'il te plaît.

Voir le profil de l'utilisateur

3RPG Maker XP Re: Un menu rotatif (tournant) le Mar 6 Sep - 22:27

pascbouc


Membre
Membre
C'est un très bon scripts, je l'utilise pour mon projet et il marche a merveille. Bravo a celui qui la créer!

Voir le profil de l'utilisateur

4RPG Maker XP Re: Un menu rotatif (tournant) Aujourd'hui à 13:29

Contenu sponsorisé


Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

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