- Jodge65Membre
- Nombre de messages : 189
Age : 28
Localisation : Dans le SûD!
Distinction : aucune
Date d'inscription : 25/03/2011
2 petites modification sur le script de menu [résolue]
Ven 5 Aoû 2011 - 11:18
Bonjours tout le monde!
Je fait appelle a vous (enfin, surtout les scripteur débutant ou pro )Car j'ai 2 problème avec mon menu:
Problème 1:
J'ai un script de menu basique avec en plus le temps, la localisation et plusieurs boutons.
Le problème c'est que j'ai trop de bouton et que c'est dernier passe dessous les module de temps et de localisation--"
J'ai vue qu'il était possible de faire des ascenseurs pour éviter ce genre de problème, mais je n'est pas réussi a localiser la portion de code permettant cela, sur d'autre script... Je vous demande donc si vous ne pouvez pas me rajouter ce système d'ascenseur...
Screen:
Problème 2:
Le même script a quelque doublon voir triplons, je vous demande si vous pouviez l'optimiser un peu en ajoutant l'ascenseur (je peux me débrouiller en beaucoup de temps)
Le script:
Je fait appelle a vous (enfin, surtout les scripteur débutant ou pro )Car j'ai 2 problème avec mon menu:
Problème 1:
J'ai un script de menu basique avec en plus le temps, la localisation et plusieurs boutons.
Le problème c'est que j'ai trop de bouton et que c'est dernier passe dessous les module de temps et de localisation--"
J'ai vue qu'il était possible de faire des ascenseurs pour éviter ce genre de problème, mais je n'est pas réussi a localiser la portion de code permettant cela, sur d'autre script... Je vous demande donc si vous ne pouvez pas me rajouter ce système d'ascenseur...
Screen:
- Spoiler:
- Spoiler:
Problème 2:
Le même script a quelque doublon voir triplons, je vous demande si vous pouviez l'optimiser un peu en ajoutant l'ascenseur (je peux me débrouiller en beaucoup de temps)
Le script:
- Code:
#==============================================================================
# Création de Jodge65 a partir de plusieur script
#==============================================================================
class Raizen_Reput2_Command < Window_Selectable
def initialize(width, commands, height, column_max = 1, row_max = 0, spacing = 32)
if row_max == 0
row_max = (commands.size + column_max - 1) / column_max
end
if (row_max*WLH + 32) >= height
super(0, 0, width, height, spacing)
else
super(0, 0, width, row_max * WLH + 32, spacing)
end
@commands = commands
@item_max = commands.size
@column_max = column_max
self.contents.dispose
self.contents = Bitmap.new(width - 32, @item_max * WLH)
refresh
self.index = 0
end
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
def draw_item(index, color)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = color
self.contents.draw_text(rect, @commands[index])
end
end
#==============================================================================
# Modification de Scene_File
#==============================================================================
class Scene_File < Scene_Base
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($reput_points, file)
end
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
@last_bgm = Marshal.load(file)
@last_bgs = Marshal.load(file)
$game_system = Marshal.load(file)
$game_message = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$reput_points = Marshal.load(file)
if $game_system.version_id != $data_system.version_id
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
end
end
#==============================================================================
# Modification de Scene_End
#==============================================================================
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
############################## Fin du script 1 #######################################
##################################################
# Mog Basic Menu Plus V 1.0 # (rajoute temps et position dans le menu)
##################################################
# Par Moghunter
# http://www.atelier-rgss.com
##################################################
# Game_Actor #
##############
class Game_Actor < Game_Battler
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_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, 384, 416)
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
draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
x = 104
y = actor.index * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_class_menu(actor, x + 120, y)
draw_actor_level_menu(actor, x + 200, y)
draw_actor_state(actor, x, y + WLH * 2)
draw_actor_hp(actor, x + 120, y + WLH * 1)
draw_actor_mp(actor, x + 120, y + WLH * 2)
draw_actor_exp_meter(actor, x , y + WLH * 1)
end
end
def update_cursor
if @index < 0
self.cursor_rect.empty
elsif @index < @item_max
self.cursor_rect.set(0, @index * 96, contents.width, 96)
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_Time #
###############
class Window_Mapname < Window_Base
def initialize(x, y)
super(x, y+46, 160, WLH + 45)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0-10, 120, 32, "Localisation")
self.contents.font.color = normal_color
self.contents.draw_text(4, 10, 120, 32, $game_map.mpname.to_s, 2)
end
end
###############
# Window_Time #
###############
class Window_Time < Window_Base
def initialize(x, y)
super(x, y+22, 160, WLH + 45)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0-10, 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, 10, 120, 32, text, 2)
end
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
##############
# Scene_Menu #
##############
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
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 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
def start
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
@playtime_window = Window_Time .new(0, 270)
@mapname_window = Window_Mapname.new(0, 178)
@status_window.openness = 0
@playtime_window.openness = 0
@mapname_window.openness = 0
@gold_window.openness = 0
@status_window.open
@playtime_window.open
@mapname_window.open
@gold_window.open
end
def pre_terminate
@status_window.close
@playtime_window.close
@mapname_window.close
@gold_window.close
@command_window.close
begin
@status_window.update
@playtime_window.update
@mapname_window.update
@gold_window.update
@command_window.update
Graphics.update
end until @status_window.openness == 0
end
def terminate
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@playtime_window.dispose
@mapname_window.dispose
end
def update
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
@mapname_window.update
@playtime_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
end
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(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
@command_window.openness = 0
@command_window.open
if $game_party.members.size == 0
@command_window.draw_item(0, false)
@command_window.draw_item(1, false)
@command_window.draw_item(2, false)
@command_window.draw_item(3, false)
end
if $game_system.save_disabled
@command_window.draw_item(4, false)
end
end
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
$scene = Scene_Item.new
when 1,2,3
start_actor_selection
when 4
$scene = Scene_File.new(true, false, false)
when 5
$scene = Scene_End.new
end
end
end
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
def end_actor_selection
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
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
$scene = Scene_Skill.new(@status_window.index)
when 2
$scene = Scene_Equip.new(@status_window.index)
when 3
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
$mogscript = {} if $mogscript == nil
$mogscript["basic_menu_plus"] = true
#==============================================================================
# Modification de Scene_Menu
#==============================================================================
class Scene_Menu < Scene_Base
def create_command_window
s1 = "Item"
s2 = "Aptitude"
s3 = "Equipement"
s4 = "Caractéristique"
s5 = Vocab::Config
s6 = "Bestiaire"
s7 = "Quête"
s8 = Vocab::save
s9 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9])
@command_window.index = @menu_index
if $game_party.members.size == 0
@command_window.draw_item(0, false)
@command_window.draw_item(1, false)
@command_window.draw_item(2, false)
@command_window.draw_item(3, false)
end
if $game_system.save_disabled
@command_window.draw_item(4, false)
end
end
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 # Config
$scene = Scene_Config.new
when 5 # Bestiaire
$scene = Scene_Liste_Monstres.new
when 6 #quete
$scene = Scene_Quest.new(0, true)
when 7 # Save
$scene = Scene_File.new(true, false, false)
when 8 # End Game
$scene = Scene_End.new
end
end
end
end
- driccMembre
- Nombre de messages : 2760
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009
Re: 2 petites modification sur le script de menu [résolue]
Ven 5 Aoû 2011 - 14:31
L'ascenseur , c'est une histoire de "viewport" . et là , y'en a pas .
A la fin , au moment du :
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9])
il faudrait un truc comme :
@viewport = Viewport.new(0, 0, 160, 8 * WLH)
@command_window.viewport = @viewport
@command_window.height = 8*WLH + 32
Enfin , je pense et j'ai la flemme de tester
Sinon, t'as une solution qui à mon avis serait plus sure : faire le ménage dans ton menu !
Par exemple , tu peux virer "Quitter le jeu" (parce que le joueur ferme la fenetre à la place de toute façon)
Tu peux mettre ton bestiaire sous forme d'objet aussi . parfois , tu sais , plutot que de prendre le risque de modifier un truc qui marche bien , vaux mieux trouver une autre solution .
A la fin , au moment du :
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9])
il faudrait un truc comme :
@viewport = Viewport.new(0, 0, 160, 8 * WLH)
@command_window.viewport = @viewport
@command_window.height = 8*WLH + 32
Enfin , je pense et j'ai la flemme de tester
Sinon, t'as une solution qui à mon avis serait plus sure : faire le ménage dans ton menu !
Par exemple , tu peux virer "Quitter le jeu" (parce que le joueur ferme la fenetre à la place de toute façon)
Tu peux mettre ton bestiaire sous forme d'objet aussi . parfois , tu sais , plutot que de prendre le risque de modifier un truc qui marche bien , vaux mieux trouver une autre solution .
- Jodge65Membre
- Nombre de messages : 189
Age : 28
Localisation : Dans le SûD!
Distinction : aucune
Date d'inscription : 25/03/2011
Re: 2 petites modification sur le script de menu [résolue]
Ven 5 Aoû 2011 - 15:30
Je tenterai quand je serai rentrer si ça marche je mettrai résolue mais je préférerais avec ce système car il manque certaine option (je change selon mes envie) et je pense pas que les joueur veulent ouvrir un livre pour quitter le jeu par exemple^^
EDIT: Marche pas il me met erreur a la ligne--" je les peut être mal placer....
EDIT: Marche pas il me met erreur a la ligne--" je les peut être mal placer....
- ZangtherOldMembre
- Nombre de messages : 1711
Date d'inscription : 07/08/2009
Re: 2 petites modification sur le script de menu [résolue]
Sam 6 Aoû 2011 - 12:55
Suffit juste de réduire la taille de la window_command dans Scene_Menu et ensuite modifier la classe Window_Command comme ceci :
Merci à ASHKA pour l'avoir indiqué dans ses cours sur le RGSS2.
- Code:
def refresh
self.contents.clear
create_contents ## A ajouter !!
for i in 0...@item_max
draw_item(i)
end
end
Merci à ASHKA pour l'avoir indiqué dans ses cours sur le RGSS2.
- Jodge65Membre
- Nombre de messages : 189
Age : 28
Localisation : Dans le SûD!
Distinction : aucune
Date d'inscription : 25/03/2011
Re: 2 petites modification sur le script de menu [résolue]
Sam 6 Aoû 2011 - 14:06
Bon je c'est pas si ça marche mais jai trouver un script de menu un peu différent mais qui prend plus d'option... Sa ira sinon merci! Je passe en résolue!
- TTTMembre
- Nombre de messages : 855
Distinction : Trou du cul d'la mère Camu!
Elle est morte! Elle est morte!
Trou du cul d'la mère Camu!
Elle est morte, elle pétera plus!
Date d'inscription : 23/06/2009
Re: 2 petites modification sur le script de menu [résolue]
Sam 6 Aoû 2011 - 17:21
Je déplace dans les demandes résolues
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|