查看: 3985|回复: 3

[已经解决] 怎么在事件里更改迷宫敌群

[复制链接]
梦石
10
星屑
5748
在线时间
1849 小时
注册时间
2013-2-14
回帖
327

开拓者

发表于 2015-8-27 20:53:15 | 显示全部楼层 |阅读模式

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

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

×
游戏是暗雷,只能在地图设置里填写敌群吗?怎么在游戏过程中更改敌群吗?

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-8-27 21:21:59 | 显示全部楼层
本帖最后由 taroxd 于 2015-8-28 08:04 编辑

不建议直接修改。
如果是根据游戏的进程来更改敌群的话,你可以用两张不同的地图(除敌群设定之外均相同)来实现,相对来说是一个比较省事的方案。

脚本解决的思路见楼下
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-8-27 21:40:44 | 显示全部楼层
插入脚本,之后敌群ID变为敌群ID加上变量1的值
例如,当变量1的值为10时,在地图上随机遇敌时原本出现的5号敌群将变成第15号敌群,通过修改变量1的值可以实现同一张地图遇到不同敌群的效果
如果要把变量1修改成其他变量的话,把第四行的1换成你要的变量ID即可
  1. class Game_Player; alias m5_20150827_met_id make_encounter_troop_id
  2. def make_encounter_troop_id; return 0 if (id = m5_20150827_met_id) == 0
  3. return id + $game_variables[
  4.   1
  5. ]; end; end
复制代码
已加入五行脚本豪华午餐 https://rpg.blue/thread-378738-1-1.html

点评

好厉害呢(。・ω・。)  发表于 2015-8-28 09:16
感谢。。  发表于 2015-8-28 09:09
其实我当时想的是加一个子地图,条件满足时敌群以子地图设定为准  发表于 2015-8-28 08:03

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-8-27 23:38:46 | 显示全部楼层
出現トループ詳細設定
必要:メモ欄解析ver1.00以上
http://blueredzone.com/script/vxace/vxace_encountersetting.html
使用方法


在地圖的附註欄用以下規則設定敵出現條件
==出現トループ:%troop_id%,%weight%,[%regions%],%label%==

%troop_id%
出現敵群ID.

%weight%
出現敵群確喪

%regions%は
設定出現敵群的区堿,可設定多個区堿
空欄=全地圖.

%label%はその設定出現敵群出現条件label.

出現条件はスクリプトの詳細設定にて行います.
ENCOUNT_CONDITION_SET[:%label%] = ->{
  %任意の条件%
}

%label%には任意のラベルを指定します.
ここで設定したラベルをメモ欄で指定可能です.

%任意の条件%には任意のRubyコードを記述します.
Rubyの知識が必要になりますが,スイッチのオンオフなどの簡単なサンプルがありますので参考にしてください.

以下の例はサンプルの出現条件が設定されているものとします.

例)開関1on場合敵群1,2出現
==出現トループ:1,10,[],s1_on==
==出現トループ:2,10,[],s1_on==

例)如果變量1大於3敵群3在区堿1,2出現
==出現トループ:3,10,[1,2],v1_over3==

