Project1
标题:
戰鬥結束回血魔,如何在逃跑不執行?(極短腳本)
[打印本页]
作者:
冷徹心扉
时间:
2012-12-5 12:37
标题:
戰鬥結束回血魔,如何在逃跑不執行?(極短腳本)
本帖最后由 冷徹心扉 于 2012-12-5 14:30 编辑
這是一個極度簡短的腳本、卻相當實用
在戰鬥後回復某百分比的血魔
但問題是就算逃跑了也會回復
想只有在戰鬥勝利回復、而逃跑不回復該怎麼改呢?
#===============================================================================
#戰鬥後回覆HP
#===============================================================================
class Game_Battler
def remove_states_battle
for state in states
remove_state(state.id) if state.battle_only
end
h = maxhp * 3#% #戰鬥後回復的HP百分比
h /= 100
m = maxmp * 3#% #戰鬥後回復的MP百分比
m /= 100
self.hp += h
self.mp += m
end
end
复制代码
另外一問,這是攻擊敵人時回復的血魔
但是以固定數字計算,想改成以百分比回復
if true
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 攻撃時MP回復 - KGC_AttackRecoverMP ◆ VX ◆
#_/ ◇ Last update : 2007/12/05 ◇
#_/----------------------------------------------------------------------------
#_/ 通常攻撃時に MP が回復する処理を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================
module KGC
module AttackRecoverMP
# ◆ 攻撃敵人時 MP 回復量 (角色)
HIT_RECOVER_MP_ACTOR = 3
# ◆ 打敗敵人後 MP 回復量 (角色)
DEFEAT_RECOVER_MP_ACTOR = 7
# ◆ 攻撃玩家時 MP 回復量 (敵)
HIT_RECOVER_MP_ENEMY = 3
# ◆ 打敗玩家時 MP 回復量 (敵)
DEFEAT_RECOVER_MP_ENEMY = 7
# ◆ 顯示恢復的 MP
SHOW_RECOVERED_MP = false
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["AttackRecoverMP"] = true
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ○ MP 傷害加算
# value : 加算する値
#--------------------------------------------------------------------------
def add_mp_damage(value)
@mp_damage += value
end
#--------------------------------------------------------------------------
# ○ 攻撃時 MP 回復効果適用
# defender : 被攻撃者
#--------------------------------------------------------------------------
def attack_recover_mp_effect(defender)
value = calc_attack_recover_mp_value(defender)
self.mp += value
return value
end
#--------------------------------------------------------------------------
# ○ 攻撃時 MP 回復量取得
# defender : 被攻撃者
#--------------------------------------------------------------------------
def calc_attack_recover_mp_value(defender)
# 継承先で定義
return 0
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ 攻撃時 MP 回復量取得
# defender : 被攻撃者
#--------------------------------------------------------------------------
def calc_attack_recover_mp_value(defender)
if defender != nil && defender.dead?
return KGC::AttackRecoverMP::DEFEAT_RECOVER_MP_ACTOR
else
return KGC::AttackRecoverMP::HIT_RECOVER_MP_ACTOR
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ○ 攻撃時 MP 回復量取得
# defender : 被攻撃者
#--------------------------------------------------------------------------
def calc_attack_recover_mp_value(defender)
if defender != nil && defender.dead?
return KGC::AttackRecoverMP::DEFEAT_RECOVER_MP_ENEMY
else
return KGC::AttackRecoverMP::HIT_RECOVER_MP_ENEMY
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : 攻撃
#--------------------------------------------------------------------------
alias execute_action_attack_KGC_AttackRecoverMP execute_action_attack
def execute_action_attack
unit = @active_battler.actor? ? $game_troop : $game_party
last_dead_members = unit.dead_members
execute_action_attack_KGC_AttackRecoverMP
# 攻撃者の MP 回復
target = (unit.dead_members - last_dead_members)[0]
mp_damage = @active_battler.attack_recover_mp_effect(target)
if KGC::AttackRecoverMP::SHOW_RECOVERED_MP
@active_battler.add_mp_damage(-mp_damage)
display_mp_damage(@active_battler)
end
end
end
end
复制代码
作者:
怪蜀黍
时间:
2012-12-5 14:12
本帖最后由 protosssonny 于 2012-12-5 14:31 编辑
你的第一个脚本删除,贴上用这个或者找到相应的脚本用以下脚本取代:
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 结束战斗
# result : 结果(0:胜利,1:逃跑,2:失败)
#--------------------------------------------------------------------------
def battle_end(result)
if result == 2 and not $game_troop.can_lose
call_gameover
else
$game_party.clear_actions
$game_party.remove_states_battle
$game_troop.clear
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(result)
$game_temp.battle_proc = nil
end
if result == 0
$game_party.members.each{|i|
h = i.maxhp * 3#% #戰鬥後回復的HP百分比
h /= 100
m = i.maxmp * 3#% #戰鬥後回復的MP百分比
m /= 100
i.hp += h
i.mp += m
}
end
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
$scene = Scene_Map.new
@message_window.clear
Graphics.fadeout(30)
end
$game_temp.in_battle = false
end
end
复制代码
第二问,只讲解其中一个:
return KGC::AttackRecoverMP::DEFEAT_RECOVER_MP_ENEMY
复制代码
表示返回杀死后恢复的MP,self表示攻击者,取百分比可以用
return self.maxmp * KGC::AttackRecoverMP::DEFEAT_RECOVER_MP_ENEMY / 100
复制代码
为了防止伸手,请LZ自己完成其它3个,喵~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1