Project1

标题: 脚本中有没有“事件是否被消除”的判断? [打印本页]

作者: xiaoxin3357    时间: 2013-7-28 12:36
标题: 脚本中有没有“事件是否被消除”的判断?
我有一个怪物视野的脚本,里面有一段是这样的,如果主角接近怪物,就将随机移动形态改为接近形态,然后显示气泡心情里面的叹号。

      @move_type = 2
      @move_speed = 5
      @balloon_id = 1


然后如果怪物被杀死,我就将怪物的事件改成“暂时消除事件”,但是我再次走近这个事件的时候,这个@balloon_id=1还会声效,一片空白的地方出现一个叹号,感觉可奇怪了。

所以我想再@balloon_id=1的前面加一个判断,如果事件被消除的时候不要显示,脚本应该怎么写?有这种判断吗?
作者: a0936459772    时间: 2013-7-28 12:55
标题: @balloon_id=1
本帖最后由 a0936459772 于 2013-7-28 18:27 编辑

可以自己在Game_Event的184行加一段


RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 判定事件是否消除
  3.   #--------------------------------------------------------------------------
  4.   def erased?
  5.     @erased == true
  6.   end


$game_map.events[1].erased? 的真假值做判断
[]的数字为事件ID


@balloon_id=1
改成
@balloon_id=1 if !$game_map.events[事件ID].erased?

主要是我不会呼叫区域变数...

作者: xiaoxin3357    时间: 2013-7-28 14:31
a0936459772 发表于 2013-7-28 12:55
可以自己加一段

在事件页中怎么获取事件自身的ID?
作者: xiaoxin3357    时间: 2013-7-28 14:59
a0936459772 发表于 2013-7-28 12:55
可以自己加一段

怎么在事件中的脚本里获取当前事件的ID?
作者: a0936459772    时间: 2013-7-28 15:03
本帖最后由 a0936459772 于 2013-7-28 15:22 编辑
xiaoxin3357 发表于 2013-7-28 14:59
怎么在事件中的脚本里获取当前事件的ID?


剛剛在編輯器裡看到
-1 則玩家、0 則本事件、其他 則是指定的事件ID


試試看 !$game_map.events[0].erased?

(無視掉吧...測試過了會報錯
作者: xiaoxin3357    时间: 2013-7-28 15:12
a0936459772 发表于 2013-7-28 15:03
你的腳本有沒有給事件ID參數阿?
@balloon_id 這行之前找找看

没,我那个脚本是自动读取地图内名称包含“怪物”两字的事件,找到了如果距离主角近了就触发那段

然后我又想了一下,还有一个实现功能的方法就是怪物死亡后给事件的位置移动到角落,这样重进地图时事件会回到原位,事件消除状态也接触了。
作者: xiaoxin3357    时间: 2013-7-28 15:30
xiaoxin3357 发表于 2013-7-28 15:12
没,我那个脚本是自动读取地图内名称包含“怪物”两字的事件,找到了如果距离主角近了就触发那段

然后我 ...
  1. #-------------------------怪物追跡-------------------------------------------------------
  2. #------------------[url]http://blog.sina.com.cn/rpgs---------------------------------------[/url]

  3. #使用方法,在事件的名称上加怪物
  4. #在运动规则 类型——随机
  5. #            速度——自己选(别太快,别高过反应后的速度)
  6. #            频率——最高
  7. #与事件接触
  8. #然后在内容加个战斗就OK了
  9. #不知道怎么用的可以跟我拿范例
  10. #animation_id =怪物反应动画 57,82行
  11. #move_speed =怪物反应后的速度 1为最低,5为最高
  12. #名字可以自己改在53,54行。
  13. #============================================================================
  14. # ■ Game_Character
  15. #==============================================================================
  16. class Game_Character
  17.   #--------------------------------------------------------------------------
  18.   # ● 更新
  19.   #--------------------------------------------------------------------------
  20.   alias update_n03 update
  21.   def update
  22.     update_n03
  23.     seek_player
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ●用追跡判定
  27.   #--------------------------------------------------------------------------
  28.   def distance_player
  29.     return false if (@x - $game_player.x).abs > 3
  30.     return false if (@y - $game_player.y).abs > 3
  31.     return true
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ●用追跡判定
  35.   #--------------------------------------------------------------------------
  36.   def distance_player2
  37.     return true if (@y - $game_player.y) == 0
  38.     return false
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 用追跡判定
  42.   #--------------------------------------------------------------------------
  43.   def sight_out
  44.     return false if (@x - $game_player.x).abs < 5
  45.     return false if (@y - $game_player.y).abs < 5
  46.     return true
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 用追跡判定
  50.   #--------------------------------------------------------------------------
  51.   def seek_player
  52.     return if @event == nil
  53.     return special_seek if @event.name == "怪物2"
  54.     return if @event.name != "怪物"
  55.     return if @transparent
  56.     if !@seeking && distance_player
  57.       @animation_id = 93
  58.       @remain = [@move_type, @move_speed]
  59.       @seeking = true
  60.       @move_type = 2
  61.       @move_speed = 5
  62.       @balloon_id = 1
  63.       $game_variables[2]+=1
  64.     elsif @seeking && sight_out
  65.       @seeking = false
  66.       if @remain != nil
  67.         @move_type = @remain[0]
  68.         @move_speed = @remain[1]
  69.       end
  70.     end
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 特殊追跡
  74.   #--------------------------------------------------------------------------
  75.   def special_seek
  76.     if !@seeking && distance_player2
  77.       @animation_id = 93
  78.       @remain = [@move_type, @move_speed]
  79.       @seeking = true
  80.       @move_type = 2
  81.       @move_speed = 5
  82.     end
  83.   end

  84. end
复制代码
60多行是触发移动速度、模式、气泡的地方

果然还是把事件移走比较简单吧?在事件脚本里就能写,就是我不知道移动事件的脚本函数是什么
作者: a0936459772    时间: 2013-7-28 15:48
本帖最后由 a0936459772 于 2013-7-28 15:51 编辑
xiaoxin3357 发表于 2013-7-28 15:30
60多行是触发移动速度、模式、气泡的地方

果然还是把事件移走比较简单吧?在事件脚本里就能写,就是我不 ...



@balloon_id=1
改成
@balloon_id = 1 if !$game_map.events[@event.id].erased?
作者: xiaoxin3357    时间: 2013-7-28 16:21
a0936459772 发表于 2013-7-28 15:48

@balloon_id=1
改成

报错...

所以还是告诉我,怎么在脚本里把一个事件移动到某个XY坐标上的函数吧
作者: 黄濑凉太    时间: 2013-7-28 16:45
不如在事件消除之前加上一个开关把。。。
作者: xiaoxin3357    时间: 2013-7-28 17:45
a0936459772 发表于 2013-7-28 12:55
可以自己加一段

就是因为用事件里面的指令不行,所以才想用脚本函数移动事件位置的

我那个怪物死亡的判断是在事件中的脚本写的

大概是这个逻辑

if hp<0
#事件暂时消除
#敌人数量-1
end

再加一句事件移动位置就可以了,这样所有问题都解决了
作者: a0936459772    时间: 2013-7-28 18:24
xiaoxin3357 发表于 2013-7-28 17:45
就是因为用事件里面的指令不行,所以才想用脚本函数移动事件位置的

我那个怪物死亡的判断是在事件中的脚 ...

get_character(0).moveto(X座標,Y座標)

本事件移動到(X座標,Y座標)




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