Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Podział przedmiotów w menu
Autor Wiadomość
Ozzma 




Preferowany:
RPG Maker VX

Pomogła: 1 raz
Dołączyła: 26 Wrz 2009
Posty: 88
Skąd: Stumilowy Las
Wysłany: Pią 09 Paź, 2009 13:17
Podział przedmiotów w menu
Cześć ;-)
Tym razem do listy skryptów VX dodam kolejny. Powoduje on podział przedmiotów na; zwykłe, bronie, pancerze i itemki specjalne.

Jeśli chcemy żeby item był specjalny to w Note danego przedmiotu dajemy informację
:arrow: Specjalne.

Print screen:
Spoiler:




Skrypt wklejamy nad main.

Spoiler:

Kod:
module Ozzma
#==============================================================================
# Podział przedmiotów w menu modyfied by Ozzma
#==============================================================================
module Przedmioty
   
    Key_Note    = "Specjalne"
    All_Text    = "Wszystko"
    Item_Text   = "Przedmiot"
    Weapon_Text = "Broń"
    Armor_Text  = "Pancerz"
    Key_Text    = "Specjalne"
   
#------------------------------------------------------------------------
# Po wejściu w przedmioty naciśnij Shift, żeby wybrać grupę.
# Przy przedmiocie, który chcemy uczynić specjalny, dopisujemy w
# notatkach (Note) w bazie danych (Database) słowo - Specjalne
#------------------------------------------------------------------------
   
    All_Desc = "Pokaż wszystko"
    Item_Desc = "Pokaż zwykłe przedmioty"
    Weapon_Desc = "Pokaż broń"
    Armor_Desc = "Pokaż pancerz"
    Key_Desc = "Pokaż przedmioty specjalne"
   
end
end 

class Game_Party < Game_Unit
 
  def items
    result = []
    for i in @items.keys.sort
      item = $data_items[i]
      unless item.note.include?("Specjalne")
        result.push($data_items[i]) if @items[i] > 0
      end 
    end
    for i in @weapons.keys.sort
      result.push($data_weapons[i]) if @weapons[i] > 0
    end
    for i in @armors.keys.sort
      result.push($data_armors[i]) if @armors[i] > 0
    end
    for i in @items.keys.sort
      item = $data_items[i]
      if @items[i] > 0 and item.note.include?("Specjalne")
        result.push($data_items[i])
      end 
    end   
    return result
  end
end

class Game_Temp
 
  alias puppet_item_enhance_initialize initialize
 
  attr_accessor :show_items               
  attr_accessor :show_weapons             
  attr_accessor :show_armors               
  attr_accessor :show_keys               
 
  def initialize
    puppet_item_enhance_initialize         
    @show_items = false                     # true/false
    @show_weapons = false                   # true/false
    @show_armors = false                    # true/false
    @show_keys = false                      # true/false
  end
end

class Window_Item < Window_Selectable
 
  include Ozzma::Przedmioty
 
  alias puppet_enhance_item_include? include? 
 
  def include?(item)
    puppet_enhance_item_include?(item)
    return false if item == nil
    if $game_temp.show_items
     
      return false if item.note.include?(Key_Note)
     
      return false unless item.is_a?(RPG::Item)
    elsif $game_temp.show_weapons
     
      return false unless item.is_a?(RPG::Weapon)
    elsif $game_temp.show_armors
     
      return false unless item.is_a?(RPG::Armor)
    elsif $game_temp.show_keys
     
      return false unless item.note.include?(Key_Note)
    end 
    if $game_temp.in_battle
      return false unless item.is_a?(RPG::Item)
    end
    return true
  end
 
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      number = $game_party.item_number(item)
      enabled = enable?(item)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enabled)
      unless item.note.include?("Specjalne")
        self.contents.draw_text(rect, sprintf(":%2d", number), 2)
      end 
    end
  end
end

