设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2429|回复: 1
打印 上一主题 下一主题

[已经解决] 【关于菜单的问题】

[复制链接]

Lv1.梦旅人

梦石
0
星屑
160
在线时间
150 小时
注册时间
2015-10-14
帖子
212
跳转到指定楼层
1
发表于 2016-1-5 22:07:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
嗯,没错 又是我

1.怎么更改菜单背景的不透明度?/怎么去掉菜单背景?
2.如果我想从某个事件直接连接到外站脚本的功用,我该填什么?

以下是脚本↓
RUBY 代码复制
  1. #encoding:utf-8
  2.  
  3. =begin
  4. *******************************************************************************************
  5.  
  6.    * Lctseng - 系統設定畫面 *
  7.  
  8.                        for RGSS3
  9.  
  10.         Ver 1.01   2013.09.02
  11.  
  12.    原作者:魂(Lctseng),巴哈姆特論壇ID:play123
  13.    原文發表於:巴哈姆特RPG製作大師哈拉版
  14.  
  15.    轉載請保留此標籤
  16.  
  17.    個人小屋連結:[url]http://home.gamer.com.tw/homeindex.php?owner=play123[/url]
  18.  
  19.    主要功能:
  20.                        一、設定BGM(ME)、SE(BGS)、亮度的大小
  21.                        二、具有"重置"功能
  22.  
  23.    更新紀錄:
  24.     Ver 1.00 :
  25.     日期:2013.08.18
  26.     摘要:一、最初版本
  27.  
  28.  
  29.    更新紀錄:
  30.     Ver 1.01 :
  31.     日期:2013.09.02
  32.     摘要:一、新增重置功能,允許調整各圖示的位置
  33.  
  34.     
  35.  
  36.     撰寫摘要:一、此腳本修改或重新定義以下類別:
  37.                           1.Scene_Base
  38.                           2.Audio
  39.                          
  40.                          
  41.                           二、此腳本新定義以下類別和模組:
  42.                           1.Lctseng::SystemOption
  43.                           2.Game_SystemOption
  44.                           3.Scene_SystemOption
  45.                           4.Spriteset_OptionBar
  46.                           5.Sprite_OptionArrow
  47.                          
  48.  
  49. *******************************************************************************************
  50.  
  51. =end
  52.  
  53. #*******************************************************************************************
  54. #
  55. #   請勿修改從這裡以下的程式碼,除非你知道你在做什麼!
  56. #   DO NOT MODIFY UNLESS YOU KNOW WHAT TO DO !
  57. #
  58. #*******************************************************************************************
  59.  
  60. #--------------------------------------------------------------------------
  61. # ★ 紀錄腳本資訊
  62. #--------------------------------------------------------------------------
  63. if !$lctseng_scripts  
  64.   $lctseng_scripts = {}
  65. end
  66. $lctseng_scripts[:system_option] = "1.01"
  67.  
  68. puts "載入腳本:Lctseng - 系統設定畫面,版本:#{$lctseng_scripts[:system_option]}"
  69.  
  70. #encoding:utf-8
  71. #==============================================================================
  72. # ■ Lctseng::SystemOption
  73. #------------------------------------------------------------------------------
  74. #  有關系統設定選單的設定
  75. #==============================================================================
  76. module Lctseng
  77. module SystemOption
  78.   #--------------------------------------------------------------------------
  79.   # ● 顯示條的寬高,配合圖片填寫
  80.   #--------------------------------------------------------------------------
  81.   Bar_Width = 290
  82.   Bar_Height = 43
  83.   #--------------------------------------------------------------------------
  84.   # ● 顯示條的X座標(全部統一)
  85.   #--------------------------------------------------------------------------
  86.   Bar_X = 236
  87.   #--------------------------------------------------------------------------
  88.   # ● 顯示條的Y座標(三個分開)
  89.   #--------------------------------------------------------------------------
  90.   Bar_Y = [101,193,296]
  91.   #--------------------------------------------------------------------------
  92.   # ● 箭頭的X座標(全部統一)
  93.   #--------------------------------------------------------------------------
  94.   ARROW_X = 47
  95.   #--------------------------------------------------------------------------
  96.   # ● 箭頭的Y座標(四個分開)
  97.   #--------------------------------------------------------------------------
  98.   ARROW_Y = [99,205,308,384]
  99.  
  100. end
  101. end
  102.  
  103.  
  104.  
  105. #encoding:utf-8
  106. #==============================================================================
  107. # ■ Audio
  108. #------------------------------------------------------------------------------
  109. #  內建的聲音模組
  110. #==============================================================================
  111. module Audio
  112.   #--------------------------------------------------------------------------
  113.   # ★ 方法重新定義
  114.   #--------------------------------------------------------------------------
  115.   class << self
  116.   unless @lctseng_for_system_option_on_Audio_alias
  117.     alias lctseng_for_system_option_on_Audio_for_Bgm_play bgm_play # 播放背景音樂
  118.     alias lctseng_for_system_option_on_Audio_for_me_play me_play # 播放音樂
  119.     alias lctseng_for_system_option_on_Audio_for_Bgs_play bgs_play # 播放背景音效
  120.     alias lctseng_for_system_option_on_Audio_for_se_play se_play # 播放音效
  121.     @lctseng_for_system_option_on_Audio_alias = true
  122.   end
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 設定聲音的大小比率(百分比)
  126.   #--------------------------------------------------------------------------
  127.   def self.set_sound_rate(rate)
  128.     @sound_rate = rate / 100.0
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 設定音樂的大小比率(百分比)
  132.   #--------------------------------------------------------------------------
  133.   def self.set_music_rate(rate)
  134.     @music_rate = rate / 100.0
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 設定聲音的大小比率(百分比),含效果
  138.   #--------------------------------------------------------------------------
  139.   def self.set_sound_rate_with_effect(rate)
  140.     old_rate = @sound_rate
  141.     old_music = RPG::BGS.last.clone
  142.     #puts "原比率:#{old_rate}"
  143.     old_music.volume =  (old_music.volume / old_rate).round
  144.     #puts "原音量:#{old_music.volume}"
  145.     RPG::BGS.stop
  146.     set_sound_rate(rate)
  147.     old_music.volume *= @sound_rate
  148.     old_music.volume = 100 if old_music.volume > 100
  149.     puts "位置:#{old_music.pos}"
  150.     old_music.replay
  151.     ##
  152.     name = 'SoundOptionEffect'
  153.     se_play('Audio/SE/' + name)
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 設定音樂的大小比率(百分比),含效果
  157.   #--------------------------------------------------------------------------
  158.   def self.set_music_rate_with_effect(rate)
  159.     old_rate = @music_rate
  160.     old_music = RPG::BGM.last.clone
  161.     #puts "原比率:#{old_rate}"
  162.     old_music.volume =  (old_music.volume / old_rate).round
  163.     #puts "原音量:#{old_music.volume}"
  164.     RPG::BGM.stop
  165.     set_music_rate(rate)
  166.     old_music.volume *= @music_rate
  167.     old_music.volume = 100 if old_music.volume > 100
  168.     puts "位置:#{old_music.pos}"
  169.     old_music.pos += 60000
  170.     old_music.replay
  171.   end  
  172.   #--------------------------------------------------------------------------
  173.   # ● 播放背景音樂
  174.   #--------------------------------------------------------------------------
  175.   def self.bgm_play(filename,volume = 100,pitch = 100,pos = 0)
  176.     if !@music_rate
  177.       @music_rate = 1.0
  178.     end
  179.     volume = (volume * @music_rate).round
  180.     lctseng_for_system_option_on_Audio_for_Bgm_play(filename,volume,pitch,pos)
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 播放音樂
  184.   #--------------------------------------------------------------------------
  185.   def self.me_play(filename,volume = 100,pitch = 100)
  186.     if !@music_rate
  187.       @music_rate = 1.0
  188.     end
  189.     volume = (volume * @music_rate).round
  190.     lctseng_for_system_option_on_Audio_for_me_play(filename,volume,pitch)
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 播放背景音效
  194.   #--------------------------------------------------------------------------
  195.   def self.bgs_play(filename,volume = 80,pitch = 100,pos = 0)
  196.     if !@sound_rate
  197.       @sound_rate = 1.0
  198.     end
  199.     volume = (volume * @sound_rate).round
  200.     lctseng_for_system_option_on_Audio_for_Bgs_play(filename,volume,pitch,pos)
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 播放音效
  204.   #--------------------------------------------------------------------------
  205.   def self.se_play(filename,volume = 80,pitch = 100)
  206.     if !@sound_rate
  207.       @sound_rate = 1.0
  208.     end
  209.     volume = (volume * @sound_rate).round
  210.     lctseng_for_system_option_on_Audio_for_se_play(filename,volume,pitch)
  211.   end  
  212. end
  213.  
  214.  
  215. #encoding:utf-8
  216. #==============================================================================
  217. # ■Game_SystemOption
  218. #------------------------------------------------------------------------------
  219. #  管理系統資訊的視窗
  220. #==============================================================================
  221. class Game_SystemOption
  222.   #--------------------------------------------------------------------------
  223.   # ● 定義實例變數
  224.   #--------------------------------------------------------------------------
  225.   attr_accessor :volume_music
  226.   attr_accessor :volume_sound
  227.   attr_accessor :brightness
  228.   #--------------------------------------------------------------------------
  229.   # ● 初始化對象
  230.   #--------------------------------------------------------------------------
  231.   def initialize
  232.     clear_all_data
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 重置
  236.   #--------------------------------------------------------------------------
  237.   def reset
  238.     puts "執行重置"
  239.     clear_all_data
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 取得三大資料的陣列型態
  243.   #--------------------------------------------------------------------------
  244.   def data_array
  245.     [@volume_music,@volume_sound,@brightness]
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● 取得三大資料的比率資訊
  249.   #--------------------------------------------------------------------------
  250.   def data_rates
  251.     [@volume_music/100.0,@volume_sound/100.0,@brightness/455.0]
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 清除所有資料
  255.   #--------------------------------------------------------------------------
  256.   def clear_all_data
  257.     @volume_music = 100
  258.     @volume_sound = 100
  259.     @brightness = 255
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 改變音效音量(單位畫格)
  263.   #--------------------------------------------------------------------------
  264.   def change_sound(value)
  265.     @volume_sound += value
  266.     if @volume_sound > 100
  267.       @volume_sound = 100
  268.     elsif @volume_sound < 1
  269.       @volume_sound = 1
  270.     end
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 改變音樂音量(單位畫格)
  274.   #--------------------------------------------------------------------------
  275.   def change_music(value)
  276.     @volume_music += value
  277.     if @volume_music > 100
  278.       @volume_music = 100
  279.     elsif @volume_music < 1
  280.       @volume_music = 1
  281.     end
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 改變亮度(單位畫格)
  285.   #--------------------------------------------------------------------------
  286.   def change_brightness(value)
  287.     @brightness += value
  288.     if @brightness > 455
  289.       @brightness = 455
  290.     elsif @brightness < 55
  291.       @brightness = 55
  292.     end
  293.   end
  294. end
  295.  
  296.  
  297. #encoding:utf-8
  298. #==============================================================================
  299. # ■ Scene_Base
  300. #------------------------------------------------------------------------------
  301. #  游戲中所有 Scene 類(場景類)的父類
  302. #==============================================================================
  303.  
  304. class Scene_Base
  305.   #--------------------------------------------------------------------------
  306.   # ★ 方法重新定義
  307.   #--------------------------------------------------------------------------
  308.   unless @lctseng_for_system_option_on_Scene_Base_alias
  309.     alias lctseng_for_system_option_on_Scene_Base_for_Start start # 開始處理
  310.     alias lctseng_for_system_option_on_Scene_Base_for_Terminate terminate # 結束處理
  311.     @lctseng_for_system_option_on_Scene_Base_alias = true
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 開始處理 - 重新定義
  315.   #--------------------------------------------------------------------------
  316.   def start
  317.     set_system_option
  318.     lctseng_for_system_option_on_Scene_Base_for_Start
  319.     create_brightness_viewport
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 結束處理 - 重新定義
  323.   #--------------------------------------------------------------------------
  324.   def terminate
  325.     lctseng_for_system_option_on_Scene_Base_for_Terminate
  326.     dispose_brightness_viewport
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 產生亮度調整用顯示端口
  330.   #--------------------------------------------------------------------------
  331.   def create_brightness_viewport
  332.     @viewport_brightness = Viewport.new
  333.     @viewport_brightness.z = 5000
  334.     adjust_brightness
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● 釋放亮度調整用顯示端口
  338.   #--------------------------------------------------------------------------
  339.   def dispose_brightness_viewport
  340.     @viewport_brightness.dispose
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ● 執行修正亮度
  344.   #--------------------------------------------------------------------------
  345.   def adjust_brightness
  346.     minus = @system_data.brightness - 255
  347.     @viewport_brightness.tone.red = minus
  348.     @viewport_brightness.tone.green = minus
  349.     @viewport_brightness.tone.blue = minus
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 取得系統資訊物件
  353.   #--------------------------------------------------------------------------
  354.   def system_data_object
  355.     @system_data
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 重設系統資訊
  359.   #--------------------------------------------------------------------------
  360.   def set_system_option
  361.     @system_data = load_system_data
  362.     Audio.set_music_rate(@system_data.volume_music)
  363.     Audio.set_sound_rate(@system_data.volume_sound)
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 讀取系統設定資訊
  367.   #--------------------------------------------------------------------------
  368.   def load_system_data
  369.     begin
  370.       return load_system_data_directly
  371.     rescue
  372.       puts "原有資訊不存在,創立新檔案"
  373.       data = write_new_data
  374.       return data
  375.     end
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● 讀取系統設定資訊(直接讀取)
  379.   #--------------------------------------------------------------------------
  380.   def load_system_data_directly
  381.     File.open("SystemOption", "rb") do |file|
  382.       puts "正在讀取原有資訊"
  383.       return Marshal.load(file)
  384.     end
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ● 寫入新的系統設定資訊檔案
  388.   #--------------------------------------------------------------------------
  389.   def write_new_data
  390.     new_data = Game_SystemOption.new
  391.     File.open("SystemOption", "wb") do |file|
  392.       Marshal.dump(new_data, file)
  393.     end
  394.     return new_data
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● 寫入系統設定資訊檔案
  398.   #--------------------------------------------------------------------------
  399.   def write_system_data
  400.     save_data(system_data_object,"SystemOption")
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ● 更新畫面(基礎)
  404.   #--------------------------------------------------------------------------
  405.   def update_basic
  406.     Graphics.update
  407.     Input.update
  408.     update_all_windows
  409.   end
  410. end
  411.  
  412.  
  413. #encoding:utf-8
  414. #==============================================================================
  415. # ■ Scene_SystemOption
  416. #------------------------------------------------------------------------------
  417. #  系統選單的管理
  418. #==============================================================================
  419.  
  420. class Scene_SystemOption < Scene_Base
  421.  
  422.   #--------------------------------------------------------------------------
  423.   # ● 開始處理
  424.   #--------------------------------------------------------------------------
  425.   def start
  426.     super
  427.     create_back_ground
  428.     create_arrow
  429.     create_bar
  430.     @index = 0
  431.     @stop = true
  432.     @allow_change = true
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ● 產生背景
  436.   #--------------------------------------------------------------------------
  437.   def create_back_ground
  438.     @back_ground = Sprite.new(@viewport)
  439.     @back_ground.bitmap = Cache.system("System_Option_Background")
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● 產生箭頭
  443.   #--------------------------------------------------------------------------
  444.   def create_arrow
  445.     @arrow_sprite = Sprite_OptionArrow.new(@viewport)
  446.   end
  447.   #--------------------------------------------------------------------------
  448.   # ● 產生比率條精靈組
  449.   #--------------------------------------------------------------------------
  450.   def create_bar
  451.     @bar_spritesets = []
  452.     system_data_object.data_rates.each_with_index do |rate,index|
  453.       @bar_spritesets.push(Spriteset_OptionBar.new(index,rate))
  454.     end
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ● 釋放背景
  458.   #--------------------------------------------------------------------------
  459.   def dispose_back_ground
  460.     @back_ground.bitmap.dispose
  461.     @back_ground.dispose
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 釋放箭頭
  465.   #--------------------------------------------------------------------------
  466.   def dispose_arrow
  467.     @arrow_sprite.dispose
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● 結束處理
  471.   #--------------------------------------------------------------------------
  472.   def terminate
  473.     dispose_back_ground
  474.     dispose_arrow
  475.     dispose_bar
  476.     super
  477.   end
  478.   #--------------------------------------------------------------------------
  479.   # ● 釋放比率
  480.   #--------------------------------------------------------------------------
  481.   def dispose_bar
  482.     @bar_spritesets.each do |sprite|
  483.       sprite.dispose
  484.     end
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● 更新箭頭
  488.   #--------------------------------------------------------------------------
  489.   def update_arrow
  490.     @arrow_sprite.update_pos(@index)
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   # ● 更新畫面
  494.   #--------------------------------------------------------------------------
  495.   def update
  496.     super
  497.     update_command
  498.     update_arrow
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● 更新指令
  502.   #--------------------------------------------------------------------------
  503.   def update_command
  504.     if @allow_change
  505.       changing = false
  506.       if Input.press?(:RIGHT)
  507.         changing = true
  508.         @stop = false
  509.         update_right
  510.       elsif Input.press?(:LEFT)
  511.         changing = true
  512.         @stop = false
  513.         update_left
  514.       end
  515.       if !changing
  516.         if !@stop
  517.           @stop = true
  518.           process_on_stop
  519.         end
  520.         if Input.trigger?(:B)
  521.           write_system_data
  522.           return_scene
  523.         end
  524.         if (Input.trigger?(:C) && @index == 3 )
  525.           system_data_object.reset
  526.           process_on_stop
  527.           update_when_change
  528.           adjust_brightness
  529.         end
  530.         if Input.repeat?(:UP)
  531.           @index -= 1
  532.           if @index < 0
  533.             @index = 3
  534.           end
  535.           moving = true
  536.         elsif Input.repeat?(:DOWN)
  537.           @index += 1
  538.           @index %= 4
  539.           moving = true
  540.         end
  541.       end
  542.     end
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 停止時的處理
  546.   #--------------------------------------------------------------------------
  547.   def process_on_stop
  548.     case @index
  549.     when 0
  550.       Audio.set_music_rate_with_effect(system_data_object.volume_music)
  551.     when 1
  552.       Audio.set_sound_rate_with_effect(system_data_object.volume_sound)
  553.     when 3
  554.       Audio.set_music_rate_with_effect(system_data_object.volume_music)
  555.       Audio.set_sound_rate_with_effect(system_data_object.volume_sound)
  556.     end
  557.     puts "執行停止"
  558.     write_system_data
  559.     puts "三項資料:#{system_data_object.data_array}"
  560.   end
  561.   #--------------------------------------------------------------------------
  562.   # ● 更換比率後的更新
  563.   #--------------------------------------------------------------------------
  564.   def update_when_change
  565.     if @index > 2
  566.       3.times do |index|
  567.         @bar_spritesets[index].update_rate(system_data_object.data_rates[index])
  568.       end
  569.     else
  570.       @bar_spritesets[@index].update_rate(system_data_object.data_rates[@index])
  571.     end
  572.  
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● 更新右移
  576.   #--------------------------------------------------------------------------
  577.   def update_right
  578.     case @index
  579.     when 0
  580.       system_data_object.change_music(1)
  581.     when 1
  582.       system_data_object.change_sound(1)
  583.     when 2
  584.       system_data_object.change_brightness(1)
  585.       adjust_brightness
  586.     end
  587.     update_when_change
  588.   end
  589.   #--------------------------------------------------------------------------
  590.   # ● 更新左移
  591.   #-------------------------------------------------------------------------
  592.   def update_left
  593.     case @index
  594.     when 0
  595.       system_data_object.change_music(-1)
  596.     when 1
  597.       system_data_object.change_sound(-1)
  598.     when 2
  599.       system_data_object.change_brightness(-1)
  600.       adjust_brightness
  601.     end
  602.     update_when_change
  603.   end
  604. end
  605.  
  606.  
  607. #encoding:utf-8
  608. #==============================================================================
  609. # ■ Spriteset_OptionBar
  610. #      系統設定裡的比率條精靈組
  611. #==============================================================================
  612.  
  613. class Spriteset_OptionBar
  614.   #--------------------------------------------------------------------------
  615.   # ● 初始化對象
  616.   #--------------------------------------------------------------------------
  617.   def initialize(index,rate)
  618.     @index = index
  619.     @rate = rate
  620.     create_viewport
  621.     create_sprite
  622.   end
  623.   #--------------------------------------------------------------------------
  624.   # ● 取得顯示端口用的矩形
  625.   #--------------------------------------------------------------------------
  626.   def get_viewport_rect
  627.     ry = Lctseng::SystemOption::Bar_Y[@index]
  628.     if !ry
  629.       ry = 0
  630.     end
  631.     return Rect.new(Lctseng::SystemOption::Bar_X,ry,Lctseng::SystemOption::Bar_Width,Lctseng::SystemOption::Bar_Height)
  632.   end
  633.   #--------------------------------------------------------------------------
  634.   # ● 產生顯示端口
  635.   #--------------------------------------------------------------------------
  636.   def create_viewport
  637.     @viewport = Viewport.new(get_viewport_rect)
  638.     @viewport.rect.width = Lctseng::SystemOption::Bar_Width * @rate
  639.     @viewport.z = 200
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 產生精靈
  643.   #--------------------------------------------------------------------------
  644.   def create_sprite
  645.     @sprite = Sprite.new(@viewport)
  646.     @sprite.bitmap = Cache.system("System_Option_Bar")
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● 更新比率
  650.   #--------------------------------------------------------------------------
  651.   def update_rate(rate)
  652.     @rate = rate
  653.     update_viewport
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 更新顯示端口
  657.   #--------------------------------------------------------------------------
  658.   def update_viewport
  659.     @viewport.rect.width = Lctseng::SystemOption::Bar_Width * @rate
  660.   end
  661.   #--------------------------------------------------------------------------
  662.   # ● 釋放精靈
  663.   #--------------------------------------------------------------------------
  664.   def dispose_sprite
  665.     @sprite.dispose
  666.   end
  667.   #--------------------------------------------------------------------------
  668.   # ● 釋放顯示端口
  669.   #--------------------------------------------------------------------------
  670.   def dispose_viewport
  671.     @viewport.dispose
  672.   end
  673.   #--------------------------------------------------------------------------
  674.   # ● 釋放
  675.   #--------------------------------------------------------------------------
  676.   def dispose
  677.     dispose_sprite
  678.     dispose_viewport
  679.   end
  680. end
  681.  
  682.  
  683. #encoding:utf-8
  684. #==============================================================================
  685. # ■ Sprite_OptionArrow
  686. #      系統設定裡的箭頭精靈
  687. #==============================================================================
  688.  
  689. class Sprite_OptionArrow < Sprite_Base
  690.   #--------------------------------------------------------------------------
  691.   # ● 初始化對象
  692.   #--------------------------------------------------------------------------
  693.   def initialize(viewport = nil)
  694.     super(viewport)
  695.     self.bitmap = Cache.system("System_Option_Arrow")
  696.     self.x = Lctseng::SystemOption::ARROW_X
  697.     update_pos(0)
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 更新畫面
  701.   #--------------------------------------------------------------------------
  702.   def update
  703.     super
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 釋放
  707.   #--------------------------------------------------------------------------
  708.   def dispose
  709.     self.bitmap.dispose if self.bitmap
  710.     super
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● 更新位置
  714.   #--------------------------------------------------------------------------
  715.   def update_pos(index)
  716.     ry = Lctseng::SystemOption::ARROW_Y[index]
  717.     if !ry
  718.       ry = 0
  719.     end
  720.     self.y =  ry
  721.   end
  722. end



