じ☆ve冰风 发表于 2026-7-31 19:56:46

Dynamic Window Skin

Author: Napoleon

Some of the features:

- Compatible with my other Window Message Script.

- Free for commercial use.

- Change the skins dynamically while playing.

- Has no method overwrites (so it's a very compatible script)

All other details are inside the script. Has now also been added to the master demo.

Script:

Spoiler                Code:       
#sb:window_skin =beginScript:  Window SkinVersion: 1.00Author:  NapoleonAbout:- Easily change the skin of all windows and/or only for specific windows.- Also supports adding your own custom windows to it (advanced users).- Does not embed itself to the update() method of Window_Message  for increased performance.Instructions:- Place below "▼ Materials" but above "▼ Main Process".- Change the 'default'-skin in the settings to change all skins easily.- Don't forget to change the window HUE to 0, 0, 0 through:  > System tab > Window Color.  Otherwise the windows may get a weird unwanted hue.- To change the window skin create a new script-line and use:  set_skin(skin_name, window_name)- To change the default skin:  set_default_skin(skin_name)- Advanced users: or if you prefer to use a script call instead:  $game_system.window_skins = skin_name- Examples:  set_skin('Window2') # Changes all default skins to Window2.png  set_skin('Window2', 'Window_MenuCommand') # Changes only the skin for Window_MenuCommand- To change all skins:  set_all_skins('your_skin_filename')- Adding custom windows to this script:  # Add this line to your initialize (AFTER the super(..) call!):  self.windowskin = $game_system.window_skin_bitmap(self.class)  # Then add a line to the SKINS setting matching your window's class name.Terms of Use:- Attribution 3.0 Unported (CC BY 3.0)  http://creativecommons.org/licenses/by/3.0/ Version History:1.00 (21 August 2014)  - First Release=end#===============================================================================# Settings#===============================================================================module Nap; module Win_Skin  # The default key for when the skins have no key or when the refer to a  # nil-value.  # Only change this one if you are an advanced user!  DEFAULT_KEY = :default   # Note: case sensitive!  # Use nil values to use the default.  # You can also add your own custom windows here. For example:  # 'Napoleons_Window'    => 'Window3',  SKINS = {    DEFAULT_KEY           => 'Window_Desert', # Default skin. The default RPG Maker: 'Window'    'Window_Selectable'   => nil,    'Window_Command'      => nil,    'Window_HorzCommand'  => nil,    'Window_Help'         => nil,    'Window_Gold'         => nil,    'Window_MenuCommand'  => nil,    'Window_MenuStatus'   => nil,    'Window_MenuActor'    => nil,    'Window_ItemCategory' => nil,    'Window_ItemList'     => nil,    'Window_SkillCommand' => nil,    'Window_SkillStatus'  => nil,    'Window_SkillList'    => nil,    'Window_EquipStatus'  => nil,    'Window_EquipCommand' => nil,    'Window_EquipSlot'    => nil,    'Window_EquipItem'    => nil,    'Window_Status'       => nil,    'Window_SaveFile'     => nil,    'Window_ShopCommand'  => nil,    'Window_ShopBuy'      => nil,    'Window_ShopSell'     => nil,    'Window_ShopNumber'   => nil,    'Window_ShopStatus'   => nil,    'Window_NameEdit'     => nil,    'Window_NameInput'    => nil,    'Window_ChoiceList'   => nil,    'Window_NumberInput'  => nil,    'Window_KeyItem'      => nil,    'Window_Message'      => nil, # Show Text Window    'Window_ScrollText'   => nil,    'Window_MapName'      => nil,    'Window_BattleLog'    => nil,    'Window_PartyCommand' => nil,    'Window_ActorCommand' => nil,    'Window_BattleStatus' => nil,    'Window_BattleActor'  => nil,    'Window_BattleEnemy'  => nil,    'Window_BattleSkill'  => nil,    'Window_BattleItem'   => nil,    'Window_TitleCommand' => nil,    'Window_GameEnd'      => nil,    'Window_DebugLeft'    => nil,    'Window_DebugRight'   => nil,  }end; end # module Nap; module Win_Skin#===============================================================================$imported ||= {}$imported[:window_skin] = 1.00#===============================================================================# Window Base#===============================================================================class Window_Base < Window    #-----------------------------------------------------------------------------  # Initialize                                                             #-----------------------------------------------------------------------------  alias nap_win_skin_initialize initialize  def initialize(x, y, width, height)    nap_win_skin_initialize(x, y, width, height)    self.windowskin = $game_system.window_skin_bitmap(self.class)  endend#===============================================================================# Window Message# For: Because this window is only initialized once we need to set the skin#      when it is opened.#===============================================================================class Window_Message < Window_Base  alias nap_win_skin_open_and_wait open_and_wait  def open_and_wait        self.windowskin = $game_system.window_skin_bitmap(self.class)    nap_win_skin_open_and_wait  endend#===============================================================================# Game System#===============================================================================class Game_System  attr_accessor :window_skins   alias nap_win_skin_initialize initialize  #-----------------------------------------------------------------------------  # Initialize                                                             #-----------------------------------------------------------------------------  def initialize    nap_win_skin_initialize    @window_skins = Nap::Win_Skin::SKINS  end  #-----------------------------------------------------------------------------  # Window Skin Bitmap                                                       # Note: returns the default skin if a non-existing key is selected or if the  #       value is nil.  #-----------------------------------------------------------------------------  def window_skin_bitmap(window_name=Nap::Win_Skin::DEFAULT_KEY)    window_name = window_name.to_s.dup # to_s is required in case self.class is used (it not a string and will fail the comparison)    skin_name = @window_skins    window_name = Nap::Win_Skin::DEFAULT_KEY if !skin_name || !@window_skins    Cache.system(@window_skins)  endend#===============================================================================class Game_Interpreter  #-----------------------------------------------------------------------------  # Set Skin                                                                 #-----------------------------------------------------------------------------  def set_skin(skin_name, window_name=Nap::Win_Skin::DEFAULT_KEY)    $game_system.window_skins = skin_name  end  #-----------------------------------------------------------------------------  # Set All Skins                                                            #-----------------------------------------------------------------------------  def set_all_skins(new_skin_name)    $game_system.window_skins.keys.each { |k| $game_system.window_skins = skin_name = nil }    set_default_skin(new_skin_name)  end  #-----------------------------------------------------------------------------  # Set Default Skin                                                         #-----------------------------------------------------------------------------  def set_default_skin(new_default_name)    $game_system.window_skins = new_default_name  endend#===============================================================================








本贴来自国际rpgmaker官方论坛作者:Napoleon处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/dynamic-window-skin.12971/
页: [1]
查看完整版本: Dynamic Window Skin