UltimaForum

Wsparcie [VX] - Menu Nostalgia - nowe funkcje

Pawelsar1 - Nie 08 Kwi, 2012 19:47
Temat postu: Menu Nostalgia - nowe funkcje
Mam menu Nostalgia, wszystko działa, ale mam także skrypt opcji w menu oraz wybór optimy, więc na zapisie mam optimy, a na wyjściu z gry zapis. Opcji wcale nie ma. Chciałbym, aby były opcje a wszystko miało swoją ikonkę (opcje np. narzędzia). Najlepiej by było gdybyście mi wytłumaczyli jak przypisać ikonkę.

PS.
Ayene, mój kumpel poprosił mnie, abym zapytał się na forum, dlaczego nie może dodawać nowych postaci przez skrypt Menu Jednoosobowe.

Ayene - Nie 08 Kwi, 2012 19:50

Wrzuć linki do wszystkich tych skryptów.

Skrypt na menu jednoosobowe... powiedz "kumplowi" by przyjrzał się linijce:
Kod:
MAX_MEMBERS = 1

Pawelsar1 - Nie 08 Kwi, 2012 20:03

Ayene napisał/a:
"kumplowi"

Czemu "kumplowi" w cudzysłowiu? Bo napisałem, że wykorzystam w swoim projekcie? Znalazłem Menu Nostalgia i zrezygnowałem. Możesz mi napisać to o co prosiłem na temat Menu Nostalgia?

Ayene - Nie 08 Kwi, 2012 21:47

Że też tak brzydko zacytuję samą siebie:
Ayene napisał/a:
Wrzuć linki do wszystkich tych skryptów.

Pawelsar1 - Wto 10 Kwi, 2012 10:56
Temat postu: Chodzi Ci o skrypty modyfikujące Menu?
Ayene napisał/a:
Ayene napisał/a:
Wrzuć linki do wszystkich tych skryptów.


Chodzi o skrypty modyfikujące menu?

Finnal Fantasty XIII Battle System - ten system walki dodaje do menu wybór optimy.

Opcje w Menu
(zmodyfikowany przez Ciebie)

przemusiek25 - Wto 10 Kwi, 2012 12:35

A więc skrypt Opcji w Menu zamienia Scene_End na Opcje, i tak naprawdę wystarczy zmienić ikonkę, ikonki zmienia się w Linijce 50 skryptu Nostalgia (w poniższym zmienionym skrypcie jest to linijka 51)


Co to skryptu Battle System, wystarczyło dorobić nową opcję, Oto zmieniony skrypt Notalgii:
Kod:
# ============================================================================ #
# Menu Nostalgia v1.0
# by Zidane ~ EvilEagles
# Tłumaczenie i korekta: Ayene
# Skrypt tworzy Menu na wzór menu z gry Nostalgia [DS].
# ============================================================================ #

module Zid
# ---------------------------------------------------------------------------- #
# Opis wszystkich poleceń w menu
# ---------------------------------------------------------------------------- #

  ITEMCMD_DESCRIPTION = "Wyświetla przedmioty."
  SKILLCMD_DESCRIPTION = "Wyświetla umiejętności członków drużyny."
  EQUIPCMD_DESCRIPTION = "Ekwipuje bohaterów."
  STATUSCMD_DESCRIPTION = "Wyświetla status bohaterów."
  SAVECMD_DESCRIPTION = "Zapisuje grę."
  ENDCMD_DESCRIPTION = "Wychodzi z gry."

# ----------------------- KONIEC KONFIGURACJI ------------------------------- #
end

#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCom < Window_Selectable
  def initialize(x, y, width, height)
    super(137, 10, width - 270, WLH + 34, 10)
    @column_max = 6
    self.index = 0
    refresh
  end
 
  def item
    return @data[self.index]
  end
 
  def enable?(index)
    if $game_party.members.size == 0 and index <= 3
      return false
    end
    if $game_system.save_disabled and index = 6
      return false
    end
    return true
  end
 
  def refresh
    @data = ["Item","Skill","Equip","Status","Save","End"]
    @icon = [64, 231, 3, 137, 141, 224]
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
 
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      enabled = enable?(index)
      rect.width -= 10
      rect.x += 0
      draw_icon(@icon[index], rect.x + 3, rect.y + 3, enabled)
    end
  end

  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = (contents.width + @spacing) / @column_max - @spacing
    rect.height = 30
    rect.x = index % @column_max * (rect.width + @spacing)
    rect.y = index / @column_max * WLH
    return rect
  end
