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

Project1

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

[已经解决] 如何让一个脚本可通过开关控制

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1578
在线时间
265 小时
注册时间
2019-1-18
帖子
202
跳转到指定楼层
1
发表于 2019-7-8 18:53:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 造小梦 于 2019-7-8 18:55 编辑

如题,我扒了个可以使战斗高速化的脚本,但我想让它在一些特殊情况下不运行,我该怎么做呢?
脚本如下
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. #戦闘高速化 ver0.30
  3. #--------------------------------------------------------------------------
  4. #=begin
  5.  
  6. #ボタン押しっぱなしで戦闘速度が飛躍的に上昇します。
  7. #コマンドもボタン押しっぱなしで選択可能です。
  8. #また、元々の通常状態でもちょっとテンポを上げています。
  9.  
  10. # BATTLE_SPEED_SIDに設定したスイッチIDをtrueにする事で、
  11. #高速戦闘中はエフェクトをカット出来るようになります。
  12.  
  13. #BATTLE_SPEED_VIDに設定した値は、ゲーム変数XXX番として認識します。
  14. #コマンドで変数に値を入れる事によって、戦闘速度が変更されます。
  15. #値が大きい程、早くなります。
  16.  
  17. #BATTLE_SPEED_DEFAULT_VALUEに設定した値は速度のデフォルト値です。
  18. #下記は例になります。なお、小数点には対応していません。
  19.  
  20. #戦闘速度1:遅め(オリジナルの戦闘システムに近い速度)
  21. #    2:普通(推奨値)
  22. #   3:速め
  23. #   6:高速
  24. #   10:最速、11以上の値を入れると、10になるように制限をかけています。
  25. #      ※ 11以上はバトルログが消え、20以上はエラーを返します。
  26. #     ※ 速度0は未対応です。1に制限をかける事も考えましたが、
  27. #        変数指定を間違っていた際にバグチェックしづらくなるため、
  28. #        わざとエラーするようにしています。
  29. #=end
  30.  
  31. #--------------------------------------------------------------------------
  32. # ● 設定項目
  33. #--------------------------------------------------------------------------
  34.  
  35. module SSS_BTLSPD
  36.   BATTLE_SPEED_SID = 201          #エフェクト(アニメ)を飛ばすスイッチ
  37.   BATTLE_SPEED_VID = 48          #戦闘速度変更用のゲーム変数
  38.   BATTLE_SPEED_DEFAULT_VALUE = 10  #速度変更値(整数10まで)
  39. end
  40.  
  41.  
  42. class Scene_Map
  43.   #--------------------------------------------------------------------------
  44.   # ● 戦闘前トランジション実行 @速度変更
  45.   #--------------------------------------------------------------------------
  46.   alias SSS001_perform_battle_transition perform_battle_transition
  47.   def perform_battle_transition
  48.     if $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] == 0
  49.       $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] = SSS_BTLSPD::BATTLE_SPEED_DEFAULT_VALUE
  50.     end
  51.     if $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] >= 11
  52.       $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] = 10
  53.     end
  54.     Graphics.transition(60, "Graphics/System/BattleStart", 100)
  55.     Graphics.freeze
  56.   end
  57. end
  58.  
  59. class Scene_Battle
  60.  
  61.   #--------------------------------------------------------------------------
  62.   # ● 終了前処理
  63.   #--------------------------------------------------------------------------
  64.   alias SSS001_pre_terminate pre_terminate
  65.   def pre_terminate
  66.     super
  67.     Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
  68.     Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Title)
  69.   end
  70.  
  71.   #--------------------------------------------------------------------------
  72.   # ● ウェイト
  73.   #--------------------------------------------------------------------------
  74.   alias SSS001_wait wait
  75.   def wait(duration)
  76.     duration.times {|i| update_for_wait if i < duration / (2 * $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID]) || !show_fast? }
  77.   end
  78.  
  79.   #--------------------------------------------------------------------------
  80.   # ● アニメーションの表示
  81.   #     targets      : 対象者の配列
  82.   #     animation_id : アニメーション ID(-1: 通常攻撃と同じ)
  83.   #--------------------------------------------------------------------------
  84.   alias SSS001_show_animation show_animation
  85.   def show_animation(targets, animation_id)
  86.     #もしアニメカット用のスイッチがtrueで、
  87.     #fast状態にしているなら、エフェクトを飛ばす
  88.     #両方満たしていないなら、エフェクトを飛ばさない
  89.     if $game_switches[SSS_BTLSPD::BATTLE_SPEED_SID] == true
  90.       if !show_fast?
  91.         if animation_id < 0
  92.           show_attack_animation(targets)
  93.         else
  94.           show_normal_animation(targets, animation_id)
  95.         end
  96.         @log_window.wait
  97.         wait_for_animation
  98.       end
  99.     else
  100.       if animation_id < 0
  101.         show_attack_animation(targets)
  102.       else
  103.         show_normal_animation(targets, animation_id)
  104.       end
  105.       @log_window.wait
  106.       wait_for_animation
  107.     end
  108.   end
  109. end
  110.  
  111. class Window_Selectable
  112.   #--------------------------------------------------------------------------
  113.   # ● 決定やキャンセルなどのハンドリング処理
  114.   #--------------------------------------------------------------------------
  115.   alias SSS001_process_handling process_handling
  116.   def process_handling
  117.       #戦闘中はInput.trigger?をrepeat?に書き換えて、テンポを上げてます
  118.     if $game_party.in_battle
  119.       return unless open? && active
  120.       return process_ok       if ok_enabled?        && Input.trigger?(:C)#Input.repeat?(:C)
  121.       return process_cancel   if cancel_enabled?    && Input.trigger?(:B)#Input.repeat?(:B)
  122.       return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
  123.       return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
  124.     else
  125.       return unless open? && active
  126.       return process_ok       if ok_enabled?        && Input.trigger?(:C)
  127.       return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
  128.       return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
  129.       return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
  130.     end
  131.   end
  132. end
  133.  
  134. class Sprite_Battler
  135.   #--------------------------------------------------------------------------
  136.   # ● エフェクトの開始
  137.   #--------------------------------------------------------------------------
  138.   alias SSS001_start_effect start_effect
  139.   def start_effect(effect_type)
  140.     @effect_type = effect_type
  141.     case @effect_type
  142.     when :appear
  143.       @effect_duration = 16
  144.       @battler_visible = true
  145.     when :disappear
  146.       @effect_duration = 32
  147.       @battler_visible = false
  148.     when :whiten
  149.       @effect_duration = 16
  150.       @battler_visible = true
  151.     when :blink
  152.       @effect_duration = 20
  153.       @battler_visible = true
  154.     #敵撃破時エフェクト(default=48)
  155.     #Sprite_Battler 150行以降を変数を織りまぜて書き換えた方が良いかも
  156.     when :collapse
  157.       @effect_duration = 48
  158.       @battler_visible = false
  159.     when :boss_collapse
  160.       @effect_duration = bitmap.height
  161.       @battler_visible = false
  162.     when :instant_collapse
  163.       @effect_duration = 16
  164.       @battler_visible = false
  165.       end
  166.       revert_to_normal
  167.   end
  168. end

Lv3.寻梦者

梦石
0
星屑
1346
在线时间
806 小时
注册时间
2013-8-3
帖子
455
2
发表于 2019-7-8 20:14:48 | 只看该作者
BATTLE_SPEED_SID = 201          #エフェクト(アニメ)を飛ばすスイッチ
好像这个201就201开关

评分

参与人数 1星屑 +50 收起 理由
VIPArcher + 50 塞糖

查看全部评分


【同人游戏】勇者斗恶龙TG
欢迎加入游戏测试群333599798
如有需私聊请加QQ:516425000
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 18:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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