Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # DROP ITEM
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Autor: Andrzej 'mc' Głuszak
- # Wersja: 2.0
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Opis: Skrypt ten pozwala na wyrzucanie niepotrzebnych przedmiotów w Scene_Item
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Instrukcja: Wybierz klawisz odpowiadający za wyrzucanie przedmiotów.
- # Wypisz numery broni, których nie można wyrzucić.
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Kompatybilność: Nie testowany z SDK.
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Licencja: CREATIVE COMMONS Uznanie autorstwa 3.0 Unported (CC BY 3.0)
- # Wolno: kopiować, rozpowszechniać, odtwarzać i wykonywać utwór,
- # tworzyć utwory zależne
- # Na następujących warunkach: Uznanie autorstwa —
- # należy wpisać twórcę skryptu (mcgluszak)
- # do credits (podziękowań).
- #-=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=--=-=-=-=-=-=
- # Zmiany: v1.0 - wydanie skryptu
- # v1.1 - id przedmiotów, których nie można wyrzucić
- # v2.0 - okienko pozwalające wybrać ilość wyrzucanych przedmiotów
- #==============================================================================
- # KONFIGURACJA
- module Gluszak
- module Drop_Item
- Drop_Key = Input::L # Klawisz odpowiadający za wyrzucanie przedmiotów.
- # (Domyślnie 'L', czyli 'Q' na klawiaturze.)
- Quest_Items = [1] # Id przedmiotów, których nie można wyrzucić.
- Quest_Weapons = [5] # Id broni, których nie można wyrzucić.
- Quest_Armors = [12, 13] # Id zbroi, których nie można wyrzucić.
- end
- end
- # KONIEC KONFIGURACJI
- $drop_item = 2.0
- #==============================================================================
- # ** Scene_Item
- #==============================================================================
- class Scene_Item
- #--------------------------------------------------------------------------
- # * Uaktualnij scenę
- #--------------------------------------------------------------------------
- alias update_drop_item update
- def update
- update_drop_item
- update_drop
- end
- #--------------------------------------------------------------------------
- # * Uaktualnij proces wyrzucania
- #--------------------------------------------------------------------------
- def update_drop
- @item = @item_window.item
- if Input.trigger?(Gluszak::Drop_Item::Drop_Key) # jeśli został naciśnięty przycisk
- if droppable_item? # jeśli można ten przedmiot wyrzucić
- @drop_window = Window_Drop_Item.new(@item) if !@drop_window# utwórz okno
- @item_window.active = false # wyłącz item_window
- else # jeśli nie można tego przedmiotu wyrzucić
- $game_system.se_play($data_system.cancel_se) # odegraj dźwięk
- end
- end
- if Input.trigger? Input::B # jeśli został naciśnięty przycisk
- @item_window.active = true # włącz item_window
- if @drop_window # jeśli okno jest utworzone
- @drop_window.dispose # pozbądź się bitmapy
- @drop_window = nil # pozbądź się okna
- end
- end
- if @drop_window # jeśli okno jest utworzone
- @drop_window.update # uaktualnij je
- if Input.trigger? Input::C # jeśli został naciśnięty przycisk
- lose_items # pozbądź się przedmiotów
- @drop_window.dispose # pozbądź się bitmapy
- @drop_window = nil # pozbądź się okna
- @item_window.active = true # włącz item_window
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Czy dany przedmiot można wyrzucić?
- #--------------------------------------------------------------------------
- def droppable_item?
- if @item.is_a?(RPG::Item) and not Gluszak::Drop_Item::Quest_Items.include? @item.id
- return true
- elsif @item.is_a?(RPG::Weapon) and not Gluszak::Drop_Item::Quest_Weapons.include? @item.id
- return true
- elsif @item.is_a?(RPG::Armor) and not Gluszak::Drop_Item::Quest_Armors.include? @item.id
- # jeśli przedmiot jest danego rodzaju i nie ma go na liście przedmiotów nie-do-wyrzucenia
- return true # zwróć prawdę
- else # jeśli jest na liście przedmiotów nie-do-wyrzucenia
- return false # zwróć fałsz
- end
- end
- #--------------------------------------------------------------------------
- # * Wyrzuć przedmioty
- #--------------------------------------------------------------------------
- def lose_items
- $game_system.se_play($data_system.buzzer_se) # zagraj dźwięk
- if @item.is_a?(RPG::Item) and not Gluszak::Drop_Item::Quest_Items.include? @item.id
- $game_party.lose_item(@item.id, @drop_window.quantity)
- elsif @item.is_a?(RPG::Weapon) and not Gluszak::Drop_Item::Quest_Weapons.include? @item.id
- $game_party.lose_weapon(@item.id, @drop_window.quantity)
- elsif @item.is_a?(RPG::Armor) and not Gluszak::Drop_Item::Quest_Armors.include? @item.id
- $game_party.lose_armor(@item.id, @drop_window.quantity)
- # strać dany przedmiot w ilości pokazywanej w drop_window
- end
- @item_window.refresh # odśwież item_window
- end
- end
- #==============================================================================
- # ** Window_Drop_Item
- #==============================================================================
- class Window_Drop_Item < Window_Base
- attr_reader :quantity # pozwól odczytywać ilość
- #--------------------------------------------------------------------------
- # * Inicjalizacja
- #--------------------------------------------------------------------------
- def initialize(item)
- @drop_key = false # zapobiega ustawianiu się ilości od razu na maksymalną
- @item = item
- @quantity = 0
- set_max_quantity
- super(160, 132, 320, 128) # stwórz okno
- self.contents = Bitmap.new(width - 32, height - 32) # stwórz bitmapę
- self.back_opacity = 200 # ustaw przezroczystość
- self.z = 200 # ustaw kotę
- refresh # odśwież
- end
- #--------------------------------------------------------------------------
- # * Odświeżenie
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear # wyczyść bitmapę
- self.contents.font.color = normal_color # ustaw kolor
- self.contents.draw_text(0, 0, 288, 32, 'Ile sztuk tego przedmiotu chcesz wyrzucić?', 2)
- # wyświetl tekst
- self.contents.draw_text(128, 50, 32, 32, @quantity.to_s, 2)
- # wyświetl ilość
- icon = RPG::Cache.icon(@item.icon_name)
- # ustaw ikonę
- self.contents.blt(96, 50, icon, Rect.new(0, 0, 24, 24))
- # wyświetl ikonę
- end
- #--------------------------------------------------------------------------
- # * Ustal maksymalną ilość przedmiotów do wyrzucenia
- #--------------------------------------------------------------------------
- def set_max_quantity
- if @item.is_a?(RPG::Item)
- @max_quantity = $game_party.item_number(@item.id)
- elsif @item.is_a?(RPG::Weapon)
- @max_quantity = $game_party.weapon_number(@item.id)
- elsif @item.is_a?(RPG::Armor)
- @max_quantity = $game_party.armor_number(@item.id)
- end
- end
- #--------------------------------------------------------------------------
- # * Sprawdź, czy któryś przycisk został naciśnięty
- #--------------------------------------------------------------------------
- def check_input
- q = 0
- if Input.trigger? Input::UP
- q = [@max_quantity - @quantity, 1].min
- @quantity += q
- elsif Input.trigger? Input::RIGHT
- q = [@max_quantity - @quantity, 10].min
- @quantity += q
- elsif Input.trigger? Input::DOWN
- q = @quantity > 0 ? 1 : 0
- @quantity -= q
- elsif Input.trigger? Input::LEFT
- q = @quantity > 10 ? 10 : @quantity
- @quantity -= q
- elsif Input.trigger? Gluszak::Drop_Item::Drop_Key
- q = @quantity = 0 ? @max_quantity : @max_quantity - @quantity
- end
- if q != 0
- $game_system.se_play($data_system.cursor_se)
- # jeśli ilość się zmienia, zagraj dźwięk
- end
- end
- #--------------------------------------------------------------------------
- # * Uaktualnij
- #--------------------------------------------------------------------------
- def update
- super
- set_max_quantity # ustaw maksymalną ilość
- check_input if @drop_key # zapobiega ustawianiu się ilości od razu na maksymalną
- @drop_key = true
- refresh # odśwież
- end
- #--------------------------------------------------------------------------
- # * Pozbądź się bitmapy
- #--------------------------------------------------------------------------
- def dispose
- super
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment