查看: 3950|回复: 2

[已经过期] 怎么编写移动路线的高级脚本

[复制链接]
梦石
0
星屑
278
在线时间
122 小时
注册时间
2010-12-23
回帖
168
发表于 2014-10-9 17:36:33 | 显示全部楼层 |阅读模式

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

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

×
例如下面的图片那样的基础效果

但是我希望可以泛用

EV0003变为变量1来控制
EV0004变成变量2控制
DOC[@B@18UB9O))%V1DG@BF.jpg
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2014-10-9 17:54:54 | 显示全部楼层
本帖最后由 tseyik 于 2014-10-9 18:01 编辑

移動ルートの条件分岐
http://woodpenguin.web.fc2.com/rgss3/route_branch.html
支持自變量(セルフ変数)。
需同網頁的自變量劇本。
00-00 (1) (1) (2).jpg

[pre lang="ruby" line="1"]=begin

▼ 移動ルートの条件分岐 ver. 1.0

RPGツクールVXAce用スクリプト

制作 : 木星ペンギン
URL  : http://woodpenguin.blog.fc2.com/

------------------------------------------------------------------------------
概要

□ 移動ルートの設定で条件分岐が使用できるようになります。

------------------------------------------------------------------------------
使い方

・ 移動ルート設定のスクリプトで、以下の文字列を入力すると条件分岐を行えます。
  
   if 条件              => 条件が真の場合の処理
   else                 => 上記での条件に当てはまらない場合の処理
   end                  => 条件分岐の終了

・ unless や elsif のような機能はありません。

・ 基本的にRubyの条件分岐と同じです。

・ 条件分岐中に別の条件分岐を入れることは可能です。

・ 条件では s でスイッチ、v で変数を参照できます。

・ セルフ変数も使用できます。
    併用する場合はこちらのスクリプトを下にしてください。

=end

module WdTk
module RouteBranch
#//////////////////////////////////////////////////////////////////////////////
#
# 設定項目
#
#//////////////////////////////////////////////////////////////////////////////
  
  #--------------------------------------------------------------------------
  # ● 移動ルートの処理改善
  #     1 フレームに一行しか処理されない移動ルートの処理を
  #     1 フレーム内に可能な限り処理を行うように変更します。
  #--------------------------------------------------------------------------
  RouteEX = true
  

#//////////////////////////////////////////////////////////////////////////////
#
# 以降、変更する必要なし
#
#//////////////////////////////////////////////////////////////////////////////

end

  @material ||= []
  @material << :RouteBranch
  def self.include?(sym)
    @material.include?(sym)
  end
  
end

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
if WdTk::RouteBranch::RouteEX
  #--------------------------------------------------------------------------
  # ◯ ルートに沿った移動の更新
  #--------------------------------------------------------------------------
  alias _wooden_ex_update_routine_move update_routine_move
  def update_routine_move
    if @wait_count > 0
      @wait_count -= 1
    else
      _wooden_ex_update_routine_move
      if @move_route_forcing && @move_succeed && stopping? &&
        @wait_count == 0 && @move_route_index >= 0
        update_routine_move
      end
    end
  end
end # if WdTk::RouteBranch::RouteEX
  #--------------------------------------------------------------------------
  # ◯ 移動コマンドの処理
  #--------------------------------------------------------------------------
  alias _wdtk_routeb_process_move_command process_move_command
  def process_move_command(command)
    if command.code == ROUTE_SCRIPT
      case command.parameters[0]
      when /if\s+(.+)/
        command_skip(/else|end/) unless route_eval($1)
        return
      when "else"
        command_skip("end")
        return
      when "end"
        return
      end
    end
    _wdtk_routeb_process_move_command(command)
  end
  #--------------------------------------------------------------------------
  # ● 移動ルート用
  #--------------------------------------------------------------------------
  def route_eval(formula)
    s, v = $game_switches, $game_variables
    begin
      eval(formula)
    rescue
      msgbox "以下の条件判定でエラーが出ました。\n\n", formula
      true
    end
  end
  #--------------------------------------------------------------------------
  # ● コマンドスキップ
  #--------------------------------------------------------------------------
  def command_skip(text)
    @move_route_index += 1
    loop do
      command = @move_route.list[@move_route_index]
      case command.code
      when ROUTE_END
        @move_route_index -= 1
        return
      when ROUTE_SCRIPT
        case command.parameters[0]
        when /^if\s/
          command_skip("end")
        when text
          return
        end
      end
      @move_route_index += 1
    end
  end
end

#==============================================================================
# ■ Game_Event
#==============================================================================
if WdTk.include?(:SelfVar)
class Game_Event
  #--------------------------------------------------------------------------
  # ● ルートに沿った移動の更新
  #--------------------------------------------------------------------------
  def update_routine_move
    $game_variables.set_key(@map_id, @id)
    super
    $game_map.interpreter.initiative_selfvar
  end
end
end # if WdTk.include?(:SelfVar)
[/pre]

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
278
在线时间
122 小时
注册时间
2010-12-23
回帖
168
 楼主| 发表于 2014-10-9 18:47:26 | 显示全部楼层
本帖最后由 双叶GL 于 2014-10-9 18:53 编辑
tseyik 发表于 2014-10-9 17:54
移動ルートの条件分岐
http://woodpenguin.web.fc2.com/rgss3/route_branch.html
支持自變量(セルフ変数)。 ...


= =啊!!虽然这个可以用变量控制移动路线,但是我想知道的是,

变量怎么控制移动单位


例如我想做一个事件战斗


角色3攻击 敌人后退
这只是一个人

但是角色3攻击的敌人是3号怎么办?想要简化下过程

虽然可以直接用条件代替啦
- -作图太麻烦了,又是PS又是素材的
还不如玩游戏实际- -嗯嗯,娱乐就好!!

=====================
神马都简单,但是需要时间&精力,虽然我时间很多,但是专注一样东西的精力- -
====================
回复 0 1

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部