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

Project1

 找回密码
 注册会员
搜索
查看: 1971|回复: 6

[已经解决] 关于召唤系技能的设置,请问有没有更好的方法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5474
在线时间
1668 小时
注册时间
2016-8-1
帖子
413
发表于 2019-1-16 06:26:14 | 显示全部楼层 |阅读模式

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

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

x
我的方法是这样:先设定能召唤生物的具体属性
1.png
再给召唤生物的职业特性里加上负的HP再生(相当于时间限制),配合死亡时触发指定公共事件的脚本,这样召唤生物HP为0时可自动离队,但可惜只在战斗中有效
QQ截图20190116051737.png QQ截图20190116051843.png
然后设置一个召唤技能,在战斗和非战斗状态下都可用,使用时触发公共事件:骷髅入队
QQ截图20190116051809.png QQ截图20190116051854.png
最后也是最主要的问题,为了在非战斗状态下召唤生物也能在HP为0时自动离队,我搞了个每过一段时间就自动执行一次的公共事件
QQ截图20190116051905.png

这样的话不管在战斗还是非战斗状态下,召唤生物也能在HP为0时自动离队了,但是经过测试后发现有时游戏会严重卡顿
求教各位大神,有没有其他更好的设计思路……
阳光下的真实

Lv3.寻梦者

梦石
0
星屑
3559
在线时间
2337 小时
注册时间
2015-8-25
帖子
960

开拓者

发表于 2019-1-16 09:20:51 | 显示全部楼层
这样第一眼看到设定,会觉得HP不断在削减这个设定有点不自然。。

如果是独立出一个属性,然后让在战斗中每回合削减,非战斗时每走多少步削减,会比较合理的感觉。
同时UI显示一个召唤剩余时间(回合数)的计数条什么的。

随时检查觉得卡的话,在添加状态那里加检查吧
当附加上的状态是无法战斗的时候,检查附加对象,有没有召唤物的注释什么的。
写得简单一点就。。
附加的状态编号是无法战斗的时候,才调用一次你上面写的那个事件。

评分

参与人数 2星屑 +20 +1 收起 理由
VIPArcher + 20 我很赞同
穿越时空之剑 + 1 好方法,多谢大神

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
916
在线时间
82 小时
注册时间
2018-12-18
帖子
84
发表于 2019-1-16 10:39:29 | 显示全部楼层
我是这样理解的吧,你最后那个图上的并行处理开关应该是在召唤物生命值为0的时候打开的吧,然后开始每75帧检测一次有没有角色需要离队,如果每75帧都需要检测一遍这么多东西的话应该会卡顿吧
用脚本写个召唤物的类是不是会更好点?

点评

楼下已经解决了,可以学习下看看怎么做的  发表于 2019-1-17 10:09
在现有脚本的基础上改动一些东西我会,但写脚本的话我不知道该从哪下手…  发表于 2019-1-16 20:02

评分

参与人数 1星屑 +10 收起 理由
VIPArcher + 10 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

发表于 2019-1-16 12:51:17 | 显示全部楼层
本帖最后由 KB.Driver 于 2019-1-16 12:56 编辑

在地图上
1.gif
在战斗中
2.gif

召唤生物死亡离队,不需要公共事件
RUBY 代码复制
  1. #bug说明:将召唤生物设置为初始队友会在游戏一开始就离队,原因不明
  2.  
  3. module CLD99_SUMMON_CREATURE
  4.  
  5.   SUMMON_CREATURE_CLASS_ID = [51..72]
  6.   # 在此设置召唤生物的职业ID范围
  7.   # 不要删除方括号
  8.   # 例: [2] [2,3,5,6] [2..6,8] [2..5,10..20]
  9.  
  10. end
  11.  
  12. class Game_Actor
  13.   #--------------------------------------------------------------------------
  14.   # ● 刷新
  15.   #--------------------------------------------------------------------------
  16.   alias refresh_for_remove refresh
  17.   def refresh
  18.     refresh_for_remove
  19.     if self.state?(death_state_id) && actor.summon_creature?
  20.       $game_party.remove_actor(@actor_id)
  21.     end
  22.   end
  23. end
  24.  
  25. class RPG::Actor
  26.   #--------------------------------------------------------------------------
  27.   # ● 是否为召唤生物
  28.   #--------------------------------------------------------------------------
  29.   def summon_creature?
  30.     CLD99_SUMMON_CREATURE::SUMMON_CREATURE_CLASS_ID.each do |x|
  31.       if x.is_a?(Fixnum) then return true if x == self.class_id        end
  32.       if x.is_a?(Range)  then return true if x.include?(self.class_id) end
  33.     end
  34.     return false
  35.   end
  36. end

评分

参与人数 2星屑 +50 +1 收起 理由
VIPArcher + 50 辛苦了
穿越时空之剑 + 1 这下终于能避免卡顿了,多谢大神.

查看全部评分

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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
916
在线时间
82 小时
注册时间
2018-12-18
帖子
84
发表于 2019-1-17 10:08:02 | 显示全部楼层
本帖最后由 蹲厕所的女孩 于 2019-1-17 10:09 编辑
蹲厕所的女孩 发表于 2019-1-16 10:39
我是这样理解的吧,你最后那个图上的并行处理开关应该是在召唤物生命值为0的时候打开的吧,然后开始每75帧 ...


楼上已经解决了,可以学习下代码看看他是怎么做的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 19:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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