Jump to content
Rpg²S Forum
  • 0

Far scrollare una finestra verso il basso se contiene troppi oggetti.


Zosimos
 Share

Question

Domanda forse banalissima, ma ci provo ugualmente.

Non ho capito esattamente come si fa a far sì che una finestra contenente diversi elementi da selezionare (per esempio un inventario o un menu con varie opzioni) scrolli verso il basso se il numero degli elementi è superiore a quello visualizzabile.

 

Mi trovo con questa finestra qui, in un sistema di quest:

 

 

 

class Window_Listequete < Window_Selectable
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
super(0, 120, 320, 360) #super(0, 120, 320, 360)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 0
self.opacity = 0
self.contents.font.name = $fontface
self.contents.font.size = 20
self.active = false
self.index = -1
@column_max = 1
 
 
 
refresh
 end

 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh(etat_quete = 1)
if self.contents != nil
  self.contents.dispose
  self.contents = nil
end
 
@tab_quete = []
 
# Parcourir la liste des quete en cours
$game_party.tab_quete.each_key { |id_quete_party|
 # Si la quete est en cours
  if $game_party.tab_quete[id_quete_party][0] == etat_quete
	#@tab_quete.push(id_quete_party)
	@tab_quete.insert(0,id_quete_party)
  end
}
 
@item_max = @tab_quete.size
 
if @item_max > 0
  self.contents = Bitmap.new(width - 32, row_max * 20 -3)
  self.contents.font.name = $fontface
  self.contents.font.size = 18
  self.contents.font.color = Color.new(0,0,0,255)

  for i in 0...@tab_quete.size
	id_quete_party = @tab_quete[i]
	# Afficher le nom de la quete
  
	self.contents.draw_text(30, (i * 20) - 4, 250, 20, $data_quete.tab_def_quete[id_quete_party]["nom"])
  end
end
 
 #--------------------------------------------------------------------------
 # ● nb_quete
 #--------------------------------------------------------------------------
def nb_quete()
  return @tab_quete.size
end
 #--------------------------------------------------------------------------
 # ● id_quete
 #--------------------------------------------------------------------------
def id_quete()
  return @tab_quete[@index]
end
 
 end

 #--------------------------------------------------------------------------
 # ● update_cursor_rect
 #	- Permet de modifier la position du rectangle de sélection à chaque cycle
 #--------------------------------------------------------------------------
 def update_cursor_rect
# Si l'index de focus est inferieur à 0
if @index < 0
  # Alors effacer le rectangle de sélection
  self.cursor_rect.empty
else
  # Sinon afficher le rectangle à la position du focus
  self.cursor_rect.set(20, -4 + (20 * @index), 280, 20)
end
 end
end

 

 

 

Il problema è che superato un certo numero di oggetti elencati, essi continuano a essere elencati ma la finestra non "scrolla", è il cursore continua ad andare in basso senza fermarsi...

 

So che è un problema stupidissimo, ma non ne vengo a capo.

Edited by Zosimos

Gioco in Sviluppo:

http://www.studibizantini.it/docs/Logo.png

 

Blog: Ode to my Forthcoming Winter

Riferimento

 

Contest:

http://rpg2s.net/gif/SCContest2Oct.gifx2 http://rpg2s.net/gif/SCContest1Oct.gifx1

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Grazie Maxy... mi era parso fosse qualcosa là, per quel poco che ne sto capendo di script... dipende da qualche richiamo strano del row da Window_Selectable? Mi pare fosse quello a regolare lo scroll, dico bene?

 

Questo è lo script completo, il punto è dalla riga 336. C'è modo di risolvere questo stupido problema? Sono ancora a caro amico in fatto di RGSS, ma questo script mi serve come il pane, purtroppo...

 

 

 

 

