UltimaForum

Skrypty [XP] - Kategoryzacja przedmiotów [XP]

Ayene - Sob 05 Maj, 2012 19:38
Temat postu: Kategoryzacja przedmiotów [XP]
~ Kategoryzacja przedmiotów [XP] ~


Krótki opis:
Skrypt umożliwia grupowanie przedmiotów w Plecaku w dowolne kategorie, np. bronie, mapy, przedmioty leczące, klucze itd. W tym celu wystarczy odpowiednio skonfigurować linijki w skrypcie (sekcja Konfiguracja).

Autor:
Ayene [yurika@o2.pl]

Kompatybilność:
RPG Maker XP

Skrypt:
Spoiler:

Kod:
#==============================================================================
# Kategoryzacja przedmiotów [XP]
# by Ayene
# 05.05.2012 ver 1.0
# www.ultimateam.pl
#==============================================================================
# Opis:
# Skrypt umożliwia grupowanie przedmiotów w Plecaku w dowolne kategorie, np.
# bronie, mapy, przedmioty leczące, klucze itd. W tym celu wystarczy
# odpowiednio skonfigurować linijki poniżej (sekcja Konfiguracja).
#==============================================================================
# Konfiguracja:
#==============================================================================
module AYE
  module ITEM_CAT
 
  # Poszczególne kategorie przedmiotów wymienione po przecinku.
  # Muszą być zadeklarowane w CATEGORY_NAME i CATEGORY_ITEMS
 
  ITEM_CATEGORIES = [:item, :battle, :weapon, :armor,
                     :acc, :quest, :notes, :maps, :keys, :all]
 
  # Nazwy ketegorii                   
  CATEGORY_NAME = { # <- nie usuwać
 
  # :symbol => ["Komenda", "Opis", "Ikona"],
 
  :item   => ["Potiony", "Wyświetla przedmioty do konsumpcji.", "021-Potion01"],
  :battle => ["Przedmioty do walki", "Wyświetla przedmioty używane w walce.", "032-Item01"],
  :weapon => ["Bronie", "Wyświetla wszystkie bronie.", "001-Weapon01"],
  :armor  => ["Pancerze", "Wyświetla pancerze.", "013-Body01"],
  :acc    => ["Akcesoria", "Wyświetla akcesoria.", "017-Accessory02"],
  :quest  => ["Misje", "Wyświetla przedmioty kluczowe dla fabuły.", "035-Item04"],   
  :notes  => ["Notatki", "Wyświetla notatki i skrole.", "040-Item09"],
  :maps   => ["Mapy", "Wyświetla mapy.", "038-Item07"],
  :keys   => ["Klucze", "Wyświetla klucze.", "029-Key01"],
  :all    => ["Wszystkie przedmioty", "Wyświetla wszystkie przedmioty.", "034-Item03"],
 
  } # <- nie usuwać
 
  # Przedmioty przypisane do kategorii
 
  CATEGORY_ITEMS = { # <- nie usuwać
 
  # :symbol =>   ["Typ" ,   [ID, ID, ID, ...],
  # gdzie: Typ w bazie danych - Item (przedmiot), Weapon (broń), Armor (pancerz),
  #        :all - wszystkie kategorie
   
    :item   =>   ["Item",   [1, 2, 3]],
    :battle =>   ["Item",   [4, 5, 6]],
    :weapon =>   ["Weapon", :all],
    :armor =>    ["Armor",  [1, 2, 3]],
    :acc   =>    ["Armor",  [11, 12, 13]],
    :quest =>    ["Item",   [21, 22]],
    :notes =>    ["Item",   [8, 9, 10]],
    :maps =>     ["Item",   [27]],
    :keys =>     ["Item",   [23, 24, 25]],
    :all   =>    [:all,     :all]
 
    } # <- nie usuwać
 
  end
end

class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :item_menu               
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias aye_itemcat_gmtemp_ini initialize
  def initialize
    aye_itemcat_gmtemp_ini
    @item_menu = false
  end
end


#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
  def all_item_number(item)
    case item
    when RPG::Weapon
      return @weapons.include?(item.id) ? @weapons[item.id] : 0   
    when RPG::Armor
      return @armors.include?(item.id) ? @armors[item.id] : 0   
    else
      return @items.include?(item.id) ? @items[item.id] : 0   
    end
  end
end

class Window_Help < Window_Base
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)   
    if $game_temp.item_menu
      self.y = 480 - height
    end   
  end