RUBY 代码复制
  1. #encoding:utf-8
  2.  
  3. =begin
  4. *******************************************************************************************
  5.  
  6.    * Lctseng - 追加系統設定選單*
  7.  
  8.                        for RGSS3
  9.  
  10.         Ver 1.00   2013.09.02
  11.  
  12.    原作者:魂(Lctseng),巴哈姆特論壇ID:play123
  13.    原文發表於:巴哈姆特RPG製作大師哈拉版
  14.  
  15.    轉載請保留此標籤
  16.  
  17.    個人小屋連結:[url]http://home.gamer.com.tw/homeindex.php?owner=play123[/url]
  18.    
  19.    需求前置腳本:Lctseng - 系統設定畫面
  20.    請將此腳本至於該腳本底下
  21.    
  22.    
  23.    主要功能:
  24.                        一、將系統設定畫面添加到選單指令中
  25.  
  26.    更新紀錄:
  27.     Ver 1.00 :
  28.     日期:2013.09.02
  29.     摘要:一、最初版本
  30.  
  31.  
  32.  
  33.     撰寫摘要:一、此腳本修改或重新定義以下類別:
  34.                           1.Scene_Menu
  35.                           2.Window_MenuCommand
  36.                          
  37.                          
  38.  
  39. *******************************************************************************************
  40.  
  41. =end
  42.  
  43. #*******************************************************************************************
  44. #
  45. #   請勿修改從這裡以下的程式碼,除非你知道你在做什麼!
  46. #   DO NOT MODIFY UNLESS YOU KNOW WHAT TO DO !
  47. #
  48. #*******************************************************************************************
  49.  
  50. #--------------------------------------------------------------------------
  51. # ★ 紀錄腳本資訊
  52. #--------------------------------------------------------------------------
  53. if !$lctseng_scripts  
  54.   $lctseng_scripts = {}
  55. end
  56. ## 檢查前置腳本
  57. if !$lctseng_scripts[:system_option]
  58.   msgbox("沒有發現前置腳本:Lctseng - 系統設定畫面\n或者是腳本位置錯誤!\n程式即將關閉")
  59.   exit
  60. end
  61. $lctseng_scripts[:menu_system_option] = "1.00"
  62.  
  63. puts "載入腳本:Lctseng - 追加系統設定選單,版本:#{$lctseng_scripts[:menu_system_option]}"
  64.  
  65. #encoding:utf-8
  66. #==============================================================================
  67. # ■ Scene_Menu
  68. #------------------------------------------------------------------------------
  69. #  菜單畫面
  70. #==============================================================================
  71.  
  72. class Scene_Menu
  73.   #--------------------------------------------------------------------------
  74.   # ★ 方法重新定義
  75.   #--------------------------------------------------------------------------
  76.   unless @lctseng_for_system_option_on_Scene_Menu_alias
  77.     alias lctseng_for_system_option_on_Scene_Menu_for_Create_command_window create_command_window # 生成指令窗口
  78.     @lctseng_for_system_option_on_Scene_Menu_alias = true
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 生成指令窗口 - 重新定義
  82.   #--------------------------------------------------------------------------
  83.   def create_command_window(*args,&block)
  84.     lctseng_for_system_option_on_Scene_Menu_for_Create_command_window(*args,&block)
  85.     @command_window.set_handler(:systemOption,    method(:command_system))
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 指令“系統”
  89.   #--------------------------------------------------------------------------
  90.   def command_system
  91.     SceneManager.call(Scene_SystemOption)
  92.   end
  93.  
  94. end
  95.  
  96.  
  97. #encoding:utf-8
  98. #==============================================================================
  99. # ■ Window_MenuCommand
  100. #------------------------------------------------------------------------------
  101. #  菜單畫面中顯示指令的窗口
  102. #==============================================================================
  103.  
  104. class Window_MenuCommand < Window_Command
  105.   #--------------------------------------------------------------------------
  106.   # ★ 方法重新定義
  107.   #--------------------------------------------------------------------------
  108.   unless @lctseng_for_system_option_on_Window_MenuCommand_alias
  109.     alias lctseng_for_system_option_on_Window_MenuCommand_for_Add_original_commands add_original_commands
  110.     @lctseng_for_system_option_on_Window_MenuCommand_alias = true
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 獨自添加指令用 - 重新定義
  114.   #--------------------------------------------------------------------------
  115.   def add_original_commands(*args,&block)
  116.     lctseng_for_system_option_on_Window_MenuCommand_for_Add_original_commands(*args,&block)
  117.     add_command("系統選項", :systemOption, true)
  118.   end
  119.  
  120. end




