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

Project1

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

[已经解决] 怪物追踪脚本 续

[复制链接]

Lv5.捕梦者

梦石
0
星屑
35138
在线时间
4164 小时
注册时间
2007-12-15
帖子
10061
跳转到指定楼层
1
发表于 2018-4-21 09:33:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 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帖子,希望能有类似的低冲突脚本。
如果不能解决,只能手动替换全体敌人变回以前的固定,随机,接近三总情况。

万分感谢。

Lv4.逐梦者

梦石
1
星屑
13838
在线时间
5128 小时
注册时间
2017-2-18
帖子
383
来自 8楼
发表于 2018-4-22 00:19:23 | 只看该作者
自己刚刚随便看了一下,然后瞎改的,不知道对不对。

明雷敌人追踪.zip

296.35 KB, 下载次数: 90

评分

参与人数 2星屑 +75 +2 收起 理由
RyanBern + 75 + 1 认可答案
89444640 + 1 非常感谢,目前没问题,我多测试一下。.

查看全部评分

化而为鸟,其名为鸽。怒而咕,咕咕咕咕——咕咕咕!
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38732
在线时间
5702 小时
注册时间
2006-11-10
帖子
6608
2
发表于 2018-4-21 11:01:35 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-4-21 11:10 编辑

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

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

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

貌似 用 $game_map.events[编号].moveto(-1,-1) 可以把它踢到地图外面去,眼不见为净

点评

- -b治标不治本啊,我现在是先按照剧情一个个的清理成以前的随机移动。否则测试台痛苦了,以后一定不能一拍脑袋就轻易动脚本。  发表于 2018-4-21 11:15
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38732
在线时间
5702 小时
注册时间
2006-11-10
帖子
6608
3
发表于 2018-4-21 11:23:29 | 只看该作者
上面的方法就是根据你那一堆脚本,尽量采用事件解决问题才绿色无污染.....

治本的话,找到你之前添加动画的脚本,用 if self.visible 或者 if self.opacity > 0 套上试试
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35138
在线时间
4164 小时
注册时间
2007-12-15
帖子
10061
4
 楼主| 发表于 2018-4-21 11:42:05 | 只看该作者
本帖最后由 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

点评

这里是因为地图上没有ID=40的事件,所以moveto的调用失败了,如果是本事件,用@event_id代替  发表于 2018-5-3 19:42
否则1格的话,你那个索敌范围可能会影响到 0.0坐标.....  发表于 2018-4-21 12:06
-1-1太少,可以-10,-10嘛 =。=,反正都是丢外太空,丢得越远越干脆把。  发表于 2018-4-21 12:06
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38732
在线时间
5702 小时
注册时间
2006-11-10
帖子
6608
5
发表于 2018-4-21 12:01:31 | 只看该作者
本帖最后由 灯笼菜刀王 于 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里是怎么写的了

点评

楼上你发的那段的那句后面加上红色部分啊,在使用动画之前再多一个条件,"事件是可见状态下""  发表于 2018-4-21 20:54
不会用,直接加在$game_map.events什么的前面?  发表于 2018-4-21 20:48
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35138
在线时间
4164 小时
注册时间
2007-12-15
帖子
10061
6
 楼主| 发表于 2018-4-21 21:31:37 | 只看该作者
灯笼菜刀王 发表于 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追逐角色。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
38732
在线时间
5702 小时
注册时间
2006-11-10
帖子
6608
7
发表于 2018-4-21 22:18:56 | 只看该作者
本帖最后由 灯笼菜刀王 于 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号动画.  至于后面怎么做, 那就是别的方法负责的了, 这个方法的工作就到此为止

点评

其实,所有脚本都是在定义各种方法而已,真正运行的,就只有Main这个脚本,它从 $scene = Scene_Title.new, $scene.main 开始一个一个的引用前面定义的方法  发表于 2018-4-21 22:58
原来如此,需要进行另外的晕眩来判断是否在追击,是否在接近,是否在躲避等等情况……看上去简单的效果,原来这么复杂  发表于 2018-4-21 22:43

评分

参与人数 2星屑 +75 +1 收起 理由
RyanBern + 75 认可答案
89444640 + 1 多谢帮助~多了个解决方案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 00:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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