设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6363|回复: 26
打印 上一主题 下一主题

[已经过期] 怪物追踪脚本

[复制链接]

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
跳转到指定楼层
1
发表于 2018-2-15 10:21:16 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 89444640 于 2018-2-15 14:39 编辑

由rpg接龙2添加的脚本引发的。
怪物追踪脚本,我扔到自己工程中测试目前无冲突,所以准备拿过来用。
这个脚本使用方式是
在事件标题的任意位置添加<SensorX>,其中X是具体的数,象征角色距离本事件小于X格,启动本事件的一个特定的独立开关(脚本中我设定的是D,即角色本事件靠近X格内,自动开启独立开关D)

测试了一下,效果不错,比我以前用怪物随机移动好多了。怪物追的有理有据。
但是,有一些细节需要完善,现在怪物发现角色时候没有任何提示,由于可以根绝怪物种类不同设定不同视野,所以这个没提示会造成怪物追踪很难躲开。
我在测试中加了几个动画,试图让怪物在启动追踪时先播放一个发现角色的动画,但是……失败了,并不是开怪开启时播放,只能是接触的一瞬间显示。如图所示

我想了半天也不知道怎么从事件入手解决。
因此,求在此脚本中添加语句,以实现如下效果。
当怪物发现敌人时,播放动画113,因为动画是8帧,会造成敌人行动暂停行动8帧,然后敌人再开始追击角色,因为我有角色加速,如果能有这样的提示,完全来得及跑开避免战斗。
虽然不能干别的用了,我这脚本确实只用于做怪物追踪角色用,所以实现此效果即可。
谢谢。
工程如下。
Project1.rar (280.01 KB, 下载次数: 159)
加个私货,我试ipad能不能播放XD
https://otowabi.com/category/material/oversea/

Lv5.捕梦者

梦石
0
星屑
36382
在线时间
10788 小时
注册时间
2009-3-15
帖子
4813
来自 7楼
发表于 2018-2-15 17:46:56 | 只看该作者
本帖最后由 soulsaga 于 2018-2-15 18:26 编辑

RUBY 代码复制
  1. def execute_sensor_effect(enable,key)      
  2.       @pattern = 0
  3.       @pattern_count = 0               
  4.       $game_self_switches[key] = enable
  5.       if $game_self_switches[key]
  6.       @animation_id = 113 #动画ID
  7.       @wait_count = 20 #等待帧数
  8.       else
  9.       @animation_id = 114 #动画ID
  10.       @wait_count = 20 #等待帧数
  11.       end
  12.       self.refresh
  13.    end
  14. end



这样就好..你可以加个流汗动画..

点评

刚才吃饭看春晚呢,这回回来了,我先试一下。  发表于 2018-2-15 21:51

评分

参与人数 1+1 收起 理由
89444640 + 1 非常感谢。

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33430
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

11
发表于 2018-2-19 11:25:21 | 只看该作者
89444640 发表于 2018-2-19 10:36
嗯,随机移动一直不停确实闹心的慌,能随机停顿就好多了。
不知道会不会有冲突,我搜一下看看。然后默认 ...

这儿有个简单的,让 随机NPC 不那么累:
  1. #==============================================================================
  2. class Game_Event < Game_Character
  3.   #--------------------------------------------------------------------------
  4.   alias xr_new_move_initialize initialize
  5.   def initialize(map_id, event)
  6.     xr_new_move_initialize(map_id, event)
  7.     @move_wait = @move_kind = 0
  8.     @move_step = []
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   def move_type_random
  12.     @move_wait == 0 && @move_step == [] ? set_move_type : update_random
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   def set_move_type
  16.     @move_kind = rand 3
  17.     @move_wait = @move_kind < 2 ? rand(100)+20 : 0
  18.     @move_step = @move_kind == 2 ? [rand(5)+1, rand(4)] : []
  19.     @move_kind == 1 && turn_random
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   def update_random
  23.     @move_step != [] && move_to_random
  24.     @move_wait -= 1 if @move_wait > 0
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   def move_to_random
  28.     case @move_step[1]
  29.     when 0  ;move_down(false)
  30.     when 1  ;move_left(false)
  31.     when 2  ;move_right(false)
  32.     when 3  ;move_up(false)
  33.     end
  34.     @move_step[0] > 0 ? @move_step[0] -= 1 : @move_step = []
  35.   end
  36. end
  37. #==============================================================================
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
10
 楼主| 发表于 2018-2-19 10:36:05 | 只看该作者
芯☆淡茹水 发表于 2018-2-19 10:12
以前就明雷效果做了一系列的改造,包括随机和追击。

总感觉默认随机移动应用到怪身上稍微有那么点别扭,就 ...

嗯,随机移动一直不停确实闹心的慌,能随机停顿就好多了。
不知道会不会有冲突,我搜一下看看。然后默认的随机移动有个别地方做故意用了这个效果的事,
比如这个……

如果这个脚本是直接改成所有都这样……不是一直这么动,就没这么好玩了XD

一些通道过于狭窄的敌方,需要让这里的敌人是移动缓慢且不是经常移动,背面视野X格以内看不见玩家,这样容易躲避。

我这一直是先得有脚本,看看冲突和能不能用再确定优化方向,所以能实现一部分效果就知足了,
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33430
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

9
发表于 2018-2-19 10:12:06 | 只看该作者
以前就明雷效果做了一系列的改造,包括随机和追击。