メモ欄解析ver1.00[pre lang="ruby"]#==============================================================================
# ■ BMSP メモ欄解析[NConParser] Ver1.00 2015/05/04
#------------------------------------------------------------------------------
#  メモ欄の設定を取得するためのスクリプトです.
#==============================================================================
#------------------------------------------------------------------------------
# ■内容
# BMSPのスクリプトのメモ欄の設定を取得するためのスクリプトです.
#
# 位置:すべてのBMSPスクリプトの一番上
#
# ■使用方法
# BMSPスクリプトの一番上に丸ごと貼り付けてください.
#
# ■情報
# このスクリプトはgentlawkによって作られたものです.
# 利用規約はhttp://blueredzone.comをご覧ください.
#------------------------------------------------------------------------------
module BMSP
  @@includes ||= {}
  @@includes[:NConParser] = 1.00
  #--------------------------------------------------------------------------
  # ● 必須スクリプトのチェック
  #--------------------------------------------------------------------------
  class << self
    if method_defined?(:check_require)
      alias nconprser_check_require check_require
    end
  end
  def self.check_require(require, version)
    if methods.include?(:nconprser_check_require)
      nconprser_check_require(require, version)
    end
    if !@@includes[require]
      message =
        sprintf("BMSPスクリプト%sが導入されていません.\n%s Ver%1.2f以上を導入してください.",
          require,require,version)
      raise NConParser::REQUIRE, message
    elsif @@includes[require] < version
      message =
        sprintf("BMSPスクリプト%s Ver%1.2fは古いバージョンです.\n%s Ver%1.2f以上を導入してください.",
          require,@@includes[require],require,version)
      raise NConparser::REQUIRE, message
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 導入スクリプトのチェック
  #--------------------------------------------------------------------------
  def self.check_include(include, version)
    return false unless @@includes[include]
    @@includes[include] >= version
  end
  #============================================================================
  # ■ NConParser
  #============================================================================
  class NConParser
    #--------------------------------------------------------------------------
    # ● 例外クラス
    #--------------------------------------------------------------------------
    class ERROR < StandardError
    end
    #--------------------------------------------------------------------------
    # ● バグの例外クラス
    #--------------------------------------------------------------------------
    class BUG < StandardError
    end
    #--------------------------------------------------------------------------
    # ● 導入スクリプトの例外クラス
    #--------------------------------------------------------------------------
    class REQUIRE < StandardError
    end
    # メモコンフィグパターン
    SPECIAL_PAT = /==(.+)==/
    # パラメータ付メモコンフィグパターン
    PARAM_PAT = /(.+?):(.+)/o
    #--------------------------------------------------------------------------
    # ● インスタンスの初期化
    #--------------------------------------------------------------------------
    def initialize(note)
      pats = parse_pat(note)
      parse(pats)
    end
    #--------------------------------------------------------------------------
    # ● セット型メモコンフィグの取得
    #--------------------------------------------------------------------------
    def config(name)
      return false if @ncon[name].nil?
      @ncon[name]
    end
    #--------------------------------------------------------------------------
    # ● パラメータ付メモコンフィグの取得
    #--------------------------------------------------------------------------
    def param(name)
      @ncon_param[name]
    end
    #--------------------------------------------------------------------------
    # ● セット型メモコンフィグの全取得
    #--------------------------------------------------------------------------
    def all_configs
      @ncon
    end
    #--------------------------------------------------------------------------
    # ● パラメータ付メモコンフィグの全取得
    #--------------------------------------------------------------------------
    def all_params
      @ncon_param
    end
    private
    #--------------------------------------------------------------------------
    # ● メモコンフィグパターンの解析
    #--------------------------------------------------------------------------
    def parse_pat(note)
      note.scan(SPECIAL_PAT).map{|match,| match}
    end
    #--------------------------------------------------------------------------
    # ● メモコンフィグの解析
    #--------------------------------------------------------------------------
    def parse(pats)
      @ncon = {}
      @ncon_param = {}
      pats.each do |pat|
        if PARAM_PAT =~ pat # パラメータ付メモコンフィグ
          cname = $1
          cparam = $2
          # パラメータ付メモコンフィグを解析
          result = parse_param(cname, cparam)
          unless result.nil?
            @ncon_param[cname] ||= []
            @ncon_param[cname].push result
          end
        else # セット型メモコンフィグ
          # コンフィグを解析
          result = parse_config(pat)
          unless result.nil?
            @ncon[pat] = result
          end
        end
      end
    end
    #--------------------------------------------------------------------------
    # ● パラメータ付メモコンフィグの解析(子クラスで再定義)
    #--------------------------------------------------------------------------
    def parse_param(cname, cparam)
      cparam
    end
    #--------------------------------------------------------------------------
    # ● セット型メモコンフィグの解析(子クラスで再定義)
    #--------------------------------------------------------------------------
    def parse_config(cname)
      true
    end
  end
