楼主: SiWangQi

[已经解决] RMVA如何使一个事件接近另一个事件

[复制链接]
梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 12:35:22 | 显示全部楼层
cinderelmini 发表于 2015-11-28 12:21
实话告诉你吧:这段Main前插入,
然后事件的移动方式选自定义,然后内容如下:然后把下面的循环执行和忽略 ...

很好,谢谢你,但是……可不可以解释一下[pre lang="ruby"]
·脚本:@wait ||= 0; @wait = 30 + rand(30) if @wait < 0
·脚本:@a = rand(2) if @wait <= 1
·脚本:move_toward_player if @a == 0
·脚本:move_toward_event(2P玩家操作的事件ID) if @a == 1
·脚本:@wait -= 1
[/pre]是什么意思?我知道这些是在事件第三页的脚本里使用,但是有什么用还不知道,可以解释一下吗?
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2015-11-28 12:39:22 | 显示全部楼层
本帖最后由 cinderelmini 于 2015-11-28 12:40 编辑

不是在事件第三页里用,是在设置事件行走图右边一点的【自主移动】里面的移动类型里面选【自定义】,
然后点在下面的【移动路线】,打开设置路线窗口,然后在右下角的【脚本】里一行一行输入进去的。

作用就是设置一个等待时间,时间到了就随机选一个对象(主角或者2P事件)去追。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 14:00:43 | 显示全部楼层
cinderelmini 发表于 2015-11-28 12:39
不是在事件第三页里用,是在设置事件行走图右边一点的【自主移动】里面的移动类型里面选【自定义】,
然后 ...

@cinderelmini
F:\错误提示.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 14:02:54 | 显示全部楼层
cinderelmini 发表于 2015-11-28 12:39
不是在事件第三页里用,是在设置事件行走图右边一点的【自主移动】里面的移动类型里面选【自定义】,
然后 ...

@cinderelmini

出错了
错误提示.PNG

点评

一共有5行,要分开来一行一行按顺序填进去才行  发表于 2015-11-28 14:55
你具体怎么填的?  发表于 2015-11-28 14:54
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 15:02:54 | 显示全部楼层
SiWangQi 发表于 2015-11-28 14:02
@cinderelmini

出错了

我是这样填的;
图片.PNG

点评

第一行和第二行顺序换过来,这两行顺序不能倒,必须先赋值才能用来对比和计算。  发表于 2015-11-28 15:10
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 16:46:22 | 显示全部楼层
SiWangQi 发表于 2015-11-28 15:02
我是这样填的;

可不可以用下面的代码里的:move_toward_character($game_map.events[7])
命令呢?好像意思是跟踪事件7的意思吧。
[pre lang="ruby"]def abs(x)
  if x < 0
    return -x
  else
    return x
  end
end

ITEM_MAX = 255
class Game_Party < Game_Unit;def max_item_number(item);return ITEM_MAX;end;end

class Game_Event < Game_Character
  def near_the_screen?(dx = 24, dy = 16)
    ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32
    ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32
    ax >= -dx && ax <= dx && ay >= -dy && ay <= dy
  end
end

def attack_start
    common_event = $data_common_events[$game_variables[21] + 80]
    if common_event
      child = Game_Interpreter.new(@depth + 1)
      child.setup(common_event.list, same_map? ? @event_id : 0)
      child.run
    end
  end
  
def setup_weapon
    common_event = $data_common_events[$game_variables[21] + 60]
    if common_event
      child = Game_Interpreter.new(@depth + 1)
      child.setup(common_event.list, same_map? ? @event_id : 0)
      child.run
    end
  end
  
  
  class Sprite_Base
  def set_animation_rate
    @ani_rate = 2
  end
  end[/pre]

@cinderelmini

点评

这个是ARPG用的吧,攻击召唤公共事件什么的……具体不是很清楚……  发表于 2015-11-28 17:12
还有下面的  发表于 2015-11-28 17:11
那么上面的脚本是干嘛的呢?  发表于 2015-11-28 17:10
PS:这个代码框里根本没有【move_toward_character($game_map.events[7])】吧→_→  发表于 2015-11-28 16:53
可以啊,原理就跟窝⑨楼的那个一样的呀~窝只是为了使用方便才那样写。  发表于 2015-11-28 16:52
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 16:47:02 | 显示全部楼层
SiWangQi 发表于 2015-11-28 16:46
可不可以用下面的代码里的:move_toward_character($game_map.events[7])
命令呢?好像意思是跟踪事件7的 ...