#==============================================================================
# ■ Systeme de gestion de quête
#------------------------------------------------------------------------------
#   Ce script a pour but de rajouter un systeme de gestion de quête sur votre
# projet. Divers commandes script permettent d'intéragir avec ce systeme :
#
#   $scene = Scene_Quete.new  # Ouvre le livre de quete
#   $game_party.quete_demarrer(id_quete) # Démarre une quete
#   $game_party.quete_echouer(id_quete) # Fait echouer la quete
#   $game_party.quete_finir(id_quete) # Fait réussir la quete et donne les récompenses
#   $game_party.quete_parler(nom) # Permet de valider l'objectif de parler, quelque soit les quetes
#   $game_party.quete_termine?(id_quete) # Vérifie si les objectifs sont terminé # Dans commande condition
#   $game_party.quete_trouve?(id_quete) # Vérifie si la quête est trouvé # Dans commande condition
#   $game_party.quete_en_cours?(id_quete) # Vérifie si la quête est en cours # Dans commande condition
#   $game_party.quete_reussie?(id_quete) # Vérifie si la quête est réussi # Dans commande condition
#   $game_party.quete_echoue?(id_quete) # Vérifie si la quête est échoué # Dans commande condition
#   $game_party.quete_tuer_monstre(id_monstre) # Ajoute 1 monstre au compteur de monstre tué dans les quêtes
#   $game_party.quete_objectif_termine?(id_quete,id_objectif) # Vérifie si l'objectif de la quete est terminé # Dans commande condition
#
#
# Date : 20/07/2006
#   Version   Date		  Auteur	    Commentaires
#   1.00	  20/09/2007    Tonyryu	   Finalisation version 1
#   1.01	  23/09/2007    Tonyryu	   Correction d'un bug de comparaison
#   1.02	  26/09/2007    Tonyryu	   Correction Anomalie : caractere '\n' non interprété
#   1.03	  03/10/2007    Tonyryu	   Correction Anomalie : quete_echouer et quete_finir buggés
#   1.04	  16/07/2008    Tonyryu	   Ajout fonction quete_tuer_monstre
#   1.05	  22/07/2008    Tonyryu	   Ajout fonction quete_objectif_termine? ,correction d'un bug de validation de quête, les objectifs terminés sont grisés
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ).
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  Ajout de méthode de gestion de quete, permettant l'intégration à la sauvegarde
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Game_Party

 attr_accessor :tab_quete

 #--------------------------------------------------------------------------
 # ● initialize (surcharge)
 #--------------------------------------------------------------------------
 alias quete_initialize initialize
 def initialize
   quete_initialize
   @tab_quete = {}
 end

 #--------------------------------------------------------------------------
 # ● quete_demarrer
 #--------------------------------------------------------------------------
 def quete_demarrer(id_quete)
   # Si La quête existe
   if !$data_quete.tab_def_quete[id_quete].nil?
  # Si la quête n'est pas déjà accepter
  if @tab_quete[id_quete].nil?
    # Ajouter une entrée dans le tableau de quete du joueur
    @tab_quete[id_quete] = [1,Array.new($data_quete.tab_def_quete[id_quete]["but"].size, 0)]
  end
   else
  # Sinon, affiché un message d'erreur
  print "Quete ID : #{id_quete} non configurée!!"
   end
 end
 #--------------------------------------------------------------------------
 # ● quete_objectif_termine?
 #--------------------------------------------------------------------------
 def quete_objectif_termine?(id_quete,id_objectif)
   # Tester si la quete existe
   return false if @tab_quete[id_quete].nil?
  
   # Tester si l'ojectif existe
   return false if $data_quete.tab_def_quete[id_quete]["but"][id_objectif].nil?
  
   objectif = $data_quete.tab_def_quete[id_quete]["but"][id_objectif]
  
   fait = @tab_quete[id_quete][1][id_objectif]
   sur = objectif[1]
  
   if ["TR_OBJ","TR_ARME","TR_ARMU"].include?(objectif[0])
  case objectif[0]
  when "TR_OBJ"
    item = $data_items[objectif[2]]
    fait = item_number(objectif[2])
  when "TR_ARME"
    item = $data_weapons[objectif[2]]
    fait = weapon_number(objectif[2])
  when "TR_ARMU"
    item = $data_armors[objectif[2]]
    fait = armor_number(objectif[2])
  end
  fait = ( fait > sur ? sur : fait)
   end
   sur = 1 if objectif[0] == "Parlare"
  
   return (fait == sur)   
  
 end
  
 #--------------------------------------------------------------------------
 # ● quete_termine?
 #--------------------------------------------------------------------------
 def quete_termine?(id_quete)
 
   # Tester si la quete existe
   return false if @tab_quete[id_quete].nil?
   for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
  return false if !quete_objectif_termine?(id_quete,i)
   end
   return true
 end

 #--------------------------------------------------------------------------
 # ● quete_parler
 #--------------------------------------------------------------------------
 def quete_parler(nom)
  
   # Parcourir la liste des quete en cours
   @tab_quete.each_key { |id_quete|
  # Si la quete est en cours
  if @tab_quete[id_quete][0] == 1
    # Vérifier tous les objectifs de la quete
    for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
	  objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
	 
	  if objectif[0] == "Parlare"
	    if objectif[2] == nom
		  @tab_quete[id_quete][1][i] = 1
	    end
	  end
    end
  end
   }
 end

 #--------------------------------------------------------------------------
 # ● quete_finir
 #--------------------------------------------------------------------------
 def quete_finir(id_quete)
   # Tester si la quete existe
   if !@tab_quete[id_quete].nil?
  # Si la quete n'est pas deja cloturer
  if @tab_quete[id_quete][0] == 1
    # changer la quete d'état
    @tab_quete[id_quete][0] = 2
   
    # Réceptionner la récompense
    for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
	  gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
	  nbr = gain[1]
	  case gain[0]
	  when "EXP"
	    for i in 0...@actors.size
		  @actors[i].exp += nbr
	    end
	  when "OBJ"
	    gain_item(gain[2], nbr)
	  when "ARME"
	    gain_weapon(gain[2], nbr)
	  when "ARMU"
	    gain_armor(gain[2], nbr)
	  when "ARGENT"
	    gain_gold(nbr)
	  end
    end
  end
   end
  
 end

 #--------------------------------------------------------------------------
 # ● quete_echouer
 #--------------------------------------------------------------------------
 def quete_echouer(id_quete)
   # Si la quete est connu
   if !@tab_quete[id_quete].nil?
  # Si la quete n'est pas deja cloturer
  if @tab_quete[id_quete][0] == 1
    # changer la quete d'état
    @tab_quete[id_quete][0] = 3
  end
   end
 end

 #--------------------------------------------------------------------------
 # ● quete_trouve?
 #--------------------------------------------------------------------------
 def quete_trouve?(id_quete)
   return !@tab_quete[id_quete].nil?

 end

 #--------------------------------------------------------------------------
 # ● quete_en_cours?
 #--------------------------------------------------------------------------
 def quete_en_cours?(id_quete)
 return false if @tab_quete[id_quete].nil?

 return ( @tab_quete[id_quete][0] == 1 )
 end

 #--------------------------------------------------------------------------
 # ● quete_reussie?
 #--------------------------------------------------------------------------
 def quete_reussie?(id_quete)
 return false if @tab_quete[id_quete].nil?

 return (@tab_quete[id_quete][0] == 2)
  end
 
 #--------------------------------------------------------------------------
 # ● quete_echoue?
 #--------------------------------------------------------------------------
 def quete_echoue?(id_quete)
 return false if @tab_quete[id_quete].nil?

 return (@tab_quete[id_quete][0] == 3)
 end
 #--------------------------------------------------------------------------
 # ● quete_tuer_monstre
 #--------------------------------------------------------------------------
 def quete_tuer_monstre(id_monstre)
   # Parcourir la liste des quete en cours
   @tab_quete.each_key { |id_quete_party|
  # Si la quete est en cours
  if @tab_quete[id_quete_party][0] == 1
    # Vérifier si des objectifs sont liés à la chasse
    id_objectif = -1
    $data_quete.tab_def_quete[id_quete_party]["but"].each { |objectif|
	  id_objectif += 1
	  if objectif[0] == "Sconfiggere"
	    if objectif[2] == id_monstre
		  # ajouter 1 au compteur
		  @tab_quete[id_quete_party][1][id_objectif] += 1 if objectif[1] != @tab_quete[id_quete_party][1][id_objectif]
	    end
	  end
    }
  end
   }
 end

