Project1

标题: 如何实现使用物品时消耗TP? [打印本页]

作者: a200731118    时间: 2018-6-25 21:34
标题: 如何实现使用物品时消耗TP?
这个问题MV有问过,不过想知适用VA,有什么方法可以解决。
就是使用物品时,如何设置TP消耗/某变量消耗呢?
作者: MCCF    时间: 2018-6-29 18:16
某变量消耗的话公共事件可以搞定,如果消耗tp,好像只有特性里面可以设定按百分比消耗。
作者: KB.Driver    时间: 2018-6-30 02:22
模仿现成代码来改就好
用于模仿的代码:
[fold=Game_BattlerBase]
  #--------------------------------------------------------------------------
  # ● 判定是否足够扣除技能的使用消耗
  #--------------------------------------------------------------------------
  def skill_cost_payable?(skill)
    tp >= skill_tp_cost(skill) && mp >= skill_mp_cost(skill)
  end

  #--------------------------------------------------------------------------
  # ● 计算技能消费的 TP
  #--------------------------------------------------------------------------
  def skill_tp_cost(skill)
    skill.tp_cost
  end

  #--------------------------------------------------------------------------
  # ● 检查技能的使用条件
  #--------------------------------------------------------------------------
  def skill_conditions_met?(skill)
    usable_item_conditions_met?(skill) &&
    skill_wtype_ok?(skill) && skill_cost_payable?(skill) &&
    !skill_sealed?(skill.id) && !skill_type_sealed?(skill.stype_id)
  end
[/fold]

[fold=RPG::Skill ]class RPG::Skill < RPG::UsableItem
  def initialize
    super
    @scope = 1
    @stype_id = 1
    @mp_cost = 0
    @tp_cost = 0
    @message1 = ''
    @message2 = ''
    @required_wtype_id1 = 0
    @required_wtype_id2 = 0
  end
  attr_accessor :stype_id
  attr_accessor :mp_cost
  attr_accessor :tp_cost
  attr_accessor :message1
  attr_accessor :message2
  attr_accessor :required_wtype_id1
  attr_accessor :required_wtype_id2
end

[/fold]

最后的代码:
[pre lang="ruby"]
class  Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 检查物品的使用条件
  #--------------------------------------------------------------------------
  alias cld99_item_conditions_met? item_conditions_met?
  def item_conditions_met?(item)
     item_cost_payable?(item) && cld99_item_conditions_met?(item)
  end

#--------------------------------------------------------------------------
  # ● 判定是否足够扣除物品的使用消耗 (以TP为例)
  #--------------------------------------------------------------------------
  def item_cost_payable?(item)
    tp >= item_tp_cost(item)
  end

  #--------------------------------------------------------------------------
  # ● 计算物品消费的 TP
  #--------------------------------------------------------------------------
  def item_tp_cost(item)
    item.tp_cost
  end

end

class RPG::Item < RPG::UsableItem
  alias cld99_initialize initialize
  def initialize
    cld99_initialize
    @tp_cost = tp_cost_initialize
  end

  def tp_cost_initialize
  regexp = /\<tp_cost\[(\d+)\]\>/
    #例:物品的备注中写<tp_cost[20]>表示物品消耗TP20
    value= item.note.scan(regexp) #[nil] 或 [["value"]]
    return value[0] ? value[0][0].to_i : 0
  end
  attr_accessor :tp_cost
end

[/pre]
仅提供一个思路,未实测

作者: a200731118    时间: 2018-6-30 03:05
KB.Driver 发表于 2018-6-30 02:22
模仿现成代码来改就好
用于模仿的代码:
[fold=Game_BattlerBase]

不好意思我想問那個腳本是否放在Game_BattlerBase第701行,還是插入插件就行,如果可以的話可不可以做範例。
作者: a200731118    时间: 2018-6-30 13:41
a200731118 发表于 2018-6-30 03:05
不好意思我想問那個腳本是否放在Game_BattlerBase第701行,還是插入插件就行,如果可以的話可不可以做範例 ...

好像跟判定是否足夠扣除技能的使用消耗有衝突,進入遊戲時沒有影響,但當進入戰鬥時窗口跳出來!
(, 下载次数: 55)


作者: KB.Driver    时间: 2018-6-30 13:50
工程:
(, 下载次数: 166)

不满足使用条件时物品不显示这种小问题不想管了……凑合着用吧)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X5.0