总感觉默认随机移动应用到怪身上稍微有那么点别扭,就那么有规律的不停走啊走,,,所有改造成了随机的停顿,随机的转向和随机的移动步数。
至于追击,在脚本里改就更方便了。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
8
 楼主| 发表于 2018-2-15 22:17:49 | 只看该作者
soulsaga 发表于 2018-2-15 17:46
def execute_sensor_effect(enable,key)      
      @pattern = 0
      @pattern_count = 0              ...

效果……如下,还算可以接受,

这是一个追击问题,敌人追击速度是4,角色加速以后速度是5,不手残追不上。
设置敌人追击等待是8帧,追不上显示汗水等待30帧

但是如果怪物以速度5冲过来,等待8帧就有点难躲了。
速度6的情况根本就躲不开。


点评

可以扩大范围的<Sensor8>什么的 ,但是要记得有迷宫……迷宫经常两个格子三个格子的道,怪物堵口很恶心的。  发表于 2018-2-16 15:11
我觉得索敌范围太小了..不故意撞上去根本不用被怪追..  发表于 2018-2-16 14:56
专注躲怪三十年XD  发表于 2018-2-16 09:51
提示变得没意义啊..  发表于 2018-2-15 23:33
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
6
 楼主| 发表于 2018-2-15 17:28:57 | 只看该作者
soulsaga 发表于 2018-2-15 16:43
#3#獨立開關
  key = [$game_map.map_id, @event_id, "x"]
  if $game_self_switches[key]

是这段

  #--------------------------------------------------------------------------
  # ● Execute_Sensor Effect
  #--------------------------------------------------------------------------            
  def execute_sensor_effect(enable,key)      
      @pattern = 0
      @pattern_count = 0
  if enable p self_switch_valid ["d"]= true
      @animation_id = 1 #动画ID
      @wait_count = 8 #等待帧数
    else p
      self_switch_valid = false
  end  
      $game_self_switches[key] = enable
      self.refresh
  end
end
不知道怎么写
说实话,写的是啥我基本看不懂- -b
我这是依然跳出无法定义什么什么的。
要不拿楼顶工程试试?

点评

人去哪了..解決了么..  发表于 2018-2-15 18:23
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36382
在线时间
10788 小时
注册时间
2009-3-15
帖子
4813
5
发表于 2018-2-15 16:43:46 | 只看该作者
本帖最后由 soulsaga 于 2018-2-15 16:46 编辑

#3#獨立開關
  key = [$game_map.map_id, @event_id, "x"]
  if $game_self_switches[key]
  end

$game_self_switches[地图ID, 事件ID, "独立开关ABCD"]

是这样么..
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
4
 楼主| 发表于 2018-2-15 15:52:52 | 只看该作者
本帖最后由 89444640 于 2018-2-15 16:31 编辑
89444640 发表于 2018-2-15 11:18
谢谢,测试了一下,这个在怪物靠近的时候没问题,但是会出现逃跑远离怪物的时候依然播放一次,是不是应该 ...


蒙着来,写成这样
  if $game_self_switches[D] = true
      @animation_id = 113 #动画ID
      @wait_count = 8 #等待帧数
  end
能运行但是显示
无法识别独立开关D
蒙出来了  
if  @game_self_switches = enable
      @animation_id = 1 #动画ID
      @wait_count = 8 #等待帧数
  end  
应该是这样吧?试了一下不对……没效果
目前试蒙写了几十遍可能性,然后这样子是能运行  
if enable p self_switch_valid = true
      @animation_id = 1 #动画ID
      @wait_count = 8 #等待帧数
    else p
      self_switch_valid = false
  end
但是跳出的一个什么都没有的对话框写着ture 然后是undefined enable
rmxp F1里面写的是
GC.enable
允许使用垃圾回收。
返回此前的禁用状态(若此前已被禁用,则返回 true,若此前 GC 仍在工作,则返回 false)。
确实是返回ture了……怎么才能返回游戏正在执行的动作,而不是返回ture

点评

这里的等於是写成==代入才是=  发表于 2018-2-15 16:39
还是不行……我继续试……  发表于 2018-2-15 16:29
if enable p "独立开关打开" else p "独立开关关闭" end  发表于 2018-2-15 16:10
if game_self_switches[d] = enable也不轻,抱歉脚本我真的一点都不会,不知道应该怎么写实在不行  发表于 2018-2-15 16:06
直接判断enable就行  发表于 2018-2-15 15:58
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35180
在线时间
4169 小时
注册时间
2007-12-15
帖子
10066
3
 楼主| 发表于 2018-2-15 11:18:24 | 只看该作者
张咚咚 发表于 2018-2-15 10:51
脚本77行后面加上

谢谢,测试了一下,这个在怪物靠近的时候没问题,但是会出现逃跑远离怪物的时候依然播放一次,是不是应该增加一些条件判断?就是角色逃离怪物追踪的时候,离开那个触发的范围时候不播放动画,或者播放一个汗水动画,表示怪物追不上角色了。
这个好像是轨迹系列通用表现手法- -b

点评

if self_switch_valid=ture then 什么的?我蒙着试试能不能运行  发表于 2018-2-15 15:40
还是那个地方判断独立开关打开或关闭,然后执行相应的动画  发表于 2018-2-15 14:56
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-13 13:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表