Project1
标题:
P叔的“反击”脚本有问。。。
[打印本页]
作者:
351323331
时间:
2012-12-21 23:19
标题:
P叔的“反击”脚本有问。。。
本帖最后由 351323331 于 2012-12-25 23:36 编辑
#==============================================================================
# ■ 反击系统
#------------------------------------------------------------------------------
#
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#
# 作者:protosssonny
# 注意:●●●●●●楼主进行了点小改动。。。。非原脚本。P叔勿怪
#==============================================================================
module Vocab
#设定反击时的文字:
Counter_text = "%s反弹了部分伤害,%s损失%s点的HP!"
#设定状态结束时的文字:
Counter_end_text = "%s不再有反击的准备!"
end
#设定反击的状态ID,在拥有这个状态的情况下就可以反击:
COUNTER_STATE = 17
#设定不能反击的敌人ID,比如远程的弓手敌人等:
COUNTER_EXCLUDE_ENEMY = [2]
#设定在以下状态ID时不可以反击,比如睡眠、眩晕等:
COUNTER_EXCLUDE_STATE = [1,6,7,8]
#设定在敌人使用以下技能ID时,不会反击:
COUNTER_EXCLUDE_SKILL = [59]
#设定反击的概率:
PROBABITITY = 100
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 执行战斗行动: 攻击
#--------------------------------------------------------------------------
def execute_action_attack
text = sprintf(Vocab::DoAttack, @active_battler.name)
@message_window.add_instant_text(text)
targets = @active_battler.action.make_targets
display_attack_animation(targets)
wait(20)
for target in targets
target.attack_effect(@active_battler)
display_action_effects(target)
end
if target.is_a?(Game_Actor) and @active_battler.is_a?(Game_Enemy)
if target.state?(COUNTER_STATE) and exclude_state == false \
and not COUNTER_EXCLUDE_ENEMY.include?(@active_battler.enemy_id) \
and PROBABITITY > rand(100)
damage = 0
#在下面设定反击伤害的公式:
#target——反击者,@active_battler——被反击的敌人:
#atk——攻击力,def——防御力,spi——精神力,agi——敏捷度
damage = target.atk * 4 - @active_battler.def * 2 ####●●●●●●P叔请看,怎么把这里的伤害公式修改成角色受到伤害的百分比
damage = 0 if damage < 0
#在上面反击伤害的公式
text = sprintf(Vocab::Counter_text, target.name, @active_battler.name, damage)
@message_window.add_instant_text(text)
@active_battler.animation_id = 7
wait(45)
Sound.play_enemy_damage
@active_battler.blink = true if damage > 0
wait(30)
@active_battler.hp -= damage
@active_battler.perform_collapse if @active_battler.hp <= 0
end
end
end
#--------------------------------------------------------------------------
# ● 判断反击排除的状态
#--------------------------------------------------------------------------
def exclude_state
targets = @active_battler.action.make_targets
for i in 0...COUNTER_EXCLUDE_STATE.size
for target in targets
return true if target.state?(COUNTER_EXCLUDE_STATE[i])
end
end
return false
end
end
#==============================================================================
# ■ 反击系统
#------------------------------------------------------------------------------
#
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#
# 作者:protosssonny
# 2011年10月13日
#==============================================================================
复制代码
楼主是想把此脚本进行修改,拿来做一个反弹伤害的技能。。
请问
@protosssonny
如何把脚本伤害公式改为角色受到的伤害的百分比,即拉尔夫被史莱姆攻击,损失100点HP,反弹30%即30点HP这样。损失50,则反弹15。
还有就是能不能让怪物攻击没有命中角色,就不会反弹伤害呢?(由于原脚本为反击,所以这里是设置成了无论是否命中角色,都会反击的样子。)
作者:
怪蜀黍
时间:
2012-12-22 13:08
#==============================================================================
# ■ 反击系统
#------------------------------------------------------------------------------
#
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#
# 作者:protosssonny
# 注意:●●●●●●楼主进行了点小改动。。。。非原脚本。P叔勿怪
#==============================================================================
module Vocab
#设定反击时的文字:
Counter_text = "%s反弹了部分伤害,%s损失%s点的HP!"
#设定状态结束时的文字:
Counter_end_text = "%s不再有反击的准备!"
end
#设定反击的状态ID,在拥有这个状态的情况下就可以反击:
COUNTER_STATE = 17
#设定不能反击的敌人ID,比如远程的弓手敌人等:
COUNTER_EXCLUDE_ENEMY = [2]
#设定在以下状态ID时不可以反击,比如睡眠、眩晕等:
COUNTER_EXCLUDE_STATE = [1,6,7,8]
#设定在敌人使用以下技能ID时,不会反击:
COUNTER_EXCLUDE_SKILL = [59]
#设定反击的概率:
PROBABITITY = 100
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 执行战斗行动: 攻击
#--------------------------------------------------------------------------
def execute_action_attack
text = sprintf(Vocab::DoAttack, @active_battler.name)
@message_window.add_instant_text(text)
targets = @active_battler.action.make_targets
display_attack_animation(targets)
wait(20)
for target in targets
target.attack_effect(@active_battler)
display_action_effects(target)
end
if target.is_a?(Game_Actor) and @active_battler.is_a?(Game_Enemy)
if target.state?(COUNTER_STATE) and exclude_state == false \
and not COUNTER_EXCLUDE_ENEMY.include?(@active_battler.enemy_id) \
and PROBABITITY > rand(100) and $counter_value[0] == true
damage = 0
#在下面设定反击伤害的公式:
#target——反击者,@active_battler——被反击的敌人:
#atk——攻击力,def——防御力,spi——精神力,agi——敏捷度
damage = $counter_value[1] * 30 / 100 #### 反击百分之多少就是乘多少再除以100
damage = 0 if damage < 0
#在上面反击伤害的公式
text = sprintf(Vocab::Counter_text, target.name, @active_battler.name, damage)
@message_window.add_instant_text(text)
@active_battler.animation_id = 7
wait(45)
Sound.play_enemy_damage
@active_battler.blink = true if damage > 0
wait(30)
@active_battler.hp -= damage
@active_battler.perform_collapse if @active_battler.hp <= 0
end
end
end
#--------------------------------------------------------------------------
# ● 判断反击排除的状态
#--------------------------------------------------------------------------
def exclude_state
targets = @active_battler.action.make_targets
for i in 0...COUNTER_EXCLUDE_STATE.size
for target in targets
return true if target.state?(COUNTER_EXCLUDE_STATE[i])
end
end
return false
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● 发动普通攻击
# attacker : 攻击者
#--------------------------------------------------------------------------
def attack_effect(attacker)
clear_action_results
unless attack_effective?(attacker)
@skipped = true
$counter_value = [false, 0]
return
end
if rand(100) >= calc_hit(attacker) # 计算命中率
@missed = true
$counter_value = [false, 0]
return
end
if rand(100) < calc_eva(attacker) # 计算闪躲率
@evaded = true
$counter_value = [false, 0]
return
end
make_attack_damage_value(attacker) # 计算伤害
execute_damage(attacker) # 伤害效果
if @hp_damage == 0 # 判断是否有物理伤害
$counter_value = [false, 0]
return
end
apply_state_changes(attacker) # 增减状态
$counter_value = [true, @hp_damage]
end
end
#==============================================================================
# ■ 反击系统
#------------------------------------------------------------------------------
#
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#
# 作者:protosssonny
# 2011年10月13日
#==============================================================================
复制代码
作者:
351323331
时间:
2012-12-22 22:37
protosssonny 发表于 2012-12-22 13:08
感谢P叔。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1