end

#==============================================================================
# ** Window_ItemHelp
#==============================================================================
class Window_ItemHelp < Window_Base
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    cw = 32 + ITEM_CATEGORIES.size * 32
    super(cw, 0, 640-cw, 64)   
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(index)
    if index != @index
      self.contents.clear
      self.contents.font.color = normal_color
      text = CATEGORY_NAME[ITEM_CATEGORIES[index]][0]
      self.contents.draw_text(4, 0, self.width - 40, 32, text, 1)
      @index = index
    end
  end
end

#==============================================================================
# ** Window_ItemCategory
#==============================================================================
class Window_ItemCategory < Window_Selectable
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize   
    cw = 32 + ITEM_CATEGORIES.size * 32   
    super(0, 0, cw, 64)
    @commands = ITEM_CATEGORIES
    @item_max = @commands.size
    @column_max = @item_max
    self.contents = Bitmap.new(cw - 32, height - 32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @commands.each_with_index {|com, i|draw_item(com, i)}   
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #     color : text character color
  #--------------------------------------------------------------------------
  def draw_item(command, index)
    rect = Rect.new(0, 0, 24, 24)
    bitmap = RPG::Cache.icon(CATEGORY_NAME[command][2])
    self.contents.blt(4 + 32 * index, 4, bitmap, rect)   
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(@index * 32, 0, 32, 32)
  end
end

#==============================================================================
# ** Window_Item
#==============================================================================
class Window_Item < Window_Selectable
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 352)
    @column_max = 2
    unless $game_temp.in_battle
      category(0)
      self.active = false
    end
    refresh
    self.index = 0   
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # * Category
  #--------------------------------------------------------------------------
  def category(index)
    self.index = 0
    @items = []
    @category = ITEM_CATEGORIES[index]
    @itemtype = CATEGORY_ITEMS[@category][0]
    if @category != :all
      @items = CATEGORY_ITEMS[@category][1]
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if $game_temp.in_battle
      for i in 1...$data_items.size
        if $game_party.item_number(i) > 0
          @data.push($data_items[i])
        end
      end
    else
      @all_item = []   
      case @itemtype
      when "Item"
        @all_item = $data_items
      when "Weapon"
        @all_item = $data_weapons
      when "Armor"
        @all_item = $data_armors
      else
        @all_item = $data_items + $data_weapons + $data_armors
      end
      @all_item.each{|item|
        unless item == nil
          if $game_party.all_item_number(item) > 0
            if @category != :all and @items != :all
              if @items.include?(item.id)
                @data.push(item)
              end
            else
              @data.push(item)
            end
          end
        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
end

#==============================================================================
# ** Scene_Item
#==============================================================================
class Scene_Item
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_main main
  def main
    $game_temp.item_menu = true
    @category_window = Window_ItemCategory.new
    @catname_window = Window_ItemHelp.new
    @catname_window.set_text(@category_window.index)
    aye_itemcat_scitem_main   
    $game_temp.item_menu = false
    @category_window.dispose
    @catname_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_update update
  def update
    @category_window.update
    @catname_window.update
    if @category_window.active
      update_category
      return
    end
    aye_itemcat_scitem_update
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when category window is active)
  #--------------------------------------------------------------------------
  def update_category
    @help_window.set_text(CATEGORY_NAME[ITEM_CATEGORIES[@category_window.index]][1])
    @item_window.category(@category_window.index)
    if Input.repeat?(Input::RIGHT) || Input.repeat?(Input::LEFT)
      @item_window.refresh
      @catname_window.set_text(@category_window.index)
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0)
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @item_window.active = true
      @category_window.active = false
      return
    end   
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_update_item update_item
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_window.active = false
      @category_window.active = true
      return
    else       
      aye_itemcat_scitem_update_item
      return
    end   
  end
end
end


Screeny:
Spoiler:



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

leszekp321 - Sob 05 Maj, 2012 22:18

A dało by się tak zrobić żeby to wywołać shiftem ?
Ayene - Sob 05 Maj, 2012 23:10

Ustawiasz typowe zdarzenie (Common Event) na równoległe (parellel). W jego treści dajesz warunek (conditional branch), że jeśli wciśnięty przycisk A to... Następnie wybierasz opcję 'Script' i w okienku wpisujesz:
Kod:
$scene = Scene_Item.new

KunoSava - Nie 06 Maj, 2012 05:58