class Scene_Item < Scene_Base
 
  include Ozzma::Przedmioty
 
  alias puppet_item_enhance_start start
  alias puppet_item_enhance_terminate terminate
  alias puppet_item_enhance_return_scene return_scene
  alias puppet_item_enhance_update update
 
  def start
    puppet_item_enhance_start
    create_filter_window
    @help_window.y = 56
    @item_window.y = 112
    @item_window.height = 304
  end
 
  def terminate
    puppet_item_enhance_terminate
    @filter_window.dispose
  end
 
  def return_scene
    set_filter(0)
    puppet_item_enhance_return_scene
  end 
 
  def update
    puppet_item_enhance_update
    @filter_window.update
    update_input_filter
    update_help_window
  end
 
  def update_input_filter
    if @item_window.active
      if Input.trigger?(Input::A)
        Sound.play_decision
        @item_window.active = false
        @filter_window.active = true
        @item_window.index = 0
      end
    elsif @filter_window.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @filter_window.active = false         
        @item_window.active = true
      elsif Input.trigger?(Input::C)
        case @filter_window.index
        when 0;  set_filter(0)
        when 1;  set_filter(1)
        when 2;  set_filter(2) 
        when 3;  set_filter(3) 
        when 4;  set_filter(4) 
        end
      end
    end 
  end 
 
  def update_help_window
    if @filter_window.active
      case @filter_window.index
      when 0;  @help_window.set_text(All_Desc, 1)
      when 1;  @help_window.set_text(Item_Desc, 1)
      when 2;  @help_window.set_text(Weapon_Desc, 1)
      when 3;  @help_window.set_text(Armor_Desc, 1)
      when 4;  @help_window.set_text(Key_Desc, 1)
      end
    end 
  end 
 
  def create_filter_window
    s1 = All_Text
    s2 = Item_Text
    s3 = Weapon_Text
    s4 = Armor_Text
    s5 = Key_Text
    @filter_window = Window_Command.new(544, [s1, s2, s3, s4, s5], 5)
    @filter_window.y = 0
    @filter_window.viewport = @viewport
    @filter_window.active = false
    @filter_window.contents.font.size = 18
    @filter_window.draw_item(0, true, 1)
    @filter_window.draw_item(1, true, 1)
    @filter_window.draw_item(2, true, 1)
    @filter_window.draw_item(3, true, 1)
    @filter_window.draw_item(4, true, 1)
  end 
 
  def set_filter(filter = 0)
    Sound.play_decision
    @filter = filter
    if @filter == 1
      $game_temp.show_items = true
    else
      $game_temp.show_items = false
    end
    if @filter == 2
      $game_temp.show_weapons = true
    else 
      $game_temp.show_weapons = false
    end
    if @filter == 3
      $game_temp.show_armors = true
    else 
      $game_temp.show_armors = false
    end
    if @filter == 4
      $game_temp.show_keys = true
    else 
      $game_temp.show_keys = false
    end
    @item_window.refresh
  end 
end

class Window_Command < Window_Selectable
 
  def draw_item(index, enabled = true, align = 0)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    @align = align
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], @align)
  end
end



PS:
Super pomysł z tym tagiem code :jupi:
________________________
Ostatnio zmieniony przez Nhadala Sob 13 Lut, 2010 15:56, w całości zmieniany 2 razy  
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Sob 13 Lut, 2010 13:08
Ej a da się tak żeby jak jest te małe okienko pośrodku to żeby te same było na dole???
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 13 Lut, 2010 15:13
Jakie okienko pośrodku? Te z napisem 'restores 500 HP...'?
________________________


 
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Sob 13 Lut, 2010 15:28
No o to tam gdzie są różne te informacje...
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 13 Lut, 2010 15:35
Precyzuj się dokładnie i nie pisz półsłówkami. Czyli chcesz przesunąć to okno na sam dół tak, a okno z listą przedmiotów podwyższyć?!
________________________


 
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Sob 13 Lut, 2010 15:41
Chodzi mi o takie coś:
SCREEN
Spoiler:



Ostatnio zmieniony przez Nhadala Sob 13 Lut, 2010 15:56, w całości zmieniany 1 raz  
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 13 Lut, 2010 15:45
Ale wówczas ten sam tekst będzie się wyświetlał w obu oknach. Przecież to będzie dziwnie wyglądać.
________________________


 
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Sob 13 Lut, 2010 15:50
A nie dało by się tak żeby w górnym oknie wyświetlał się ten tekst co jest , a w dolnym że SHIFT - zmiana zakładki ENTER/SPACJA - użycie przedmiotu
________________________
Pomogłem? Daj ""
Piszę poprawnie po polsku

 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Sob 13 Lut, 2010 16:07
Aha. To teraz rozumiem. Sprawdź czy działa. Podmień na poniższy skrypt:
Spoiler:

Kod:
module Ozzma
#==============================================================================
# Podział przedmiotów w menu modyfied by Ozzma
#==============================================================================
module Przedmioty
   
    Key_Note    = "Specjalne"
    All_Text    = "Wszystko"
    Item_Text   = "Przedmiot"
    Weapon_Text = "Broń"
    Armor_Text  = "Pancerz"
    Key_Text    = "Specjalne"
   
