Kompatybilność "plecakowych" skryptów - Zvarr - 16-03-14 11:55
Witam! Otóż przejdę do sedna sprawy. Używam świetnego skryptu Ayene
Kod:
#==============================================================================
# Kategoryzacja przedmiotów [XP] + Info Przedmiotów
# by Ayene
# 19.08.2012 ver 2.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 => ["Prowiant", "Napoje i pokarmy", "Food"],
:battle => ["Oręż", "Broń biała, łuki i tarcze", "Weapons"],
:weapon => ["Pancerze", "Zbroje i ubrania", "Armors"],
:armor => ["Talizmany", "Naszyjniki i amulety", "Talismans"],
:acc => ["Artefakty", "Magiczne obiekty", "Artifacts"],
:quest => ["Pisma", "Notatki i księgi", "Books"],
:notes => ["Klucze", "Klucze i wtrychy", "Keys"],
:maps => ["Osiągnięcia", "Twoje osiągnięcia", "Awards"],
:keys => ["Różne", "Inne niezwiązane", "Items"],
:all => ["Wszystkie przedmioty", "Wszystkie przedmioty", "All"],
} # <- 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, 36, 37, 38, 39, 40, 41, 42, 43]],
:battle => ["Item", [ 7]],
:weapon => ["Weapon", :all],
:armor => ["Armor", [1, 2, 3]],
:acc => ["Item", [5]],
:quest => ["Item", [21, 22]],
:notes => ["Item", [8, 9, 10]],
:maps => ["Item", [2, 3, 4, 6]],
:keys => ["Item", [23, 24, 25]],
:all => [:all, :all]
} # <- nie usuwać
USE_INFO_TEXT = "Enter: Użycie / Shift: Info"
# Opis przedmiotu (zakładka Items w Bazie danych)
ITEM_INFO = { # ID => "Opis przedmiotu",
0 => "???", # tekst, dla reszty niezadeklarowanych przedmiotów
1 => "Przyprawa - dar od morza.\|Składnik wielu potraw.",
2 => "Zwykła kość jakiegoś ssaka.\|Prawidziwy rarytas dla psa.",
3 => "Magiczna kość nieumarłego.\|Mimo, że czar, który\| zbudził szkielet dawno\| przestał działać, to ta kość\| zachowała część magicznej mocy.\| Składnik alchemiczny ",
4 => "Niewielki kamyk, idealny\|jako pocisk do procy",
5 => "W tej kamiennej tabliczce\|w jakiś sposób wyryto\|wzór spirali. Alchemik szukał jej\|dobre kilka lat.\|",
6 => "Żądło wydobyte jak trofeum\|z latającego insekta.\|Ponoć niektórzy potrafią\|wydobyć z niego substancje\|lecznicze.",
7 => " ",
36 =>"Ughh ... Niezwykle silne!\| Lepiej nie wiedzieć/| z czego to jest...",
37 => " "# <- bez przecinka
} # <-- Nie usuwać
# Opis broni (zakładka Weapons w Bazie danych)
WEAPON_INFO = { # ID => "Opis broni",
0 => "???", # tekst, dla reszty niezadeklarowanych broni
6 => " ",
12 => " ",
15 => " ",
17 => " ",
22 => "Według legendy należał\|do szlachetnej rasy Elfów.\|Szkoda że tylko one mogą\|z tego korzystać.",
23 => " "# <- bez przecinka
} # <-- Nie usuwać
# Opis pancerza (zakładka Armors w Bazie danych)
ARMOR_INFO = { # ID => "Opis pancerza",
0 => "???", # tekst, dla reszty niezadeklarowanych pancerzy
5 => "",
10 => "",
13 => "Nie wygląda schludnie.\|Jest trochę poniszczona.",
17 => "Zbroja została zrobiona\|z najwyższej klasy stopu.",
18 => " " # <- bez przecinka
} # <-- 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)
self.y = 480 - height if $game_temp.item_menu
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)
self.contents.clear
self.contents.font.color = normal_color
text = index.is_a?(String) ? index : CATEGORY_NAME[ITEM_CATEGORIES[index]][0]
self.contents.draw_text(4, 0, self.width - 40, 32, text, 1)
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_info
#==============================================================================
class Window_Item_info < Window_Base
include AYE::ITEM_CAT
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(item)
super(0, 64, 336, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.z += 10
@item = item
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 64, 32, "Typ:")
self.contents.draw_text(184, 0, 64, 32, "Cena:")
case @item
when RPG::Weapon
type = "Broń"
info = WEAPON_INFO[@item.id].nil? ? WEAPON_INFO[0] : WEAPON_INFO[@item.id]
when RPG::Armor
type = "Pancerz"
info = ARMOR_INFO[@item.id].nil? ? ARMOR_INFO[0] : ARMOR_INFO[@item.id]
else
type = "Przedmiot"
info = ITEM_INFO[@item.id].nil? ? ITEM_INFO[0] : ITEM_INFO[@item.id]
end
self.contents.font.color = normal_color
self.contents.draw_text(50, 0, 100, 32, type)
self.contents.draw_text(184, 0, 100, 32, @item.price.to_s, 2)
draw_info_text(4, 42, self.width - 40, 32, info)
end
#--------------------------------------------------------------------------
# * Draw Info Text
#--------------------------------------------------------------------------
def draw_info_text(x, y, width, height, text)
text_info = text.split(/\|/)
for i in 0...text_info.size
self.contents.draw_text(x, y + i * 32, width, 32, text_info[i])
break if (y + i * 32) > (self.height - 32)
end
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
if @item_info_window != nil
update_item_info
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)
@catname_window.set_text(USE_INFO_TEXT)
@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::A)
$game_system.se_play($data_system.decision_se)
@item_window.active = false
@item_info_window = Window_Item_info.new(@item_window.item)
@item_info_window.x = (@item_window.index + 1) % 2 * 304
return
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@catname_window.set_text(@category_window.index)
@item_window.active = false
@category_window.active = true
return
else
aye_itemcat_scitem_update_item
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when item info window is visible)
#--------------------------------------------------------------------------
def update_item_info
if Input.trigger?(Input::B) or Input.trigger?(Input::A)
$game_system.se_play($data_system.cancel_se)
@item_info_window.dispose
@item_info_window = nil
@item_window.active = true
return
end
end
end
oraz wygooglowanego
Kod:
#==============================================================================#
# ICON ITEMS #
# Version: 1.0 #
# By: Polraudio #
# Exclusive to RMU or GDU #
#==============================================================================#
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 416)
@column_max = 9
refresh
self.index = 0
# If in battle, move window to center of screen
# and make it semi-transparent
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
# Also add weapons and items if outside of battle
unless $game_temp.in_battle
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
end
end
end
# If item count is not 0, make a bit map and draw all items
@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
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 2 / 12 + index % 9 * (12 + 59)
y = 2 / 12 + index / 9 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 255
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
#self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.font.size = 12
self.contents.font.color = Color.new(0, 0, 0, 255)
self.contents.draw_text(x + 15, y+2, 24, 32, "x" + number.to_s, 2)
#self.contents.font.color = normal_color
self.contents.font.color = Color.new(255, 255, 255, 255)
self.contents.draw_text(x + 13, y, 24, 32, "x" + number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.name+": "+self.item.description)
end
end
Wszystko ładnie wygląda, ale mam jedno zastrzeżenie. Mimo, że w dziale konfiguracji skryptu Ayene wszystko dobrze ustawiłem, to itemki się nie kategoryzują! Gdy mam różniste rzeczy w plecaku da się je zobaczyć w każdej zakładce - kategorii. Pomożcie!
RE: Kompatybilność "plecakowych" skryptów - Kopernik - 16-03-14 14:11
A jak ci działa bez tego wygooglonego? Jak dobrze no to się pewnie gryzą albo masz ten drugi nie skonfigurowany, a jak sam też nie działa to... To coś pomieszałeś :P.
RE: Kompatybilność "plecakowych" skryptów - Zvarr - 16-03-14 14:34
Czy ty w ogóle wiesz o co mi chodzi? Zależy mi na obu skryptach. Ach no tak... przecież coś pomieszałem, lepiej zrobić na zdarzeniówkach... ale przecież ja nawet nie umiem skryptu skonfigurować a co dopiero zdarzeniówki... Z dedykacją dla Ciebie
Wiem, że jesteś nowy, ale przestań do cholery kozaczyć w postach nic do nich nie wnosząc. Nabij licznik postów na np. poscie o własnej grze
RE: Kompatybilność "plecakowych" skryptów - Kopernik - 16-03-14 14:50
Nie nie o to mi chodzi.. Pytam czy wszystko działa bez jednego z nich. Co tak się spinasz :P ? Po prostu się pytam... Co za kozaczenie? A jak ci się nie podoba to mnie ignoruj i po sprawie mi to obojętne..
PS. Sam jak coś, też ostatnio miałem banalny problem ze zdarzeniówką (temat "zawieszenie gry).
I cóż jak by coś było pomieszane, to dość prawdopodobne (sam prawie na pewno bym coś pomieszał) to co?
RE: Kompatybilność "plecakowych" skryptów - Zvarr - 16-03-14 16:34
Chodzi o to, że działa aż za dobrze. Nie mam żadnych errorów itp. Ale jedna z opcji tego skryptu ( mianowicie kategoryzacja ) nie działa ( a właściwie działa, ale wadliwie ). Wolałbym post od skryptera a nie takie "porady" nie rozwiązujące mojego problemu.
RE: Kompatybilność "plecakowych" skryptów - MrDawnok - 17-03-14 11:14
Zvarr napisał(a):Wolałbym post od skryptera a nie takie "porady" nie rozwiązujące mojego problemu.
No to możesz dłuuugo poczekać bo na polskiej scenie nie ma wielu naprawdę dobrych skrypterów(bez urazy, ale taka prawda), natomiast zastosuj się do porady pana powyżej, a jeśli sam przyznajesz że nie umiesz skonfigurować skryptu ani nawet zrobić zdarzeniówki to daleko raczej nie zajdziesz :P
Co do Tematu to zastosuj się do porad kolegi powyżej, to są podstawowe kroki jakie podejmuje się w taki wypadkach.
RE: Kompatybilność "plecakowych" skryptów - Zvarr - 17-04-14 10:58
Ayene widzę, że znów działasz. Czy mogłabyś mi pomóc? Chyba, że lepiej zrobić plecak na zdarzeniówkach...
RE: Kompatybilność "plecakowych" skryptów - Ayene - 17-04-14 11:34
Spróbuj zamienić kolejność skryptów. Daj Kategoryzację pod ICON ITEMS.
|