Sto implementando un quick menù per gli oggetti come si deve, non come la ciofeca che avevo fatto l'anno scorso...
Questo quick menù non è altro che il menù degli oggetti della Scene Menu (dello script Compact Menu di Sleeping), quindi in realtà il lavoro è già fatto, devo solo saccheggiarlo qua e là e sistemarlo XD
Più o meno in realtà ho anche fatto, devo solo mettere lo sfondo e far visualizzare una sorta di help window con nome e descrizione dell'oggetto, ma so più o meno come fare, non è un gran problema insomma...
Il problema è un altro!
Vi posto innanzitutto il codice:
class Window_QuickItem < Window_Selectable def initialize super(287, 355-65, 278, 56+24) @column_max = 10 refresh self.index = 0 self.opacity = 0 #@bkg.visible = false end def item return @data[self.index] end def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end def draw_item(index) item = @data[index] case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = crisis_color end x = index % 10 * 24 y = index / 10 * 24 rect = Rect.new(x, y, 24, 24) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.font.size = 14 bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.font.color = Color.new(0, 0, 0) self.contents.draw_text(x + 11 -11, y + 2+2, 24, 32, number.to_s) self.contents.draw_text(x + 11 -11, y + 0+2, 24, 32, number.to_s) self.contents.draw_text(x + 12 -11, y + 1+2, 24, 32, number.to_s) self.contents.draw_text(x + 9 -11, y + 1+2, 24, 32, number.to_s) self.contents.font.color = normal_color self.contents.draw_text(x + 11 -11, y + 1+2, 24, 32, number.to_s) end def update_help @help_window.set_text(self.item == nil ? "" : self.item.name+": "+self.item.description) end def update_cursor_rect if self.active if @index < 0 self.cursor_rect.empty return end row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + 1 self.top_row = row - 1 end cursor_width = self.width / @column_max - 32 self.oy = (self.oy/32)*24 x = @index % @column_max * 24 y = @index / @column_max * 24 - (self.oy/24)*24 self.cursor_rect.set(x, y, 24, 24) else self.cursor_rect.set(0, 0, 0, 0) end end ### def update super ####################################################################### if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $game_switches[1] = true $game_switches[15] = false $game_switches[840] = false $game_switches[1238] = true self.active = false self.visible = false return end if Input.trigger?(Input::C) @item = self.item unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 self.active = false @target_window.x = 287 @target_window.y = 355 @target_window.visible = true @target_window.active = true @target = "item" if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item.id, 1) self.draw_item(self.index) end $game_switches[1] = true $game_switches[15] = false $game_switches[840] = false $game_switches[1238] = true self.visible = false self.active = false #$scene = Scene_Map.new return end end return end end ###end #==============================================================================# ** Scene_Map#------------------------------------------------------------------------------# This class performs map screen processing.#==============================================================================class Scene_Map#--------------------------------------------------------------------------# * Object Aliasing#--------------------------------------------------------------------------alias quick_main mainalias quick_update update#--------------------------------------------------------------------------# * Object Initialization#--------------------------------------------------------------------------def main@Inventario = Window_QuickItem.new@Inventario.active = false@Inventario.visible = falsequick_main@Inventario.disposeend #--------------------------------------------------------------------------# * Frame Update#--------------------------------------------------------------------------def updateif @Inventario.active == true @Inventario.visible = true @Inventario.updateelse @Inventario.visible = false quick_updateendend #------------------------------end
Ora, il fatto è che quando premo i tasti direzionali, il cursore si muove di DUE slot invece che di uno! E anche il "lampeggiamento" (XD) del cursore va il doppio più veloce rispetto a quello della Scene_Menu!
L'impressione è quella che venga richiamato due volte l'update (anzi, l'update della Window_Selectable)...
Ho anche provato a eliminare la riga del "super" e a metterci i comandi dell' update di Window_Selectable, ma non è cambiato nulla (ovviamente) :/
Al momento ho esaurito le idee su come intervenire... Avete qualche consiglio?
PS: sullo script di Sleepig la riga del "super" NON c'era o_o E non capisco come faccia a far muovere il cursore con le frecce direzionali... Il fatto però è che se levo il "super" che ho messo, i tasti direzionali non funzionano più!
E quindi mi fa utilizzare solo il primo oggetto dell'inventario :/
Question
nihil-omen
Allora...
Sto implementando un quick menù per gli oggetti come si deve, non come la ciofeca che avevo fatto l'anno scorso...
Questo quick menù non è altro che il menù degli oggetti della Scene Menu (dello script Compact Menu di Sleeping), quindi in realtà il lavoro è già fatto, devo solo saccheggiarlo qua e là e sistemarlo XD
Più o meno in realtà ho anche fatto, devo solo mettere lo sfondo e far visualizzare una sorta di help window con nome e descrizione dell'oggetto, ma so più o meno come fare, non è un gran problema insomma...
Il problema è un altro!
Vi posto innanzitutto il codice:
Ora, il fatto è che quando premo i tasti direzionali, il cursore si muove di DUE slot invece che di uno! E anche il "lampeggiamento" (XD) del cursore va il doppio più veloce rispetto a quello della Scene_Menu!
L'impressione è quella che venga richiamato due volte l'update (anzi, l'update della Window_Selectable)...
Ho anche provato a eliminare la riga del "super" e a metterci i comandi dell' update di Window_Selectable, ma non è cambiato nulla (ovviamente) :/
Al momento ho esaurito le idee su come intervenire... Avete qualche consiglio?
PS: sullo script di Sleepig la riga del "super" NON c'era o_o E non capisco come faccia a far muovere il cursore con le frecce direzionali... Il fatto però è che se levo il "super" che ho messo, i tasti direzionali non funzionano più!
E quindi mi fa utilizzare solo il primo oggetto dell'inventario :/
} 2rA - web site {
E' disponibile il primo capitolo completo di 2rA!
} 2rA: Capitolo I {
Link to comment
Share on other sites
22 answers to this question
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now