Project1

标题: 请问如何在释放技能1前执行公共事件1一次用脚本实现 [打印本页]

作者: pajiman1999    时间: 2019-1-27 17:28
标题: 请问如何在释放技能1前执行公共事件1一次用脚本实现
请问如何在释放技能1前执行公共事件1一次用脚本实现
作者: MCCF    时间: 2019-1-27 18:04
RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 行动开始前执行公共事件 Ver1.01 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 通常,物品或技能要执行公共事件的话,会在效果释放完毕后执行。
  5. # 但是使用这个脚本的设定,就会在释放前执行公共事件
  6. #
  7. # 与通常公共事件的执行不同,
  8. # 在没有进入战斗的时候没有效果,这点需要注意。
  9. #------------------------------------------------------------------------------
  10. # ★使用举例
  11. #------------------------------------------------------------------------------
  12. # <行动开始前执行:5>
  13. #
  14. # 这样就会在行动开始前先执行5号公共事件。
  15. #==============================================================================
  16. # Ver1.01 行动开始前执行公共事件脚本针对强制行动做了修改
  17. #         修正了无法读取行动而导致错误的问题。
  18. #         (如果采取了强制行动,将取消原本的行动)
  19. #         (与“将行动者或对象ID存储进变量”等脚本同时使用时
  20. #          请将该脚本在脚本编辑器中的位置置于它们之上)
  21. #==============================================================================
  22. module B_A_COMMON
  23.  
  24.   #指定行动开始前释放公共事件的设定名称
  25.  
  26.   WORD = "行动开始前执行"
  27.  
  28. end
  29. class Game_Troop < Game_Unit
  30.   #--------------------------------------------------------------------------
  31.   # バトルイベントのセットアップ
  32.   #--------------------------------------------------------------------------
  33.   def setup_b_a_common_event(common_event_id)
  34.  
  35.     #指定したコモンイベントIDのリストをセットする。
  36.  
  37.     @interpreter.setup($data_common_events[common_event_id].list)
  38.  
  39.   end
  40. end
  41. class Scene_Battle < Scene_Base
  42.   #--------------------------------------------------------------------------
  43.   # スキル/アイテムの使用
  44.   #--------------------------------------------------------------------------
  45.   alias use_item_b_a_common use_item
  46.   def use_item
  47.  
  48.     #行動前コモンイベント配列データを取得。
  49.  
  50.     array = @subject.current_action.item.b_a_common_events
  51.  
  52.     #各コモンイベントを処理。
  53.  
  54.     array.each {|i| $game_troop.setup_b_a_common_event(i);process_event} unless array.empty?
  55.  
  56.     #本来の処理を実行。
  57.  
  58.     use_item_b_a_common if @subject && @subject.current_action && @subject.current_action.item
  59.  
  60.   end
  61. end
  62.  
  63. class RPG::UsableItem < RPG::BaseItem
  64.   #--------------------------------------------------------------------------
  65.   # 行動前コモンイベント
  66.   #--------------------------------------------------------------------------
  67.   def b_a_common_events
  68.  
  69.     #既にデータがある場合、そのデータを返す
  70.  
  71.     return @b_a_common_events if @b_a_common_events != nil
  72.  
  73.     #ターン開始時コモンイベントデータの配列を生成
  74.  
  75.     @b_a_common_events = []
  76.  
  77.     #メモ欄からキーワードを元にデータを生成
  78.  
  79.     memo = self.note.scan(/<#{B_A_COMMON::WORD}[::](\S+)>/).flatten
  80.  
  81.     #配列が空でない場合は処理を実行
  82.  
  83.     if memo != nil && !memo.empty?
  84.  
  85.       #配列を文字列として取得
  86.  
  87.       data = memo[0].split(/\s*,\s*/)
  88.  
  89.       #配列内の数字をターン開始時コモンイベントデータの配列に
  90.       #文字列から数値化して移し替える
  91.  
  92.       data.each {|i| @b_a_common_events.push(i.to_i)}
  93.  
  94.     end
  95.  
  96.     #ターン開始時コモンイベントデータの配列を返す
  97.  
  98.     @b_a_common_events
  99.  
  100.   end
  101. end


以上脚本的使用方法为:在技能备注中写<行动开始前执行:id>就会执行id号公共事件。
作者: pajiman1999    时间: 2019-1-27 22:09
MCCF 发表于 2019-1-27 18:04
#==============================================================================
# ■ RGSS3 行动开始 ...

感谢大哥 膜拜




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1