Jak by się trochę pobawić z grafikami i zdarzeniami można by było zrobić osiągnięcia z tym skryptem ;D
Roki132 - Nie 06 Maj, 2012 12:17

Gdy mam jakiś item w plecaku, wyskakuje mi taki error:
Spoiler:



Jak coś, to jest ta linijka:

Spoiler:

Kod:
    draw_item(i)


Ayene - Nie 06 Maj, 2012 13:58

Nie wiem, co może być źle. Mógłbyś wrzucić projekt z błędem np. na www.mediafire.com ?
Roki132 - Nie 06 Maj, 2012 14:51

Niestety, całego projektu dać nie mogę, ale wysyłam ogołocony.

Projekt

Ayene - Nie 06 Maj, 2012 15:05

Masz błąd kompatybilności, bo korzystasz ze skryptu, który nadpisuje klasę Window_Item. Zrób tak:
Wejdź w skrypt 'ITEM_CAT' i znajdź linijkę:
Kod:
class Window_Item < Window_Selectable

zamień ją na:
Kod:
class Window_Item < Window_Selectable_Plus

następnie znajdź:
Kod:
super(0, 64, 640, 352)

i zamień ją na:
Kod:
super(0, 64, 640, 352, 32)

Dobrze przetestuj.

Roki132 - Nie 06 Maj, 2012 15:08

Ayene, jesteś BOSKA przez duże B ;) .
Dzięki.

varden01 - Pon 07 Maj, 2012 17:30

Fajny skrypt ale miałbym małą prośbę o przerobienie go: mianowicie potrzebuję zmienić w nim czcionkę. Nie znalazłem takiej opcji w aktualnej wersji skryptu a czcionka domyślna zupełnie nie pasuje :-(
Ayene - Pon 07 Maj, 2012 17:41

varden01, chcesz tylko zmienić czcionkę w tym skrypcie, czy ogólnie dla całej gry?
varden01 - Pon 07 Maj, 2012 18:28

Jeśli chodzi o zmianę czcionki w Main to już dawno to zrobiłem :-) póki co tylko w tym skrypcie, w reszcie narazie mam pozmieniane :-)
EDIT:
Ayene, to pomóż mi z tą czcionką w skrypcie plis..

Helseth - Wto 07 Sie, 2012 16:16

Mam mały problem z tym skryptem

Przypisałem wszystkie przedmioty do skryptu, wszystko działało bez zarzutów, dopóki nie natknąłem się na mały problem...
Jeden z przypisanych przedmiotów z kategori "item" z numerem 4 powoduje mi taki oto błąd :



Metodą prób i błędów udało mi się ustalić że to właśnie ten przedmiot sprawia problem :P
co ciekawe gdy w bazie danych zmienię liczbę np z 4 na 34 lub dowolnie problem się nie pojawia ( gdy włączę gre i w menu wybiorę "przedmioty" i tą zakładkę w której pojawia się wyżej opisany przedmiot wywala błąd xd )

Próbowałem juz wszystkiego, zmiany w bazie danych, zmianę ikony, sprawdzałem czy dobrze numer 4 przypisany jest w skrypcie i dosłownie nic :/ wszystko jest ok...

Nie mam pojęcia dlaczego akurat ten pechowy numer 4 ( w moim projekcie jest to mała miksturka lecząca mane ;P )

Błąd odkryłem przypadkowo mianowicie w jednej ze skrzynek znajduje się 5 takich miksturek, i gdy wchodzę w menu-przedmioty pojawia się ten błąd, z każdym innym przedmiotem w tej samej skrzynce wszystko działa poprawnie :P

oczywiście mogę zmienić ten numer z 4 na pierwszy wolny, ale w plecaku segreguje przedmioty według numeru w bazie danych więc to by dziwnie wyglądało...

Jakieś pomysły co może być nie tak :> ?

Feniks - Wto 07 Sie, 2012 16:49

A może nazwa za długa? Sprawdź :3
Ayene - Sro 08 Sie, 2012 00:20

Helseth, wyślij mi swój projekt na PW. Może masz problem kompatybilności. Tak 'na sucho' nic błyskotliwego nie przychodzi mi do głowy.
Helseth - Sro 08 Sie, 2012 01:16

Ten projekt jest już za duży żeby go wysłać ;P