end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  Surcharge de la méthode update pour gestion de chasse
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Sprite_Battler

 #--------------------------------------------------------------------------
 # ● update (surcharge)
 #   permet de comptabiliser une créature tuée, objectif "CHASSER"
 #--------------------------------------------------------------------------
 alias quete_update update
 def update
   sav_battler_visible = @battler_visible
   quete_update()
   if @battler.is_a?(Game_Enemy) and sav_battler_visible and !@battler_visible
  # vérifier que l'id du monstre est recherché dans une quete en cours
  $game_party.quete_tuer_monstre(@battler.id)
   end
 
 end

end

#==============================================================================
# ■ Window_Optionquete
#------------------------------------------------------------------------------
#  Fenêtre des option de quete
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Window_Optionquete < Window_Selectable


 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 320, 120)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 0
   self.opacity = 0
   self.contents.font.name = $fontface
   self.contents.font.size = 18
   
   self.index = 0
   @item_max =3
   @column_max = 1
  
   refresh
 end
 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   # Afficher le titre
   self.contents.font.color = Color.new(100,100,100,255)
   self.contents.font.size = 24
   self.contents.draw_text(0, -2, 320, 25, "Sommario",1)
  
   # Afficher le menu
   self.contents.font.size = 18
   self.contents.font.color = Color.new(0,0,0,255)
   self.contents.draw_text(30, 20, 200, 25, "- Missioni in corso di svolgimento")
   self.contents.draw_text(30, 40, 200, 25, "- Missioni portate a termine")
   self.contents.draw_text(30, 60, 200, 25, "- Missioni fallite")
  
   self.contents.fill_rect(30,84,260,1,Color.new(100,100,100,255))
  
 end

 #--------------------------------------------------------------------------
 # ● update_cursor_rect
 #    - Permet de modifier la position du rectangle de sélection à chaque cycle
 #--------------------------------------------------------------------------
 def update_cursor_rect
   # Si l'index de focus est inferieur à 0
   if @index < 0
  # Alors effacer le rectangle de sélection
  self.cursor_rect.empty
   else
  # Sinon afficher le rectangle à la position du focus
  self.cursor_rect.set(20, 22 + (20 * @index), 280, 20)
   end
 end