end
                                [/pre]




出現トループ詳細設定[pre lang="ruby"]#==============================================================================
# ■ BMSP 出現トループ詳細設定[ENCOUNTERSETTING] Ver1.00 2015/05/17
#------------------------------------------------------------------------------
#  エンカウントするトループを条件で変更することができます.
#==============================================================================
#------------------------------------------------------------------------------
# ■内容
# マップ上でエンカウントするトループを条件設定により変更することができます.
#
# 位置:特に指定はありません
#
# ■必須
# 「BMSP メモ欄解析ver1.00以上」が必須です.
#
# ■使用方法
# スクリプトに丸ごと貼り付けていただければ使用できます.
#
# マップのメモ欄に以下のフォーマットで出現トループの設定を記述します.
#   ==出現トループ:%troop_id%,%weight%,[%regions%],%label%==
# %troop_id%は出現するトループIDです.
# %weight%はそのトループが出現する確率の重みです.
# %regions%はそのトループが出現するリージョンの設定で,
# 出現させたいリージョンIDをカンマで区切って任意個並べます.
# 空欄にするとリージョンを制限しません.
# %label%はそのトループに設定する出現条件のラベルです.
#
# 出現条件はスクリプトの詳細設定にて行います.
#   ENCOUNT_CONDITION_SET[:%label%] = ->{
#     %任意の条件%
#   }
# %label%には任意のラベルを指定します.
# ここで設定したラベルをメモ欄で指定可能です.
# %任意の条件%には任意のRubyコードを記述します.
# Rubyの知識が必要になりますが,スイッチのオンオフなどの簡単なサンプルが
# ありますので参考にしてください.
#
# 以下の例はサンプルの出現条件が設定されているものとします.
# 例)スイッチ1がオンの場合のみトループ1,2が出現する
#   ==出現トループ:1,10,[],s1_on==
#   ==出現トループ:2,10,[],s1_on==
#
# 例)変数1が3より大きい場合トループ3がリージョン1,2に出現する
#   ==出現トループ:3,10,[1,2],v1_over3==
#
# ■注意
# このスクリプトでは
# 「RPG::Map」
# のメソッドを改変しています.
# ■情報
# このスクリプトはgentlawkによって作られたものです.
# 利用規約はhttp://blueredzone.comをご覧ください.
#------------------------------------------------------------------------------
module BMSP
  @@includes ||= {}
  @@includes[:EncounterSetting] = 1.00
  module EncounterSetting
    #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
    #詳細設定
    # 出現条件セット
    ENCOUNT_CONDITION_SET = {}
    ENCOUNT_CONDITION_SET[:s1_on] = ->{ # スイッチ1がONの場合
      $game_switches[1]
    }
    ENCOUNT_CONDITION_SET[:v1_over3] = ->{ # 変数1が3より大きい場合
      $game_variables[1] > 3
    }
    ENCOUNT_CONDITION_SET[:a1_level_10] = ->{ # アクター1のレベルが10以上
      $game_actors[1].level >= 10
    }
    ENCOUNT_CONDITION_SET[:party_level_10] = ->{ # パーティーのレベルが10以上
      $game_party.highest_level >= 10
    }
    #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
    #--------------------------------------------------------------------------
    # ● 例外クラス
    #--------------------------------------------------------------------------
    class ERROR < StandardError
    end
    #--------------------------------------------------------------------------
    # ● バグの例外クラス
    #--------------------------------------------------------------------------
    class BUG < StandardError
    end
    #--------------------------------------------------------------------------
    # ● 導入スクリプトの例外クラス
    #--------------------------------------------------------------------------
    class REQUIRE < StandardError
    end
  end
  #--------------------------------------------------------------------------
  # ● 必須スクリプトのチェック
  #--------------------------------------------------------------------------
  class << self
    if method_defined?(:check_require)
      alias encountersetting_check_require check_require
    end
  end
  def self.check_require(require, version)
    if methods.include?(:encountersetting_check_require)
      encountersetting_check_require(require, version)
    end
    if !@@includes[require]
      message =
        sprintf("BMSPスクリプト%sが導入されていません.\n%s Ver%1.2f以上を導入してください.",
          require,require,version)
      raise EncounterSetting::REQUIRE, message
    elsif @@includes[require] < version
      message =
        sprintf("BMSPスクリプト%s Ver%1.2fは古いバージョンです.\n%s Ver%1.2f以上を導入してください.",
          require,@@includes[require],require,version)
      raise EncounterSetting::REQUIRE, message
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 導入スクリプトのチェック
  #--------------------------------------------------------------------------
  def self.check_include(include, version)
    return false unless @@includes[include]
    @@includes[include] >= version
  end
