Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # TheoAllen - Item Sorter
- # Version : 1.0
- # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
- # (This script documentation is written in informal indonesian language)
- # =============================================================================
- ($imported ||= {})[:Theo_ItemSorter] = true
- # =============================================================================
- # Change Logs:
- # -----------------------------------------------------------------------------
- # 2013.10.18 - Finished Script
- # =============================================================================
- =begin
- Perkenalan :
- Script ini membuat kamu bisa sorting item berdasar nama, id atau pricenya
- Cara penggunaan :
- Pasang script ini dibawah material namun diatas main
- Edit konfigurasinya kalau diperlukan. Ato kamu make settingan default ini aja
- juga bisa
- Terms of use :
- Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
- keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
- dipake buat komersil, jangan lupa, gw dibagi gratisannya.
- =end
- # =============================================================================
- # Konfigurasi
- # =============================================================================
- module Theo
- module Sorter
- # -----------------------------------------------------------------------
- Sorter_Commands = [ # <-- Jangan dihapus
- # -----------------------------------------------------------------------
- # Command buat sorting. Yang kamu perbolehkan disini adalah untuk mengedit
- # isi dari text yang dibungkus oleh kutip (""). Dan membolak-balik urutan
- # dibawah ini. Jangan sekali-sekali ngedit symbol (text yg diawali :)
- # seperti :sort_id
- [:sort_id, "Sắp Sếp Theo Id"],
- [:sort_az, "Sắp Sếp Từ A-Z"],
- [:sort_za, "Sắp Sếp Từ Z-A"],
- [:sort_lowprice, "Giá Tiền Thấp Nhất"],
- [:sort_highprice, "Giá Tiền Cao Nhất"],
- ] # <-- Jangan dihapus
- # -----------------------------------------------------------------------
- Sorter_Width = 220
- # Lebar window buat sortingnya
- Sorter_Key = :ALT
- # Key buat munculin command untuk sorting. Kamu bisa masukin key seperti
- # :SHIFT, :CTRL, :ALT atau bahkan :F5 - :F9
- end
- end
- # =============================================================================
- # Akhir dari konfigurasi
- # =============================================================================
- class Window_Sorter < Window_Command
- def initialize(item_window)
- super(0,0)
- self.openness = 0
- @item_window = item_window
- @item_window.setup_sorter_handler(self)
- update_placement
- deactivate
- end
- def make_command_list
- Theo::Sorter::Sorter_Commands.each do |cmd|
- add_command(cmd[1], cmd[0])
- end
- end
- def window_width
- return Theo::Sorter::Sorter_Width
- end
- def update
- super
- update_placement
- end
- def update_placement
- self.y = @item_window.y
- if @item_window.index % 2 == 0
- self.x = Graphics.width - width
- else
- self.x = 0
- end
- end
- end
- class Window_ItemList < Window_Selectable
- alias theo_itemsort_init initialize
- def initialize(*args)
- @sort_type = :sort_id
- theo_itemsort_init(*args)
- end
- alias theo_itemsort_make_item_list make_item_list
- def make_item_list
- theo_itemsort_make_item_list
- case @sort_type
- when :sort_az
- @data.sort! {|a,b| a.name <=> b.name }
- when :sort_za
- @data.sort! {|a,b| b.name <=> a.name }
- when :sort_id
- @data.sort! {|a,b| a.id <=> b.id }
- when :sort_lowprice
- @data.sort! {|a,b| a.price <=> b.price }
- when :sort_highprice
- @data.sort!{|a,b| b.price <=> a.price }
- end
- end
- alias theo_itemsort_process_handling process_handling
- def process_handling
- theo_itemsort_process_handling
- open_sorter if Input.trigger?(Theo::Sorter::Sorter_Key) && @sorter &&
- active && open?
- end
- def open_sorter
- Sound.play_ok
- Input.update
- deactivate
- @sorter.open
- @sorter.activate
- end
- def setup_sorter_handler(sorter)
- @sorter = sorter
- @sorter.viewport = viewport
- @sorter.set_handler(:sort_az, method(:sort_by_az))
- @sorter.set_handler(:sort_za, method(:sort_by_za))
- @sorter.set_handler(:sort_id, method(:sort_by_id))
- @sorter.set_handler(:sort_lowprice, method(:sort_lowprice))
- @sorter.set_handler(:sort_highprice, method(:sort_highprice))
- @sorter.set_handler(:cancel, method(:deactivate_sorter))
- end
- def deactivate_sorter
- Input.update
- @sorter.close
- @sorter.deactivate
- self.activate
- end
- def sort_by_az
- @sort_type = :sort_az
- deactivate_sorter
- refresh
- end
- def sort_by_za
- @sort_type = :sort_za
- deactivate_sorter
- refresh
- end
- def sort_by_id
- @sort_type = :sort_id
- deactivate_sorter
- refresh
- end
- def sort_lowprice
- @sort_type = :sort_lowprice
- deactivate_sorter
- refresh
- end
- def sort_highprice
- @sort_type = :sort_highprice
- deactivate_sorter
- refresh
- end
- end
- class Scene_Item < Scene_ItemBase
- alias theo_itemsort_start start
- def start
- theo_itemsort_start
- @sorter = Window_Sorter.new(@item_window)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement