Project1
标题:
请问有办法做出锁定HP的效果吗
[打印本页]
作者:
魏紫花灵
时间:
2013-3-8 16:08
标题:
请问有办法做出锁定HP的效果吗
本帖最后由 魏紫花灵 于 2013-3-15 16:45 编辑
假设队里有个角色,设定他是打不死的,HP不会掉
这个要如何实现,是单纯将攻防提升到不破防吗?还是有别的方法,求指教【m(_ _)m 】
作者:
紫英晓狼1130
时间:
2013-3-8 16:19
在战斗事件里编:
当角色生命在100%以下时,此角色加生命~
作者:
魏紫花灵
时间:
2013-3-8 17:50
紫英晓狼1130 发表于 2013-3-8 16:19
在战斗事件里编:
当角色生命在100%以下时,此角色加生命~
可以求具体指教一下吗?
作者:
紫英晓狼1130
时间:
2013-3-8 18:59
魏紫花灵 发表于 2013-3-8 17:50
可以求具体指教一下吗?
在战斗事件里编事件:
条件:当角色(需要锁定生命的人物)的HP低于100%时
在事件页里编写增减生命或进行操作
这样应该可以~
作者:
qq1353826915
时间:
2013-3-8 20:30
我觉得在战斗事件里面弄太复杂了的说。。因为每次都要弄。。我想应该可以用脚本解决吧。。然后LZ做这个形式有什么用?
作者:
闪电风云
时间:
2013-3-9 13:27
直接公共事件:
角色1(假设角色1不死)状态—战斗不能
作者:
yagami
时间:
2013-3-10 00:38
本帖最后由 yagami 于 2013-3-10 00:40 编辑
上个状态比如状态1 然后在Game_Battler 3里找伤害处理最底层的地方,也就是在扣血前, 有2处普攻和技能都要改 加入这句
if self.state?(1)
self.damage = 0
end
复制代码
这样 有状态1的时候 人物无敌 当然这个0也可以改成字符串比如"老子无敌" 然后有该状态的角色被打后 不会掉血 还会跳出字符串里的字
作者:
你最珍贵
时间:
2013-3-10 08:53
可以把条件改为:
回合 1x
距离:
回合
然后事件写
敌人的完全回复XXX
作者:
小和尚
时间:
2013-3-10 20:38
如果说LZ用的是最普通的战斗系统 也就是说根本看不见敌人的Hp的话 可以直接在队伍里设置敌人 不死之身
作者:
亿万星辰
时间:
2013-3-10 21:53
本帖最后由 亿万星辰 于 2013-3-10 21:56 编辑
这个依靠事件来做到不减HP,似乎还真是比较困难……
可以尝试给Game_Actor增加Immortal属性(?就是Game_Enemy的无敌属性),来做到无敌。
作者:
芯☆淡茹水
时间:
2013-3-13 01:26
用状态法嘛,使用下面贴出的脚本,战斗时先给需要锁定HP人物附加脚本里设置的状态,
敌方攻击时就不会减少HP,只弹出一个提示(默认提示是 “失误” )。提示可改,搜索“【*】”
#=============================================================================
#状态 ID
STATE_ID = 5
#=============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 应用通常攻击效果
# attacker : 攻击者 (battler)
#--------------------------------------------------------------------------
def attack_effect(attacker)
# 清除会心一击标志
self.critical = false
# 第一命中判定
hit_result = (rand(100) < attacker.hit)
# 命中的情况下
if hit_result == true
# 计算基本伤害
atk = [attacker.atk - self.pdef / 2, 0].max
self.damage = atk * (20 + attacker.str) / 20
# 属性修正
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# 伤害符号正确的情况下
if self.damage > 0
# 会心一击修正
if rand(100) < 4 * attacker.dex / self.agi
self.damage *= 2
self.critical = true
end
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
end
# 命中的情况下
if hit_result == true
# 状态冲击解除
remove_states_shock
# HP 的伤害计算
if self.states.include?(STATE_ID)
self.damage = "失误" #【*】
else
self.hp -= self.damage
end
# 状态变化
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# Miss 的情况下
else
# 伤害设置为 "Miss"
self.damage = "Miss"
# 清除会心一击标志
self.critical = false
end
# 过程结束
return true
end
#--------------------------------------------------------------------------
# ● 应用特技效果
# user : 特技的使用者 (battler)
# skill : 特技
#--------------------------------------------------------------------------
def skill_effect(user, skill)
# 清除会心一击标志
self.critical = false
# 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
# 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
# 过程结束
return false
end
# 清除有效标志
effective = false
# 公共事件 ID 是有效的情况下,设置为有效标志
effective |= skill.common_event_id > 0
# 第一命中判定
hit = skill.hit
if skill.atk_f > 0
hit *= user.hit / 100
end
hit_result = (rand(100) < hit)
# 不确定的特技的情况下设置为有效标志
effective |= hit < 100
# 命中的情况下
if hit_result == true
# 计算威力
power = skill.power + user.atk * skill.atk_f / 100
if power > 0
power -= self.pdef * skill.pdef_f / 200
power -= self.mdef * skill.mdef_f / 200
power = [power, 0].max
end
# 计算倍率
rate = 20
rate += (user.str * skill.str_f / 100)
rate += (user.dex * skill.dex_f / 100)
rate += (user.agi * skill.agi_f / 100)
rate += (user.int * skill.int_f / 100)
# 计算基本伤害
self.damage = power * rate / 20
# 属性修正
self.damage *= elements_correct(skill.element_set)
self.damage /= 100
# 伤害符号正确的情况下
if self.damage > 0
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
eva = 8 * self.agi / user.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
# 不确定的特技的情况下设置为有效标志
effective |= hit < 100
end
# 命中的情况下
if hit_result == true
# 威力 0 以外的物理攻击的情况下
if skill.power != 0 and skill.atk_f > 0
# 状态冲击解除
remove_states_shock
# 设置有效标志
effective = true
end
# HP 的伤害减法运算
last_hp = self.hp
if self.states.include?(STATE_ID)
self.damage = "失误" #【*】
else
self.hp -= self.damage
end
effective |= self.hp != last_hp
# 状态变化
@state_changed = false
effective |= states_plus(skill.plus_state_set)
effective |= states_minus(skill.minus_state_set)
# 威力为 0 的场合
if skill.power == 0
# 伤害设置为空的字串
self.damage = ""
# 状态没有变化的情况下
unless @state_changed
# 伤害设置为 "Miss"
self.damage = "Miss"
end
end
# Miss 的情况下
else
# 伤害设置为 "Miss"
self.damage = "Miss"
end
# 不在战斗中的情况下
unless $game_temp.in_battle
# 伤害设置为 nil
self.damage = nil
end
# 过程结束
return effective
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1