Project1
标题:
怎样做到在原有战斗基础上在怪物头顶显示伤害数值
[打印本页]
作者:
绝命崖
时间:
2011-8-13 19:46
标题:
怎样做到在原有战斗基础上在怪物头顶显示伤害数值
本帖最后由 忧雪の伤 于 2011-8-13 20:08 编辑
就是说,进入战斗(默认的,不是横板)对着怪使用各神马,命中且造成伤害时
能打出一大堆数字?没命中显示MISS??? dsu_plus_rewardpost_czw
作者:
RPGmaster
时间:
2011-8-13 20:21
又见lz……第一次见这么nb伸手党……
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ スリップダメージ拡張 - KGC_SlipDamageExtension ◆ VX ◆
#_/ ◇ Last update : 2009/09/13 ◇
#_/----------------------------------------------------------------------------
#_/ スリップダメージの設定を詳細化します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================
module KGC
module SlipDamageExtension
# ◆ 歩行ダメージ時のフラッシュ色
DAMAGE_FLASH_COLOR = Color.new(255, 0, 0, 64)
# ◆ 歩行ダメージ時のフラッシュ時間 (フレーム)
DAMAGE_FLASH_DURATION = 4
# ◆ 歩行ダメージで戦闘不能にする
# true : HP 0 になる。
# false : HP 1 で止まる。
DIE_MAP_DAMAGE = false
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["SlipDamageExtension"] = true
module KGC::SlipDamageExtension
# 正規表現
module Regexp
# ステート
module State
# スリップダメージ
SLIP_DAMAGE = /<(?:SLIP|スリップ)\s*([HM]P)?\s*([\-\+]?\d+)([%%])?
(?:\s*,\s*([\-\+]?\d+))?\s*>/ix
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::State
#==============================================================================
class RPG::State
#--------------------------------------------------------------------------
# ○ 「スリップダメージ拡張」のキャッシュ生成
#--------------------------------------------------------------------------
def create_slip_damage_extension_cache
@__slip_damage = false
@__slip_damage_hp_rate = 0
@__slip_damage_hp_value = 0
@__slip_damage_hp_map = 0
@__slip_damage_mp_rate = 0
@__slip_damage_mp_value = 0
@__slip_damage_mp_map = 0
self.note.each_line { |line|
case line
when KGC::SlipDamageExtension::Regexp::State::SLIP_DAMAGE
# スリップダメージ
@__slip_damage = true
analyse_slip_damage($~)
end
}
# デフォルトのスリップダメージ量を設定
unless @__slip_damage
@__slip_damage_hp_rate = 10
@__slip_damage_hp_map = 1
end
end
#--------------------------------------------------------------------------
# ○ スリップダメージの解析
#--------------------------------------------------------------------------
def analyse_slip_damage(match)
# タイプ判定
if match[1] == nil
type = :hp
else
if match[1] =~ /MP/i
type = :mp
else
type = :hp
end
end
# ダメージ量取得
n = match[2].to_i
# 即値 or 割合判定
is_rate = (match[3] != nil)
# マップダメージ取得
map_n = (match[4] != nil ? match[4].to_i : 0)
# スリップダメージ値加算
case type
when :hp
if is_rate
@__slip_damage_hp_rate -= n
else
@__slip_damage_hp_value -= n
end
@__slip_damage_hp_map -= map_n
when :mp
if is_rate
@__slip_damage_mp_rate -= n
else
@__slip_damage_mp_value -= n
end
@__slip_damage_mp_map -= map_n
end
end
#--------------------------------------------------------------------------
# ● スリップダメージ
#--------------------------------------------------------------------------
unless method_defined?(:slip_damage_KGC_SlipDamageExtension)
alias slip_damage_KGC_SlipDamageExtension slip_damage
end
def slip_damage
create_slip_damage_extension_cache if @__slip_damage == nil
return (@__slip_damage || slip_damage_KGC_SlipDamageExtension)
end
#--------------------------------------------------------------------------
# ○ HP スリップダメージ (割合)
#--------------------------------------------------------------------------
def slip_damage_hp_rate
create_slip_damage_extension_cache if @__slip_damage_hp_rate == nil
return @__slip_damage_hp_rate
end
#--------------------------------------------------------------------------
# ○ HP スリップダメージ (即値)
#--------------------------------------------------------------------------
def slip_damage_hp_value
create_slip_damage_extension_cache if @__slip_damage_hp_value == nil
return @__slip_damage_hp_value
end
#--------------------------------------------------------------------------
# ○ HP スリップダメージ (マップ)
#--------------------------------------------------------------------------
def slip_damage_hp_map
create_slip_damage_extension_cache if @__slip_damage_hp_map == nil
return @__slip_damage_hp_map
end
#--------------------------------------------------------------------------
# ○ MP スリップダメージ (割合)
#--------------------------------------------------------------------------
def slip_damage_mp_rate
create_slip_damage_extension_cache if @__slip_damage_mp_rate == nil
return @__slip_damage_mp_rate
end
#--------------------------------------------------------------------------
# ○ MP スリップダメージ (即値)
#--------------------------------------------------------------------------
def slip_damage_mp_value
create_slip_damage_extension_cache if @__slip_damage_mp_value == nil
return @__slip_damage_mp_value
end
#--------------------------------------------------------------------------
# ○ MP スリップダメージ (マップ)
#--------------------------------------------------------------------------
def slip_damage_mp_map
create_slip_damage_extension_cache if @__slip_damage_mp_map == nil
return @__slip_damage_mp_map
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● スリップダメージの効果適用
#--------------------------------------------------------------------------
def slip_damage_effect
return unless slip_damage?
slip_damage_effect_hp
slip_damage_effect_mp
end
#--------------------------------------------------------------------------
# ○ HP スリップダメージの効果適用
#--------------------------------------------------------------------------
def slip_damage_effect_hp
return if dead?
n = 0
self.states.each { |state|
next unless state.slip_damage
n += self.maxhp * state.slip_damage_hp_rate / 100
n += state.slip_damage_hp_value
}
return if n == 0
@hp_damage = [n, self.hp - 1].min
self.hp -= @hp_damage
end
#--------------------------------------------------------------------------
# ○ MP スリップダメージの効果適用
#--------------------------------------------------------------------------
def slip_damage_effect_mp
return if dead?
n = 0
self.states.each { |state|
next unless state.slip_damage
n += self.maxmp * state.slip_damage_mp_rate / 100
n += state.slip_damage_mp_value
}
return if n == 0
@mp_damage = [n, self.mp].min
self.mp -= @mp_damage
end
#--------------------------------------------------------------------------
# ○ 歩行時のスリップダメージの効果適用
#--------------------------------------------------------------------------
def slip_damage_effect_on_walk
last_hp = self.hp
last_mp = self.mp
self.states.each { |state|
next unless state.slip_damage
hp_damage = state.slip_damage_hp_map
unless KGC::SlipDamageExtension::DIE_MAP_DAMAGE
hp_damage = [hp_damage, self.hp - 1].min
end
self.hp -= hp_damage
self.mp -= state.slip_damage_mp_map
}
# ダメージを受けた場合はフラッシュ
if self.hp < last_hp || self.mp < last_mp
$game_map.screen.start_flash(
KGC::SlipDamageExtension::DAMAGE_FLASH_COLOR,
KGC::SlipDamageExtension::DAMAGE_FLASH_DURATION)
end
end
#--------------------------------------------------------------------------
# ○ 歩行時の自動回復の実行
#--------------------------------------------------------------------------
def do_auto_recovery_on_walk
return if dead?
if auto_hp_recover
self.hp += 1
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● プレイヤーが 1 歩動いたときの処理
#--------------------------------------------------------------------------
def on_player_walk
for actor in members
if actor.slip_damage?
actor.slip_damage_effect_on_walk
end
actor.do_auto_recovery_on_walk
end
end
end
复制代码
作者:
绝命崖
时间:
2011-8-14 07:09
沙发,你的脚本难道不需要什么图吗,不能用,是怎么回事???
作者:
絀神入化
时间:
2011-8-14 08:18
其实我觉得任意一个横版战斗脚本都会有的吧{:nm_7:}
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1