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

Project1

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

[已经解决] 请教如何让回复技能智能化一些?

[复制链接]

Lv4.逐梦者

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

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

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

x
比如说:一个复活技能(己方单体Hp为0)。
当队伍所有人都没有战斗不能的状态。这个技能无法被直接使用,直接以灰色字表示不能使用。
同理:一个回复技能。当队伍所有人Hp全满时,直接以灰色字表示不能使用。
请教这功能该怎么做到。

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

Lv5.捕梦者

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

开拓者

2
发表于 2017-12-2 20:37:56 | 只看该作者
本帖最后由 芯☆淡茹水 于 2017-12-2 20:40 编辑

很久没碰XP,估摸着瞎写的
  1. #==============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   alias xrdata_skill_can_use? skill_can_use?
  5.   def skill_can_use?(skill_id)
  6.     return false if !has_dead_member? && is_bereborn_skill?(skill_id)
  7.     return false if all_full_blood? && is_recovery_skill?(skill_id)
  8.     return xrdata_skill_can_use?(skill_id)
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   def ranks
  12.     return self.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   def has_dead_member?
  16.     ranks.each do |member|
  17.       next if member.hidden
  18.       return true if member.dead?
  19.     end
  20.     return false
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   def all_full_blood?
  24.     ranks.each do |member|
  25.       next if member.hidden
  26.       return false if member.hp < member.maxhp
  27.     end
  28.     return true
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   def is_bereborn_skill?(skill_id)
  32.     return false if $data_skills[skill_id].nil?
  33.     return $data_skills[skill_id].minus_state_set.include?(1)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   def is_recovery_skill?(skill_id)
  37.     return false if $data_skills[skill_id].nil?
  38.     return $data_skills[skill_id].power < 0
  39.   end
  40. end
  41. #==============================================================================
复制代码

评分

参与人数 3星屑 +60 +2 收起 理由
RyanBern + 60 认可答案
chd114 + 1 借你脚本用一下
文雅夕露 + 1 可用,谢谢前辈,可惜看不懂

查看全部评分

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

使用道具 举报

Lv5.捕梦者 (版主)

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

开拓者

3
发表于 2017-12-2 20:50:04 手机端发表。 | 只看该作者
额,预计好boss要放大招,提前放复活/恢复技能也是很重要的吧?这个设定放在菜单更合适?

点评

你那是附加一个持续恢复的buff了吧···  发表于 2017-12-4 17:16
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2017-12-4 17:23:05 | 只看该作者
2楼的脚本翻译一下是这样
  1. #==============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   alias xrdata_skill_can_use? skill_can_use?#在旧的内容里添加新内容的alias方法
  5.   def skill_can_use?(skill_id)#判断技能能否使用
  6.     return false if !has_dead_member? && is_bereborn_skill?(skill_id)#技能以阵亡队友为目标,但是不存在阵亡队友,不可用
  7.     return false if all_full_blood? && is_recovery_skill?(skill_id)#技能是恢复技能,但是团队成员全部满血,不可用
  8.     return xrdata_skill_can_use?(skill_id)#读取旧的内容
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   def ranks#判断使用者/使用对象所属团队(角色的场合返回团队party,敌人的场合返回敌群troop)
  12.     return self.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   def has_dead_member?#是否存在阵亡队友
  16.     ranks.each do |member|
  17.       next if member.hidden
  18.       return true if member.dead?
  19.     end
  20.     return false
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   def all_full_blood?#团队内队员是否全部满血
  24.     ranks.each do |member|
  25.       next if member.hidden
  26.       return false if member.hp < member.maxhp
  27.     end
  28.     return true
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   def is_bereborn_skill?(skill_id)#技能是否可对阵亡队友使用
  32.     return false if $data_skills[skill_id].nil?
  33.     return $data_skills[skill_id].minus_state_set.include?(1)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   def is_recovery_skill?(skill_id)#技能是否属性恢复技能
  37.     return false if $data_skills[skill_id].nil?
  38.     return $data_skills[skill_id].power < 0
  39.   end
  40. end
  41. #==============================================================================
复制代码

评分

参与人数 2星屑 +20 +1 收起 理由
RyanBern + 20 这翻译
文雅夕露 + 1 塞糖

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23201
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

5
发表于 2017-12-4 18:18:15 | 只看该作者
本帖最后由 SailCat 于 2017-12-4 18:20 编辑

参见我的脚本:技能消耗你想消耗的一切:
https://rpg.blue/forum.php?mod=viewthread&tid=403718
插入那个脚本


然后写备注(写描述里):
没有人战斗不能时没法用:#cf:$game_party.actors.inject(false){|f,x| f||=x.hp0?}
没有人不满血时没法用:#cf:$game_party.actors.inject(false){|f,x| f||=x.hp<x.maxhp}

评分

参与人数 2星屑 +60 +1 收起 理由
RyanBern + 60 这安利
文雅夕露 + 1 谢谢前辈

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 14:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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