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

Project1

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

[已经解决] 有办法判定是哪个事件打开了开关吗

[复制链接]

Lv2.观梦者

梦石
0
星屑
896
在线时间
147 小时
注册时间
2020-11-10
帖子
43
跳转到指定楼层
1
发表于 2021-2-5 00:04:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比方我让一个事件打开了1号开关,触发了公共事件的并行处理,

如果我想让打开1号开关的事件显示动画要怎么做呢

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2021-2-5 00:31:26 | 只看该作者
可以做一个反馈(callback)机制。

思路是这样的:
在Game_Interpreter中找到开关操作的command,
在这里猴子补丁一下,判断操作的开关是否在CALLBACK_LIST这个哈希表中有设置反馈的公共事件编号。
假如有,则当场在Game_Interpreter实例中触发公共事件,这里具体怎么写可以参考Game_Interpreter自身实现。

时间有限,仅提供一个思路,看看有没有热心坛友实现一下。

评分

参与人数 1+1 收起 理由
风雨流盼 + 1 感谢提供思路了,涉及到脚本我就好懵.

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
3
发表于 2021-2-5 00:47:43 | 只看该作者
本帖最后由 alexncf125 于 2021-2-5 15:48 编辑
  1. class Game_Interpreter
  2.   alias show_animation_command_121 command_121          #別名
  3.   def command_121
  4.     show_animation_command_121                    #呼叫原方法
  5.     (@params[0]..@params[1]).each do |i|          #遍历被操作的开关
  6.       character = get_character(0)          #character获取本事件
  7.       if character && i == 1 && @params[2] == 0          #如果character(本事件)不为nil, 並当 "开关的ID是1" 及 "是在打开开关" 时
  8.         character.animation_id = 1          #在character(本事件)上播放动画
  9. #~           Fiber.yield while character.animation_id > 0
  10.       end
  11.     end
  12.   end
  13. end
复制代码

评分

参与人数 1+1 收起 理由
风雨流盼 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5463
在线时间
2562 小时
注册时间
2011-9-27
帖子
1120

极短23参与开拓者

4
发表于 2021-2-5 07:59:56 | 只看该作者
还是尽量养成好的编程习惯。 如果事件中可能触碰到开关,就在事件名称中留个记号。例如 “事件1: switch01”。   
另一方面,在触发开关之前,如果有必要,就把事件id保留到某个变量中,便于公共事件了解 调用者是谁。 例如 “set 变量100(调用者)= 1” 。

顺便说一句:使用 “调用公共事件” 这个命令的时候,动画效果可以针对当前事件的。而且是立即执行。  如果你调整了开关再去触发公共事件,那要等你现在的命令表都执行完了才会执行,而且公共事件就不知道谁是调用者了,所谓“当前事件”就没法用了。   这都是很常用的知识。

点评

嗯,单纯就加动画的话确实只要调用公共事件就可以,可想要加点别的那这个方法就不太好使, 会整个事件页执行完才会显示动画  发表于 2021-2-5 14:09
从平淡走向更平淡。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
896
在线时间
147 小时
注册时间
2020-11-10
帖子
43
5
 楼主| 发表于 2021-2-5 14:03:38 | 只看该作者

感谢,就是看不太懂,

还有想要多添加几个开关要在哪改呢

点评

加了些注释, 你看看能懂不, 不懂再问  发表于 2021-2-5 14:32
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
896
在线时间
147 小时
注册时间
2020-11-10
帖子
43
6
 楼主| 发表于 2021-2-5 15:30:40 | 只看该作者

有点懂了,但这样开关打开时只能播放指定的动画,

我想让事件在不同条件下会出现不同的效果,所以放在公共事件里,用并行处理和条件分歧做

其实现在遇到公共事件里本事件“显示动画”的时候不会显示

简单说就是想让打开开关的事件被锁定,让并行处理的公共事件可以知道是这个事件

貌似这段脚本有点接近了
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36392
在线时间
10789 小时
注册时间
2009-3-15
帖子
4813
7
发表于 2021-2-5 16:02:44 | 只看该作者
不用开关用变量记录就好..?

点评

能说更加详细点吗,我原来也试着这样做就不太行的样子  发表于 2021-2-5 16:47
记录成事件ID再在公共事件分岐这土去播放不同动画?  发表于 2021-2-5 16:15
变量怎么记录呢,有什么方法吗  发表于 2021-2-5 16:09
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
8
发表于 2021-2-5 16:16:36 | 只看该作者
本帖最后由 alexncf125 于 2021-2-5 17:56 编辑
风雨流盼 发表于 2021-2-5 15:30
有点懂了,但这样开关打开时只能播放指定的动画,

我想让事件在不同条件下会出现不同的效果,所以放在公 ...


喔...
我3L的脚本旨在达成「让打开1号开关的事件即时显示一特定动画」...
所以你现在6L说的情況我就不懂了...

或许是把3L脚本中的character.animation_id = 1换成
$game_variables[1] = character.id          #1号变量代入character(本事件)的事件编号

之后在公共事件用
if $game_variables[1] > 0          #可以用事件指令代替, 条件分歧 - 1号变量>0时
  $game_map.events[$game_variables[1]].animation_id = 动画ID          #不可用事件指令代替, 此句的意思为:当前地图的x(1号变量)号事件, 播放y(动画ID)号动画
  $game_variables[1] = 0          #可以用事件指令代替, 变量操作 - 1号变量代入0
end
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
896
在线时间
147 小时
注册时间
2020-11-10
帖子
43
9
 楼主| 发表于 2021-2-5 17:27:57 | 只看该作者
alexncf125 发表于 2021-2-5 16:16
喔...
我3L的脚本旨在达成「让打开1号开关的事件即时显示一特定动画」...
所以你现在6L说的情況我就不懂 ...

可以了,不过怎么做第二个呢,我试着自己改了下结果动画显示在第一个事件上

点评

分开存在,但也可以同时播放这样吧  发表于 2021-2-5 18:57
你这多个动画是同时存在吗?  发表于 2021-2-5 18:47
差不多,我想做五六个左右  发表于 2021-2-5 18:30
啊?你怎么会弄成不同的开关..那如果是十个事件豈不就得佔用十个开关??  发表于 2021-2-5 18:25
还有打开的开关是不同的  发表于 2021-2-5 18:23
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36392
在线时间
10789 小时
注册时间
2009-3-15
帖子
4813
10
发表于 2021-2-5 18:09:22 | 只看该作者
某事件变量操作=某事件ID..然后播放该变量的动画..

点评

要用到脚本吗,还是事件就能解决呢 我比较笨没研究出来  发表于 2021-2-5 18:29
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 04:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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