UltimaForum

Skrypty [VX] - Menu Jednoosobowe [VX]

Ayene - Wto 27 Kwi, 2010 11:52
Temat postu: Menu Jednoosobowe [VX]
~ Menu Jednoosobowe [VX] ~

Krótki opis
Skrypt zmienia menu na jednoosobowe - wyświetlane są dane tylko pierwszej osoby w drużynie.

Autor skryptu
Matheus2

Poprawki
Ayene [yurika@o2.pl]

Kompatybilność
Tylko VX.

Skrypt
Spoiler:

Kod:
#==============================================================================
# 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_Status
#------------------------------------------------------------------------------#
class Window_Stats < Window_Base
  def initialize(actor)
    super(250, 240, 294, 176)
    @actor = actor
    refresh
  end

  def refresh
    self.contents.clear
    draw_actor_parameter(@actor, 0, 0 + WLH * 0, 0)
    draw_actor_parameter(@actor, 0, 0 + WLH * 1, 1)
    draw_actor_parameter(@actor, 0, 0 + WLH * 2, 2)
    draw_actor_parameter(@actor, 0, 0 + WLH * 3, 3)
  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_Equips
#------------------------------------------------------------------------------#
class Window_Equips < Window_Base
  def initialize(actor)
    super(0, 240, 250, 176)
    @actor = actor
    refresh
  end

  def refresh
    self.contents.clear
    @data = []
    for item in @actor.equips do @data.push(item) end
    @item_max = @data.size
    self.contents.font.color = system_color
    draw_item_name(@data[0], 0, WLH * 0)
    draw_item_name(@data[1], 0, WLH * 1)
    draw_item_name(@data[2], 0, WLH * 2)
    draw_item_name(@data[3], 0, WLH * 3)
    draw_item_name(@data[4], 0, WLH * 4)
  end
end

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

