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

Project1

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

[已经过期] 请问仿魔兽的动态菜单怎么调整透明度?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2013-7-19
帖子
121
跳转到指定楼层
1
发表于 2015-2-11 15:52:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问这个仿魔兽的动态菜单怎么调整透明度
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,仿魔兽式窗口。转载请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ Warcraftization
  6. #------------------------------------------------------------------------------
  7. #  处理魔兽式菜单切换的模块。
  8. #==============================================================================

  9. module Warcraftization
  10. Dispose_effect = "Audio/SE/024-Door01"       # 菜单切换时音效
  11. Ini_efect = "Audio/SE/029-Door06"            # 切换结束时音效
  12. # 窗口移动的速度:反比,取整数,范围1-12,1最快,12最慢
  13. Speed = 7                                    # 窗口移动的速度           
  14. Elasticity = true                            # 窗口有无弹性

  15. #############################################################################
  16. #############################################################################
  17. # 处理速度的函数 (为了让直接调用 $scene = XXX.new 也生效,故每个Scene都调用)
  18. def speed
  19.    # 速度处理 (因为像素不可活算小数(分数),所以只能取一些公约数)
  20.    # (存档处因为数字比较特殊,所以这里的速度不影响它
  21.    #  有兴趣可以自己在下面的Scene_File调)
  22.    case Speed
  23.    when 1;$speed = 1
  24.    when 2;$speed = 2
  25.    when 3;$speed = 4
  26.    when 4;$speed = 5
  27.    when 5;$speed = 8
  28.    when 6;$speed = 10
  29.    when 7;$speed = 16
  30.    when 8;$speed = 20
  31.    when 9;$speed = 32
  32.    when 10;$speed = 40
  33.    when 11;$speed = 80
  34.    when 12;$speed = 160
  35.    end
  36. end
  37. # 弹力处理
  38. def elasticity (object)
  39.    if Elasticity then for i in 0 .. 5
  40.        object.y -= i * 2
  41.        Graphics.update
  42.      end;for i in 0 .. 5
  43.        object.y += i * 2
  44.        Graphics.update
  45.      end;for i in 0 .. 3
  46.        object.y -= i * 2
  47.        Graphics.update
  48.      end;for i in 0 .. 3
  49.        object.y += i * 2
  50.        Graphics.update
  51.      end;for i in 0 .. 1
  52.        object.y -= i * 2
  53.        Graphics.update
  54.      end;for i in 0 .. 1
  55.        object.y += i * 2
  56.        Graphics.update
  57.      end
  58.    end
  59. end
  60. end  
  61. #==============================================================================
  62. # ■ Scene_Menu
  63. #------------------------------------------------------------------------------
  64. #  处理菜单画面的类。
  65. #==============================================================================

  66. class Scene_Menu
  67. include Warcraftization
  68. #--------------------------------------------------------------------------
  69. # ● 主处理
  70. #--------------------------------------------------------------------------
  71. def main
  72.    speed
  73.    # 生成地图窗口
  74.    @spriteset = Spriteset_Map.new
  75.    # 生成命令窗口
  76.     s1 = $data_system.words.item
  77.     s2 = $data_system.words.skill
  78.     s3 = $data_system.words.equip
  79.     s4 = "状态"
  80.     s5 = "存档"
  81.     s6 = "读取"
  82.     s7 = "退出游戏"
  83.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
  84.     @command_window.index = @menu_index
  85.     @command_window.x = -160
  86.     @command_window.height -= 32
  87.    # 同伴人数为 0 的情况下
  88.    if $game_party.actors.size == 0
  89.      # 物品、特技、装备、状态无效化
  90.      @command_window.disable_item(0)
  91.      @command_window.disable_item(1)
  92.      @command_window.disable_item(2)
  93.      @command_window.disable_item(3)
  94.    end
  95.    # 禁止存档的情况下
  96.    if $game_system.save_disabled
  97.      # 存档无效
  98.      @command_window.disable_item(4)
  99.    end
  100.    # 生成游戏时间窗口
  101.    @playtime_window = Window_PlayTime.new
  102.    @playtime_window.x = -160
  103.    @playtime_window.y = 224
  104.    # 生成步数窗口
  105.    @steps_window = Window_Steps.new
  106.    @steps_window.x = -160
  107.    @steps_window.y = 320
  108.    # 生成金钱窗口
  109.    @gold_window = Window_Gold.new
  110.    @gold_window.x = -160
  111.    @gold_window.y = 416
  112.    # 生成状态窗口
  113.    @status_window = Window_MenuStatus.new
  114.    @status_window.x = 640
  115.    @status_window.y = 0
  116.    @command_window.back_opacity = 180
  117.    @playtime_window.back_opacity = 180
  118.    @steps_window.back_opacity = 180
  119.    @gold_window.back_opacity = 180
  120.    @status_window.back_opacity = 180
  121.    # 执行过渡
  122.    Graphics.transition
  123.    for i in 1 .. $speed
  124.      @command_window.x += 160 / $speed
  125.      @playtime_window.x += 160 / $speed
  126.      @steps_window.x += 160 / $speed
  127.      @gold_window.x += 160 / $speed
  128.      @status_window.x -= 480 / $speed
  129.      Graphics.update
  130.    end
  131.    Audio.se_play(Ini_efect, 100, 0)
  132.    # 主循环
  133.    loop do
  134.      # 刷新游戏画面
  135.      Graphics.update
  136.      # 刷新输入信息
  137.      Input.update
  138.      # 刷新画面
  139.      update
  140.      # 如果切换画面就中断循环
  141.      if $scene != self
  142.        break
  143.      end
  144.    end
  145.    Audio.se_play(Dispose_effect, 100, 100)
  146.    for i in 1 .. $speed
  147.      @command_window.x -= 160 / $speed
  148.      @playtime_window.x -= 160 / $speed
  149.      @steps_window.x -= 160 / $speed
  150.      @gold_window.x -= 160 / $speed
  151.      @status_window.x += 480 / $speed
  152.      Graphics.update
  153.    end   
  154.    # 释放活动块
  155.    # 准备过渡
  156.    Graphics.freeze
  157.    # 释放窗口
  158.    @command_window.dispose
  159.    @playtime_window.dispose
  160.    @steps_window.dispose
  161.    @gold_window.dispose
  162.    @status_window.dispose
  163.    # 释放地图窗口
  164.    @spriteset.dispose
  165. end
  166. end

  167. #==============================================
  168. #==本脚本来自www.66rpg.com,转载使用请保留此信息==
  169. #==============================================


  170. #==============================================================================
  171. # ■ Harts_Scene_Item
  172. #------------------------------------------------------------------------------
  173. #  アイテム画面の処理を行うクラスです。再定義
  174. #==============================================================================

  175. class Scene_Item
  176.   include Warcraftization  
  177. #--------------------------------------------------------------------------
  178. # ● メイン処理
  179. #--------------------------------------------------------------------------
  180. def main
  181.    # 生成地图窗口
  182.    @spriteset = Spriteset_Map.new
  183.    # タイトルウィンドウを作成
  184.    @itemtitle_window = Harts_Window_ItemTitle.new
  185.    @itemtitle_window.x = -160
  186.    #コマンドウィンドウを作成
  187.    @itemcommand_window = Harts_Window_ItemCommand.new
  188.    @command_index = @itemcommand_window.index
  189.    @itemcommand_window.x = -160
  190.    #アイテムウィンドウを作成
  191.    @itemlist_window = Harts_Window_ItemList.new
  192.    @itemlist_window.active = false
  193.    @itemlist_window.x = 640
  194.    #ヘルプウィンドウを作成
  195.    @help_window = Window_Help.new
  196.    @help_window.x = 0
  197.    @help_window.y = 416
  198.    @help_window.y = 480
  199.    # ヘルプウィンドウを関連付け
  200.    @itemcommand_window.help_window = @help_window
  201.    @itemlist_window.help_window = @help_window
  202.    # ターゲットウィンドウを作成 (不可視?非アクティブに設定)
  203.    @target_window = Window_Target.new
  204.    @target_window.y = -480
  205.    @target_window.visible = false
  206.    @target_window.active = false
  207.    # アイテムウィンドウ内容表示
  208.    @itemlist_window.set_item(@command_index)
  209.    # トランジション実行
  210.    Graphics.transition
  211.       for i in 1 .. $speed
  212.      @itemtitle_window.x += 160 / $speed
  213.      @itemcommand_window.x += 160 / $speed
  214.      @itemlist_window.x -= 480 / $speed
  215.      @help_window.y -= 64 / $speed
  216.      @target_window.y -= 480 / $speed
  217.      Graphics.update
  218.    end
  219.    Audio.se_play(Ini_efect, 100, 0)  
  220.    # メインループ
  221.    loop do
  222.      # ゲーム画面を更新
  223.      Graphics.update
  224.      # 入力情報を更新
  225.      Input.update
  226.      # フレーム更新
  227.      update
  228.      # 画面が切り替わったらループを中断
  229.      if $scene != self
  230.        break
  231.      end
  232.    end
  233.    Audio.se_play(Dispose_effect, 100, 100)
  234.    for i in 1 .. $speed
  235.      @itemtitle_window.x -= 160 / $speed
  236.      @itemcommand_window.x -= 160 / $speed
  237.      @itemlist_window.x += 480 / $speed
  238.      @help_window.y += 64 / $speed
  239.      @target_window.y -= 480 / $speed
  240.      Graphics.update
  241.    end
  242.    # トランジション準備
  243.    Graphics.freeze
  244.    # ウィンドウを解放
  245.    @itemtitle_window.dispose
  246.    @itemcommand_window.dispose
  247.    @itemlist_window.dispose
  248.    @help_window.dispose
  249.    @target_window.dispose
  250.    # 释放地图窗口
  251.    @spriteset.dispose
  252. end
  253. #--------------------------------------------------------------------------
  254. # ● フレーム更新
  255. #--------------------------------------------------------------------------
  256. def update
  257.    # ウィンドウを更新
  258.    @itemtitle_window.update
  259.    @itemcommand_window.update
  260.    @itemlist_window.update
  261.    @help_window.update
  262.    @target_window.update
  263.    if @command_index != @itemcommand_window.index
  264.      @command_index = @itemcommand_window.index
  265.      @itemlist_window.set_item(@command_index)
  266.    end
  267.    # コマンドウィンドウがアクティブの場合: update_itemcommand を呼ぶ
  268.    if @itemcommand_window.active
  269.      update_itemcommand
  270.      return
  271.    end
  272.    # アイテムウィンドウがアクティブの場合: update_itemlist を呼ぶ
  273.    if @itemlist_window.active
  274.      update_itemlist
  275.      return
  276.    end
  277.    # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
  278.    if @target_window.active
  279.      update_target
  280.      return
  281.    end
  282. end
  283. #--------------------------------------------------------------------------
  284. # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  285. #--------------------------------------------------------------------------
  286. def update_itemcommand
  287. # B ボタンが押された場合
  288. if Input.trigger?(Input::B)
  289. # キャンセル SE を演奏
  290. $game_system.se_play($data_system.cancel_se)
  291. # メニュー画面に切り替え
  292. $scene = Scene_Menu.new(0)
  293. return
  294. end
  295. # C ボタンが押された場合
  296. if Input.trigger?(Input::C)
  297. # 選択中のコマンドのアイテムがない場合
  298. if @itemlist_window.item_number == 0
  299. # ブザー SE を演奏
  300. $game_system.se_play($data_system.buzzer_se)
  301. return
  302. end
  303. # 決定 SE を演奏
  304. $game_system.se_play($data_system.decision_se)
  305. # アイテムウィンドウをアクティブにする
  306. @itemcommand_window.active = false
  307. @itemlist_window.active = true
  308. @itemlist_window.index = 0
  309. return
  310. end
  311. end
  312. #--------------------------------------------------------------------------
  313. # ● フレーム更新 (アイテムウィンドウがアクティブの場合)
  314. #--------------------------------------------------------------------------
  315. def update_itemlist
  316.    # B ボタンが押された場合
  317.    if Input.trigger?(Input::B)
  318.      # キャンセル SE を演奏
  319.      $game_system.se_play($data_system.cancel_se)
  320.      # アイテムウィンドウをアクティブにする
  321.      @itemcommand_window.active = true
  322.      @itemlist_window.active = false
  323.      @itemlist_window.index = 0
  324.      @itemcommand_window.index = @command_index
  325.      return
  326.    end
  327.    # C ボタンが押された場合
  328.    if Input.trigger?(Input::C)
  329.      # アイテムウィンドウで現在選択されているデータを取得
  330.      @item = @itemlist_window.item
  331.      # 使用アイテムではない場合
  332.      unless @item.is_a?(RPG::Item)
  333.        # ブザー SE を演奏
  334.        $game_system.se_play($data_system.buzzer_se)
  335.        return
  336.      end
  337.      # 使用できない場合
  338.      unless $game_party.item_can_use?(@item.id)
  339.        # ブザー SE を演奏
  340.        $game_system.se_play($data_system.buzzer_se)
  341.        return
  342.      end
  343.      # 決定 SE を演奏
  344.      $game_system.se_play($data_system.decision_se)
  345.      # 効果範囲が味方の場合
  346.      if @item.scope >= 3
  347.        # ターゲットウィンドウをアクティブ化
  348.        @itemlist_window.active = false
  349.        @target_window.x = 304
  350.        @target_window.visible = true
  351.        @target_window.active = true
  352.        # 効果範囲 (単体/全体) に応じてカーソル位置を設定
  353.        if @item.scope == 4 || @item.scope == 6
  354.          @target_window.index = -1
  355.        else
  356.          @target_window.index = 0
  357.        end
  358.        # 効果範囲が味方以外の場合
  359.      else
  360.        # コモンイベント ID が有効の場合
  361.        if @item.common_event_id > 0
  362.          # コモンイベント呼び出し予約
  363.          $game_temp.common_event_id = @item.common_event_id
  364.          # アイテムの使用時 SE を演奏
  365.          $game_system.se_play(@item.menu_se)
  366.          # 消耗品の場合
  367.            if @item.consumable
  368.              # 使用したアイテムを 1 減らす
  369.              $game_party.lose_item(@item.id, 1)
  370.              # アイテムウィンドウの項目を再描画
  371.              @itemlist_window.draw_item(@itemlist_window.index)
  372.            end
  373.          # マップ画面に切り替え
  374.          $scene = Scene_Map.new
  375.          return
  376.        end
  377.      end
  378.      return
  379.    end
  380. end
  381. #--------------------------------------------------------------------------
  382. # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
  383. #--------------------------------------------------------------------------
  384. def update_target
  385.    # B ボタンが押された場合
  386.    if Input.trigger?(Input::B)
  387.      # キャンセル SE を演奏
  388.      $game_system.se_play($data_system.cancel_se)
  389.      # アイテム切れなどで使用できなくなった場合
  390.      unless $game_party.item_can_use?(@item.id)
  391.        # アイテムウィンドウの内容を再作成
  392.        @itemlist_window.refresh
  393.      end
  394.      # ターゲットウィンドウを消去
  395.      @itemlist_window.active = true
  396.      @target_window.visible = false
  397.      @target_window.active = false
  398.      @itemlist_window.set_item(@command_index)
  399.      return
  400.    end
  401.    # C ボタンが押された場合
  402.    if Input.trigger?(Input::C)
  403.      # アイテムを使い切った場合
  404.      if $game_party.item_number(@item.id) == 0
  405.        # ブザー SE を演奏
  406.        $game_system.se_play($data_system.buzzer_se)
  407.        return
  408.      end
  409.      # ターゲットが全体の場合
  410.      if @target_window.index == -1
  411.        # パーティ全体にアイテムの使用効果を適用
  412.        used = false
  413.        for i in $game_party.actors
  414.          used |= i.item_effect(@item)
  415.        end
  416.      end
  417.      # ターゲットが単体の場合
  418.      if @target_window.index >= 0
  419.        # ターゲットのアクターにアイテムの使用効果を適用
  420.        target = $game_party.actors[@target_window.index]
  421.        used = target.item_effect(@item)
  422.      end
  423.      # アイテムを使った場合
  424.      if used
  425.        # アイテムの使用時 SE を演奏
  426.        $game_system.se_play(@item.menu_se)
  427.        # 消耗品の場合
  428.        if @item.consumable
  429.          # 使用したアイテムを 1 減らす
  430.          $game_party.lose_item(@item.id, 1)
  431.          # アイテムウィンドウの項目を再描画
  432.          @itemlist_window.draw_item(@itemlist_window.index)
  433.          @itemlist_window.set_item(@command_index)
  434.        end
  435.        # ターゲットウィンドウの内容を再作成
  436.        @target_window.refresh
  437.        # 全滅の場合
  438.        if $game_party.all_dead?
  439.          # ゲームオーバー画面に切り替え
  440.          $scene = Scene_Gameover.new
  441.          return
  442.        end
  443.        # コモンイベント ID が有効の場合
  444.        if @item.common_event_id > 0
  445.          # コモンイベント呼び出し予約
  446.          $game_temp.common_event_id = @item.common_event_id
  447.          # マップ画面に切り替え
  448.          $scene = Scene_Map.new
  449.          return
  450.        end
  451.      end
  452.      # アイテムを使わなかった場合
  453.      unless used
  454.        # ブザー SE を演奏
  455.        $game_system.se_play($data_system.buzzer_se)
  456.      end
  457.    return
  458.    end
  459. end
  460. end

  461. #==============================================
  462. #==本脚本来自www.66rpg.com,转载使用请保留此信息==
  463. #==============================================


  464. #==============================================================================
  465. # ■ Scene_Skill
  466. #------------------------------------------------------------------------------
  467. #  处理特技画面的类。
  468. #==============================================================================

  469. class Scene_Skill
  470. include Warcraftization
  471. #--------------------------------------------------------------------------
  472. # ● 主处理
  473. #--------------------------------------------------------------------------
  474. def main
  475.    speed
  476.    # 生成地图窗口
  477.    @spriteset = Spriteset_Map.new
  478.    # 获取角色
  479.    @actor = $game_party.actors[@actor_index]
  480.    # 生成帮助窗口、状态窗口、特技窗口
  481.    @help_window = Window_Help.new
  482.    @help_window.y = -64   
  483.    @status_window = Window_SkillStatus.new(@actor)
  484.    @status_window.y = - 64
  485.    @skill_window = Window_Skill.new(@actor)
  486.    @skill_window.y = -352
  487.    # 关联帮助窗口
  488.    @skill_window.help_window = @help_window
  489.    # 生成目标窗口 (设置为不可见・不活动)
  490.    @target_window = Window_Target.new
  491.    @target_window.y = -480
  492.    @target_window.visible = false
  493.    @target_window.active = false
  494.    # 执行过渡
  495.    Graphics.transition
  496.    for i in 1 .. $speed
  497.      @help_window.y += 64 / $speed
  498.      @status_window.y += 128 / $speed
  499.      @skill_window.y += 480 / $speed
  500.      Graphics.update
  501.    end
  502.    Audio.se_play(Ini_efect, 100, 0)
  503.    elasticity (@skill_window)
  504.    # 主循环
  505.    loop do
  506.      # 刷新游戏画面
  507.      Graphics.update
  508.      # 刷新输入信息
  509.      Input.update
  510.      # 刷新画面
  511.      update
  512.      # 如果画面切换的话就中断循环
  513.      if $scene != self
  514.        break
  515.      end
  516.    end
  517.    Audio.se_play(Dispose_effect, 100, 100)
  518.    for i in 1 .. $speed
  519.      @help_window.y -= 64 / $speed
  520.      @status_window.y -= 128 / $speed
  521.      @skill_window.y -= 480 / $speed
  522.      @target_window.y -= 480 / $speed
  523.      Graphics.update
  524.    end
  525.    # 准备过渡
  526.    Graphics.freeze
  527.    # 释放窗口
  528.    @help_window.dispose
  529.    @status_window.dispose
  530.    @skill_window.dispose
  531.    @target_window.dispose
  532.    # 释放地图窗口
  533.    @spriteset.dispose
  534. end

  535. #--------------------------------------------------------------------------
  536. # ● 刷新画面 (特技窗口被激活的情况下)
  537. #--------------------------------------------------------------------------
  538. def update_skill
  539.    # 按下 B 键的情况下
  540.    if Input.trigger?(Input::B)
  541.      # 演奏取消 SE
  542.      $game_system.se_play($data_system.cancel_se)
  543.      # 切换到菜单画面
  544.      $scene = Scene_Menu.new(1)
  545.      return
  546.    end
  547.    # 按下 C 键的情况下
  548.    if Input.trigger?(Input::C)
  549.      # 获取特技窗口现在选择的特技的数据
  550.      @skill = @skill_window.skill
  551.      # 不能使用的情况下
  552.      if @skill == nil or not @actor.skill_can_use?(@skill.id)
  553.        # 演奏冻结 SE
  554.        $game_system.se_play($data_system.buzzer_se)
  555.        return
  556.      end
  557.      # 演奏确定 SE
  558.      $game_system.se_play($data_system.decision_se)
  559.      # 效果范围是我方的情况下
  560.      if @skill.scope >= 3
  561.        # 激活目标窗口
  562.        @skill_window.active = false
  563.        @target_window.x = (@skill_window.index + 1) % 2 * 304
  564.        @target_window.visible = true
  565.        # 设置效果范围 (单体/全体) 的对应光标位置
  566.        if @skill.scope == 4 || @skill.scope == 6
  567.          @target_window.index = -1
  568.        elsif @skill.scope == 7
  569.          @target_window.index = @actor_index - 10
  570.        else
  571.          @target_window.index = 0
  572.        end
  573.        for i in 1 .. $speed
  574.          @target_window.y += 480 / $speed
  575.          Graphics.update
  576.        end
  577.        Audio.se_play(Ini_efect, 100, 0)
  578.        elasticity (@target_window)
  579.        @target_window.active = true
  580.      # 效果在我方以外的情况下
  581.      else
  582.        # 公共事件 ID 有效的情况下
  583.        if @skill.common_event_id > 0
  584.          # 预约调用公共事件
  585.          $game_temp.common_event_id = @skill.common_event_id
  586.          # 演奏特技使用时的 SE
  587.          $game_system.se_play(@skill.menu_se)
  588.          # 消耗 SP
  589.          @actor.sp -= @skill.sp_cost
  590.          # 再生成各窗口的内容
  591.          @status_window.refresh
  592.          @skill_window.refresh
  593.          @target_window.refresh
  594.          # 切换到地图画面
  595.          $scene = Scene_Map.new
  596.          return
  597.        end
  598.      end
  599.      return
  600.    end
  601.    # 按下 R 键的情况下
  602.    if Input.trigger?(Input::R)
  603.      # 演奏光标 SE
  604.      $game_system.se_play($data_system.cursor_se)
  605.      # 移至下一位角色
  606.      @actor_index += 1
  607.      @actor_index %= $game_party.actors.size
  608.      # 切换到别的特技画面
  609.      $scene = Scene_Skill.new(@actor_index)
  610.      return
  611.    end
  612.    # 按下 L 键的情况下
  613.    if Input.trigger?(Input::L)
  614.      # 演奏光标 SE
  615.      $game_system.se_play($data_system.cursor_se)
  616.      # 移至上一位角色
  617.      @actor_index += $game_party.actors.size - 1
  618.      @actor_index %= $game_party.actors.size
  619.      # 切换到别的特技画面
  620.      $scene = Scene_Skill.new(@actor_index)
  621.      return
  622.    end
  623. end
  624. #--------------------------------------------------------------------------
  625. # ● 刷新画面 (目标窗口被激活的情况下)
  626. #--------------------------------------------------------------------------
  627. def update_target
  628.    # 按下 B 键的情况下
  629.    if Input.trigger?(Input::B)
  630.      # 演奏取消 SE
  631.      $game_system.se_play($data_system.cancel_se)
  632.      Audio.se_play(Dispose_effect, 100, 100)      
  633.      for i in 1 .. $speed
  634.        @target_window.y -= 480 / $speed
  635.        Graphics.update
  636.      end      
  637.      # 删除目标窗口
  638.      @skill_window.active = true
  639.      @target_window.visible = false
  640.      @target_window.active = false
  641.      return
  642.    end
  643.    # 按下 C 键的情况下
  644.    if Input.trigger?(Input::C)
  645.      # 因为 SP 不足而无法使用的情况下
  646.      unless @actor.skill_can_use?(@skill.id)
  647.        # 演奏冻结 SE
  648.        $game_system.se_play($data_system.buzzer_se)
  649.        return
  650.      end
  651.      # 目标是全体的情况下
  652.      if @target_window.index == -1
  653.        # 对同伴全体应用特技使用效果
  654.        used = false
  655.        for i in $game_party.actors
  656.          used |= i.skill_effect(@actor, @skill)
  657.        end
  658.      end
  659.      # 目标是使用者的情况下
  660.      if @target_window.index <= -2
  661.        # 对目标角色应用特技的使用效果
  662.        target = $game_party.actors[@target_window.index + 10]
  663.        used = target.skill_effect(@actor, @skill)
  664.      end
  665.      # 目标是单体的情况下
  666.      if @target_window.index >= 0
  667.        # 对目标角色应用特技的使用效果
  668.        target = $game_party.actors[@target_window.index]
  669.        used = target.skill_effect(@actor, @skill)
  670.      end
  671.      # 使用特技的情况下
  672.      if used
  673.        # 演奏特技使用时的 SE
  674.        $game_system.se_play(@skill.menu_se)
  675.        # 消耗 SP
  676.        @actor.sp -= @skill.sp_cost
  677.        # 再生成各窗口内容
  678.        @status_window.refresh
  679.        @skill_window.refresh
  680.        @target_window.refresh
  681.        # 全灭的情况下
  682.        if $game_party.all_dead?
  683.          # 切换到游戏结束画面
  684.          $scene = Scene_Gameover.new
  685.          return
  686.        end
  687.        # 公共事件 ID 有效的情况下
  688.        if @skill.common_event_id > 0
  689.          # 预约调用公共事件
  690.          $game_temp.common_event_id = @skill.common_event_id
  691.          # 切换到地图画面
  692.          $scene = Scene_Map.new
  693.          return
  694.        end
  695.      end
  696.      # 无法使用特技的情况下
  697.      unless used
  698.        # 演奏冻结 SE
  699.        $game_system.se_play($data_system.buzzer_se)
  700.      end
  701.      return
  702.    end
  703. end
  704. end
  705. #==============================================================================
  706. # ■ Scene_Equip
  707. #------------------------------------------------------------------------------
  708. #  处理装备画面的类。
  709. #==============================================================================

  710. class Scene_Equip
  711. include Warcraftization
  712. #--------------------------------------------------------------------------
  713. # ● 主处理
  714. #--------------------------------------------------------------------------
  715. def main
  716.    speed
  717.    # 生成地图窗口
  718.    @spriteset = Spriteset_Map.new
  719.    # 获取角色
  720.    @actor = $game_party.actors[@actor_index]
  721.    # 生成窗口
  722.    @help_window = Window_Help.new
  723.    @help_window.y = -64
  724.    @left_window = Window_EquipLeft.new(@actor)
  725.    @left_window.y = -416
  726.    @right_window = Window_EquipRight.new(@actor)
  727.    @right_window.y = -256
  728.    @item_window1 = Window_EquipItem.new(@actor, 0)
  729.    @item_window1.y = -224
  730.    @item_window2 = Window_EquipItem.new(@actor, 1)
  731.    @item_window2.y = -224
  732.    @item_window3 = Window_EquipItem.new(@actor, 2)
  733.    @item_window3.y = -224
  734.    @item_window4 = Window_EquipItem.new(@actor, 3)
  735.    @item_window4.y = -224
  736.    @item_window5 = Window_EquipItem.new(@actor, 4)
  737.    @item_window5.y = -224
  738.    @item_window6 = Window_EquipItem.new(@actor, 5)
  739.    @item_window6.y = -224
  740.    @item_window7 = Window_EquipItem.new(@actor, 6)
  741.    @item_window7.y = -224
  742.    # 关联帮助窗口
  743.    @right_window.help_window = @help_window
  744.    @item_window1.help_window = @help_window
  745.    @item_window2.help_window = @help_window
  746.    @item_window3.help_window = @help_window
  747.    @item_window4.help_window = @help_window
  748.    @item_window5.help_window = @help_window
  749.    @item_window6.help_window = @help_window
  750.    @item_window7.help_window = @help_window
  751.    ##############
  752. #    @equip_window = Window_Equip.new
  753.    ##############
  754.    # 设置光标位置
  755.    @right_window.index = @equip_index
  756.    refresh
  757.    # 执行过渡
  758.    Graphics.transition
  759.    for i in 1 .. $speed
  760.      @help_window.y += 64 / $speed
  761.      @left_window.y += 483 / $speed
  762.      @right_window.y += 326 / $speed
  763.      @item_window1.y += 550 / $speed
  764.      @item_window2.y += 550 / $speed
  765.      @item_window3.y += 550 / $speed
  766.      @item_window4.y += 550 / $speed
  767.      @item_window5.y += 550 / $speed
  768.      @item_window6.y += 550 / $speed
  769.      @item_window7.y += 550 / $speed
  770.      Graphics.update
  771.    end
  772.    Audio.se_play(Ini_efect, 100, 0)
  773.    elasticity (@item_window)
  774.    # 主循环
  775.    loop do
  776.      # 刷新游戏画面
  777.      Graphics.update
  778.      # 刷新输入信息
  779.      Input.update
  780.      # 刷新画面
  781.      update
  782.      # 如果画面切换的话的就中断循环
  783.      if $scene != self
  784.        break
  785.      end
  786.    end
  787.    Audio.se_play(Dispose_effect, 100, 100)
  788.    for i in 1 .. $speed
  789.      @help_window.y -= 64 / $speed
  790.      @left_window.y -= 483 / $speed
  791.      @right_window.y -= 326 / $speed
  792.      @item_window1.y -= 550 / $speed
  793.      @item_window2.y -= 550 / $speed
  794.      @item_window3.y -= 550 / $speed
  795.      @item_window4.y -= 550 / $speed
  796.      @item_window5.y -= 550 / $speed
  797.      @item_window6.y -= 550 / $speed
  798.      @item_window7.y -= 550 / $speed
  799.      Graphics.update
  800.    end   
  801.    # 准备过渡
  802.    Graphics.freeze
  803.    # 释放窗口
  804.    @help_window.dispose
  805.    @left_window.dispose
  806.    @right_window.dispose
  807.    @item_window1.dispose
  808.    @item_window2.dispose
  809.    @item_window3.dispose
  810.    @item_window4.dispose
  811.    @item_window5.dispose
  812.    @item_window6.dispose
  813.    @item_window7.dispose
  814.    ##############
  815. #    @equip_window.dispose
  816.    ##############   
  817.    # 释放地图窗口
  818.    @spriteset.dispose
  819. end  
  820. end

  821. #==============================================================================
  822. # ■ Scene_Status
  823. #------------------------------------------------------------------------------
  824. #  处理状态画面的类。
  825. #==============================================================================

  826. class Scene_Status
  827. include Warcraftization
  828. #--------------------------------------------------------------------------
  829. # ● 初始化对像
  830. #     actor_index : 角色索引
  831. #--------------------------------------------------------------------------
  832. def initialize(actor_index = 0, equip_index = 0)
  833.    @actor_index = actor_index
  834. end
  835. #--------------------------------------------------------------------------
  836. # ● 主处理
  837. #--------------------------------------------------------------------------
  838. def main
  839.    speed
  840.    # 生成地图窗口
  841.    @spriteset = Spriteset_Map.new
  842.    # 获取角色
  843.    @actor = $game_party.actors[@actor_index]
  844.    # 生成状态窗口
  845.    @status_window = Window_Status.new(@actor)
  846.    @status_window.y = -480
  847.    # 执行过渡
  848.    Graphics.transition
  849.    for i in 1 .. $speed
  850.      @status_window.y += 480 / $speed
  851.      Graphics.update
  852.    end
  853.    Audio.se_play(Ini_efect, 100, 0)
  854.    elasticity (@status_window)   
  855.    # 主循环
  856.    loop do
  857.      # 刷新游戏画面
  858.      Graphics.update
  859.      # 刷新输入信息
  860.      Input.update
  861.      # 刷新画面
  862.      update
  863.      # 如果画面被切换的话就中断循环
  864.      if $scene != self
  865.        break
  866.      end
  867.    end
  868.    Audio.se_play(Dispose_effect, 100, 100)   
  869.    for i in 1 .. $speed
  870.      @status_window.y -= 480 / $speed
  871.      Graphics.update
  872.    end   
  873.    # 准备过渡
  874.    Graphics.freeze
  875.    # 释放窗口
  876.    @status_window.dispose
  877.    # 释放地图窗口
  878.    @spriteset.dispose
  879. end
  880. end

  881. #==============================================================================
  882. # ■ Scene_File
  883. #------------------------------------------------------------------------------
  884. #  存档画面及读档画面的超级类。
  885. #==============================================================================

  886. class Scene_File
  887. include Warcraftization
  888. #--------------------------------------------------------------------------
  889. # ● 主处理
  890. #--------------------------------------------------------------------------
  891. def main
  892.    speed
  893.    # 生成帮助窗口
  894.    @help_window = Window_Help.new
  895.    @help_window.y = -64
  896.    @help_window.set_text(@help_text)
  897.    # 生成存档文件查
  898.    @savefile_windows = []
  899.    for i in 0..3
  900.      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
  901.      @savefile_windows[i].y = -104
  902.    end
  903.    # 选择最后操作的文件
  904.    @file_index = $game_temp.last_file_index
  905.    @savefile_windows[@file_index].selected = true
  906.    # 执行过渡
  907.    Graphics.transition
  908.    for i in 1 .. 8
  909.      @help_window.y += 8
  910.      @savefile_windows[0].y += 21
  911.      @savefile_windows[1].y += 34
  912.      @savefile_windows[2].y += 47
  913.      @savefile_windows[3].y += 60
  914.      Graphics.update
  915.    end
  916.    Audio.se_play(Ini_efect, 100, 0)
  917.    elasticity (@savefile_windows[@file_index])
  918.    # 主循环
  919.    loop do
  920.      # 刷新游戏画面
  921.      Graphics.update
  922.      # 刷新输入信息
  923.      Input.update
  924.      # 刷新画面
  925.      update
  926.      # 如果画面被切换的话就中断循环
  927.      if $scene != self
  928.        break
  929.      end
  930.    end
  931.    Audio.se_play(Dispose_effect, 100, 100)
  932.    for i in 1 .. 8
  933.      @help_window.y -= 8
  934.      @savefile_windows[0].y -= 21
  935.      @savefile_windows[1].y -= 34
  936.      @savefile_windows[2].y -= 47
  937.      @savefile_windows[3].y -= 60
  938.      Graphics.update
  939.    end   
  940.    # 准备过渡
  941.    Graphics.freeze
  942.    # 释放窗口
  943.    @help_window.dispose
  944.    # 释放地图窗口
  945.    for i in @savefile_windows
  946.      i.dispose
  947.    end   
  948. end
  949. end

  950. # ————————————————————————————————————
  951. # 本脚本来自www.66rpg.com,转载请保留此信息。
  952. # ————————————————————————————————————