end


#==============================================================================
# Window_MenuNosStatus
#==============================================================================

class Window_MenuNosStatus < Window_Selectable
 
  def initialize(x, y)
    super(0, 56, 384, 304)
    refresh
    self.active = false
    self.index = -1
    self.z = 0
  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 * 68 + 2 ,65 )
      x = 68
      y = actor.index * 70
      self.contents.font.bold = true
      draw_actor_name(actor, x + 5, y)
      self.contents.font.bold = false
      draw_actor_level(actor, x + 110, y)
      draw_actor_state(actor, x + 170, y)
      self.contents.font.size = 18
      draw_nosactor_hp(actor, x + 10, y + WLH * 1)
      draw_nosactor_mp(actor, x + 150, y + WLH * 1)
      self.contents.font.size = 21
      draw_actor_exp_meter(actor, x + 45, y + WLH * 2 - 10)
    end
  end
 
  def update_cursor
    if @index < 0
      self.cursor_rect.empty
      elsif @index < @item_max
      self.cursor_rect.set(0, @index * 68, contents.width, 68)
      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

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base
 
  def draw_nosactor_hp(actor, x, y)
    contents.font.bold = true
    contents.font.color = Color.new(255,126,0)
    contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
    contents.font.bold = false
    contents.font.color = normal_color
    contents.font.color = hp_color(actor)
    last_font_size = contents.font.size
    contents.draw_text(x + 24, y, 44, WLH, actor.hp, 2)
    contents.font.color = normal_color()
    contents.draw_text(x + 68, y, 11, WLH, "/", 2)
    contents.draw_text(x + 79, y, 44, WLH, actor.maxhp, 2)
  end
 
  def draw_nosactor_mp(actor, x, y)
    contents.font.bold = true
    contents.font.color = Color.new(0,38,255)
    contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
    contents.font.bold = false
    contents.font.color = normal_color
    contents.font.color = mp_color(actor)
    last_font_size = contents.font.size
    contents.draw_text(x + 24, y, 44, WLH, actor.mp, 2)
    contents.font.color = normal_color()
    contents.draw_text(x + 68, y, 11, WLH, "/", 2)
    contents.draw_text(x + 79, y, 44, WLH, actor.maxmp, 2)
  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 = 230)
    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 = Color.new(0,255,29)
    self.contents.draw_text(x - 40, y + 5, 30, WLH, "PD")
    self.contents.font.color = normal_color
    xr = x + width
  end
end

#==============================================================================
# Scene_Menu
#==============================================================================

class Scene_Menu < Scene_Base
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(384, 79)
    @status_window = Window_MenuNosStatus.new(0, 56)
    @help_window = Window_Help.new
    @help_window.x = 0
    @help_window.y = 360
    @playtime_window = Window_PlayTime.new(384, 135)
    @mapname_window = Window_Mapname.new(384, 191)
  end
 
  def update
    super
    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
      update_command_selection2
    elsif @status_window.active
      update_actor_selection
    end
  end
 
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @help_window.dispose
    @playtime_window.dispose
    @mapname_window.dispose
  end
 
  def create_command_window
    @command_window = Window_MenuCom.new(0, 0, 544, 80)
    @command_window.index = @menu_index
    @command_window.z = 200
  end

  def update_command_selection2
    case @command_window.index
    when 0
      @help_window.set_text(Zid::ITEMCMD_DESCRIPTION)
    when 1
      @help_window.set_text(Zid::SKILLCMD_DESCRIPTION)
    when 2
      @help_window.set_text(Zid::EQUIPCMD_DESCRIPTION)
    when 3
      @help_window.set_text(Zid::STATUSCMD_DESCRIPTION)
    when 4
      @help_window.set_text(Zid::SAVECMD_DESCRIPTION)
    when 5
      @help_window.set_text(Zid::ENDCMD_DESCRIPTION)
    end
  end
end