#------------------------------------------------------------------------
# Po wejściu w przedmioty naciśnij Shift, żeby wybrać grupę.
# Przy przedmiocie, który chcemy uczynić specjalny, dopisujemy w
# notatkach (Note) w bazie danych (Database) słowo - Specjalne
#------------------------------------------------------------------------   
    All_Desc = "Pokaż wszystko"
    Item_Desc = "Pokaż zwykłe przedmioty"
    Weapon_Desc = "Pokaż broń"
    Armor_Desc = "Pokaż pancerz"
    Key_Desc = "Pokaż przedmioty specjalne"   
end
end

class Game_Party < Game_Unit
  def items
    result = []
    for i in @items.keys.sort
      item = $data_items[i]
      unless item.note.include?("Specjalne")
        result.push($data_items[i]) if @items[i] > 0
      end
    end
    for i in @weapons.keys.sort
      result.push($data_weapons[i]) if @weapons[i] > 0
    end
    for i in @armors.keys.sort
      result.push($data_armors[i]) if @armors[i] > 0
    end
    for i in @items.keys.sort
      item = $data_items[i]
      if @items[i] > 0 and item.note.include?("Specjalne")
        result.push($data_items[i])
      end
    end   
    return result
  end
end

class Game_Temp
 
  alias puppet_item_enhance_initialize initialize
 
  attr_accessor :show_items               
  attr_accessor :show_weapons             
  attr_accessor :show_armors               
  attr_accessor :show_keys               
 
  def initialize
    puppet_item_enhance_initialize         
    @show_items = false                     # true/false
    @show_weapons = false                   # true/false
    @show_armors = false                    # true/false
    @show_keys = false                      # true/false
  end
end

class Window_Item < Window_Selectable
 
  include Ozzma::Przedmioty
 
  alias puppet_enhance_item_include? include?
 
  def include?(item)
    puppet_enhance_item_include?(item)
    return false if item == nil
    if $game_temp.show_items
     
      return false if item.note.include?(Key_Note)
     
      return false unless item.is_a?(RPG::Item)
    elsif $game_temp.show_weapons
     
      return false unless item.is_a?(RPG::Weapon)
    elsif $game_temp.show_armors
     
      return false unless item.is_a?(RPG::Armor)
    elsif $game_temp.show_keys
     
      return false unless item.note.include?(Key_Note)
    end
    if $game_temp.in_battle
      return false unless item.is_a?(RPG::Item)
    end
    return true
  end
 
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      number = $game_party.item_number(item)
      enabled = enable?(item)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enabled)
      unless item.note.include?("Specjalne")
        self.contents.draw_text(rect, sprintf(":%2d", number), 2)
      end
    end
  end
end