复制代码

Lv5.捕梦者

梦石
0
星屑
33078
在线时间
5104 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2015-2-11 17:37:47 | 只看该作者
唔~,半透明菜单
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #==============================================================================
  5. # ■ Window_Base
  6. #==============================================================================

  7. class Window_Base < Window
  8.   alias xrxs_mp7_initialize initialize
  9.   def initialize(x, y, width, height)
  10.     xrxs_mp7_initialize(x, y, width, height)
  11.     if $scene.is_a?(Scene_Menu) or
  12.        $scene.is_a?(Scene_Item) or  

  13.        $scene.is_a?(Scene_Skill) or  

  14.        $scene.is_a?(Scene_Equip) or  

  15.        $scene.is_a?(Scene_Status) or  

  16.        $scene.is_a?(Scene_Save) or  

  17.        $scene.is_a?(Scene_End)
  18.       self.back_opacity = 160  #————这个数值可调,为透明程度
  19.     end
  20.   end
  21. end
  22. module XRXS_MP7_Module
  23.   def create_spriteset
  24.     @spriteset = Spriteset_Map.new
  25.   end
  26.   def dispose_spriteset
  27.     @spriteset.dispose
  28.   end
  29. end
  30. class Scene_Menu
  31.   include XRXS_MP7_Module
  32.   alias xrxs_mp7_main main
  33.   def main
  34.     create_spriteset
  35.     xrxs_mp7_main
  36.     dispose_spriteset
  37.   end
  38. end
  39. class Scene_Item
  40.   include XRXS_MP7_Module
  41.   alias xrxs_mp7_main main
  42.   def main
  43.     create_spriteset
  44.     xrxs_mp7_main
  45.     dispose_spriteset
  46.   end
  47. end
  48. class Scene_Skill
  49.   include XRXS_MP7_Module
  50.   alias xrxs_mp7_main main
  51.   def main
  52.     create_spriteset
  53.     xrxs_mp7_main
  54.     dispose_spriteset
  55.   end
  56. end
  57. class Scene_Equip
  58.   include XRXS_MP7_Module
  59.   alias xrxs_mp7_main main
  60.   def main
  61.     create_spriteset
  62.     xrxs_mp7_main
  63.     dispose_spriteset
  64.   end
  65. end
  66. class Scene_Status
  67.   include XRXS_MP7_Module
  68.   alias xrxs_mp7_main main
  69.   def main
  70.     create_spriteset
  71.     xrxs_mp7_main
  72.     dispose_spriteset
  73.   end
  74. end
  75. class Scene_Save
  76.   include XRXS_MP7_Module
  77.   alias xrxs_mp7_main main
  78.   def main
  79.     create_spriteset
  80.     xrxs_mp7_main
  81.     dispose_spriteset
  82.   end
  83. end
  84. class Scene_End
  85.   include XRXS_MP7_Module
  86.   alias xrxs_mp7_main main
  87.   def main
  88.     create_spriteset
  89.     xrxs_mp7_main
  90.     dispose_spriteset
  91.   end
  92. end
  93. #==============================================================================
  94. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  95. #==============================================================================
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2013-7-19
帖子
121
3
 楼主| 发表于 2015-2-12 09:33:01 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 17:37
唔~,半透明菜单

如果只是使用这个脚本可以更改透明度,但是配合仿魔兽的脚本就没有效果了。
是不是透明度应该在仿魔兽脚本里更改?我不知道该怎么改,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 19:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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