Project1
标题:
【求助】如何制作伤血加蓝的技能?
[打印本页]
作者:
冰舞蝶恋
时间:
2011-4-16 15:19
标题:
【求助】如何制作伤血加蓝的技能?
比如一个技能是恢复魔法的,可它消耗掉的是生命
dsu_plus_rewardpost_czw
作者:
最后一搏
时间:
2011-4-16 17:02
提示:
作者被禁止或删除 内容自动屏蔽
作者:
冰舞蝶恋
时间:
2011-4-16 17:55
回复
最后一搏
的帖子
好麻烦……请问有没有什么脚本之类的办法……
作者:
killkill2298
时间:
2011-4-16 18:06
本帖最后由 killkill2298 于 2011-4-16 18:13 编辑
http://rpg.blue/forum.php?mod=viewthread&tid=126649
这个脚本有技能伤血的,拿回去研究下
我脚本也是初学,帮不了你
其实公共事件是最简单的
$game_player[使用者ID].hp -= hp_cost
$game_player[目标ID].mp -= mp_add
反正又不会给敌人加蓝
作者:
最后一搏
时间:
2011-4-16 18:11
提示:
作者被禁止或删除 内容自动屏蔽
作者:
冰舞蝶恋
时间:
2011-4-16 20:51
回复
killkill2298
的帖子
可是……你怎么判断是哪个角色用技能?
作者:
killkill2298
时间:
2011-4-16 21:16
回复
冰舞蝶恋
的帖子
我也正在想这个问题
作者:
dorx2010
时间:
2011-4-17 09:38
用状态区分,例: 主角用了技能一,,变更状态"消耗生命"
再引发公用事件"A" ↓↓↓↓↓
条件分歧(哪个主角状态有"消耗生命")
发动脚本$game_actors[1].hp -=1
*(当然如果有六个主角,,便要做六个分歧) :)
作者:
风缘
时间:
2011-4-17 15:07
在 Scene_Battle 加上
attr_reader :active_battler
复制代码
设置技能公共事件
me = $scene.active_battler
me.hp -= 100
me.mp += 100
复制代码
再设置技能调用此事件可。
伸手要好人卡!!!
作者:
shinliwei
时间:
2011-4-18 06:48
有个技能消费改造脚本
#==============================================================================
# 本汉化脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/
#
# ◆ MP 消費改造 - KGC_MPCostAlter ◆ VX ◆
#
#
#_/ ◇ Last update : 2008/02/06 ◇
#
#原脚本来源:http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/techlist_vx.html
#
#
# 汉化:CHAR工作室
#_/----------------------------------------------------------------------------
#_/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#
#功能介绍:
#
#HP消费:使用特定的技能时消耗HP
#
#MP比例消费:让特定按照一定比例来消耗MP,而非消耗固定值
#
#消费MP比例伤害:让特定技能的伤害数值变成跟该技能的MP消耗量相关联
#
#
#-----------------------------------------------------------------------------
#
#—————————————————使用方法——————————————————
#
#一、HP消费:
#
# 在特定技能的备注中加入括弧和文字:<HP消费>
#
# 效果:使用该技能时将消费HP,而且会在技能消耗值前面表示出来
#
#
#
#
#二、MP比例消费:
#
# 01、残存MP比例消费
#
# 在特定技能的备注中加入括弧和文字:<MP比例消费>
#
# 效果:如果该技能在数据库中的消费量是10,那么在使用该技能时
# 将消耗当前残存的MP的10%。
#
# 02、最大MP比例消费
#
# 在特定技能的备注中加入括弧和文字:<MAXMP比例消费>
#
# 效果:如果该技能在数据库中的消费量是10,那么在使用该技能时
# 将消费该角色最大MP的10%。
#
#
#
#三、消费MP比例伤害
#
# 在特定技能的备注中加入括弧和文字:<消费MP比例伤害>
#
# 效果:很囧的效果,技能的基本伤害值变为该技能所消耗MP数值的一定比例。
#
# 比如,该技能在数据库中的MP消费量是40,基本伤害是500
# 那么该技能的实际基本伤害将是所消费MP的500% = 200
#
#
#==============================================================================
# ★ 脚本设定项目 ★
#==============================================================================
module KGC
module MPCostAlter
# ◆ HP 为0场合下的设定
# true : HP 消费到0的时候,仍然能够继续使用相应技能
# false : HP 消费到0的时候,无法继续使用相应技能
PERMIT_ZERO_HP = false
# ◆ HP 消費制限解除
# true : HP 不足的时候仍然能够使用HP消耗的技能,但是使用后角色死亡
# false : HP 不足的时候无法使用HP消耗的技能。(通常)
RELEASE_HP_LIMIT = false
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["MPCostAlter"] = true
module KGC::MPCostAlter
# 正規表現
module Regexp
# スキル
module Skill
# HP 消費
CONSUME_HP = /<(?:CONSUME_HP|HP消费)>/i
# MP 割合消費
MP_COST_RATE = /<(MAX)?(?:MP_COST_RATE|MP比例消费)>/i
# 消費 MP 比例伤害
MP_PROPORTIONAL_DAMAGE =
/<(?:MP_PROPORTIONAL_DAMAGE|消费MP比例伤害)>/i
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ○ MP 消費改造のキャッシュを生成
#--------------------------------------------------------------------------
def create_mp_cost_alter_cache
@__consume_hp = false
@__mp_cost_rate = false
@__max_mp_cost_rate = false
@__mp_proportional_damage = false
self.note.split(/[\r\n]+/).each { |prop|
case prop
when KGC::MPCostAlter::Regexp::Skill::CONSUME_HP
# HP 消費
@__consume_hp = true
when KGC::MPCostAlter::Regexp::Skill::MP_COST_RATE
# MP 割合消費
@__mp_cost_rate = true
@__max_mp_cost_rate = ($1 != nil)
when KGC::MPCostAlter::Regexp::Skill::MP_PROPORTIONAL_DAMAGE
# 消費 MP 比例ダメージ
@__mp_proportional_damage = true
end
}
end
#--------------------------------------------------------------------------
# ○ HP 消費
#--------------------------------------------------------------------------
def consume_hp
create_mp_cost_alter_cache if @__consume_hp == nil
return @__consume_hp
end
#--------------------------------------------------------------------------
# ○ 消費 MP 割合
#--------------------------------------------------------------------------
def mp_cost_rate
create_mp_cost_alter_cache if @__mp_cost_rate == nil
return (@__mp_cost_rate ? self.mp_cost : -1)
end
#--------------------------------------------------------------------------
# ○ MaxMP 割合消費
#--------------------------------------------------------------------------
def max_mp_cost_rate
create_mp_cost_alter_cache if @__max_mp_cost_rate == nil
return @__max_mp_cost_rate
end
#--------------------------------------------------------------------------
# ○ 消費 MP 比例ダメージ
#--------------------------------------------------------------------------
def mp_proportional_damage
create_mp_cost_alter_cache if @__mp_proportional_damage == nil
return @__mp_proportional_damage
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :spend_cost # 消費した HP/MP
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_MPCostAlter initialize
def initialize
initialize_KGC_MPCostAlter
@spend_cost = 0
end
#--------------------------------------------------------------------------
# ● スキルの消費 MP 計算
# skill : スキル
#--------------------------------------------------------------------------
alias calc_mp_cost_KGC_MPCostAlter calc_mp_cost
def calc_mp_cost(skill)
return 0 if skill.consume_hp # HP 消費
if skill.mp_cost_rate < 0 # 割合消費でない
return calc_mp_cost_KGC_MPCostAlter(skill)
end
if skill.max_mp_cost_rate # MaxMP 割合消費
return calc_skill_cost_rate(skill, maxmp)
else # MP 割合消費
return calc_skill_cost_rate(skill, mp)
end
end
#--------------------------------------------------------------------------
# ○ スキルの割合消費量計算
# skill : スキル
# base : 基準値
#--------------------------------------------------------------------------
def calc_skill_cost_rate(skill, base)
return base * skill.mp_cost_rate / 100
end
#--------------------------------------------------------------------------
# ○ スキルの消費 HP 計算
# skill : スキル
#--------------------------------------------------------------------------
def calc_hp_cost(skill)
return 0 unless skill.consume_hp # HP 消費でない
if skill.mp_cost_rate < 0 # 割合消費でない
return skill.mp_cost
end
if skill.max_mp_cost_rate # MaxHP 割合消費
return calc_skill_cost_rate(skill, maxhp)
else # HP 割合消費
return calc_skill_cost_rate(skill, hp)
end
end
#--------------------------------------------------------------------------
# ○ 消費すべき HP/MP 量を保持
# skill : スキル
#--------------------------------------------------------------------------
def set_spend_cost(skill)
@spend_cost = [calc_hp_cost(skill), calc_mp_cost(skill)].max
end
#--------------------------------------------------------------------------
# ● スキルの使用可能判定
# skill : スキル
#--------------------------------------------------------------------------
alias skill_can_use_KGC_MPCostAlter? skill_can_use?
def skill_can_use?(skill)
return false unless skill.is_a?(RPG::Skill) # スキルでない
return false unless mp_cost_restrict_clear?(skill) # MP 制限抵触
return false unless hp_cost_restrict_clear?(skill) # HP 制限抵触
return skill_can_use_KGC_MPCostAlter?(skill)
end
#--------------------------------------------------------------------------
# ○ MP 制限クリア判定
# skill : スキル
#--------------------------------------------------------------------------
def mp_cost_restrict_clear?(skill)
return true if skill.consume_hp # HP 消費
# 割合消費の場合は、消費量が 1 以上でないと使用不可
if skill.mp_cost_rate >= 0
return false if calc_mp_cost(skill) == 0
end
return calc_mp_cost(skill) <= mp
end
#--------------------------------------------------------------------------
# ○ HP 制限クリア判定
# skill : スキル
#--------------------------------------------------------------------------
def hp_cost_restrict_clear?(skill)
return true unless skill.consume_hp # MP 消費
# 割合消費の場合は、消費量が 1 以上でないと使用不可
if skill.mp_cost_rate >= 0
return false if calc_hp_cost(skill) == 0
end
if KGC::MPCostAlter::RELEASE_HP_LIMIT
# 制限解除の場合は使用可能
return true
elsif KGC::MPCostAlter::PERMIT_ZERO_HP
# HP と同量まで消費可能
return calc_hp_cost(skill) <= hp
else
# 1 以上残る必要あり
return calc_hp_cost(skill) < hp
end
end
#--------------------------------------------------------------------------
# ● スキルまたはアイテムによるダメージ計算
# user : スキルまたはアイテムの使用者
# obj : スキルまたはアイテム
# 結果は @hp_damage または @mp_damage に代入する。
#--------------------------------------------------------------------------
alias make_obj_damage_value_KGC_MPCostAlter make_obj_damage_value
def make_obj_damage_value(user, obj)
# 消費 MP 比例ダメージでない場合
unless obj.is_a?(RPG::Skill) && obj.mp_proportional_damage
# 元の計算式を使用
make_obj_damage_value_KGC_MPCostAlter(user, obj)
return
end
damage = user.spend_cost * obj.base_damage / 100 # 基本ダメージ算出
damage *= elements_max_rate(obj.element_set) # 属性修正
damage /= 100
damage = apply_variance(damage, obj.variance) # 分散
damage = apply_guard(damage) # 防御修正
if obj.damage_to_mp
@mp_damage = damage # MP にダメージ
else
@hp_damage = damage # HP にダメージ
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = @actor.skill_can_use?(skill)
draw_item_name(skill, rect.x, rect.y, enabled)
if skill.consume_hp
# HP 消費
text = "- " + @actor.calc_hp_cost(skill).to_s + " HP"
else
# MP 消費
if @actor.calc_mp_cost(skill) != 0
text = "- " + @actor.calc_mp_cost(skill).to_s + " MP"
else
text = "--"
end
end
self.contents.draw_text(rect, text, 2)
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill < Scene_Base
#--------------------------------------------------------------------------
# ● ターゲットの決定
# 効果なしの場合 (戦闘不能にポーションなど) ブザー SE を演奏。
#--------------------------------------------------------------------------
alias determine_target_KGC_MPCostAlter determine_target
def determine_target
@actor.set_spend_cost(@skill) # 消費する HP/MP をセット
determine_target_KGC_MPCostAlter
end
#--------------------------------------------------------------------------
# ● スキルの使用 (味方対象以外の使用効果を適用)
#--------------------------------------------------------------------------
alias use_skill_nontarget_KGC_MPCostAlter use_skill_nontarget
def use_skill_nontarget
@actor.hp -= @actor.calc_hp_cost(@skill)
use_skill_nontarget_KGC_MPCostAlter
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : スキル
#--------------------------------------------------------------------------
alias execute_action_skill_KGC_MPCostAlter execute_action_skill
def execute_action_skill
skill = @active_battler.action.skill
@active_battler.set_spend_cost(skill) # 消費する HP/MP をセット
if skill.consume_hp
hp_cost = [@active_battler.hp - 1,
@active_battler.spend_cost].min # HP を 1 だけ残す
@active_battler.hp -= hp_cost
end
execute_action_skill_KGC_MPCostAlter
# 死亡するはずだった場合
if skill.consume_hp && hp_cost < @active_battler.spend_cost
@active_battler.hp = 0 # HP を 0 にする
display_added_states(@active_battler) # 死亡メッセージの表示
end
end
end
复制代码
作者:
后知后觉
时间:
2011-4-18 12:39
公共事件+状态法呗.
用个状态加几行脚本就搞定了.
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1