class Window_PlayTime < Window_Base
  def initialize(x, y)
    super(x, y, 160, WLH + 32)
    refresh
  end
 
  def refresh
    self.contents.clear
    @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, -5, 120, 32, text, 2)
    draw_icon(188, 4, 0)
  end
 
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end

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

#==============================================================================
# Window_Mapname
#==============================================================================
class Window_Mapname < Window_Base
  def initialize(x, y)
    super(x, y, 160, WLH * 2 + 32)
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, -7, 120, 32, "Lokacja", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 20, 120, 32, $game_map.mapname.to_s, 2)
    draw_icon(2680, 4, -2)
  end
end

#==============================================================================
# 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


Opisał bym co gdzie trzeba zmienić, ale nie chce mi się znowu opisywać, tym bardziej nie wiem czy to cie interesuje, więc dlatego wolałem dać zmieniony skrypt

Pawelsar1 - Wto 10 Kwi, 2012 12:47

przemusiek25 napisał/a:
Oto zmieniony skrypt Notalgii:


Dałeś mi dokładnie ten sam skrypt!

PS.

Mógłbyś dawać skrypty w spoilerach?

przemusiek25 - Wto 10 Kwi, 2012 15:16

Przepraszam, mała pomyłka, teraz zmieniony skrypt:
Spoiler:

Kod:
# ============================================================================ #
# Menu Nostalgia v1.0
# by Zidane ~ EvilEagles
# Tłumaczenie i korekta: Ayene
# Skrypt tworzy Menu na wzór menu z gry Nostalgia [DS].
# ============================================================================ #

module Zid
# ---------------------------------------------------------------------------- #
# Opis wszystkich poleceń w menu
# ---------------------------------------------------------------------------- #

  ITEMCMD_DESCRIPTION = "Wyświetla przedmioty."
  SKILLCMD_DESCRIPTION = "Wyświetla umiejętności członków drużyny."
  EQUIPCMD_DESCRIPTION = "Ekwipuje bohaterów."
  STATUSCMD_DESCRIPTION = "Wyświetla status bohaterów."
  BATTLECMD_DESCRIPTION = "Opcje Walki."
  SAVECMD_DESCRIPTION = "Zapisuje grę."
  ENDCMD_DESCRIPTION = "Wychodzi z gry."

# ----------------------- KONIEC KONFIGURACJI ------------------------------- #
end

#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCom < Window_Selectable
  def initialize(x, y, width, height)
    super(137, 10, width - 240, WLH + 34, 10)
    @column_max = 6
    self.index = 0
    refresh
  end
 
  def item
    return @data[self.index]
  end
 
  def enable?(index)
    if $game_party.members.size == 0 and index <= 3
      return false
    end
    if $game_system.save_disabled and index = 7
      return false
    end
    return true
  end
 
  def refresh
    @data = ["Item","Skill","Equip","Status","Walka","Save","End"]
    @icon = [64, 231, 3, 137, 145, 141, 224]
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
 
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      enabled = enable?(index)
      rect.width -= 10
      rect.x += 0
      draw_icon(@icon[index], rect.x + 3, rect.y + 3, enabled)
    end
  end

  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = (contents.width + @spacing) / @column_max - @spacing
    rect.height = 30
    rect.x = index % @column_max * (rect.width + @spacing)
    rect.y = index / @column_max * WLH
    return rect
  end
end


#==============================================================================
# Window_MenuNosStatus
#==============================================================================