class Scene_Item < Scene_Base
 
  include Ozzma::Przedmioty
 
  alias puppet_item_enhance_start start
  alias puppet_item_enhance_terminate terminate
  alias puppet_item_enhance_return_scene return_scene
  alias puppet_item_enhance_update update
 
  def start
    puppet_item_enhance_start
    create_filter_window
    @info_window = Window_Help.new
    @info_window.y = 360
    @info_window.set_text("SHIFT - zmiana zakładki; ENTER/SPACJA - użycie przedmiotu",1)
    @help_window.y = 56     
    @item_window.y = 112
    @item_window.height = 248
  end
 
  def terminate
    puppet_item_enhance_terminate
    @filter_window.dispose
    @info_window.dispose
  end
 
  def return_scene
    set_filter(0)
    puppet_item_enhance_return_scene
  end
 
  def update
    puppet_item_enhance_update
    @filter_window.update
    @info_window.update
    update_input_filter
    update_help_window
  end
 
  def update_input_filter
    if @item_window.active
      if Input.trigger?(Input::A)
        Sound.play_decision
        @item_window.active = false
        @filter_window.active = true
        @item_window.index = 0
      end
    elsif @filter_window.active
      if Input.trigger?(Input::B)
        Sound.play_cancel
        @filter_window.active = false         
        @item_window.active = true
      elsif Input.trigger?(Input::C)
        case @filter_window.index
        when 0;  set_filter(0)
        when 1;  set_filter(1)
        when 2;  set_filter(2)
        when 3;  set_filter(3)
        when 4;  set_filter(4)
        end
      end
    end
  end
 
  def update_help_window
    if @filter_window.active
      case @filter_window.index
      when 0;  @help_window.set_text(All_Desc, 1)
      when 1;  @help_window.set_text(Item_Desc, 1)
      when 2;  @help_window.set_text(Weapon_Desc, 1)
      when 3;  @help_window.set_text(Armor_Desc, 1)
      when 4;  @help_window.set_text(Key_Desc, 1)
      end
    end
  end
 
  def create_filter_window
    s1 = All_Text
    s2 = Item_Text
    s3 = Weapon_Text
    s4 = Armor_Text
    s5 = Key_Text
    @filter_window = Window_Command.new(544, [s1, s2, s3, s4, s5], 5)
    @filter_window.y = 0
    @filter_window.viewport = @viewport
    @filter_window.active = false
    @filter_window.contents.font.size = 18
    @filter_window.draw_item(0, true, 1)
    @filter_window.draw_item(1, true, 1)
    @filter_window.draw_item(2, true, 1)
    @filter_window.draw_item(3, true, 1)
    @filter_window.draw_item(4, true, 1)
  end
 
  def set_filter(filter = 0)
    Sound.play_decision
    @filter = filter
    if @filter == 1
      $game_temp.show_items = true
    else
      $game_temp.show_items = false
    end
    if @filter == 2
      $game_temp.show_weapons = true
    else
      $game_temp.show_weapons = false
    end
    if @filter == 3
      $game_temp.show_armors = true
    else
      $game_temp.show_armors = false
    end
    if @filter == 4
      $game_temp.show_keys = true
    else
      $game_temp.show_keys = false
    end
    @item_window.refresh
  end
end

class Window_Command < Window_Selectable
  def draw_item(index, enabled = true, align = 0)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    @align = align
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], @align)
  end
end

________________________


 
 
 
Agumon 




Preferowany:
RPG Maker VX

Ranga RM:
1 gra

Pomógł: 53 razy
Dołączył: 30 Gru 2009
Posty: 515
Skąd: Ruda Śląska
Wysłany: Sob 13 Lut, 2010 16:26
Wszystko działa... Dzięki Ayene ... Jesteś moim "Number One" xD
 
 
Dark lordek 



Preferowany:
RPG Maker VX

Dołączył: 08 Kwi 2010
Posty: 8
Wysłany: Wto 27 Kwi, 2010 16:42
Błąd linijki 201. Wrong number of arguments (3 for 2)
Taki błąd. Czy można by to naprawić? :-x
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Wto 27 Kwi, 2010 17:39
Ale w jakim skrypcie wyskakuje Tobie błąd, bo przyglądając się temu z tego tematu, nie ma w linijce 201 żadnego odwołania do argumentów klasy. Podaj dokładną treść komunikatu, albo wklej screenshota.
________________________


 
 
 
Dark lordek 



Preferowany:
RPG Maker VX

Dołączył: 08 Kwi 2010
Posty: 8
Wysłany: Czw 29 Kwi, 2010 15:36
Błąd pokazuje się w tym skrypcie. Nie wiem, może ja coś źle zrobiłem. :-/

Poniżej wklejam screen.
Spoiler:


Ostatnio zmieniony przez Nhadala Sob 01 Maj, 2010 09:48, w całości zmieniany 1 raz  
 
 
 
Ayene 




Ranga RM:
4 gry

Pomogła: 232 razy
Dołączyła: 18 Wrz 2007
Posty: 2424
Wysłany: Czw 29 Kwi, 2010 17:25
Przede wszystkim widać, że masz polskiego RMVX. Na to wygląda, że program ma problem z argumentami Window_Command. Spróbuj więc fragment:
Kod:
    @filter_window.draw_item(0, true, 1)
    @filter_window.draw_item(1, true, 1)
    @filter_window.draw_item(2, true, 1)
    @filter_window.draw_item(3, true, 1)
    @filter_window.draw_item(4, true, 1)

zamienić na:
Kod:
    @filter_window.draw_item(0, true)
    @filter_window.draw_item(1, true)
    @filter_window.draw_item(2, true)
    @filter_window.draw_item(3, true)
    @filter_window.draw_item(4, true)
________________________


 
 
 
Dark lordek 



Preferowany:
RPG Maker VX

Dołączył: 08 Kwi 2010
Posty: 8
Wysłany: Pią 30 Kwi, 2010 19:11
Wszystko działa, dzięki Ayene. :-D
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene