Page 1 sur 2 • 1, 2
- BencocoMembre
- Nombre de messages : 31
Age : 34
Localisation : Alsace
Distinction : aucune
Date d'inscription : 04/03/2012
Ring Menu
Mar 13 Mar 2012 - 0:28
Bonjour, (bonsoir) à tous
En me promenant sur le forum je suis tombé sur un script de Ring menu mais pour RPG MAker Vx ...
Du coup je l'ai adapté pour Ace
Voilà ce que ça donne :
Auteur : DouglasMF
Adaptation : Bencoco
Le script simplement à coller sous Main :
J'espère que ça pourra servir
En me promenant sur le forum je suis tombé sur un script de Ring menu mais pour RPG MAker Vx ...
Du coup je l'ai adapté pour Ace
Voilà ce que ça donne :
Auteur : DouglasMF
Adaptation : Bencoco
Le script simplement à coller sous Main :
- Code:
=begin
Script Criado por DouglasMF das comunidades VilaMakers Online e RPG Maker Brasil
Com base no script Ring Menu feito por XRXS, Dubealex e Hypershadow180
--Inscruction--
Pour installer ce script, mettez le au dessus de Main
=end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe controla o conjunto de objetos que forma o RingMenu
#==============================================================================
#===============================================================
#
# www.rpgmakervx-fr.com
#
#===============================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# Initialisation
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# Initialise les objets du menu
#--------------------------------------------------------------------------
def start
super
@spriteset = Spriteset_Map.new
@gold_window = Window_Gold.new
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.opacity = 0
$local_show = true
@map_name_window = Window_MapName.new
@map_name_window.open
@status_window = Window_MenuStatus.new(160, 0)
px = $game_player.screen_x - 16
py = $game_player.screen_y - 28
@ring_menu = Window_RingMenu_Comando.new(px,py)
@status_window.z = @ring_menu.z + 20
@status_window.visible = false
end
#--------------------------------------------------------------------------
# Ferme les objets du menu
#--------------------------------------------------------------------------
def terminate
super
@spriteset.dispose
@ring_menu.dispose
@gold_window.dispose
@map_name_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# Actualise les objets du menu
#--------------------------------------------------------------------------
def update
super
@ring_menu.update
@gold_window.update
@map_name_window.update
@spriteset.update
@status_window.update
if @ring_menu.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
if @status_window.active
$shift = 1
else
$shift = 0
end
end
#--------------------------------------------------------------------------
# Actualisation des commandes et sélection menu
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$local_show = false
SceneManager.call(Scene_Map)
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @ring_menu.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @ring_menu.index == 4
Sound.play_buzzer
return
end
Sound.play_ok
case @ring_menu.indice
when 0
SceneManager.call(Scene_Item)
when 1,2,3
command_personal
when 4
SceneManager.call(Scene_Save)
when 5
SceneManager.call(Scene_End)
end
end
if Input.trigger?(Input::LEFT) or Input.trigger?(Input::UP)
Sound.play_cursor
@ring_menu.girar(3)
return
end
if Input.trigger?(Input::RIGHT) or Input.trigger?(Input::DOWN)
Sound.play_cursor
@ring_menu.girar(4)
return
end
end
#--------------------------------------------------------------------------
def command_personal
@ring_menu.active = false
@status_window.visible = true
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.unselect
@status_window.visible = false
@ring_menu.active = true
end
#--------------------------------------------------------------------------
# choix perso ok
#--------------------------------------------------------------------------
def on_personal_ok
case @ring_menu.indice
when 1
SceneManager.call(Scene_Skill)
when 2
SceneManager.call(Scene_Equip)
when 3
SceneManager.call(Scene_Status)
end
end
#--------------------------------------------------------------------------
# Termine la selection du chara
#--------------------------------------------------------------------------
def end_actor_selection
@ring_menu.active = true
@status_window.active = false
@status_window.visible = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# Actualisation sélection chara
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
Sound.play_ok
case @ring_menu.indice
when 1
SceneManager.call(Scene_Skill)
when 2
SceneManager.call(Scene_Equip)
when 3
SceneManager.call(Scene_Status)
end
end
end
end
#==============================================================================
# Window_RingMenu_Comando
#------------------------------------------------------------------------------
# Cette classe crée le RingMenu
#==============================================================================
class Window_RingMenu_Comando < Window_Base
DurIni = 30
DurMov = 15
RaioAnel = 64
ModoIni = 1
ModoEsp = 2
ModoMD = 3
ModoME = 4
SE_Inicio = ""
attr_accessor :indice
#--------------------------------------------------------------------------
# Initialisation objets
#--------------------------------------------------------------------------
def initialize(centro_x,centro_y)
super(0, 0, 544, 416)
self.opacity = 0
self.contents.font.size = 16
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]
@item_hab = [true,true,true,true,true,true]
@indice = 0
@cx = centro_x - 12
@cy = centro_y - 12
inicia_menu
refresh
end
#--------------------------------------------------------------------------
# Actualisation objets
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# Actualisation objets
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @modo
when ModoIni
refresh_inicio
when ModoEsp
refresh_espera
when ModoMD
refresh_mover(1)
when ModoME
refresh_mover(0)
end
sw = self.contents.width
rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
self.contents.draw_text(rect, @item_name[@indice],1)
end
#--------------------------------------------------------------------------
# Ouvre le menu
#--------------------------------------------------------------------------
def refresh_inicio
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / DurIni
r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Actualisation menu
#--------------------------------------------------------------------------
def refresh_espera
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @indice
x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
desenha_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# Mouvement du menu
#--------------------------------------------------------------------------
def refresh_mover(modo)
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / DurMov
d2 *= -1 if modo != 0
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Desenha o icone
#--------------------------------------------------------------------------
def desenha_item(x, y, i)
if @indice == i
self.cursor_rect.set(x-4, y-4, 32, 32)
draw_icon(@item_icon[i], x, y, @item_hab[i])
else
draw_icon(@item_icon[i], x, y, @item_hab[i])
end
end
#--------------------------------------------------------------------------
# initialise le menu
#--------------------------------------------------------------------------
def inicia_menu
@modo = ModoIni
@passos = DurIni
if SE_Inicio != nil and SE_Inicio != ""
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
end
end
#--------------------------------------------------------------------------
# fait tourner le menu
#--------------------------------------------------------------------------
def girar(modo)
if modo == ModoMD
@indice -= 1
@indice = @item_hab.size - 1 if @indice < 0
elsif modo == ModoME
@indice += 1
@indice = 0 if @indice >= @item_hab.size
else
return
end
@modo = modo
@passos = DurMov
end
end
#==============================================================================
# Window_Selectable
#------------------------------------------------------------------------------
# Corrige un bug au niveau du déplacement du curseur
# dans la fenêtre de selection de chara
#==============================================================================
class Window_Selectable < Window_Base
def process_cursor_move
return unless cursor_movable?
last_index = @index
if $shift == 1
cursor_down (Input.trigger?(:UP)) if Input.repeat?(:UP)
cursor_up (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
else
cursor_down (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP)
end
cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT)
cursor_pagedown if !handle?(:pagedown) && Input.trigger?(:R)
cursor_pageup if !handle?(:pageup) && Input.trigger?(:L)
Sound.play_cursor if @index != last_index
end
end
#==============================================================================
# Window_MapName
#------------------------------------------------------------------------------
# Affiche l'emplacement avec le même style que le jeu
#==============================================================================
class Window_MapName < Window_Base
$local_show = false
def update
super
if $local_show == false
if @show_count > 0 && $game_map.name_display
update_fadein
@show_count -= 1
else
update_fadeout
end
else
update_fadein
end
end
end
#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
# Permet d'afficher l'argent sur un fond similaire à celui de la map
#==============================================================================
class Window_Gold < Window_Base
def refresh
contents.clear
draw_background(contents.rect)
draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
end
def draw_background(rect)
temp_rect = rect.clone
temp_rect.width /= 2
contents.gradient_fill_rect(temp_rect, Color.new(0, 0, 0, 0),
Color.new(152, 99, 39, 192))
temp_rect.x = temp_rect.width
contents.gradient_fill_rect(temp_rect, Color.new(152, 99, 39, 192),
Color.new(0, 0, 0, 0))
end
end
J'espère que ça pourra servir
- NivvdiyMembre
- Nombre de messages : 162
Age : 33
Localisation : Dans un cryogenisateur jusqu'en l'an 2999, 11 mois et 31 jours!
Distinction : aucune
Date d'inscription : 29/02/2008
Re: Ring Menu
Mar 13 Mar 2012 - 9:57
Classe, bien joué. Je vais pouvaoir l'utiliser pour apprendre à faire des menus entirement personnalisé et aussi dans des projet Ace.
- 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: Ring Menu
Mar 13 Mar 2012 - 10:52
Merci pour l'adaptation, +3pts de participation
- LitykMembre
- Nombre de messages : 173
Age : 32
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011
Re: Ring Menu
Dim 18 Mar 2012 - 14:22
Pas mal !
Est-il possible de l'adapter avec ses propres images ?
Quels noms devront nous donner aux petites images dans le dossier du jeu ?
Est-il possible de l'adapter avec ses propres images ?
Quels noms devront nous donner aux petites images dans le dossier du jeu ?
- NozvezMembre
- Nombre de messages : 354
Distinction : aucune
Date d'inscription : 16/03/2012
Re: Ring Menu
Dim 18 Mar 2012 - 16:47
Les images utilisées sont celles des icônes (dans le dossier System du RTP). Dans le code elles sont là :
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]
Lignes 209 à 217.
Pour changer les images et mettre celles de d'autres icônes il te faut changer les numéros (le numéro 1 correspondant à la première image en haut à gauche de l'"IconeSet", et par première image, j'entends la VRAIE première image, pas le carré invisible au début), le numéro 112, lui, correspond à l'image utilisée pour l'onglet "skill" du menu, etc.
J'espère n'avoir pas été trop confuse.
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]
Lignes 209 à 217.
Pour changer les images et mettre celles de d'autres icônes il te faut changer les numéros (le numéro 1 correspondant à la première image en haut à gauche de l'"IconeSet", et par première image, j'entends la VRAIE première image, pas le carré invisible au début), le numéro 112, lui, correspond à l'image utilisée pour l'onglet "skill" du menu, etc.
J'espère n'avoir pas été trop confuse.
- LitykMembre
- Nombre de messages : 173
Age : 32
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011
Re: Ring Menu
Dim 18 Mar 2012 - 16:49
Non tu n'as pas été confuse, merci à toi, ce script me sera d'une grande aide !
- jasonvnmMembre
- Nombre de messages : 4
Distinction : aucune
Date d'inscription : 24/03/2012
Re: Ring Menu
Dim 25 Mar 2012 - 18:46
Salut, désolé du Nécropost mais comment ouvrir le menu ? :jmlacommu:
- ClashMembre
- Nombre de messages : 1023
Age : 28
Distinction : aucune
Date d'inscription : 12/10/2011
Re: Ring Menu
Dim 25 Mar 2012 - 18:55
Bah, tu appuies sur Echap ou sur X.
- jasonvnmMembre
- Nombre de messages : 4
Distinction : aucune
Date d'inscription : 24/03/2012
Re: Ring Menu
Dim 25 Mar 2012 - 22:11
Je l'avais placé en dessous :boulet:
Merci en tout cas pour ce script !
Merci en tout cas pour ce script !
- InvitéInvité
Re: Ring Menu
Ven 1 Juin 2012 - 20:41
J'utilise ce script depuis un moment pour mon projet, mais je viens de remarquer que le bug que tu a voulus corriger avec le curseur n'est pas complètement corrigé. Je m’explique:
-J'ai 5 personnages dans mon équipe, quand j'ouvre le menu et choisis genre statuts, la liste de mes héros apparaît, mais quand je descend le curseur il ne passe pas par tout les héros dans le bonne ordre (genre le curseur est sur Mon héro principale, je descend pour mon second héro, mais il va sur le 4ème).
-J'ai également remarquer qu'avec 3 héros, il ne va jamais sur le second et avec 6 il ne fait que le 1er, 3ème et 6ème ... J'aimerais une solution car je n'en trouve pas s\'il vous plaît ^^'
-J'ai 5 personnages dans mon équipe, quand j'ouvre le menu et choisis genre statuts, la liste de mes héros apparaît, mais quand je descend le curseur il ne passe pas par tout les héros dans le bonne ordre (genre le curseur est sur Mon héro principale, je descend pour mon second héro, mais il va sur le 4ème).
-J'ai également remarquer qu'avec 3 héros, il ne va jamais sur le second et avec 6 il ne fait que le 1er, 3ème et 6ème ... J'aimerais une solution car je n'en trouve pas s\'il vous plaît ^^'
- InvitéInvité
Re: Ring Menu
Mer 4 Juil 2012 - 16:48
Problème toujours pas résolus, j'aurais besoin d'aide ! ^^' Sinon je posterais plus tard dans les problèmes.
- chrismiMembre
- Nombre de messages : 9
Age : 28
Localisation : Bordeciel,Breezehome...non sérieusement Paris
Distinction : aucune
Date d'inscription : 23/08/2012
Re: Ring Menu
Jeu 23 Aoû 2012 - 18:12
Merci beaucoup pour ce script
- HareckMembre
- Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013
Re: Ring Menu
Mar 8 Oct 2013 - 18:30
NECROPOST DE L'INFINIE!!
Bon, j'ai légèrement modifié et adapté le script pour ce que je comptais en faire (en faite, j'ai juste retiré l'option de sauvegarde).
Mais j'ai un petit soucis du coup! Enfaite, quand je vais dans les objets, ça me fait deux fois le SE, et ça rentre affiche la scène de l'inventaire basique et ça rentre dans l'onglet objet... Je ne sais pas si vous avez bien compris... Au pire, testez le script par vous même, vous verrez tout de suite ce qui ne va pas. En tout cas, merci!
Bon, j'ai légèrement modifié et adapté le script pour ce que je comptais en faire (en faite, j'ai juste retiré l'option de sauvegarde).
- Code:
=begin
Script Criado por DouglasMF das comunidades VilaMakers Online e RPG Maker Brasil
Com base no script Ring Menu feito por XRXS, Dubealex e Hypershadow180
--Inscruction--
Pour installer ce script, mettez le au dessus de Main
=end
#==============================================================================
# Scene_Menu
#------------------------------------------------------------------------------
# Esta classe controla o conjunto de objetos que forma o RingMenu
#==============================================================================
#===============================================================
#
# www.rpgmakervx-fr.com
#
#===============================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# Initialisation
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# Initialise les objets du menu
#--------------------------------------------------------------------------
def start
super
@spriteset = Spriteset_Map.new
@gold_window = Window_Gold.new
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.opacity = 0
$local_show = true
@map_name_window = Window_MapName.new
@map_name_window.open
@status_window = Window_MenuStatus.new(160, 0)
px = $game_player.screen_x - 16
py = $game_player.screen_y - 28
@ring_menu = Window_RingMenu_Comando.new(px,py)
@status_window.z = @ring_menu.z + 20
@status_window.visible = false
end
#--------------------------------------------------------------------------
# Ferme les objets du menu
#--------------------------------------------------------------------------
def terminate
super
@spriteset.dispose
@ring_menu.dispose
@gold_window.dispose
@map_name_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# Actualise les objets du menu
#--------------------------------------------------------------------------
def update
super
@ring_menu.update
@gold_window.update
@map_name_window.update
@spriteset.update
@status_window.update
if @ring_menu.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
if @status_window.active
$shift = 1
else
$shift = 0
end
end
#--------------------------------------------------------------------------
# Actualisation des commandes et sélection menu
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$local_show = false
SceneManager.call(Scene_Map)
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @ring_menu.index < 4
Sound.play_buzzer
return
end
Sound.play_ok
case @ring_menu.indice
when 0
SceneManager.call(Scene_Item)
when 1,2,3
command_personal
when 4
SceneManager.call(Scene_End)
end
end
if Input.trigger?(Input::LEFT) or Input.trigger?(Input::UP)
Sound.play_cursor
@ring_menu.girar(3)
return
end
if Input.trigger?(Input::RIGHT) or Input.trigger?(Input::DOWN)
Sound.play_cursor
@ring_menu.girar(4)
return
end
end
#--------------------------------------------------------------------------
def command_personal
@ring_menu.active = false
@status_window.visible = true
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.unselect
@status_window.visible = false
@ring_menu.active = true
end
#--------------------------------------------------------------------------
# choix perso ok
#--------------------------------------------------------------------------
def on_personal_ok
case @ring_menu.indice
when 1
SceneManager.call(Scene_Skill)
when 2
SceneManager.call(Scene_Equip)
when 3
SceneManager.call(Scene_Status)
end
end
#--------------------------------------------------------------------------
# Termine la selection du chara
#--------------------------------------------------------------------------
def end_actor_selection
@ring_menu.active = true
@status_window.active = false
@status_window.visible = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# Actualisation sélection chara
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
Sound.play_ok
case @ring_menu.indice
when 1
SceneManager.call(Scene_Skill)
when 2
SceneManager.call(Scene_Equip)
when 3
SceneManager.call(Scene_Status)
end
end
end
end
#==============================================================================
# Window_RingMenu_Comando
#------------------------------------------------------------------------------
# Cette classe crée le RingMenu
#==============================================================================
class Window_RingMenu_Comando < Window_Base
DurIni = 30
DurMov = 15
RaioAnel = 64
ModoIni = 1
ModoEsp = 2
ModoMD = 3
ModoME = 4
SE_Inicio = ""
attr_accessor :indice
#--------------------------------------------------------------------------
# Initialisation objets
#--------------------------------------------------------------------------
def initialize(centro_x,centro_y)
super(0, 0, 544, 416)
self.opacity = 0
self.contents.font.size = 16
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5]
@item_max = 5
@item_icon = [260,112,170,121,1]
@item_hab = [true,true,true,true,true]
@indice = 0
@cx = centro_x - 12
@cy = centro_y - 12
inicia_menu
refresh
end
#--------------------------------------------------------------------------
# Actualisation objets
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# Actualisation objets
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @modo
when ModoIni
refresh_inicio
when ModoEsp
refresh_espera
when ModoMD
refresh_mover(1)
when ModoME
refresh_mover(0)
end
sw = self.contents.width
rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
self.contents.draw_text(rect, @item_name[@indice],1)
end
#--------------------------------------------------------------------------
# Ouvre le menu
#--------------------------------------------------------------------------
def refresh_inicio
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / DurIni
r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Actualisation menu
#--------------------------------------------------------------------------
def refresh_espera
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @indice
x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
desenha_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# Mouvement du menu
#--------------------------------------------------------------------------
def refresh_mover(modo)
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / DurMov
d2 *= -1 if modo != 0
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Desenha o icone
#--------------------------------------------------------------------------
def desenha_item(x, y, i)
if @indice == i
self.cursor_rect.set(x-4, y-4, 32, 32)
draw_icon(@item_icon[i], x, y, @item_hab[i])
else
draw_icon(@item_icon[i], x, y, @item_hab[i])
end
end
#--------------------------------------------------------------------------
# initialise le menu
#--------------------------------------------------------------------------
def inicia_menu
@modo = ModoIni
@passos = DurIni
if SE_Inicio != nil and SE_Inicio != ""
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
end
end
#--------------------------------------------------------------------------
# fait tourner le menu
#--------------------------------------------------------------------------
def girar(modo)
if modo == ModoMD
@indice -= 1
@indice = @item_hab.size - 1 if @indice < 0
elsif modo == ModoME
@indice += 1
@indice = 0 if @indice >= @item_hab.size
else
return
end
@modo = modo
@passos = DurMov
end
end
#==============================================================================
# Window_Selectable
#------------------------------------------------------------------------------
# Corrige un bug au niveau du déplacement du curseur
# dans la fenêtre de selection de chara
#==============================================================================
class Window_Selectable < Window_Base
def process_cursor_move
return unless cursor_movable?
last_index = @index
if $shift == 1
cursor_down (Input.trigger?(:UP)) if Input.repeat?(:UP)
cursor_up (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
else
cursor_down (Input.trigger?(:DOWN)) if Input.repeat?(:DOWN)
cursor_up (Input.trigger?(:UP)) if Input.repeat?(:UP)
end
cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
cursor_left (Input.trigger?(:LEFT)) if Input.repeat?(:LEFT)
cursor_pagedown if !handle?(:pagedown) && Input.trigger?(:R)
cursor_pageup if !handle?(:pageup) && Input.trigger?(:L)
Sound.play_cursor if @index != last_index
end
end
#==============================================================================
# Window_MapName
#------------------------------------------------------------------------------
# Affiche l'emplacement avec le même style que le jeu
#==============================================================================
class Window_MapName < Window_Base
$local_show = false
def update
super
if $local_show == false
if @show_count > 0 && $game_map.name_display
update_fadein
@show_count -= 1
else
update_fadeout
end
else
update_fadein
end
end
end
#==============================================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
# Permet d'afficher l'argent sur un fond similaire à celui de la map
#==============================================================================
class Window_Gold < Window_Base
def refresh
contents.clear
draw_background(contents.rect)
draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
end
def draw_background(rect)
temp_rect = rect.clone
temp_rect.width /= 2
contents.gradient_fill_rect(temp_rect, Color.new(0, 0, 0, 0),
Color.new(152, 99, 39, 192))
temp_rect.x = temp_rect.width
contents.gradient_fill_rect(temp_rect, Color.new(152, 99, 39, 192),
Color.new(0, 0, 0, 0))
end
end
Mais j'ai un petit soucis du coup! Enfaite, quand je vais dans les objets, ça me fait deux fois le SE, et ça rentre affiche la scène de l'inventaire basique et ça rentre dans l'onglet objet... Je ne sais pas si vous avez bien compris... Au pire, testez le script par vous même, vous verrez tout de suite ce qui ne va pas. En tout cas, merci!
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: Ring Menu
Mar 8 Oct 2013 - 19:01
SE ? C'est à dire ?
PS : J'ai testé, j'aime beaucoup ta version, elle marche à merveille, mais comme je ne sais pas ce
qu'est "SE", je peux pas trop te dire ce qui se répète :x
Heav'n
PS : J'ai testé, j'aime beaucoup ta version, elle marche à merveille, mais comme je ne sais pas ce
qu'est "SE", je peux pas trop te dire ce qui se répète :x
Heav'n
- HareckMembre
- Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013
Re: Ring Menu
Mar 8 Oct 2013 - 21:01
SE, ce sont les effets sonore (Sound Effect). En gros, c'est les coup d'épée, les boom, les flash, des boing... Des bruitages sonores court (pas plus de 5s) utilisé essentiellement pour les animations.
Un SE se joue quand tu te déplace dans le menu, quand tu ouvre un onglet du menu, etc...
Sinon, merci!
Un SE se joue quand tu te déplace dans le menu, quand tu ouvre un onglet du menu, etc...
Sinon, merci!
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: Ring Menu
Mer 9 Oct 2013 - 15:53
J'avais pas mis le son x)
Bon, je re-test et je te dis (:
Heav'n
Bon, je re-test et je te dis (:
Heav'n
- HareckMembre
- Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013
Re: Ring Menu
Jeu 10 Oct 2013 - 10:18
Du coup?
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: Ring Menu
Jeu 10 Oct 2013 - 17:19
Désolé, j'avais oublié de te répondre :/
Bah, même problème que toi, mais en visitant tout le script, ce serait pas à
cette ligne là qu'on peut modifier le SE qui se joue ?
Heav'n
Bah, même problème que toi, mais en visitant tout le script, ce serait pas à
cette ligne là qu'on peut modifier le SE qui se joue ?
- Code:
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
Heav'n
- HareckMembre
- Nombre de messages : 359
Age : 31
Distinction : aucune
Date d'inscription : 26/09/2013
Re: Ring Menu
Jeu 10 Oct 2013 - 17:31
Ca expliquerait pas pourquoi il se joue deux fois quand je veux ouvrir la fenêtre des objets...
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: Ring Menu
Jeu 10 Oct 2013 - 17:33
Au cas poste un sujet dans "Entraide", peut-être que plus de gens s'intéresseraient à ton problème (:
Heav'n
EDIT : Ok, laisse tomber :/
Heav'n
EDIT : Ok, laisse tomber :/
- LitykMembre
- Nombre de messages : 173
Age : 32
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011
Re: Ring Menu
Dim 24 Nov 2013 - 22:39
Je galère toujours avec ce script, j'essaie de l'associer avec le Journal de Quête [VXACE]
En fait le but serait d'avoir une icone journal de quête intégré dans le Ring menu, je prends donc la partie a modifier que Nozvez m'a donné :
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]
Je rajoute un s7 mais je ne sais quel nom lui donner pour qu'il amène au Journal.
s7 = Vocab::quest_journal (???)
En faisant ça je recoit une erreur de script
En fait le problème est dans le Vocab ou il faut mettre une autre commande
(def self.quest_journal; command(23); end # Quêtes ???,
Mais même en procédant ainsi ça ne fonctionne pas, j'obtient bien l'icone de l'image dans le menu, toutefois, son nom n'apparait pas et quand je valide, rien ne se passe.
En fait je ne sais comment la relier au Journal. Si quelqu'un à une idée... (Je peux transmettre le script de Journal de Quêtes s'il faut)
En fait le but serait d'avoir une icone journal de quête intégré dans le Ring menu, je prends donc la partie a modifier que Nozvez m'a donné :
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@item_name = [s1,s2,s3,s4,s5,s6]
@item_max = 6
@item_icon = [260,112,170,121,117,1]
Je rajoute un s7 mais je ne sais quel nom lui donner pour qu'il amène au Journal.
s7 = Vocab::quest_journal (???)
En faisant ça je recoit une erreur de script
En fait le problème est dans le Vocab ou il faut mettre une autre commande
(def self.quest_journal; command(23); end # Quêtes ???,
Mais même en procédant ainsi ça ne fonctionne pas, j'obtient bien l'icone de l'image dans le menu, toutefois, son nom n'apparait pas et quand je valide, rien ne se passe.
En fait je ne sais comment la relier au Journal. Si quelqu'un à une idée... (Je peux transmettre le script de Journal de Quêtes s'il faut)
- 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: Ring Menu
Dim 24 Nov 2013 - 23:03
Voici un script "ring-menu" que j'ai modifié et ajouté une entrée pour un script de quête, je suppose que le script de quête que utilises est celui de Modern-Algebra dans ce cas il fonctionnera directement, si ce n'est pas le cas merci de me donner le script que tu utilises pour tes quêtes.
- Code:
#====================================================================
#Script: Ring Menu [ACE]
#Criado por: Victor Gomez
#
#Modifié et traduit par Spywaretof
#Ajout d'une nouvelle entrée ppur le script de quête de Modern Algebra.
#Dernière modif : 24.11.2013
#====================================================================
module Configuration
#nome dos items, ["items","sair","equip" etc...]
Item_name = [
"Inventaire",
"Magie",
"Equipements",
"Statut",
"Quêtes",
"Formation",
"Sauvegarder",
"Quitter"
]
#Nombre d'options maximum
Item_max = 8
#icones utilisés = [144,128,40,40,137,149,112,1]
Item_icon = [144,128,40,41,137,149,112,1]
#Activé ? ["item","skill"...]
Item_hab = [true,true,true,true,true,true,true,true]
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# * Initialisation
#--------------------------------------------------------------------------
def start
super
@win_local = Window_Local.new(0,0)
px = $game_player.screen_x - 16
py = $game_player.screen_y - 28
@ring_menu = Window_RingMenu_Comando.new(px,py)
create_status_window
@status_window.visible = false
create_gold_window
end
def update
super
@ring_menu.update
@win_local.update
if Input.trigger?(Input::C)
case @ring_menu.indice
when 0
command_item
when 1,2,3,4
command_personal
when 5
command_formation
when 6
command_save
when 7
command_game_end
end
end
if Input.trigger?(:B)
return_scene
end
if Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT) and @ring_menu.lol != false
Sound.play_cursor
@ring_menu.girar(3)
return
end
if Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT) and @ring_menu.lol != false
Sound.play_cursor
@ring_menu.girar(4)
return
end
end
def terminate
super
@ring_menu.dispose
@win_local.dispose
end
#--------------------------------------------------------------------------
# * Cria��o da janela de comando
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Cria��o da janela de dinheiro
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.x = -20
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.opacity = 0
end
#--------------------------------------------------------------------------
# * Cria��o da janela de atributos
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# * Comando [Item]
#--------------------------------------------------------------------------
def command_item
SceneManager.call(Scene_Item)
end
#--------------------------------------------------------------------------
# * Comando [Habilidade] [Equipamentos] [Atributos]
#--------------------------------------------------------------------------
def command_personal
@status_window.select_last
@status_window.visible = true
@ring_menu.lol = false
@status_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
# * Comando [Forma��o]
#--------------------------------------------------------------------------
def command_formation
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_formation_ok))
@status_window.set_handler(:cancel, method(:on_formation_cancel))
end
#--------------------------------------------------------------------------
# * Comando [Salvar]
#--------------------------------------------------------------------------
def command_save
SceneManager.call(Scene_Save)
end
#--------------------------------------------------------------------------
# * Comando [Fim do Jogo]
#--------------------------------------------------------------------------
def command_game_end
SceneManager.call(Scene_End)
end
#--------------------------------------------------------------------------
# * Comandos individuais [Confirma��o]
#--------------------------------------------------------------------------
def on_personal_ok
case @ring_menu.indice
when 1
@status_window.visible = false
SceneManager.call(Scene_Skill)
when 2
@status_window.visible = false
SceneManager.call(Scene_Equip)
when 3
@status_window.visible = false
SceneManager.call(Scene_Status)
when 4
SceneManager.call(Scene_Quest)
end
end
#--------------------------------------------------------------------------
# * Comandos individuais [Cancelamento]
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.visible = false
@ring_menu.lol = true
@status_window.unselect
end
#--------------------------------------------------------------------------
# * Mudan�a de Ordem [Confirma��o]
#--------------------------------------------------------------------------
def on_formation_ok
@status_window.visible = true
if @status_window.pending_index >= 0
$game_party.swap_order(@status_window.index,
@status_window.pending_index)
@status_window.pending_index = -1
@status_window.redraw_item(@status_window.index)
else
@status_window.pending_index = @status_window.index
end
@status_window.activate
end
#--------------------------------------------------------------------------
# * Mudan�a de Ordem [Cancelamento]
#--------------------------------------------------------------------------
def on_formation_cancel
if @status_window.pending_index >= 0
@status_window.pending_index = -1
@status_window.activate
else
@status_window.unselect
@status_window.visible = false
end
end
end
class Window_RingMenu_Comando < Window_Base
DurIni = 30
DurMov = 15
RaioAnel = 64
ModoIni = 1
ModoEsp = 2
ModoMD = 3
ModoME = 4
SE_Inicio = ""
attr_accessor :lol
attr_accessor :indice
#--------------------------------------------------------------------------
# Inicia o objeto
#--------------------------------------------------------------------------
def initialize(centro_x,centro_y)
super(0, 0, 544, 416)
self.opacity = 0
self.contents.font.size = 16
@item_name = Configuration::Item_name
@item_max = Configuration::Item_max
@item_icon = Configuration::Item_icon
@item_hab = Configuration::Item_hab
@indice = 0
@cx = centro_x - 12
@cy = centro_y - 12
inicia_menu
refresh
@lol = true
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @modo
when ModoIni
refresh_inicio
when ModoEsp
refresh_espera
when ModoMD
refresh_mover(1)
when ModoME
refresh_mover(0)
end
sw = self.contents.width
rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
self.contents.draw_text(rect, @item_name[@indice],1)
end
#--------------------------------------------------------------------------
# Abre o menu
#--------------------------------------------------------------------------
def refresh_inicio
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / DurIni
r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Atualiza o menu
#--------------------------------------------------------------------------
def refresh_espera
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @indice
x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
desenha_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# Movimenta o menu
#--------------------------------------------------------------------------
def refresh_mover(modo)
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / DurMov
d2 *= -1 if modo != 0
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Desenha o icone
#--------------------------------------------------------------------------
def desenha_item(x, y, i)
if @indice == i
self.cursor_rect.set(x-4, y-4, 32, 32)
draw_icon(@item_icon[i], x, y, @item_hab[i])
else
draw_icon(@item_icon[i], x, y, @item_hab[i])
end
end
#--------------------------------------------------------------------------
# Inicia o menu
#--------------------------------------------------------------------------
def inicia_menu
@modo = ModoIni
@passos = DurIni
if SE_Inicio != nil and SE_Inicio != "" and @activate
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
end
end
#--------------------------------------------------------------------------
# Gira o menu
#--------------------------------------------------------------------------
def girar(modo)
if modo == ModoMD
@indice -= 1
@indice = @item_hab.size - 1 if @indice < 0
elsif modo == ModoME
@indice += 1 and @activate
@indice = 0 if @indice >= @item_hab.size
else
return
end
@modo = modo
@passos = DurMov
end
end
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Faz modifica��es nescessarias para a exibi��o do nome do mapa
#==============================================================================
module DataManager
def self.load_normal_database
$data_actors = load_data("Data/Actors.rvdata2")
$data_classes = load_data("Data/Classes.rvdata2")
$data_skills = load_data("Data/Skills.rvdata2")
$data_items = load_data("Data/Items.rvdata2")
$data_weapons = load_data("Data/Weapons.rvdata2")
$data_armors = load_data("Data/Armors.rvdata2")
$data_enemies = load_data("Data/Enemies.rvdata2")
$data_troops = load_data("Data/Troops.rvdata2")
$data_states = load_data("Data/States.rvdata2")
$data_animations = load_data("Data/Animations.rvdata2")
$data_tilesets = load_data("Data/Tilesets.rvdata2")
$data_common_events = load_data("Data/CommonEvents.rvdata2")
$data_system = load_data("Data/System.rvdata2")
$data_mapinfos = load_data("Data/MapInfos.rvdata2")
$data_mapinfo = load_data("Data/MapInfos.rvdata2")
end
end
#==============================================================================
# Window_Local
#------------------------------------------------------------------------------
# Cria a janela responsavel pela exibi��o do nome do mapa
#==============================================================================
class Window_Local < Window_Base
#--------------------------------------------------------------------------
# Inicia o objeto
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, 96)
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, "Local:")
self.contents.font.color = system_color
self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
end
end
_________________
- LitykMembre
- Nombre de messages : 173
Age : 32
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011
Re: Ring Menu
Lun 25 Nov 2013 - 0:05
Oui c'est bien Modern Algebra que j'utilise.
Toutefois quand je lance ton menu, une erreur apparait
La ligne en question :
@item_icon = Configuration::Item_icon
Apparemment il n'arrive pas a trouver les icones si je comprends bien ?
Toutefois quand je lance ton menu, une erreur apparait
La ligne en question :
@item_icon = Configuration::Item_icon
Apparemment il n'arrive pas a trouver les icones si je comprends bien ?
- 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: Ring Menu
Lun 25 Nov 2013 - 0:13
Corrigé excuse moi :
- Code:
#====================================================================
#Script: Ring Menu [ACE]
#Criado por: Victor Gomez
#
#Modifié et traduit par Spywaretof
#Ajout d'une nouvelle entrée ppur le script de quête de Modern Algebra.
#Dernière modif : 24.11.2013
#====================================================================
module Configuration
#nome dos items, ["items","sair","equip" etc...]
Item_name = [
"Inventaire",
"Magie",
"Equipements",
"Statut",
"Quêtes",
"Formation",
"Sauvegarder",
"Quitter"
]
#Nombre d'options maximum
Item_max = 8
#icones utilisés = [144,128,40,40,137,149,112,1]
Item_icon = [144,128,40,41,137,149,112,1]
#Activé ? ["item","skill"...]
Item_hab = [true,true,true,true,true,true,true,true]
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# * Initialisation
#--------------------------------------------------------------------------
def start
super
@win_local = Window_Local.new(0,0)
px = $game_player.screen_x - 16
py = $game_player.screen_y - 28
@ring_menu = Window_RingMenu_Comando.new(px,py)
create_status_window
@status_window.visible = false
create_gold_window
end
def update
super
@ring_menu.update
@win_local.update
if Input.trigger?(Input::C)
case @ring_menu.indice
when 0
command_item
when 1,2,3,4
command_personal
when 5
command_formation
when 6
command_save
when 7
command_game_end
end
end
if Input.trigger?(:B)
return_scene
end
if Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT) and @ring_menu.lol != false
Sound.play_cursor
@ring_menu.girar(3)
return
end
if Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT) and @ring_menu.lol != false
Sound.play_cursor
@ring_menu.girar(4)
return
end
end
def terminate
super
@ring_menu.dispose
@win_local.dispose
end
#--------------------------------------------------------------------------
# * Cria��o da janela de comando
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Cria��o da janela de dinheiro
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.x = -20
@gold_window.y = Graphics.height - @gold_window.height
@gold_window.opacity = 0
end
#--------------------------------------------------------------------------
# * Cria��o da janela de atributos
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(160, 0)
end
#--------------------------------------------------------------------------
# * Comando [Item]
#--------------------------------------------------------------------------
def command_item
SceneManager.call(Scene_Item)
end
#--------------------------------------------------------------------------
# * Comando [Habilidade] [Equipamentos] [Atributos]
#--------------------------------------------------------------------------
def command_personal
@status_window.select_last
@status_window.visible = true
@ring_menu.lol = false
@status_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
# * Comando [Forma��o]
#--------------------------------------------------------------------------
def command_formation
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_formation_ok))
@status_window.set_handler(:cancel, method(:on_formation_cancel))
end
#--------------------------------------------------------------------------
# * Comando [Salvar]
#--------------------------------------------------------------------------
def command_save
SceneManager.call(Scene_Save)
end
#--------------------------------------------------------------------------
# * Comando [Fim do Jogo]
#--------------------------------------------------------------------------
def command_game_end
SceneManager.call(Scene_End)
end
#--------------------------------------------------------------------------
# * Comandos individuais [Confirma��o]
#--------------------------------------------------------------------------
def on_personal_ok
case @ring_menu.indice
when 1
@status_window.visible = false
SceneManager.call(Scene_Skill)
when 2
@status_window.visible = false
SceneManager.call(Scene_Equip)
when 3
@status_window.visible = false
SceneManager.call(Scene_Status)
when 4
SceneManager.call(Scene_Quest)
end
end
#--------------------------------------------------------------------------
# * Comandos individuais [Cancelamento]
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.visible = false
@ring_menu.lol = true
@status_window.unselect
end
#--------------------------------------------------------------------------
# * Mudan�a de Ordem [Confirma��o]
#--------------------------------------------------------------------------
def on_formation_ok
@status_window.visible = true
if @status_window.pending_index >= 0
$game_party.swap_order(@status_window.index,
@status_window.pending_index)
@status_window.pending_index = -1
@status_window.redraw_item(@status_window.index)
else
@status_window.pending_index = @status_window.index
end
@status_window.activate
end
#--------------------------------------------------------------------------
# * Mudan�a de Ordem [Cancelamento]
#--------------------------------------------------------------------------
def on_formation_cancel
if @status_window.pending_index >= 0
@status_window.pending_index = -1
@status_window.activate
else
@status_window.unselect
@status_window.visible = false
end
end
end
class Window_RingMenu_Comando < Window_Base
DurIni = 30
DurMov = 15
RaioAnel = 64
ModoIni = 1
ModoEsp = 2
ModoMD = 3
ModoME = 4
SE_Inicio = ""
attr_accessor :lol
attr_accessor :indice
#--------------------------------------------------------------------------
# Inicia o objeto
#--------------------------------------------------------------------------
def initialize(centro_x,centro_y)
super(0, 0, 544, 416)
self.opacity = 0
self.contents.font.size = 16
@item_name = Configuration::Item_name
@item_max = Configuration::Item_max
@item_icon = Configuration::Item_icon
@item_hab = Configuration::Item_hab
@indice = 0
@cx = centro_x - 12
@cy = centro_y - 12
inicia_menu
refresh
@lol = true
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def refresh
self.contents.clear
case @modo
when ModoIni
refresh_inicio
when ModoEsp
refresh_espera
when ModoMD
refresh_mover(1)
when ModoME
refresh_mover(0)
end
sw = self.contents.width
rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
self.contents.draw_text(rect, @item_name[@indice],1)
end
#--------------------------------------------------------------------------
# Abre o menu
#--------------------------------------------------------------------------
def refresh_inicio
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / DurIni
r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Atualiza o menu
#--------------------------------------------------------------------------
def refresh_espera
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @indice
x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
desenha_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# Movimenta o menu
#--------------------------------------------------------------------------
def refresh_mover(modo)
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / DurMov
d2 *= -1 if modo != 0
for i in 0...@item_max
j = i - @indice
d = d1 * j + d2 * @passos
x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
desenha_item(x, y, i)
end
@passos -= 1
if @passos < 1
@modo = ModoEsp
end
end
#--------------------------------------------------------------------------
# Desenha o icone
#--------------------------------------------------------------------------
def desenha_item(x, y, i)
if @indice == i
self.cursor_rect.set(x-4, y-4, 32, 32)
draw_icon(@item_icon[i], x, y, @item_hab[i])
else
draw_icon(@item_icon[i], x, y, @item_hab[i])
end
end
#--------------------------------------------------------------------------
# Inicia o menu
#--------------------------------------------------------------------------
def inicia_menu
@modo = ModoIni
@passos = DurIni
if SE_Inicio != nil and SE_Inicio != "" and @activate
Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
end
end
#--------------------------------------------------------------------------
# Gira o menu
#--------------------------------------------------------------------------
def girar(modo)
if modo == ModoMD
@indice -= 1
@indice = @item_hab.size - 1 if @indice < 0
elsif modo == ModoME
@indice += 1 and @activate
@indice = 0 if @indice >= @item_hab.size
else
return
end
@modo = modo
@passos = DurMov
end
end
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Faz modifica��es nescessarias para a exibi��o do nome do mapa
#==============================================================================
module DataManager
def self.load_normal_database
$data_actors = load_data("Data/Actors.rvdata2")
$data_classes = load_data("Data/Classes.rvdata2")
$data_skills = load_data("Data/Skills.rvdata2")
$data_items = load_data("Data/Items.rvdata2")
$data_weapons = load_data("Data/Weapons.rvdata2")
$data_armors = load_data("Data/Armors.rvdata2")
$data_enemies = load_data("Data/Enemies.rvdata2")
$data_troops = load_data("Data/Troops.rvdata2")
$data_states = load_data("Data/States.rvdata2")
$data_animations = load_data("Data/Animations.rvdata2")
$data_tilesets = load_data("Data/Tilesets.rvdata2")
$data_common_events = load_data("Data/CommonEvents.rvdata2")
$data_system = load_data("Data/System.rvdata2")
$data_mapinfos = load_data("Data/MapInfos.rvdata2")
$data_mapinfo = load_data("Data/MapInfos.rvdata2")
end
end
#==============================================================================
# Window_Local
#------------------------------------------------------------------------------
# Cria a janela responsavel pela exibi��o do nome do mapa
#==============================================================================
class Window_Local < Window_Base
#--------------------------------------------------------------------------
# Inicia o objeto
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, 96)
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# Atualiza o objeto
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, "Local:")
self.contents.font.color = system_color
self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
end
end
_________________
- LitykMembre
- Nombre de messages : 173
Age : 32
Localisation : Metz
Distinction : aucune
Date d'inscription : 11/04/2011
Re: Ring Menu
Lun 25 Nov 2013 - 0:29
Ok, ça va déjà nettement mieux, toutefois, des bugs persistent.
Lorsque je choisis d'aller dans Quêtes, une erreur apparait
correspondante à la ligne :
command_quest
Lorsque je choisis d'aller dans Equipement, Magies, ou Statut, une autre erreur apparait
correspondante à la ligne :
if $game_system.maic_inserted_menu_commands.include?(@command_window.current_symbol)
Lorsque je choisis d'aller dans Quêtes, une erreur apparait
correspondante à la ligne :
command_quest
Lorsque je choisis d'aller dans Equipement, Magies, ou Statut, une autre erreur apparait
correspondante à la ligne :
if $game_system.maic_inserted_menu_commands.include?(@command_window.current_symbol)
Page 1 sur 2 • 1, 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|