Problem z menu
Aktualny czas: 20-06-25, 19:29 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[VX] Problem z menu
Diablo Offline
*


Liczba postów: 196
Dołączył: 02-05-13

Pomógł: 3



Post: #1
Problem z menu

Witam po długiej przerwie. Mam problem. Korzystam ze skryptu "Menu jednoosobowe" i gdy np. wejdę w ekwipunek i dam ESC to kursor jest na następnej pozycji (w tym wypadku status). Niby nic, ale przy anulowaniu wyjścia robi się takie coś:

[Obrazek: NihhbGw.png]

Oto skrypt:
==============================================================================
# Menu Jednoosobowe [VX]
#==============================================================================
# Autor: Matheus2
# Poprawki by Ayene
# Skrypt zmienia menu na jednoosobowe - wyświetlane są dane tylko
# pierwszej osoby w drużynie.
#==============================================================================

module Ayene
  # Wyświetla awatar postaci zamiast characters
  AWATAR_ZAMIAST_CHARA = true
end
#------------------------------------------------------------------------------#
# Game_Party
#------------------------------------------------------------------------------#
class Game_Party < Game_Unit
  MAX_MEMBERS = 1
end

#------------------------------------------------------------------------------#
# Game_Map
#------------------------------------------------------------------------------#
class Game_Map
  attr_reader :map_id
  def namemap
    @name_map = load_data("Data/MapInfos.rvdata")
    @name_map[@map_id].name
  end
end

#------------------------------------------------------------------------------#
# Window_Time
#------------------------------------------------------------------------------#
class Window_Time < Window_Base
  def initialize(x,y)
    super(x, y, 144, 56)
    self.x = x
    self.y = y
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    @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, 0, 120, 24, text)
  end
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end

#------------------------------------------------------------------------------#
# Window_Map
#------------------------------------------------------------------------------#
class Window_Map < Window_Base
  def initialize(x,y)
    super(x, y, 240, 56)
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.font.color = normal_color
    self.contents.draw_text(0, -8, 200, 32, $game_map.namemap.to_s)
  end
end

#------------------------------------------------------------------------------#
# Window_MenuStatus
#------------------------------------------------------------------------------#

class Window_MenuStatus < Window_Selectable
  def initialize(x, y)
    super(0, 144, 544, 128)
    refresh
    self.active = false
    self.index = -1
  end

  def refresh
    self.contents.clear
    actor = $game_party.members[0]    
    if Ayene::AWATAR_ZAMIAST_CHARA
      draw_actor_face(actor, 2, 2, 92)
    else      
      draw_actor_graphic(actor, 40, 60)
    end    
    x = 104
    y = actor.index * 96 + WLH / 2
    draw_actor_name(actor, x, y)
    draw_actor_class(actor, x + 120, y)
    draw_actor_level(actor, x, y + WLH * 1)
    draw_actor_state(actor, x, y + WLH * 2)
    draw_actor_hp(actor, x + 120, y + WLH * 1)
  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

#------------------------------------------------------------------------------#
# Scene_Menu
#------------------------------------------------------------------------------#
class Scene_Menu < Scene_Base
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(0, 360)
    @status_window = Window_MenuStatus.new(160, 0)
    @map_window = Window_Map.new(160, 360)
    @time_window = Window_Time.new(400, 360)
  end

  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @map_window.dispose
    @time_window.dispose
  end

  def update
    super
    update_menu_background
    @command_window.update    
    @gold_window.update
    @time_window.update    
    update_command_selection
  end

  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::equip
    s3 = Vocab::status
    s4 = Vocab::save
    s5 = Vocab::game_end
    @command_window = Window_Command.new(544,[s1, s2, s3, s4, s5],5,0,10)
    @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
        $scene = Scene_Item.new
      when 1
        $scene = Scene_Equip.new(0)  
      when 2
        $scene = Scene_Status.new(0)
      when 3
        $scene = Scene_File.new(true, false, false)  
      when 4
        $scene = Scene_End.new
      end
    end
  end
end
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::equip
    s3 = Vocab::status
    s4 = Vocab::save
    s5 = Vocab::game_end
    @command_window = Window_Command.new(544,[s1, s2, s3, s4, s5],5,0,10)
    @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)
    end
    if $game_system.save_disabled
      @command_window.draw_item(3, 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
        $scene = Scene_Equip.new(0)  
      when 2
        $scene = Scene_Status.new(0)
      when 3
        $scene = Scene_File.new(true, false, false)  
      when 4
        $scene = Scene_End.new
      end
    end
  end
(Ten post był ostatnio modyfikowany: 26-01-15 14:05 przez Diablo.)
26-01-15 13:48
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Mateusz SSJ8 Offline
*


Liczba postów: 511
Dołączył: 10-05-13

Pomógł: 40



Post: #2
RE: Problem z menu

Sprawdź, jak kursor obiektu klasy "Window_Command" ze skryptu jest zrobiony w oryginalnej klasie "Window_Selectable". Możliwe, że albo Ayene schrzaniła wprowadzając poprawki, albo autorowi oryginałui nie chciało się testować tego, nad czym pracuje. Choć najprawdopodobniej to drugie.

Nienawidzony i nienawidzący. Przez nienawiść tego drugiego obaj będą martwi.
(Ten post był ostatnio modyfikowany: 26-01-15 18:41 przez Mateusz SSJ8.)
26-01-15 18:40
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
kanumerki Offline
*


Liczba postów: 247
Dołączył: 02-05-13

Pomógł: 45



Post: #3
RE: Problem z menu

Sprawa została wyjaśniona na tsukuru.pl.
Problemem okazało się nieskonfigurowanie powrotu(def return_scene) w kilku skryptach podstawowego rm'a.

Stary nick:ka0909
Pomagam w przerabianiu lekkich skryptów smiles
27-01-15 02:29
Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.