class Window_MenuStatus < Window_Selectable
  def initialize(x, y)
    super(0, 57, 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)
    draw_actor_mp(actor, x + 120, y + WLH * 2)
  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, 184)
    @status_window = Window_MenuStatus.new(160, 0)
    @map_window = Window_Map.new(160, 184)
    @equips_window = Window_Equips.new($game_party.members[0])
    @time_window = Window_Time.new(400, 184)
    @stats_window = Window_Stats.new($game_party.members[0])
  end

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

  def update
    super
    update_menu_background
    @command_window.update   
    @gold_window.update
    @status_window.update
    @time_window.update   
    update_command_selection
  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(544,[s1, s2, s3, s4, s5, s6],6,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_Skill.new(0)
      when 2
        $scene = Scene_Equip.new(0)
      when 3
        $scene = Scene_Status.new(0)
      when 4
        $scene = Scene_File.new(true, false, false)
      when 5
        $scene = Scene_End.new
      end
    end
  end
end


Demo
niepotrzebne

Screenshot
Spoiler:


Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Piszcie w razie problemów.

mjack1234 - Sro 28 Kwi, 2010 09:27

Dzięki!
Zadziałało....ale czy mi się zdaję czy strona wygasła na parę dni??

[ Dodano: Sro 28 Kwi, 2010 19:04 ]
Mam prośbę.czy dało by się to samo zrobić(z charem zamiast awatara)w menu status.Nie używam żadnego skryptu na status window.

(Sorki że double postuje ale chciałem mieć pewność aby ktoś zauważył nowy wpis)

Ayene - Czw 29 Kwi, 2010 15:26

Wejdź w klasę 'Window_Status', znajdź:
Kod:
draw_actor_face(@actor, 8, 32)

i zamień na:
Kod:
draw_actor_graphic(@actor, 40, 80)

mjack1234 - Czw 29 Kwi, 2010 18:06

Dzięki Ayene jesteś Boska !!!
Wiem że to jest lamowate wystarczyło zmienić jeden napis i położenie :mrgreen:
Ale może wiesz jakiś poradnik skryptowania zawsze chciałem tworzyć własne skrypty nie takie zaawansowane ale zawsze.

cj2 - Sro 02 Cze, 2010 06:16

W menu nie ma rozdawania punktów co poziom. Jak to zrobić?
Poster27 - Pią 29 Paź, 2010 18:49

Nie działa mi.Może być to spowodowane skryptem rozdawanie punktów co poziom lub błędami polskiego makera.W czystym projekcie działa.PS.Mam też skrypt "Nazwa lokacji w menu"
Ayene - Sob 30 Paź, 2010 09:20

W skrypcie wmontowana jest już nazwa lokacji na mapie, więc niepotrzebny jest Tobie dodatkowy skrypt. A co do połączenia skryptu rozdawania punktów z menu, to złóż osobne zamówienie w odpowiednim dziale, a zobaczę, co da się zrobić.
tracersgta - Nie 30 Paź, 2011 11:25

Odświeżę ten tamet, akurat kiedy mija rok od ostatniego postu. Potrzebuję aby skrypt był kompatybilny z Reqiem Upgrade(pkt. co poziom), bo dzieje się takie coś:
Spoiler:



POMOCY :cry: !

Ayene - Nie 30 Paź, 2011 12:00

Podmień skrypt na Menu na poniższy:
Spoiler:

Kod:
#==============================================================================
# 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_Status
#------------------------------------------------------------------------------#
class Window_Stats < Window_Base
  def initialize(actor)
    super(250, 264, 294, 152)
    @actor = actor
    refresh
  end

  def refresh
    self.contents.clear
    draw_actor_parameter(@actor, 0, 0 + WLH * 0, 0)
    draw_actor_parameter(@actor, 0, 0 + WLH * 1, 1)
    draw_actor_parameter(@actor, 0, 0 + WLH * 2, 2)
    draw_actor_parameter(@actor, 0, 0 + WLH * 3, 3)
  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_Equips
#------------------------------------------------------------------------------#
class Window_Equips < Window_Base
  def initialize(actor)
    super(0, 264, 250, 152)
    @actor = actor
    refresh
  end

  def refresh
    self.contents.clear
    @data = []
    for item in @actor.equips do @data.push(item) end
    @item_max = @data.size
    self.contents.font.color = system_color
    draw_item_name(@data[0], 0, WLH * 0)
    draw_item_name(@data[1], 0, WLH * 1)
    draw_item_name(@data[2], 0, WLH * 2)
    draw_item_name(@data[3], 0, WLH * 3)
    draw_item_name(@data[4], 0, WLH * 4)
  end
end

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

class Window_MenuStatus < Window_Selectable
  def initialize(x, y)
    super(0, 80, 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)
    draw_actor_mp(actor, x + 120, y + WLH * 2)
  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, 208)
    @status_window = Window_MenuStatus.new(160, 0)
    @map_window = Window_Map.new(160, 208)
    @equips_window = Window_Equips.new($game_party.members[0])
    @time_window = Window_Time.new(400, 208)
    @stats_window = Window_Stats.new($game_party.members[0])
  end

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

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

  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = "Punkty"
    s6 = Vocab::save
    s7 = Vocab::game_end   
    @command_window = Window_Command.new(544,[s1, s2, s3, s4, s5, s6, s7],4,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_Skill.new(0)
      when 2
        $scene = Scene_Equip.new(0)
      when 3
        $scene = Scene_Status.new(0)
      when 4
        $scene = Scene_RequiemUpgrade.new(0, true)
      when 5
        $scene = Scene_File.new(true, false, false)
      when 6
        $scene = Scene_End.new
      end
    end
  end 
end

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

#------------------------------------------------------------------------------
class Scene_End < Scene_Base
 
  def return_scene
    $scene = Scene_Menu.new(6)
  end
end



W skrypcie na rozdawanie punktów znajdź:
Kod:
class Scene_Menu < Scene_Base

i usuń wszystko co jest poniżej łącznie z tą linijką.

tracersgta - Nie 30 Paź, 2011 12:45

Ayene to synonim do słowa "niezawodność" :mrgreen: . Dzięki wielkie!!!
bartek2940 - Wto 24 Sty, 2012 20:06

Witajcie... Wiem, wiem... Miałem nie mieć problemów :killer:
Ale cóż... Wpadłem na pomysł i się pytam:
Czy nie można by, tam jak po prawej jest tyle miejsca, wstawić np. paska EXP (choć on by mógł być pod HP i MP), albo liczacza (wiem, że to niepoprawne...) kroków?
I tu moja prośba, drodzy skrypterzy, czy mógłby mi ktoś w tamto miejsce wstawić licznik kroków, lub inny bajer i pasek EXP pod HP i MP?
Z góry dzięki, jak będziecie mieli chwilę czasu, to może byście mogli się tym zająć. Sprawa nie jest pilna, ale po prostu uważam, że coś mogłoby tam być, a pasek EXP w menu, to coś co lubię :-P
Więc, jakby ktoś miał chwilę czasu i zdolnośći, to gdyby mógł...
Z góry dzięki. :mrgreen:
Wiem, że parę minut temu mówiłem, że postaram się nie mieć problemów... :-o

Pawelsar1 - Nie 08 Kwi, 2012 15:25

!!!!POMOCY!!!!
Mam problem z tym skryptem. Wszystko mi dobrze wyświetla, ale nie mogę dodać bohatera do drużyny. Mam skrypty odpowiadające za walkę w czasie rzeczywistym i bohater powinien wyświetlać się na mapie, a nie wyświetla.

Ayene - Nie 08 Kwi, 2012 19:07

Zanim dodałeś ten skrypt wszystko było w porządku? Jakoś nie wydaje mi się...

Powered by phpBB modified by Przemo © 2003 phpBB Group