@cinderelmini
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2014-9-20
回帖
29
 楼主| 发表于 2015-11-28 17:03:02 | 显示全部楼层
SiWangQi 发表于 2015-11-28 16:47
@cinderelmini

好像是这个脚本,不是上面的。
@cinderelmini

[pre lang="ruby"]=begin
========================================
マップイベントを呼び出すスクリプトです。
イベントコマンドのスクリプトから実行します。
本スクリプトはRGSS3専用です。

●使い方
マップイベントID:4、ページ3を呼び出したい。
call_map_event(4,3)

イベントページ無指定でマップイベント5を呼び出したい。
start_map_event(5)

このように変数で指定することも可能です。

call_map_event($game_variables[1],$game_variables[2])



●ページ指定でマップイベントを呼び出す。
call_map_event(id,page)

起動後の@event_idは指定先のイベントIDに依存します。


●ページ無指定でマップイベントを呼び出す。
start_map_event(id)

起動後の@event_idは指定先のイベントIDに依存します。



●ページ指定でマップイベントを呼び出す。
call_map_event_carried_id(id,page)

起動後の@event_idは指定元のイベントIDに依存します。
但し、指定元の@event_idが0の場合はイベントは実行されません。


●ページ無指定でマップイベントを呼び出す。
start_map_event_carried_id(id)

起動後の@event_idは指定元のイベントIDに依存します。
但し、指定元の@event_idが0の場合はイベントは実行されません。

●他マップのイベントをページ指定で呼び出す。
call_other_map_event(map_id,event_id,page)

他マップのイベントをページ指定で呼び出します。

========================================
=end
#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================

module Vocab
  EventOverflow   = "マップイベントまたはコモンイベントの呼び出しが上限を超えました。"
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
#☆カスタム
#--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # ● IDからイベントをページ指定で起動
  #     id   : 起動するイベントのID
  #     page : 起動するイベントのページ
  #--------------------------------------------------------------------------
  def call_map_event(id,page)
    event = $game_map.events[id]
    @child = Game_Interpreter.new(@depth+1)
    @child.setup(event.instance_variable_get(:@event).pages[page-1].list,id)
    @child.run
  end
  #--------------------------------------------------------------------------
  # ● IDからイベントを起動
  #     id   : 起動するイベントのID
  #--------------------------------------------------------------------------
  def start_map_event(id)
    event = $game_map.events[id]
    @child = Game_Interpreter.new(@depth + 1)
    @child.setup(event.list, id)
    @child.run
  end
  #--------------------------------------------------------------------------
  # ● IDからイベントをページ指定で起動(イベントIDは引き継ぎ)
  #     id   : 起動するイベントのID
  #     page : 起動するイベントのページ
  #--------------------------------------------------------------------------
  def call_map_event_carried_id(id,page)
    event = $game_map.events[id]
    @child = Game_Interpreter.new(@depth+1)
    @child.setup(event.instance_variable_get(:@event).pages[page-1].list,@event_id)
    @child.run
  end
  #--------------------------------------------------------------------------
  # ● IDからイベントを起動(イベントIDは引き継ぎ)
  #     id   : 起動するイベントのID
  #--------------------------------------------------------------------------
  def start_map_event_carried_id(id)
    event = $game_map.events[id]
    @child = Game_Interpreter.new(@depth + 1)
    @child.setup(event.list, @event_id)
    @child.run
  end
  #--------------------------------------------------------------------------
  # ● 別マップのマップイベントを呼び出す。(IDは引き継ぎ。)
  #     map_id     : 起動するイベントがあるマップのID
  #     event_id   : 起動するイベントID
  #     page       : 起動するイベントのページ
  #--------------------------------------------------------------------------
  def call_other_map_event(map_id,event_id,page)
    if @map_id != map_id
      event = load_data(sprintf("Data/Map%03d.rvdata2", map_id)).events[event_id]
      event = Game_Event.new(map_id, event)
    else
      event = $game_map.events[id]
    end
    @child = Game_Interpreter.new(@depth+1)
    @child.setup(event.instance_variable_get(:@event).pages[page-1].list,@event_id)
    @child.run
  end
end
[/pre]

点评

这个脚本貌似是用来强行运行指定事件的,利用并行事件判断怪物和玩家2P的距离然后用这个的话也许可以做出追到2P的时候做出和追到主角一样的事。  发表于 2015-11-28 17:15
这里面也没有呀~其实那个方法就是默认里面带的呀,于是到底要表达什么呢?(其实可以用点评的,不用一直连楼什么的~)  发表于 2015-11-28 17:06
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部