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

Project1

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

[已经解决] 请教关于遇敌前调用公共事件的处理方法。

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
跳转到指定楼层
1
发表于 2018-4-4 21:52:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #--------------------------------------------------------------------------
  2.   # ● 监听遇敌事件
  3.   #--------------------------------------------------------------------------
  4.   def update_encounter
  5.   $game_temp.reserve_common_event(3) && SceneManager.call(Scene_Battle) if $game_player.encounter
  6.   end
复制代码

这么写会直接将战斗调用的效果消除?
请教各位前辈该怎么修改或者有什么好的思路能够实现?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。

Lv3.寻梦者

梦石
0
星屑
3039
在线时间
1052 小时
注册时间
2011-8-16
帖子
242
2
发表于 2018-4-4 22:12:09 | 只看该作者
本帖最后由 失落的乐章 于 2018-4-4 22:14 编辑

Ruby 的 && 是逻辑运算符,不是用来执行多条命令的。
  1.   def update_encounter
  2.     if $game_player.encounter
  3.       $game_temp.reserve_common_event(3)
  4.       SceneManager.call(Scene_Battle)
  5.     end
  6.   end
复制代码

写成这样试试?(我没有测试过)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
3
 楼主| 发表于 2018-4-4 22:18:47 | 只看该作者
失落的乐章 发表于 2018-4-4 22:12
Ruby 的 && 是逻辑运算符,不是用来执行多条命令的。

写成这样试试?(我没有测试过) ...

嗯...我分开写也一样的。前辈提供的方法也行不通,结果是进入战斗后才调用该公共事件。
我也尝试了很多方法,都无法在遇敌前调用公共事件再进入战斗场景...
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3039
在线时间
1052 小时
注册时间
2011-8-16
帖子
242
4
发表于 2018-4-4 23:10:03 | 只看该作者
文雅夕露 发表于 2018-4-4 22:18
嗯...我分开写也一样的。前辈提供的方法也行不通,结果是进入战斗后才调用该公共事件。
我也尝试了很多方 ...

我找到一个比较别扭的解决方案:
  1.   def update_encounter
  2.     if $game_player.encounter
  3.        $game_temp.reserve_common_event(3)
  4.        $game_map.setup_starting_event
  5.        $game_temp.reserve_common_event(4)
  6.     end
  7.   end
复制代码

然后在4号公共事件中执行脚本:
  1. SceneManager.call(Scene_Battle)
复制代码

我相信肯定有更好的办法……

评分

参与人数 1+1 收起 理由
文雅夕露 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
5
 楼主| 发表于 2018-4-4 23:22:29 | 只看该作者
失落的乐章 发表于 2018-4-4 23:10
我找到一个比较别扭的解决方案:

然后在4号公共事件中执行脚本:


谢谢前辈提供的思路。
测试发现的确可行。
可以考虑将公共事件里写调用战斗的方法。
因为前辈这方法会多占用了一个公共事件。
  1. #--------------------------------------------------------------------------
  2.   # ● 监听遇敌事件
  3.   #--------------------------------------------------------------------------
  4.   def update_encounter
  5.   $game_temp.reserve_common_event(3) if $game_player.encounter
  6.   SceneManager.call(Scene_Battle) if $game_player.encounter
  7.   end
复制代码

一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

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

开拓者

6
发表于 2018-4-5 13:16:39 | 只看该作者
本帖最后由 芯☆淡茹水 于 2018-4-5 13:37 编辑

怎么看着这样写略眼熟呢。

本人的个人写法习惯,就是利用逻辑 与 的特性(前面的为 false 或 nil ,不会执行后面的),
省略写 if ,觉得写 && 比写 if 快一些,并且从顺序上来说好理解一些。

条件 && 执行  
条件1 && 条件2 && 条件3 ... && 执行
就是这么简单。

但是,大部分情况下, 执行的函数只有最后面那一个。
比如:
  1. a = rand 10
  2. a > 5 && p("大")
复制代码

或者:
  1. a = rand 10
  2. a > 3 && a < 7 && p("适中")
复制代码


像楼主这样,如果 $game_temp.reserve_common_event(3) 返回的是 false 或 nil ,
后面的 SceneManager.call(Scene_Battle) 是不会执行的。

如果按主楼那样,照这个方法写,一般都是把要执行的 多个函数 放到一个函数里。
  1. def update_encounter
  2.   $game_player.encounter && prepare_battle
  3. end
  4. def prepare_battle
  5.   $game_temp.reserve_common_event(3)
  6.   SceneManager.call(Scene_Battle)
  7. end
复制代码


如果非要一次执行多个函数,必须保证 最后那个执行函数 之前的 所有执行函数 ,返回的都不是 false 或 nil 。

照此类推,逻辑 或 (||),也可以这样使用,
比如 $game_temp.reserve_common_event(3) 返回的是 false 或 nil 就可以这样:
  1. def update_encounter
  2.   $game_player.encounter && prepare_battle
  3. end
  4. def prepare_battle
  5.   $game_temp.reserve_common_event(3) || SceneManager.call(Scene_Battle)
  6. end
复制代码


但这样相对来说实用性不大,如果非要写作一行并且看起来比较好看的话,还不如加 ; 号。

点评

另外这样写放在 ruby 上节省不了多少,但是用 js 的话就比较明显了。  发表于 2018-4-5 19:40
↓不想把人误导,所有需要解释一下。  发表于 2018-4-5 16:03
感谢前辈的指导和普及,我对语法还是不了解。所以经常会出现乱用语句的情况,请见谅。  发表于 2018-4-5 15:30

评分

参与人数 2星屑 +100 +1 收起 理由
VIPArcher + 100 精品文章
文雅夕露 + 1 我很赞同

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 22:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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