khanhdu

Windowskin Changer

May 4th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.37 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Windowskin Changer
  3. # Version : 2.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_WSkinV2] = true
  8. # =============================================================================
  9. # Change Logs:
  10. # -----------------------------------------------------------------------------
  11. # 2013.11.14 - Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini membuat kamu bisa mengganti windowskin di tengah game. Beda dengan
  17.   windowskin changer yang versi 1 dulu karena bergantung pada scriptnya si
  18.   yanfly
  19.  
  20.   Cara penggunaan :
  21.   Pasang script ini dibawah material namun diatas main
  22.   Edit konfigurasinya.
  23.  
  24.   Jika kamu ingin mengganti windowskin dengan menggunakan event, kamu cukup
  25.   menggunakan script call
  26.  
  27.   $game_system.used_skin = "Tên window skin"
  28.  
  29.   Terms of use :
  30.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  31.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  32.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  33.  
  34. =end
  35. # =============================================================================
  36. # Konfigurasi :
  37. # =============================================================================
  38. module Theo
  39.   module WSkin
  40.  
  41.     Init        = "Window"
  42.   # Inisial nama window skin yang kamu pake saat game dimulai
  43.  
  44.     HelpText    = "Thay Đổi Window Skin Cho Game : "
  45.   # Tulisan help untuk menu windowskin
  46.  
  47.     MainMenu    = true
  48.   # Jika kamu set true, maka player bisa ganti windowskin di main menu
  49.  
  50.     MenuCommand = "Windowskin"
  51.   # Command untuk ganti windowskin
  52.    
  53.     Selected_Window_Color = 16
  54.   # Warna untuk windowskin yang dipilih (Warna sama kek \C[n] di message)
  55.  
  56.     List = [  # <-- Jangan disentuh
  57.   # List windowskin yang kamu pakai disini. Nama harus sesuai dengan nama file
  58.   # windowskin yang kamu taruh di Graphics/system
  59.     "Window",
  60.     "Window2",
  61.     "Window3",
  62.     "Window4",
  63.    
  64.   # Tambah disini
  65.   # Dan disini
  66.   # Jangan lupa komma
  67.  
  68.     ] # <-- Jangan disentuh
  69.  
  70.   end
  71. end
  72. # =============================================================================
  73. # Akhir dari konfigurasi
  74. # =============================================================================
  75. class Game_System
  76.   attr_accessor :used_skin
  77.  
  78.   alias theo_wskinchanger_init initialize
  79.   def initialize
  80.     theo_wskinchanger_init
  81.     @used_skin = Theo::WSkin::Init
  82.   end
  83.  
  84. end
  85.  
  86. class Window_Base < Window
  87.  
  88.   alias theo_windowskin_init initialize
  89.   def initialize(*args)
  90.     theo_windowskin_init(*args)
  91.     @skin = $game_system.used_skin
  92.     self.windowskin = Cache.system(@skin)
  93.   end
  94.  
  95.   alias theo_update_windowskin update
  96.   def update
  97.     theo_update_windowskin
  98.     update_windowskin
  99.   end
  100.  
  101.   def update_windowskin
  102.     return unless @skin != $game_system.used_skin
  103.     @skin = $game_system.used_skin
  104.     self.windowskin = Cache.system(@skin)
  105.   end
  106.  
  107. end
  108.  
  109. class Window_SkinChanger < Window_Command
  110.  
  111.   def initialize(x,y)
  112.     super(x,y)
  113.     self.visible = false
  114.     deactivate
  115.   end
  116.  
  117.   def item_rect(index)
  118.     rect = super(index)
  119.     rect.y += 2 * line_height
  120.     rect
  121.   end
  122.  
  123.   def make_command_list
  124.     Theo::WSkin::List.each do |skin|
  125.       add_command(skin, skin.to_sym)
  126.     end
  127.   end
  128.  
  129.   def resize(width,height)
  130.     self.width = width
  131.     self.height = height
  132.     refresh
  133.   end
  134.  
  135.   def set(x,y,width,height)
  136.     self.x = x
  137.     self.y = y
  138.     resize(width,height)
  139.   end
  140.  
  141.   def wskin_name
  142.     command_name(index)
  143.   end
  144.  
  145.   def draw_item(index)
  146.     if command_name(index) == $game_system.used_skin
  147.       change_color(text_color(Theo::WSkin::Selected_Window_Color))
  148.     else
  149.       change_color(normal_color)
  150.     end
  151.     draw_text(item_rect_for_text(index), command_name(index), alignment)
  152.   end
  153.  
  154.   def refresh
  155.     super
  156.     draw_text(4,0,contents.width,line_height,Theo::WSkin::HelpText)
  157.   end
  158.  
  159. end
  160.  
  161. class Window_MenuCommand < Window_Command
  162.  
  163.   alias theo_wskinchanger_ori_cmd add_original_commands
  164.   def add_original_commands
  165.     theo_wskinchanger_ori_cmd
  166.     add_command(Theo::WSkin::MenuCommand, :wskin) if Theo::WSkin::MainMenu
  167.   end
  168.  
  169. end
  170.  
  171. class Scene_Menu < Scene_MenuBase
  172.  
  173.   alias theo_wskinchange_start start
  174.   def start
  175.     theo_wskinchange_start
  176.     create_wskin_changer
  177.   end
  178.  
  179.   def create_wskin_changer
  180.     wx = @status_window.x
  181.     wy = @status_window.y
  182.     ww = @status_window.width
  183.     wh = @status_window.height
  184.     @wskin = Window_SkinChanger.new(0,0)
  185.     @wskin.set(wx,wy,ww,wh)
  186.     @wskin.set_handler(:ok, method(:change_skin))
  187.     @wskin.set_handler(:cancel, method(:on_skin_cancel))
  188.     @command_window.set_handler(:wskin, method(:on_wskin_ok))
  189.   end
  190.  
  191.   def change_skin
  192.     $game_system.used_skin = @wskin.wskin_name
  193.     @wskin.refresh
  194.     @wskin.activate
  195.   end
  196.  
  197.   def on_skin_cancel
  198.     @status_window.visible = true
  199.     @wskin.visible = false
  200.     @command_window.activate
  201.   end
  202.  
  203.   def on_wskin_ok
  204.     @status_window.visible = false
  205.     @wskin.visible = true
  206.     @wskin.activate
  207.   end
  208.  
  209. end
Advertisement
Add Comment
Please, Sign In to add comment