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

Project1

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

[已经解决] 请教在地图画面当第2号变量大于5时必然触发第9号事件方法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2020-4-22 08:41:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2020-4-23 06:51 编辑

在数据库的公共事件栏里可以直接设置触发的条件,比如一个公共事件触发条件可以是"并行处理",
当"条件开关"比如说第100号开关为开时,但却没有"当公共变量XXX大于(或小于, 等于)某个数值时"可触发某个公共事件,
关于咱这个问题,咱想这么写:

if $game_variables[2] > 5
$game_system.map_interpreter.setup($data_common_events[9].list, 0)
$game_variables[2] = 5
end




然后问题来了,这段代码放到哪里哪个class里比较好啊? 还请大神指点一二,多谢了!  

Lv4.逐梦者

梦石
0
星屑
11379
在线时间
612 小时
注册时间
2016-8-25
帖子
1401

R考场第七期纪念奖

2
发表于 2020-4-22 10:06:53 | 只看该作者
这个可以纯事件做出来的把
感觉没有必要用脚本啊
事件里也可以设置出来

点评

比如一个游戏有300张地图,咱当然可以在每张地图上做一个自动执行事件。。但是这么搞太傻了。。  发表于 2020-4-23 06:52
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36432
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
3
发表于 2020-4-22 14:15:47 | 只看该作者
为什么要放class里?有意义吗..

点评

比如一个游戏有300张地图,咱当然可以在每张地图上做一个自动执行事件。。但是这么搞太傻了。。  发表于 2020-4-23 06:40
回复 支持 反对

使用道具 举报

Lv5.捕梦者

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

R考场第七期纪念奖

4
发表于 2020-4-22 20:52:25 | 只看该作者
你用的都是全局变量,上下文并不是那么重要。

不过默认脚本里公共事件的用法是这样的,建议你参考一下。
RUBY 代码复制
  1. @child_interpreter = Interpreter.new(depth + 1)
  2. @child_interpreter.setup($data_common_events[n].list, event_id)

点评

请问大大这段代码一个switch都没有那是在哪里涉及到触发条件中的并行处理控制开关呢?  发表于 2020-4-23 19:36
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
5
 楼主| 发表于 2020-4-23 06:45:39 | 只看该作者
KB.Driver 发表于 2020-4-22 20:52
你用的都是全局变量,上下文并不是那么重要。

不过默认脚本里公共事件的用法是这样的,建议你参考一下。

大佬咱的目的是不想在一个有300张地图的游戏里每张地图上都添加这样一个自动执行事件:
if $game_variables[2] > 5
$game_system.map_interpreter.setup($data_common_events[9].list, 0)
$game_variables[2] = 5
end

但还是能达到每张地图上都添加这样一个自动执行事件的效果,所以想问问怎么搞最简单。。

点评

不能..你这样根本不会执行..  发表于 2020-4-23 20:50
多谢大大指点! 按照你的方法咱的目的是达到了,但能不能把这个公共事件触发条件设置为"无",然后用一段代码(比如当2号变量大于5)来控制这个事件啊?   发表于 2020-4-23 19:33
数据库里的公共事件,条件设置为并行处理,设置一个开关,保证开关一直打开。公共事件内容是一个条件判断2号变量大于5,满足就执行操作  发表于 2020-4-23 11:05
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11379
在线时间
612 小时
注册时间
2016-8-25
帖子
1401

R考场第七期纪念奖

6
发表于 2020-4-23 07:40:05 | 只看该作者
复制粘贴又不会累
大概五六分钟就能整完
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
7
 楼主| 发表于 2020-4-23 19:38:25 | 只看该作者
soulsaga 发表于 2020-4-22 14:15
为什么要放class里?有意义吗..

那要放到哪里可以实现像数据库里通过一个开关做并行处理那样的效果呢?

点评

你这样和直接並行公共事件有什么分别..  发表于 2020-4-23 20:51
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36432
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
8
发表于 2020-4-23 21:43:18 | 只看该作者
taeckle 发表于 2020-4-23 19:38
那要放到哪里可以实现像数据库里通过一个开关做并行处理那样的效果呢? ...

首先要放到哪里是看你想在什么地方触发..假如要在地图刷新时触发..那和用並行公共事件没大差别

评分

参与人数 1+1 收起 理由
taeckle + 1 明白了!感谢!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
9
 楼主| 发表于 2020-4-24 04:59:00 | 只看该作者
本帖最后由 taeckle 于 2020-4-24 05:02 编辑
soulsaga 发表于 2020-4-23 21:43
首先要放到哪里是看你想在什么地方触发..假如要在地图刷新时触发..那和用並行公共事件没大差别 ...


好吧,咱这样问,要是数据库公共事件栏里没有并行处理这个触发条件选项(比如只有触发条件"无"),用代码怎么写也可以达到像并行处理同样的效果呢?
是不是可以这么写:

if $game_switch[X] == true #如果第X开关开的话
$game_system.map_interpreter.setup($data_common_events[9].list, 0)
$game_switch[X] == false #关闭第X开关
end


如果这样写可以的话,是不是要放到一个class里啊?放到哪个class里啊?

点评

不知道+无可奉告..  发表于 2020-4-24 13:37
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

10
发表于 2020-4-26 06:21:01 | 只看该作者
本帖最后由 guoxiaomi 于 2020-4-26 06:23 编辑

你想在地图画面的每一帧都判断,就改写 Scene_Map 的 update 方法。而且为什么你不愿意用并行处理,适当使用并行处理的公共事件并不会给你带来麻烦

点评

卡不卡你试试就知道了,现在电脑计算力很强的  发表于 2020-4-26 16:26
多谢大佬指点,关键是怕用并行处理的公共事件是不是会导致游戏太卡,尤其是上面大佬说的让一个开关一直开着来用并行处理公共事件。。  发表于 2020-4-26 16:16

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
taeckle + 1 大神威武,一语中的, 受教了!

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 22:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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