填坑中

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2015-12-31
帖子
9
2
发表于 2016-1-6 10:10:49 | 只看该作者
1.怎么更改菜单背景的不透明度?/怎么去掉菜单背景?
菜单位于脚本Window_MenuCommand,它是个窗口(隔了几代继承于Window)。
凡是窗口的,关于透明度有下面三个参数(为Window的属性):
1、opacity (窗口不透明度,取值0-255,不含内容)
2、back_opacity(窗口背景不透明度,取值0-255,不含内容不含边框)
3、contents_opacity (窗口内容不透明度,取值0-255)
1(opacity )和2(back_opacity)的透明度改变时候不会影响窗口内容(contents_opacity )的透明度。
那么,只要对需要改变的Window_MenuCommand实例设置所需参数即可。

2.如果我想从某个事件直接连接到外站脚本的功用,我该填什么?
知道它的运作原理就会明白。
首先要知道有个类是Window_Command,菜单窗口(Window_MenuCommand)的父类。
它维护了一个重要的变量:@list。这是个数组,便是用它来管理指令的。
同样,add_command(添加指令方法)也在这个类中定义,他就是往@list中添加了一个东西(那个东西叫哈希表)。
————————————————
接下来查看Window_MenuCommand类,他是上面Window_Command的子类。它的主要作用就是调用一系列的add_command方法。
是的,菜单上看到的物品、技能等等字样第一步都是在这里添加的。顺便提一下,这只是添加入一个@list数组而已,这些字是怎么会显示到菜单上的呢?可以看到Window_Command中的draw_item方法,正是它从@list中找出了“物品、技能”等等这些名字画到了菜单窗口上,他在窗口刷新(父类中)时被调用。
————————————————
现在说明另一个哈希表@handler,他被定义在Window_Command的父类Window_Selectable中,他有一个相关方法set_handler,便是向@handler中添加一对值,他会在包含Window_Command子类实例的场景中调用。以菜单场景(Scene_Menu)为例,他在create_command_window方法调用了一系列set_handler给“物品、技能”等等这些字样绑定方法,熟悉编程的可以把它理解成是个存放函数指针的东西。之所以这些方法要在场景中绑定,是因为这些方法往往跟场景中的其他内容有关,与窗口本身无关。
————————————————
说道这里你一定感到奇怪:@list和@handler是两个不同的变量,甚至定义在不同类当中,为什么添加指令是@list的操作,而绑定方法是对@handler操作,他们是怎么联系起来的?答案是index变量,他被定义在Window_Selectable中,他是记录光标位置的值,按下上下左右翻页,它的值就会变。Window_Command中的current_data就是根据这个index获取@list的内容,从而得到current_symbol,从而在call_ok_handler方法(按确定键调用)找到@handler与之绑定的方法执行。

点评

………………回答这么仔细,给跪了  发表于 2016-1-6 14:15

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 06:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表