Problem kompatybilności zdecydowanie, bo z tą samą bazą danych na czystym projekcie działa normalnie.
Dziwne ,że dotyczy to tylko numeru 4 :) nawet jeśli skasuje dotychczasowy numer 4 z bazy danych , i wpisze tam cokolwiek innego to i tak wywala błąd :)

może to nie rozwiązanie ale przesunąłem wszystkie przedmioty o jeden w górę pomijając 4 i o dziwo działa ^^
więc póki co zostanę przy tym chyba, że jeszcze kiedyś przy testowaniu pojawi sie ten błąd ponownie to być może zrezygnuje z tego skryptu... chociaż jest bardzo fajny :(

Ayene - Nie 19 Sie, 2012 10:33

Już wiem, gdzie był błąd. Dobrze napisałeś. Skrypt dodawał z bazy danych przedmioty z ID 0. Teraz powinno śmigać. Oto cały skrypt:
Spoiler:

Kod:
#==============================================================================
# Kategoryzacja przedmiotów [XP]
# by Ayene
# 05.05.2012 ver 1.0
# www.ultimateam.pl
#==============================================================================
# Opis:
# Skrypt umożliwia grupowanie przedmiotów w Plecaku w dowolne kategorie, np.
# bronie, mapy, przedmioty leczące, klucze itd. W tym celu wystarczy
# odpowiednio skonfigurować linijki poniżej (sekcja Konfiguracja).
#==============================================================================
# Konfiguracja:
#==============================================================================
module AYE
  module ITEM_CAT
 
  # Poszczególne kategorie przedmiotów wymienione po przecinku.
  # Muszą być zadeklarowane w CATEGORY_NAME i CATEGORY_ITEMS
 
  ITEM_CATEGORIES = [:item, :battle, :weapon, :armor,
                     :acc, :quest, :notes, :maps, :keys, :all]
 
  # Nazwy ketegorii                   
  CATEGORY_NAME = { # <- nie usuwać
 
  # :symbol => ["Komenda", "Opis", "Ikona"],
 
  :item   => ["Potiony", "Wyświetla przedmioty do konsumpcji.", "021-Potion01"],
  :battle => ["Przedmioty do walki", "Wyświetla przedmioty używane w walce.", "032-Item01"],
  :weapon => ["Bronie", "Wyświetla wszystkie bronie.", "001-Weapon01"],
  :armor  => ["Pancerze", "Wyświetla pancerze.", "013-Body01"],
  :acc    => ["Akcesoria", "Wyświetla akcesoria.", "017-Accessory02"],
  :quest  => ["Misje", "Wyświetla przedmioty kluczowe dla fabuły.", "035-Item04"],   
  :notes  => ["Notatki", "Wyświetla notatki i skrole.", "040-Item09"],
  :maps   => ["Mapy", "Wyświetla mapy.", "038-Item07"],
  :keys   => ["Klucze", "Wyświetla klucze.", "029-Key01"],
  :all    => ["Wszystkie przedmioty", "Wyświetla wszystkie przedmioty.", "034-Item03"],
 
  } # <- nie usuwać
 
  # Przedmioty przypisane do kategorii
 
  CATEGORY_ITEMS = { # <- nie usuwać
 
  # :symbol =>   ["Typ" ,   [ID, ID, ID, ...],
  # gdzie: Typ w bazie danych - Item (przedmiot), Weapon (broń), Armor (pancerz),
  #        :all - wszystkie kategorie
   
    :item   =>   ["Item",   [1, 2, 3]],
    :battle =>   ["Item",   [4, 5, 6]],
    :weapon =>   ["Weapon", :all],
    :armor =>    ["Armor",  [1, 2, 3]],
    :acc   =>    ["Armor",  [11, 12, 13]],
    :quest =>    ["Item",   [21, 22]],
    :notes =>    ["Item",   [8, 9, 10]],
    :maps =>     ["Item",   [27]],
    :keys =>     ["Item",   [23, 24, 25]],
    :all   =>    [:all,     :all]
 
    } # <- nie usuwać
 
  end
end

class Game_Temp
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :item_menu               
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias aye_itemcat_gmtemp_ini initialize
  def initialize
    aye_itemcat_gmtemp_ini
    @item_menu = false
  end
end


#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
  def all_item_number(item)
    case item
    when RPG::Weapon
      return @weapons.include?(item.id) ? @weapons[item.id] : 0   
    when RPG::Armor
      return @armors.include?(item.id) ? @armors[item.id] : 0   
    else
      return @items.include?(item.id) ? @items[item.id] : 0   
    end
  end
end

class Window_Help < Window_Base
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)   
    if $game_temp.item_menu
      self.y = 480 - height
    end   
  end
