Project1

标题: 怪物追踪脚本 续 [打印本页]

作者: 89444640    时间: 2018-4-21 09:33
标题: 怪物追踪脚本 续
本帖最后由 89444640 于 2018-4-21 09:53 编辑

原贴
https://rpg.blue/forum.php?mod=v ... =%E8%BF%BD%E8%B8%AA
刚发现,以前的测试不完善我就给全体遇敌事件改了……现在的情况是这样。
gif说话吧……
正常遇敌时

然后战斗胜利,一般明雷都是暂时消除事件即可
然后我没测试战斗胜利情况,就全体应用了,造成的后果如下

ORZ
事件页面1

事件页面2

还有什么办法挽救吗?
只能删了脚本改所有明雷事件了吧……
我傻我真傻……本来就不会脚本,非要弄什么靠近到一定范围才追踪的效果 T-T

请稍微等一下,我整理出个测试工程……
测试工程如下,希望能弄出来当敌人战斗胜利后,不显示追踪提示的效果。

明雷敌人追踪.rar (284.7 KB, 下载次数: 77)

如果用其他方法实现也行,我正在找视野相关的XP帖子,希望能有类似的低冲突脚本。
如果不能解决,只能手动替换全体敌人变回以前的固定,随机,接近三总情况。

万分感谢。
作者: 灯笼菜刀王    时间: 2018-4-21 11:01
本帖最后由 灯笼菜刀王 于 2018-4-21 11:10 编辑

你那堆脚本山又出囧况了啊.....

在上班没办法看具体情况,如果暂时消除事件不能让事件的坐标判定消失掉,那把它丢到外太空去不就行了?

胜利的条件下,移动该事件到地图里你角色跑不到的地方去并清除行走图试试。

貌似 用 $game_map.events[编号].moveto(-1,-1) 可以把它踢到地图外面去,眼不见为净
作者: 灯笼菜刀王    时间: 2018-4-21 11:23
上面的方法就是根据你那一堆脚本,尽量采用事件解决问题才绿色无污染.....

治本的话,找到你之前添加动画的脚本,用 if self.visible 或者 if self.opacity > 0 套上试试
作者: 89444640    时间: 2018-4-21 11:42
本帖最后由 89444640 于 2018-4-21 11:51 编辑
灯笼菜刀王 发表于 2018-4-21 11:23
上面的方法就是根据你那一堆脚本,尽量采用事件解决问题才绿色无污染.....

治本的话,找到你之前 ...



无法定义moveto
好像哪里写错了?
哦我知道了,这个方法隐患是,每个敌人事件编号都要对一遍,不能复制粘贴……
我再试试

这个到是解决了,但是移动过程中可能在平魔的某一位置有残留的动画闪一下……
我再蒙着试试脚本……
if self.visible 或者 if self.opacity > 0

应该是加载这段的某个位置吧?
#--------------------------------------------------------------------------
  # ● Execute_Sensor Effect
  #--------------------------------------------------------------------------            
def execute_sensor_effect(enable,key)      
      @pattern = 0
      @pattern_count = 0               
      $game_self_switches[key] = enable
      if $game_self_switches[key]
      @animation_id = 113 #动画ID
      @wait_count = 12 #等待帧数
      else
      @animation_id = 115 #动画ID
      @wait_count = 30 #等待帧数
      end
      self.refresh
   end
end

作者: 灯笼菜刀王    时间: 2018-4-21 12:01
本帖最后由 灯笼菜刀王 于 2018-4-21 12:04 编辑
89444640 发表于 2018-4-21 11:42
无法定义moveto
好像哪里写错了?
哦我知道了,这个方法隐患是,每个敌人事件编号都要对一遍,不能复制 ...


if $game_self_switches[key]  && self.visible

或者

if $game_self_switches[key]  && @visible

忘记event里是怎么写的了
作者: 89444640    时间: 2018-4-21 21:31
灯笼菜刀王 发表于 2018-4-21 12:01
if $game_self_switches[key]  && self.visible

或者

是第二个,但是不行,动画显示都混乱了,而且暂时消除后依然还和一楼的gif一样显示
这段根据英文理解
def execute_sensor_effect(enable,key)      
      @pattern = 0
      @pattern_count = 0               
      $game_self_switches[key] = enable
      if $game_self_switches[key] 如果自己按了方向键
      @animation_id = 113 #动画ID 则播放动画113
      @wait_count = 12 #等待帧数
      else 否则播放动画 115
      @animation_id = 115 #动画ID
      @wait_count = 30 #等待帧数
      end
      self.refresh
   end
end
似乎少好多判断……

这个脚本运行的实际效果,和我想的不一样……我想的效果怎么能判断一下角色在逃离敌人……敌人追不上了才显示动画115 汗水
无论是角色而靠近敌人还是敌人靠近角色,达到一定范围后,先显示个感叹号停20帧,然后开始以速度5追逐角色。
作者: 灯笼菜刀王    时间: 2018-4-21 22:18
本帖最后由 灯笼菜刀王 于 2018-4-21 22:22 编辑
89444640 发表于 2018-4-21 21:31
是第二个,但是不行,动画显示都混乱了,而且暂时消除后依然还和一楼的gif一样显示
这段根据英文理解
def ...


$game_self_switches 是独立开关, 也就是你那个独立开关操作
这里只是定义了一个"方法",即"显示动画" 这个方法, 如何启动这个方法, 你要用execute_sensor_effect 搜索

----------------------------
这段的意思是
定义 execute_sensor_effect 这个方法, 括号里的是预设的参数.

先把 @pattern 和 @pattern_count 归零, 这两个变量是局域变量, 也就是它是可以用在同一个类里的变量, 这段只是给它们归0, 在其他地方也会有使用到它们的地方(可以全局搜索看哪里使用到,就能判断它们干嘛用的)

然后 让 $game_self_switches[key] 这个独立开关带入enable, 也就是那两个预设的参数. 在实际引用这个方法的地方,参数就是具体的对象了

如果  $game_self_switches[key] 这个独立开关是打开的
那就实行下面的操作, 开113号动画, 等待12祯

如果是关闭的, 那就实行下面的操作, 开115号动画,等待12祯.

最后刷新这个事件,让动画效果显示出来.

--------------------
你的那些范围判断,是在别处写的,  然后引用这个方法来最后显示动画,就这样

比如说, 负责范围判断的方法 最后计算结果判断为, 1号地图的 45号事件追不上主角, 那就引用这个负责动画的方法

execute_sensor_effect(false,[1,45,"D"])

这样, 事件就会显示出115号动画.  至于后面怎么做, 那就是别的方法负责的了, 这个方法的工作就到此为止
作者: 阵颜    时间: 2018-4-22 00:19
自己刚刚随便看了一下,然后瞎改的,不知道对不对。

明雷敌人追踪.zip

296.35 KB, 下载次数: 90






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