- ElscortoMembre
- Nombre de messages : 486
Age : 38
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008
Script menu,besoin d'aide [Résolu]
Ven 30 Jan 2009 - 19:17
Bonjour
Voilà, je m'essaye aux scripts, mon premier test est un menu, je vous montre ce que j'ai fait.
Le problème est qu'il n'est pas fonctionnel, je m'explique, je sèche complètement pour ce qui du déplacement du curseur pour la sélection de personnages, apparemment c'est dans le def_update_cursor de la classe Window_Selectable si j'ai bien compris, mais là je vais avoir besoin de l'aide de scripteurs, car le curseur se déplace mais revient aussitôt à sa position initiale.
Merci par avance
Voilà, je m'essaye aux scripts, mon premier test est un menu, je vous montre ce que j'ai fait.
- Spoiler:
Le problème est qu'il n'est pas fonctionnel, je m'explique, je sèche complètement pour ce qui du déplacement du curseur pour la sélection de personnages, apparemment c'est dans le def_update_cursor de la classe Window_Selectable si j'ai bien compris, mais là je vais avoir besoin de l'aide de scripteurs, car le curseur se déplace mais revient aussitôt à sa position initiale.
Merci par avance
- KsamaMembre
- Nombre de messages : 43
Distinction : aucune
Date d'inscription : 25/01/2009
Re: Script menu,besoin d'aide [Résolu]
Ven 30 Jan 2009 - 19:18
J'ai déjà vu se script sur un site anglais, il n'est pas de toi.
Berka: Oh on se calme, d'abord !
Ensuite, on écrit bien et on argumente...
Berka: Oh on se calme, d'abord !
Ensuite, on écrit bien et on argumente...
- ElscortoMembre
- Nombre de messages : 486
Age : 38
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008
Re: Script menu,besoin d'aide [Résolu]
Ven 30 Jan 2009 - 19:20
j'ai juste modifier le placement des données, sinon je me suis inspiré des différents scripts sur les menus
Re: Script menu,besoin d'aide [Résolu]
Ven 30 Jan 2009 - 19:37
si le curseur se déplace, c'est qu'il est amovible... c'est déjà ca !
mais s'il se remet au début, c'est qu'il y a un objet qui le replace...
si c'est de facon automatique, alors c'est que c'est un objet qui tourne tout le temps.
comme une scene s'articule autour d'une méthode de mise a jour (def update) appelée dans une boucle (loop do...end)... alors l'objet doit se trouver dans cette méthode.
autrement dit, il doit y avoir un :
mais s'il se remet au début, c'est qu'il y a un objet qui le replace...
si c'est de facon automatique, alors c'est que c'est un objet qui tourne tout le temps.
comme une scene s'articule autour d'une méthode de mise a jour (def update) appelée dans une boucle (loop do...end)... alors l'objet doit se trouver dans cette méthode.
autrement dit, il doit y avoir un :
- Code:
@fenetre_choix.index=0
- ElscortoMembre
- Nombre de messages : 486
Age : 38
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008
Re: Script menu,besoin d'aide [Résolu]
Dim 1 Fév 2009 - 13:35
Bon ASHKA m'a aidé pour le déplacement du curseur et ça fonctionne, merci à toi.
Maintenant je souhaiterai qu'il soit multi directionnel, c'est à dire que si le curseur est à 0(1er perso), et qu'on appuie sur droite, le curseur prend la position 1 et va sur le 2ème perso, et que si on appuie sur bas, toujours au au 1er perso, le curseur prend la position 2, et va sur le 3ème perso. Et ainsi de suite pour les autres.
Voici le script en question
Merci de votre aide.
J'aurais aussi une petite question subsidiaire, le curseur dans le Window_Status ressemble à un gros pavé de la couleur du WindowSkin, je voudrais savoir si c'est possible de remplacer ce gros pavé et faire en sorte que le curseur soit comme une main, plus petit et plus jolie.
J'ai vu que sur le menu Yui de Mog, il utilisait des images pour celà, donc j'aimerai savoir si c'est comme ça qu'il faut faire, où si il y a juste une manipulation à faire en script.
Voici le menu Yui
http://rpgmakervx.1fr1.net/menu-f36/le-mogmenu-yui-10-t178.htm
Merci encore
EDIT : 1ère question réglée, je travaille sur la 2ème question pour le moment. Merci ASHKA.
Maintenant je souhaiterai qu'il soit multi directionnel, c'est à dire que si le curseur est à 0(1er perso), et qu'on appuie sur droite, le curseur prend la position 1 et va sur le 2ème perso, et que si on appuie sur bas, toujours au au 1er perso, le curseur prend la position 2, et va sur le 3ème perso. Et ainsi de suite pour les autres.
Voici le script en question
- Spoiler:
- Code:
###################################
#Créer par Mog.
#modifier par emixam2 et TheLSSJ
##############
##################################
# Menu Test par Elscorto
##################################
################
# Game_Actor
################
class Game_Actor
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
###############
# Window_Base #
###############
class Window_Base < Window
def draw_item_icon(item, x, y)
if item != nil
draw_icon(item.icon_index, x, y)
end
end
def draw_actor_level_menu(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
self.contents.font.color = normal_color
self.contents.draw_text(x + 16, y, 24, WLH, actor.level, 2)
end
def draw_actor_class_menu(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 85, WLH, actor.class.name)
end
def exp_gauge_color1
return text_color(30)
end
def exp_gauge_color2
return text_color(31)
end
def draw_actor_exp_meter(actor, x, y, width = 100)
if actor.next_exp != 0
exp = actor.now_exp
else
exp = 1
end
gw = width * exp / [actor.next_exp, 1].max
gc1 = exp_gauge_color1
gc2 = exp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, "Exp")
self.contents.font.color = normal_color
xr = x + width
self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2)
end
end
###################
# Window_MenuStatus
###################
class Window_MenuStatus< Window_Selectable
def initialize(x,y)
super(x,y,544,275)
refresh
self.active = false
self.index = -1
end
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
# Pour le 1er personnage
if actor.index == 0
draw_actor_graphic(actor,200,60)
draw_actor_level_menu(actor, 80,0)
draw_actor_exp_meter(actor, 0 ,60)
draw_item_icon($data_weapons[actor.weapon_id], 160,60)
if actor.two_swords_style
draw_item_icon($data_weapons[actor.armor1_id], 220,60)
else
draw_item_icon($data_armors[actor.armor1_id],220,60)
end
draw_actor_name(actor, 0, 0)
draw_actor_state(actor, 160,0)
draw_actor_hp(actor, 0, 20)
draw_actor_mp(actor, 0,40)
# Pour le 2ème personnage
elsif actor.index == 1
draw_actor_graphic(actor,472,60)
draw_actor_level_menu(actor, 352,0)
draw_actor_exp_meter(actor, 272 ,60)
draw_item_icon($data_weapons[actor.weapon_id], 432,60)
if actor.two_swords_style
draw_item_icon($data_weapons[actor.armor1_id], 492,60)
else
draw_item_icon($data_armors[actor.armor1_id],492,60)
end
draw_actor_name(actor, 272, 0)
draw_actor_state(actor,432 ,0)
draw_actor_hp(actor, 272, 20)
draw_actor_mp(actor, 272,40)
# Pour le 3ème personnage
elsif actor.index == 2
draw_actor_graphic(actor,200,197)
draw_actor_level_menu(actor, 80,140)
draw_actor_exp_meter(actor, 0 ,200)
draw_item_icon($data_weapons[actor.weapon_id], 160,200)
if actor.two_swords_style
draw_item_icon($data_weapons[actor.armor1_id], 220,200)
else
draw_item_icon($data_armors[actor.armor1_id],220,200)
end
draw_actor_name(actor, 0, 140)
draw_actor_state(actor, 160,140)
draw_actor_hp(actor, 0, 160)
draw_actor_mp(actor, 0,180)
# Pour le 4ème personnage
elsif actor.index == 3
draw_actor_graphic(actor,472,197)
draw_actor_level_menu(actor, 352,140)
draw_actor_exp_meter(actor, 272 ,200)
draw_item_icon($data_weapons[actor.weapon_id], 432,200)
if actor.two_swords_style
draw_item_icon($data_weapons[actor.armor1_id], 492,200)
else
draw_item_icon($data_armors[actor.armor1_id],492,200)
end
draw_actor_name(actor, 272, 140)
draw_actor_state(actor, 432,140)
draw_actor_hp(actor, 272, 160)
draw_actor_mp(actor, 272,180)
end
end
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # ??????
self.cursor_rect.empty
elsif @index < @item_max # ??
case @index
when 0
self.cursor_rect.set(0, 0, 272, 137)
when 1
self.cursor_rect.set(272, 0, 272, 137)
when 2
self.cursor_rect.set(0,137,272,137)
when 3
self.cursor_rect.set(272,137,272,137)
end
elsif @index >= 100 # ??
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # ??
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
end
############
# Game_Map #
############
class Game_Map
attr_reader :map_id
def mpname
$mpname = load_data("Data/MapInfos.rvdata")
$mpname[@map_id].name
end
end
###################
# Window_MapName
###################
class Window_MapName < Window_Base
def initialize(x, y)
super(x,y+32, 195, WLH + 50)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, -8, 120, 32, "Localisation")
self.contents.font.color = normal_color
self.contents.draw_text(4, 15, 120, 32, $game_map.mpname.to_s, 2)
end
end
###############
# Window_Time #
###############
class Window_Time < Window_Base
def initialize(x, y)
super(x, y+7, 190, WLH + 50)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, -8, 120, 32, "Temps de jeu")
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 15, 120, 32, text, 2)
end
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu
def main
start
perform_transition
Input.update
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.update
pre_terminate
Graphics.freeze
terminate
end
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = $game_temp.background_bitmap
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
def dispose_menu_background
@menuback_sprite.dispose
end
def update_menu_background
end
def perform_transition
Graphics.transition(10)
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 340)
@status_window = Window_MenuStatus.new(0, 75)
@temps = Window_Time.new(160,336)
@lieu = Window_MapName.new(350,311)
@status_window.openness = 0
@temps.openness = 0
@lieu.openness = 0
@gold_window.openness = 0
@status_window.open
@temps.open
@lieu.open
@gold_window.open
end
def pre_terminate
@status_window.close
@temps.close
@lieu.close
@gold_window.close
@command_window.close
begin
@status_window.update
@temps.update
@lieu.update
@gold_window.update
@command_window.update
Graphics.update
end until @status_window.openness == 0
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@lieu.dispose
@temps.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
@lieu.update
@temps.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6],4,2)
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# * End Actor Selection
#--------------------------------------------------------------------------
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # skill
$scene = Scene_Skill.new(@status_window.index)
when 2 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 3 # status
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
Merci de votre aide.
J'aurais aussi une petite question subsidiaire, le curseur dans le Window_Status ressemble à un gros pavé de la couleur du WindowSkin, je voudrais savoir si c'est possible de remplacer ce gros pavé et faire en sorte que le curseur soit comme une main, plus petit et plus jolie.
J'ai vu que sur le menu Yui de Mog, il utilisait des images pour celà, donc j'aimerai savoir si c'est comme ça qu'il faut faire, où si il y a juste une manipulation à faire en script.
Voici le menu Yui
http://rpgmakervx.1fr1.net/menu-f36/le-mogmenu-yui-10-t178.htm
Merci encore
EDIT : 1ère question réglée, je travaille sur la 2ème question pour le moment. Merci ASHKA.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|