Ozzma - Pią 09 Paź, 2009 13:17 Temat postu: Podział przedmiotów w menuCześć
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ę
Specjalne.
Print screen:
Spoiler:
Skrypt wklejamy nad main.
Spoiler:
Kod:
module Ozzma
#==============================================================================
# Podział przedmiotów w menu modyfied by Ozzma
#==============================================================================
module Przedmioty
#------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------
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
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 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
PS:
Super pomysł z tym tagiem code Agumon - 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???Ayene - Sob 13 Lut, 2010 15:13 Jakie okienko pośrodku? Te z napisem 'restores 500 HP...'?Agumon - Sob 13 Lut, 2010 15:28 No o to tam gdzie są różne te informacje...Ayene - 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 - Sob 13 Lut, 2010 15:41 Chodzi mi o takie coś:
SCREEN
Spoiler:
Ayene - 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 - 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 przedmiotuAyene - 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
#------------------------------------------------------------------------
# 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
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 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 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 - Sob 13 Lut, 2010 16:26 Wszystko działa... Dzięki Ayene ... Jesteś moim "Number One" xDDark lordek - 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ć? Ayene - 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 - 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:
Ayene - 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:
Dark lordek - Pią 30 Kwi, 2010 19:11 Wszystko działa, dzięki Ayene. Valdali - Wto 25 Maj, 2010 14:15 a jak zrobić z tymi specjalnymi przedmiotami bo nie wiemPaKiTos - Sro 26 Maj, 2010 08:31 A czy ktoś mógłby zrobić, żeby był taki podział:
Wszystko, Leczące, Bronie, Pancerze, Akcesoria, Trofea i Specjalne?Ayene - Sro 26 Maj, 2010 10:41 cadek, wejdź w bazę danych, zakładka Przedmioty/Items i w okienku Note/Notatka wpisz słowo "Specjalne" dla tego przedmiotu, który ma być specjalny.
Ale z tymi trofeami i akcesoriami, to trzeba by było przerobić skrypt. Tylko że nie zmieściłyby się wszystkie komendy w poziomie, więc kolejna modyfikacja musiałaby dotyczyć zwiększenia wymiarów okna i poprzesuwaniu reszty.PaKiTos - Sro 26 Maj, 2010 13:06 Bym chciał, żeby się przewijało...Theron - Wto 11 Paź, 2011 19:11 Mały problem... Czy da się połączyć ten skrypt i skrypt z limitem przedmiotów "Modern Algebry" ( ten z wyrzucaniem i podmienianiem ) i zmianą drużyny prexusa ?
Mi jeśli mam coś w ekwipunku się kłóci z 71 linijką zmiany drużyny prexusa -
" draw_icon(item.icon_index, x, y, enabled) "