end

#==============================================================================
# ■ Window_Listequete
#------------------------------------------------------------------------------
#  Fenêtre de la liste des quetes
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Window_Listequete < Window_Selectable


 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(0, 120, 320, 360) #super(0, 120, 320, 360)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 0
   self.opacity = 0
   self.contents.font.name = $fontface
   self.contents.font.size = 20
  
   self.active = false
   self.index = -1
  
   @column_max = 1
  
  
  
   refresh
 end

 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh(etat_quete = 1)
   if self.contents != nil
  self.contents.dispose
  self.contents = nil
   end
  
   @tab_quete = []
  
   # Parcourir la liste des quete en cours
   $game_party.tab_quete.each_key { |id_quete_party|
 # Si la quete est en cours
  if $game_party.tab_quete[id_quete_party][0] == etat_quete
    #@tab_quete.push(id_quete_party)
    @tab_quete.insert(0,id_quete_party)
  end
   }
  
   @item_max = @tab_quete.size
  
   if @item_max > 0
  self.contents = Bitmap.new(width - 32, row_max * 20 -3)
  self.contents.font.name = $fontface
  self.contents.font.size = 18
  self.contents.font.color = Color.new(0,0,0,255)
 
  for i in 0...@tab_quete.size
    id_quete_party = @tab_quete[i]
    # Afficher le nom de la quete
   
    self.contents.draw_text(30, (i * 20) - 4, 250, 20, $data_quete.tab_def_quete[id_quete_party]["nom"])
  end
   end
  
 #--------------------------------------------------------------------------
 # ● nb_quete
 #--------------------------------------------------------------------------
   def nb_quete()
  return @tab_quete.size
   end
 #--------------------------------------------------------------------------
 # ● id_quete
 #--------------------------------------------------------------------------
   def id_quete()
  return @tab_quete[@index]
   end
  
 end

 #--------------------------------------------------------------------------
 # ● update_cursor_rect
 #    - Permet de modifier la position du rectangle de sélection à chaque cycle
 #--------------------------------------------------------------------------
 def update_cursor_rect
   # Si l'index de focus est inferieur à 0
   if @index < 0
  # Alors effacer le rectangle de sélection
  self.cursor_rect.empty
   else
  # Sinon afficher le rectangle à la position du focus
  self.cursor_rect.set(20, -4 + (20 * @index), 280, 20)
   end
 end