class Window_MenuNosStatus < Window_Selectable
 
  def initialize(x, y)
    super(0, 56, 384, 304)
    refresh
    self.active = false
    self.index = -1
    self.z = 0
  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 * 68 + 2 ,65 )
      x = 68
      y = actor.index * 70
      self.contents.font.bold = true
      draw_actor_name(actor, x + 5, y)
      self.contents.font.bold = false
      draw_actor_level(actor, x + 110, y)
      draw_actor_state(actor, x + 170, y)
      self.contents.font.size = 18
      draw_nosactor_hp(actor, x + 10, y + WLH * 1)
      draw_nosactor_mp(actor, x + 150, y + WLH * 1)
      self.contents.font.size = 21
      draw_actor_exp_meter(actor, x + 45, y + WLH * 2 - 10)
    end
  end
 
  def update_cursor
    if @index < 0
      self.cursor_rect.empty
      elsif @index < @item_max
      self.cursor_rect.set(0, @index * 68, contents.width, 68)
      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

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base
 
  def draw_nosactor_hp(actor, x, y)
    contents.font.bold = true
    contents.font.color = Color.new(255,126,0)
    contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
    contents.font.bold = false
    contents.font.color = normal_color
    contents.font.color = hp_color(actor)
    last_font_size = contents.font.size
    contents.draw_text(x + 24, y, 44, WLH, actor.hp, 2)
    contents.font.color = normal_color()
    contents.draw_text(x + 68, y, 11, WLH, "/", 2)
    contents.draw_text(x + 79, y, 44, WLH, actor.maxhp, 2)
  end
 
  def draw_nosactor_mp(actor, x, y)
    contents.font.bold = true
    contents.font.color = Color.new(0,38,255)
    contents.draw_text(x, y, 30, WLH, Vocab::mp_a)
    contents.font.bold = false
    contents.font.color = normal_color
    contents.font.color = mp_color(actor)
    last_font_size = contents.font.size
    contents.draw_text(x + 24, y, 44, WLH, actor.mp, 2)
    contents.font.color = normal_color()
    contents.draw_text(x + 68, y, 11, WLH, "/", 2)
    contents.draw_text(x + 79, y, 44, WLH, actor.maxmp, 2)
  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 = 230)
    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 = Color.new(0,255,29)
    self.contents.draw_text(x - 40, y + 5, 30, WLH, "PD")
    self.contents.font.color = normal_color
    xr = x + width
  end
end

#==============================================================================
# Scene_Menu
#==============================================================================

class Scene_Menu < Scene_Base
  def start
    super
    create_menu_background
    create_command_window
    @gold_window = Window_Gold.new(384, 79)
    @status_window = Window_MenuNosStatus.new(0, 56)
    @help_window = Window_Help.new
    @help_window.x = 0
    @help_window.y = 360
    @playtime_window = Window_PlayTime.new(384, 135)
    @mapname_window = Window_Mapname.new(384, 191)
  end
 
  def update
    super
    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
      update_command_selection2
    elsif @status_window.active
      update_actor_selection
    end
  end
 
  def terminate
    super
    dispose_menu_background
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @help_window.dispose
    @playtime_window.dispose
    @mapname_window.dispose
  end
 
  def create_command_window
    @command_window = Window_MenuCom.new(0, 0, 544, 80)
    @command_window.index = @menu_index
    @command_window.z = 200
  end

  def update_command_selection2
    case @command_window.index
    when 0
      @help_window.set_text(Zid::ITEMCMD_DESCRIPTION)
    when 1
      @help_window.set_text(Zid::SKILLCMD_DESCRIPTION)
    when 2
      @help_window.set_text(Zid::EQUIPCMD_DESCRIPTION)
    when 3
      @help_window.set_text(Zid::STATUSCMD_DESCRIPTION)
    when 4
      @help_window.set_text(Zid::BATTLECMD_DESCRIPTION)
    when 5
      @help_window.set_text(Zid::SAVECMD_DESCRIPTION)
    when 6
      @help_window.set_text(Zid::ENDCMD_DESCRIPTION)
    end
  end
end

class Window_PlayTime < Window_Base
  def initialize(x, y)
    super(x, y, 160, WLH + 32)
    refresh
  end
 
  def refresh
    self.contents.clear
    @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, -5, 120, 32, text, 2)
    draw_icon(188, 4, 0)
  end
 
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end

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

#==============================================================================
# Window_Mapname
#==============================================================================
class Window_Mapname < Window_Base
  def initialize(x, y)
    super(x, y, 160, WLH * 2 + 32)
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, -7, 120, 32, "Lokacja", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 20, 120, 32, $game_map.mapname.to_s, 2)
    draw_icon(2680, 4, -2)
  end
end

#==============================================================================
# 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


Pawelsar1 - Wto 10 Kwi, 2012 15:51

@przemusiek25
Wielkie dzięki. Dałem POMÓGŁ.

PS.
Mógłbyś usunąć swój poprzedni post, albo przynajmniej dać skrypt w spoilery?
Bardzo byłbym wdzięczny, gdybyś zrobić kurs ruby, czy coś takiego.


Powered by phpBB modified by Przemo © 2003 phpBB Group