end
#==============================================================================
# ■ BMSP::EncounterSetting::NConParser
#==============================================================================
# スクリプト導入チェック
BMSP.check_require(:NConParser, 1.00)
class BMSP::EncounterSetting::NConParser < BMSP::NConParser
  HEADER = "出現トループ"
  #--------------------------------------------------------------------------
  # ● パラメータ付メモコンフィグの解析
  #--------------------------------------------------------------------------
  def parse_param(cname, cparam)
    return nil unless /#{HEADER}/ =~ cname
    return nil unless /(\d+),(\d+),\[([0-9,]*)\],(.+)/ =~ cparam
    troop_id = $1.to_i
    weight = $2.to_i
    region_set = $3.split(",").map{|id| id.to_i}.uniq
    cond_label = $4.to_sym
    return {:troop_id => troop_id, :weight => weight, :region_set => region_set, :cond_label => cond_label}
  end
  #--------------------------------------------------------------------------
  # ● セット型メモコンフィグの解析
  #--------------------------------------------------------------------------
  def parse_config(cname)
    false
  end
  #--------------------------------------------------------------------------
  # ● スキルID一覧フィルター
  #--------------------------------------------------------------------------
  def filter_skill_ids(param)
    param.split(",").map{|id| id.to_i}.uniq.sort
  end
end
#==============================================================================
# ■ RPG::Map
#==============================================================================
class RPG::Map
  #--------------------------------------------------------------------------
  # ● エンカウント設定の初期化
  #--------------------------------------------------------------------------
  def init_encounter_setting
    @encounter_setting = {}
    ncon = BMSP::EncounterSetting::NConParser.new(self.note)
    settings = ncon.param(BMSP::EncounterSetting::NConParser::HEADER)
    return unless settings
    settings.each do |setting|
      next unless setting
      @encounter_setting[setting[:cond_label]] ||= []
      encounter = RPG::Map::Encounter.new
      encounter.troop_id = setting[:troop_id]
      encounter.weight = setting[:weight]
      encounter.region_set = setting[:region_set]
      
      @encounter_setting[setting[:cond_label]].push encounter
    end
  end
  #--------------------------------------------------------------------------
  # ● エンカウントリストの取得
  #--------------------------------------------------------------------------
  alias bmsp_encountersetting_encounter_list encounter_list
  def encounter_list
    init_encounter_setting unless @encounter_setting
    encounter_list = bmsp_encountersetting_encounter_list.dup
    # 条件にマッチしたエンカウントリストを追加
    @encounter_setting.each do |label, encounters|
      cond_lambda = BMSP::EncounterSetting::ENCOUNT_CONDITION_SET[label]
      next unless cond_lambda && cond_lambda.call
      puts label
      puts cond_lambda.call
      encounter_list.concat encounters
    end
    puts encounter_list
    return encounter_list
  end
end
                                        [/pre]
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部