end

#==============================================================================
# ■ Window_Detailquete
#------------------------------------------------------------------------------
#  Fenêtre de détail d'une quete
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Window_Detailquete < Window_Base
 #--------------------------------------------------------------------------
 # ● initialize
 #--------------------------------------------------------------------------
 def initialize
   super(320, 0, 320, 480) #super(320, 0, 320, 480)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 0
   self.opacity = 0
   self.contents.font.name = $fontface
   self.contents.font.size = 20
   self.contents.font.color = Color.new(0,0,0,255)
  
   refresh
 end

 #--------------------------------------------------------------------------
 # ● refresh
 #--------------------------------------------------------------------------
 def refresh(id_quete = -1)
   self.contents.clear
  
   return if id_quete == -1
   ligne = 0
  
   # Afficher le descriptif de la quete ( max 8 lignes )
   self.contents.font.italic = false
   self.contents.font.size = 18
   self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Descrizione :" )
   self.contents.font.italic = false
   self.contents.font.size = 16
   $data_quete.tab_def_quete[id_quete]["desc"].each { |texte|
  ligne += 1
  texte[-1] = ""
  self.contents.draw_text(0, (ligne * 20) -2, 250, 20,texte )
  break if ligne == 8
   }
 
   # Afficher objectif
   ligne += 2
   self.contents.font.italic = false
   self.contents.font.size = 18
   self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Obiettivi :" )
   self.contents.font.italic = false
 self.contents.font.size = 16
   for i in 0...$data_quete.tab_def_quete[id_quete]["but"].size
  objectif = $data_quete.tab_def_quete[id_quete]["but"][i]
  fait = $game_party.tab_quete[id_quete][1][i]
  sur = objectif[1]
  ligne += 1
 
  if $game_party.quete_objectif_termine?(id_quete,i)
    self.contents.font.color = Color.new(100,100,100,255)
  end
   self.contents.font.size = 18
  if objectif[0] == "Sconfiggere"
	 self.contents.font.size = 16
    type = "- Sconfiggere " + fait.to_s + "/" + sur.to_s + " " + $data_enemies[objectif[2]].name
    self.contents.draw_text(0, (ligne * 20) -2, 290, 20, type )
  end
 
  if ["TR_OBJ","TR_ARME","TR_ARMU"].include?(objectif[0])
    case objectif[0]
    when "TR_OBJ"
	  item = $data_items[objectif[2]]
	  fait = $game_party.item_number(objectif[2])
    when "TR_ARME"
	  item = $data_weapons[objectif[2]]
	  fait = $game_party.weapon_number(objectif[2])
    when "TR_ARMU"
	  item = $data_armors[objectif[2]]
	  fait = $game_party.armor_number(objectif[2])
    end
    fait = ( fait > sur ? sur : fait)
    bitmap = RPG::Cache.icon(item.icon_name)
    text = "- Trovare " + fait.to_s + "/" + sur.to_s
    self.contents.font.size = 16
    taille = self.contents.text_size(text).width
    self.contents.draw_text(0, (ligne * 20) -2, 290, 20, text)
    self.contents.blt(taille + 4, (ligne * 20) -6, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(taille + 30, (ligne * 20) -2, 290, 20, item.name)
    bitmap.dispose
  end
 
  if objectif[0] == "Parlare"
    self.contents.font.size = 16
    self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- Parlare a: " + objectif[2] )
 
  end
 
  self.contents.font.color = Color.new(0,0,0,255)
 
   end
  
   # Afficher Récompense
   ligne += 2
   self.contents.font.italic = false
   self.contents.font.size = 18
   self.contents.draw_text(20, (ligne * 20) -2, 290, 20,"Ricompensa :" )
   self.contents.font.italic = false
   self.contents.font.size = 16
   for i in 0...$data_quete.tab_def_quete[id_quete]["gain"].size
  gain = $data_quete.tab_def_quete[id_quete]["gain"][i]
  nbr = gain[1].to_s
  ligne += 1
 
  if gain[0] == "EXP"
    self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- Exp : " + nbr)
  end
 
  if ["OBJ","ARME","ARMU"].include?(gain[0])
    case gain[0]
    when "OBJ"
	  item = $data_items[gain[2]]
    when "ARME"
	  item = $data_weapons[gain[2]]
    when "ARMU"
	  item = $data_armors[gain[2]]
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    text = "- "
    taille = self.contents.text_size(text).width
    self.contents.draw_text(0, (ligne * 20) -2, 290, 20, text)
    self.contents.blt(taille + 4, (ligne * 20) -6, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(taille + 30, (ligne * 20) -2, 290, 20, item.name + " * " + nbr)
    bitmap.dispose
   
  end
 
  if gain[0] == "Tar"
	 self.contents.draw_text(0, (ligne * 20) -2, 290, 20, "- " + $data_system.words.gold + " : " + nbr)
  end
 
   end
 end
end
#==============================================================================
# ■ Scene_Quete
#------------------------------------------------------------------------------
#  Gérer les quetes
#   Version   Date		  Auteur	    Commentaires
#   1.00	  12/09/2007    Tonyryu	   Création
#
#==============================================================================
class Scene_Quete

 #--------------------------------------------------------------------------
 # ● main
 #--------------------------------------------------------------------------
 def main
   # Création des fenêtres
   @optionquete_window = Window_Optionquete.new
   @listequete_window = Window_Listequete.new
   @detailquete_window = Window_Detailquete.new
   # Affichage image de fond
   @img_fond = Sprite.new
   @img_fond.bitmap = RPG::Cache.picture("grim1")
  
   # Effectuer la transition graphique
   Graphics.transition
   # Boucle
   loop do
  # Mettre à jour les graphique
  Graphics.update
  # Mettre à jour les entrés clavier
  Input.update
  # Appeler fonction update
  update
  # si la Scene n'est plus la même
  if $scene != self
    # Alors sortir de la boucle
    break
  end
   end
   Graphics.freeze
  
   # Détruire objets de classe
   @optionquete_window.dispose
   @listequete_window.dispose
   @detailquete_window.dispose
  
   # destruction de l'image de fond
   @img_fond.bitmap.dispose
   @img_fond.dispose
 end

 #--------------------------------------------------------------------------
 # ● update
 #--------------------------------------------------------------------------
 def update
   # Mettre à jour les fenêtres
   @optionquete_window.update
   @listequete_window.update
   @detailquete_window.update
  
   if @optionquete_window.active
  gerer_menu
   elsif @listequete_window .active
  gerer_liste
   end
  
 end

 #--------------------------------------------------------------------------
 # ● gerer_menu
 #--------------------------------------------------------------------------
 def gerer_menu
  
   # si la touche B est appuyée
   if Input.trigger?(Input::B)
  # Alors, jouer le son "cancel"
  $game_system.se_play($data_system.cancel_se)
  # Revenir sur l'écran de compte
  $scene = Scene_Menu.new
  return
   end
  
   # Si la fleche bas ou la fleche bas est appuyée
   if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
  @listequete_window.refresh(@optionquete_window.index + 1)
   end
  
   # si la touche C est appuyée
   if Input.trigger?(Input::C)
  # ne rien faire si il n'y a pas de quete
  return if @listequete_window.nb_quete() == 0
  # Alors, jouer le son "decision"
  $game_system.se_play($data_system.decision_se)
  # Parcourir la liste des quetes
  @optionquete_window.active = false
  @listequete_window.active = true
  @listequete_window.index = 0
  @detailquete_window.refresh(@listequete_window.id_quete)
   end
  
 end
 #--------------------------------------------------------------------------
 # ● gerer_liste
 #--------------------------------------------------------------------------
 def gerer_liste
   # Si la fleche bas ou la fleche bas est appuyée
   if Input.trigger?(Input::DOWN) or Input.trigger?(Input::UP)
  @detailquete_window.refresh(@listequete_window.id_quete)
   end
  
   # si la touche B est appuyée
   if Input.trigger?(Input::B)
  # Alors, jouer le son "cancel"
  $game_system.se_play($data_system.cancel_se)
  # Revenir sur le sommaire
  @listequete_window.active = false
  @optionquete_window.active = true
  @listequete_window.index = -1
  @detailquete_window.refresh
  return
   end
  
 end
 
end

 

 

Grazie in anticipo!

Gioco in Sviluppo:

http://www.studibizantini.it/docs/Logo.png

 

Blog: Ode to my Forthcoming Winter

Riferimento

 

Contest:

http://rpg2s.net/gif/SCContest2Oct.gifx2 http://rpg2s.net/gif/SCContest1Oct.gifx1

Link to comment
Share on other sites

  • 0

Ad occhio, il problema è dato dal fatto che le dimensioni della finestra sono non standard, è quindi una soluzione potrebbe essere questa:

sostituisci il tuo update_cursor_rect della classe Window_Listequete con queste tre.

Ho fatto un po' di paciocchi con le coordinate del rettangolo, non so se sono giuste al primo colpo.

 

  def top_row
return self.oy/20
 end
 def page_row_max
  return (self.height -32)/20
 end
 def top_row=(row)
super
self.oy = self.oy*20/32
 end
 def update_cursor_rect
# If cursor position is less than 0
if @index < 0
  self.cursor_rect.empty
  return
end
super
self.cursor_rect.set(20, -4 + (20 * @index) - self.oy, 280, 20)
 end

 

EDIT by Guardian: XD ad occhio! E guardate il suo avatar! XDXD

Edited by Guardian of Irael
Link to comment
Share on other sites

  • 0

Allora, ho provato un po' ad applicare questo sistema.

Inizialmente mi dave errore per quell'"<" del def update_cursor_rect.

Al che io l'ho sostituito con un più canonico if @index

 

La visualizzazione sembra corretta,

 

http://i45.tinypic.com/2059xz7.png

 

ma non posso verificare lo scorrimento perché non appena provo a entrare nella finestra salta fuori un errore:

 

http://i49.tinypic.com/vdx5x.png

 

Relativo alla riga 443, ovvero return (self.height -32)/20

Probabilmente si riferisce alle coordinate che dicevi, ma non ho idea di cosa cambiare, la parte dell'oy è ancora parecchio complicata per me.

 

Grazie in anticipo!

Gioco in Sviluppo:

http://www.studibizantini.it/docs/Logo.png

 

Blog: Ode to my Forthcoming Winter

Riferimento

 

Contest:

http://rpg2s.net/gif/SCContest2Oct.gifx2 http://rpg2s.net/gif/SCContest1Oct.gifx1

Link to comment
Share on other sites

  • 0

Quel "< non ho idea da dove venga fuori, deve essere stato il copia e incolla.

Non so perchè ti dia errore nel self.height, prova a sostituire questo (che è la stessa cosa con degli spazi in mezzo) e dimmi se ti da ancora lo stesso errore. Poi proveremo a calibrare la posizione del rettangolo

  def page_row_max
   return ( height - 32 ) / 20
 end

Edited by Maxy
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...