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

Project1

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

[已经过期] 如何实现战斗中在血量下降到一定程度后跳出指定文字

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2949
在线时间
389 小时
注册时间
2010-12-4
帖子
141
跳转到指定楼层
1
发表于 2017-2-23 12:26:48 手机端发表。 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 letppigogo 于 2017-2-23 23:02 编辑

如题,在战斗中角色血量下降到一定程度后在伤害数字跳完后,马上在该角色头上跳出指定文字,或者是图片什么的,也可以播放指定的动画。

Lv1.梦旅人

梦石
0
星屑
60
在线时间
52 小时
注册时间
2017-1-12
帖子
192
2
发表于 2017-2-23 15:06:10 | 只看该作者
可以在敌群
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2949
在线时间
389 小时
注册时间
2010-12-4
帖子
141
3
 楼主| 发表于 2017-2-23 17:50:10 | 只看该作者

能具体的说一下吗?不是很明白
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2949
在线时间
389 小时
注册时间
2010-12-4
帖子
141
4
 楼主| 发表于 2017-2-23 23:52:49 | 只看该作者
本帖最后由 letppigogo 于 2017-2-23 23:56 编辑


我想我知道你的意思了,在小怪的队伍里可以设置事件。但还是无法满足我的要求,因为我要跳出文字或者触发状态的条件不止只有血量,还和角色能力有关系。比如力量500以上的角色在血量低于30%会触发动画,或者弹出个类似"MISS"那样的其他文字。而力量500以下的就不会。同时力量500以上的在血量回复到30%以上后再次跌倒30%以下时该状态或者文字又会跳出。
类似于给能力高的角色包括敌人一个隐藏能力的触发提示。告诉玩家,该角色或者敌人已经触发了隐藏能力了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

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

开拓者

5
发表于 2017-2-24 01:23:29 手机端发表。 | 只看该作者
敌人队伍里的事件有“即时触发”的选项,在这里面用条件分歧
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2949
在线时间
389 小时
注册时间
2010-12-4
帖子
141
6
 楼主| 发表于 2017-2-24 08:14:04 | 只看该作者
本帖最后由 letppigogo 于 2017-2-24 10:09 编辑
guoxiaomi 发表于 2017-2-24 01:23
敌人队伍里的事件有“即时触发”的选项,在这里面用条件分歧


事件我知道怎么做,因为我的角色能力会有变动,而且有很多角色,这样每个敌人队伍里都要建一堆事件,而且要大量的变量带入,这样太繁琐了。
就像图片里这样,经过实测战斗中无法触发动画,只能触发对话框,而且对话框不能重复触发。只能触发一次。

点评

可以用公共事件处理,然后复制粘贴  发表于 2017-2-24 10:53
距离设置为 '暂时',然后执行后关闭对应的开关就可以反复触发。'战斗' 只会触发一次,可以右键距离查看帮助  发表于 2017-2-24 10:53
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2949
在线时间
389 小时
注册时间
2010-12-4
帖子
141
7
 楼主| 发表于 2017-2-24 11:09:45 | 只看该作者
本帖最后由 letppigogo 于 2017-2-24 11:52 编辑
letppigogo 发表于 2017-2-24 08:14
事件我知道怎么做,因为我的角色能力会有变动,而且有很多角色,这样每个敌人队伍里都要建一堆事件,而且 ...


不能在脚本里增加一段代码吗?还有就是刚刚实测了一下,没法制定角色显示动画。只能按照顺位, 而我的游戏中队列顺位是可以随意调整的,这样角色显示动画无法实现。

点评

每当有人提到“显示动画只能选择位置不能选择角色”一类问题的时候,我都会拿出此贴 http://rm.66rpg.com/forum.php?mod=viewthread&tid=338527  发表于 2017-2-24 14:49
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

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

开拓者

8
发表于 2017-2-25 00:49:07 | 只看该作者
本帖最后由 guoxiaomi 于 2017-2-25 09:42 编辑

我大概知道问题出现在哪里了。

战斗中没有“并行处理”的事件

一个方法是直接修改 Scene_Battle#update方法。

RUBY 代码复制
  1. class Scene_Battle
  2.   alias _old_update update
  3.   def update
  4.     # 并行处理的代码
  5.     actor = $game_actors[1]
  6.     if actor.hp <= 0.3 * actor.maxhp
  7.       if $game_switches[1] == false
  8.           $game_switches[1] = true
  9.           actor.animation_id = 1 if actor.str >= 500
  10.       end
  11.     else
  12.         $game_switches[1] = false
  13.     end
  14.     # 继续更新
  15.     _old_update
  16.   end
  17. end


这里需要 1 个开关来判断血量。

如同上面的逻辑,开关 1 标志着角色 1 的血量是否低于30%,但只有开关 1 从 关闭 到 打开 时,才会设置角色1的动画为 1 号。



但是试一下,就知道,动画会在显示伤害数字前。这是因为RMXP的坑爹逻辑,在显示伤害数字前,角色的血量已经给扣了,只是没有刷新画面。

如何解决?

并行处理的代码,放在显示伤害数字之后。update_phase4_step6 是 Scene_Battle 4 的最后一个方法,很容易找到,在这里照着上面抄一段。
以后每次到达 phase4_step6,都会执行 2 号公共事件
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新画面 (主回合步骤 6 : 刷新)
  3.   #--------------------------------------------------------------------------
  4.   def update_phase4_step6
  5.     # 清除强制行动对像的战斗者
  6.     $game_temp.forcing_battler = nil
  7.     # 公共事件 ID 有效的情况下
  8.     if @common_event_id > 0
  9.       # 设置事件
  10.       common_event = $data_common_events[@common_event_id]
  11.       $game_system.battle_interpreter.setup(common_event.list, 0)
  12.     end
  13.     # 移至步骤 1
  14.     @phase4_step = 1
  15.     # 显示伤害结束后、物品技能公共事件结束后,再次执行 2 号公共事件
  16.     @common_event_id = 2
  17.     common_event = $data_common_events[@common_event_id]
  18.     $game_system.battle_interpreter.setup(common_event.list, 0)
  19.   end


2 号公共事件里把刚才的代码粘贴到事件脚本里。
RUBY 代码复制
  1. actor = $game_actors[1] # 判断 1 号角色
  2. if actor.hp <= 0.3 * actor.maxhp # 血量减少到 30 % 以下触发
  3.   if $game_switches[1] == false # 占用 1 号全局开关
  4.     $game_switches[1] = true
  5.     actor.animation_id = 1  if actor.str >= 500# 对应角色力量大于 500,播放动画 ID 为 1
  6.   end
  7. else
  8.     $game_switches[1] = false
  9. end


可以照着这个多写一些。因为这里是公共事件,显示文章,图片什么的可以正常执行。
比如,在此脚本前令变量 1 为 0。
  1. $game_variables[1] = 0 # 角色 ID
复制代码

然后:
  1. actor.animation_id = 1
复制代码

改成  :
  1. $game_variables[1] = 1 # 角色 ID
复制代码

然后在后面条件分歧变量1的值,为 1 的话,就对 1 号角色执行判断属性、显示动画等操作。如果有文字加强脚本,还可以显示对话框。

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 06:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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