查看: 2818|回复: 2

[已经解决] 请问如何在释放技能1前执行公共事件1一次用脚本实现

[复制链接]
梦石
0
星屑
2197
在线时间
225 小时
注册时间
2018-4-23
回帖
83
发表于 2019-1-27 17:28:03 | 显示全部楼层 |阅读模式

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

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

×
请问如何在释放技能1前执行公共事件1一次用脚本实现
梦石
2
星屑
6767
在线时间
501 小时
注册时间
2018-3-23
回帖
487

R考场第七期银奖

发表于 2019-1-27 18:04:45 | 显示全部楼层
[pre lang="ruby"]#==============================================================================
# ■ RGSS3 行动开始前执行公共事件 Ver1.01 by 星潟
#------------------------------------------------------------------------------
# 通常,物品或技能要执行公共事件的话,会在效果释放完毕后执行。
# 但是使用这个脚本的设定,就会在释放前执行公共事件
#
# 与通常公共事件的执行不同,
# 在没有进入战斗的时候没有效果,这点需要注意。
#------------------------------------------------------------------------------
# ★使用举例
#------------------------------------------------------------------------------
# <行动开始前执行:5>
#
# 这样就会在行动开始前先执行5号公共事件。
#==============================================================================
# Ver1.01 行动开始前执行公共事件脚本针对强制行动做了修改
#         修正了无法读取行动而导致错误的问题。
#         (如果采取了强制行动,将取消原本的行动)
#         (与“将行动者或对象ID存储进变量”等脚本同时使用时
#          请将该脚本在脚本编辑器中的位置置于它们之上)
#==============================================================================
module B_A_COMMON

  #指定行动开始前释放公共事件的设定名称

  WORD = "行动开始前执行"

end
class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # バトルイベントのセットアップ
  #--------------------------------------------------------------------------
  def setup_b_a_common_event(common_event_id)

    #指定したコモンイベントIDのリストをセットする。

    @interpreter.setup($data_common_events[common_event_id].list)

  end
end
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # スキル/アイテムの使用
  #--------------------------------------------------------------------------
  alias use_item_b_a_common use_item
  def use_item

    #行動前コモンイベント配列データを取得。

    array = @subject.current_action.item.b_a_common_events

    #各コモンイベントを処理。

    array.each {|i| $game_troop.setup_b_a_common_event(i);process_event} unless array.empty?

    #本来の処理を実行。

    use_item_b_a_common if @subject && @subject.current_action && @subject.current_action.item

  end
end

class RPG::UsableItem < RPG::BaseItem
  #--------------------------------------------------------------------------
  # 行動前コモンイベント
  #--------------------------------------------------------------------------
  def b_a_common_events

    #既にデータがある場合、そのデータを返す

    return @b_a_common_events if @b_a_common_events != nil

    #ターン開始時コモンイベントデータの配列を生成

    @b_a_common_events = []

    #メモ欄からキーワードを元にデータを生成

    memo = self.note.scan(/<#{B_A_COMMON::WORD}[::](\S+)>/).flatten

    #配列が空でない場合は処理を実行

    if memo != nil && !memo.empty?

      #配列を文字列として取得

      data = memo[0].split(/\s*,\s*/)

      #配列内の数字をターン開始時コモンイベントデータの配列に
      #文字列から数値化して移し替える

      data.each {|i| @b_a_common_events.push(i.to_i)}

    end

    #ターン開始時コモンイベントデータの配列を返す

    @b_a_common_events

  end
end[/pre]

以上脚本的使用方法为:在技能备注中写<行动开始前执行:id>就会执行id号公共事件。

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 认可答案

查看全部评分

祝好。
回复

使用道具 举报

梦石
0
星屑
2197
在线时间
225 小时
注册时间
2018-4-23
回帖
83
 楼主| 发表于 2019-1-27 22:09:32 | 显示全部楼层
MCCF 发表于 2019-1-27 18:04
#==============================================================================
# ■ RGSS3 行动开始 ...

感谢大哥 膜拜
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部