end

#==============================================================================
# ** Window_ItemHelp
#==============================================================================
class Window_ItemHelp < Window_Base
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    cw = 32 + ITEM_CATEGORIES.size * 32
    super(cw, 0, 640-cw, 64)   
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(index)
    if index != @index
      self.contents.clear
      self.contents.font.color = normal_color
      text = CATEGORY_NAME[ITEM_CATEGORIES[index]][0]
      self.contents.draw_text(4, 0, self.width - 40, 32, text, 1)
      @index = index
    end
  end
end

#==============================================================================
# ** Window_ItemCategory
#==============================================================================
class Window_ItemCategory < Window_Selectable
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize   
    cw = 32 + ITEM_CATEGORIES.size * 32   
    super(0, 0, cw, 64)
    @commands = ITEM_CATEGORIES
    @item_max = @commands.size
    @column_max = @item_max
    self.contents = Bitmap.new(cw - 32, height - 32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @commands.each_with_index {|com, i|draw_item(com, i)}   
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #     color : text character color
  #--------------------------------------------------------------------------
  def draw_item(command, index)
    rect = Rect.new(0, 0, 24, 24)
    bitmap = RPG::Cache.icon(CATEGORY_NAME[command][2])
    self.contents.blt(4 + 32 * index, 4, bitmap, rect)   
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(@index * 32, 0, 32, 32)
  end
end

#==============================================================================
# ** Window_Item
#==============================================================================
class Window_Item < Window_Selectable
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 352)
    @column_max = 2
    unless $game_temp.in_battle
      category(0)
      self.active = false
    end
    refresh
    self.index = 0   
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # * Category
  #--------------------------------------------------------------------------
  def category(index)
    self.index = 0
    @items = []
    @category = ITEM_CATEGORIES[index]
    @itemtype = CATEGORY_ITEMS[@category][0]
    if @category != :all
      @items = CATEGORY_ITEMS[@category][1]
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if $game_temp.in_battle
      for i in 1...$data_items.size
        if $game_party.item_number(i) > 0
          @data.push($data_items[i])
        end
      end
    else
      @all_item = []   
      case @itemtype
      when "Item"
        @all_item = $data_items
      when "Weapon"
        @all_item = $data_weapons
      when "Armor"
        @all_item = $data_armors
      else
        @all_item = $data_items + $data_weapons + $data_armors
      end
      @all_item.each{|item|
        unless item == nil
          if $game_party.all_item_number(item) > 0
            if @category != :all and @items != :all
              if @items.include?(item.id)
                @data.push(item)
              end
            else
              @data.push(item)
            end
          end
        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
end

#==============================================================================
# ** Scene_Item
#==============================================================================
class Scene_Item
  include AYE::ITEM_CAT
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_main main
  def main
    $game_temp.item_menu = true
    @category_window = Window_ItemCategory.new
    @catname_window = Window_ItemHelp.new
    @catname_window.set_text(@category_window.index)
    aye_itemcat_scitem_main   
    $game_temp.item_menu = false
    @category_window.dispose
    @catname_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_update update
  def update
    @category_window.update
    @catname_window.update
    if @category_window.active
      update_category
      return
    end
    aye_itemcat_scitem_update
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when category window is active)
  #--------------------------------------------------------------------------
  def update_category
    @help_window.set_text(CATEGORY_NAME[ITEM_CATEGORIES[@category_window.index]][1])
    @item_window.category(@category_window.index)
    if Input.repeat?(Input::RIGHT) || Input.repeat?(Input::LEFT)
      @item_window.refresh
      @catname_window.set_text(@category_window.index)
    end
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(0)
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @item_window.active = true
      @category_window.active = false
      return
    end   
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  alias aye_itemcat_scitem_update_item update_item
  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_window.active = false
      @category_window.active = true
      return
    else       
      aye_itemcat_scitem_update_item
      return
    end   
  end
end


Proszę o zaktualizowanie pierwszego posta.

[ Komentarz dodany przez: Nhadala: Nie 19 Sie, 2012 11:56 ]
Post został zaktualizowany :-)

Trzynasty - Sob 16 Mar, 2013 16:18

A co jeśli nie chcę np. Misje, Notatki, itp. ?
Jak usunąć ?


Powered by phpBB modified by Przemo © 2003 phpBB Group