设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4002|回复: 5
打印 上一主题 下一主题

[已经解决] 關於傷害公式的寫法,有人能幫我想想嗎??

[复制链接]

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
跳转到指定楼层
 楼主| 发表于 2013-2-27 14:53:19 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
技能的HP回復公式裡面,我想寫一個讓目標HP+50 也順便回復TP的公式

" b.tp + 5 " & "b.hp + 50"

但覺得固定恢復5實在太單調了,想用目標的LUK(運氣)來成為恢復的TP量,
請問這公式要怎麼寫??
{:2_263:}
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

5
发表于 2013-2-28 21:39:55 | 只看该作者
本帖最后由 Sion 于 2013-2-28 22:04 编辑

伤害只有如下选项,不能操作TP:

那么只能自己修改一下代码:
  1. class Game_ActionResult
  2. #--------------------------------------------------------------------------
  3.   # ● 生成伤害
  4.   #--------------------------------------------------------------------------
  5.   def make_damage(value, item)
  6.     @critical = false if value == 0
  7.     if item.tp_recovery? # 判断物品/技能是否是用于特技回复
  8.       @tp_damage = -value
  9.     elsif item.damage.to_hp?
  10.       @hp_damage = value
  11.     end
  12.     @mp_damage = value if item.damage.to_mp?
  13.     @mp_damage = [@battler.mp, @mp_damage].min
  14.     @hp_drain = @hp_damage if item.damage.drain?
  15.     @mp_drain = @mp_damage if item.damage.drain?
  16.     @hp_drain = [@battler.hp, @hp_drain].min
  17.     @success = true if item.damage.to_hp? || @mp_damage != 0
  18.   end
  19. end

  20. class Game_Battler < Game_BattlerBase
  21.   #--------------------------------------------------------------------------
  22.   # ● 计算伤害
  23.   #--------------------------------------------------------------------------
  24.   def make_damage_value(user, item)
  25.     value = item.damage.eval(user, self, $game_variables)
  26.     value *= item_element_rate(user, item)
  27.     value *= pdr if item.physical?
  28.     value *= mdr if item.magical?
  29.     value *= rec if item.damage.recover?
  30.     value = apply_critical(value) if @result.critical
  31.     value = apply_variance(value, item.damage.variance)
  32.     value = apply_guard(value) unless item.tp_recovery? # 如果特技回复则不计算防御修正
  33.     @result.make_damage(value.to_i, item)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 处理伤害
  37.   #    调用前需要设置好
  38.   #    @result.hp_damage   @result.mp_damage
  39.   #    @result.hp_drain    @result.mp_drain
  40.   #--------------------------------------------------------------------------
  41.   def execute_damage(user)
  42.     on_damage(@result.hp_damage) if @result.hp_damage > 0
  43.     self.hp -= @result.hp_damage
  44.     self.mp -= @result.mp_damage
  45.     self.tp -= @result.tp_damage # 特技回复的处理
  46.     user.hp += @result.hp_drain
  47.     user.mp += @result.mp_drain
  48.   end
  49. end

  50. class Window_BattleLog < Window_Selectable
  51.   #--------------------------------------------------------------------------
  52.   # ● 显示 HP 伤害
  53.   #--------------------------------------------------------------------------
  54.   def display_hp_damage(target, item)
  55.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  56.     return if item.tp_recovery? # 如果特技回复则不显示HP伤害提示
  57.     if target.result.hp_damage > 0 && target.result.hp_drain == 0
  58.       target.perform_damage_effect
  59.     end
  60.     Sound.play_recovery if target.result.hp_damage < 0
  61.     add_text(target.result.hp_damage_text)
  62.     wait
  63.   end
  64. end

  65. class RPG::UsableItem
  66.   def tp_recovery?
  67.     self.note.each_line do |line|
  68.       return true if line.include?("特技回复")
  69.     end
  70.     return false
  71.   end
  72. end
  73.   
复制代码
在备注中加入: 特技回复
伤害计算公式得到的数值就可以用于回复特技了。

注意:伤害类型只能选体力值伤害,选其它的话恐怕会造成额外的效果。

改了下代码,因为发现一些bug……

点评

腳本達人!!{:2_280:} 謝謝!! 讓我好好帶回家研究研究~ 感謝你們的回答:)  发表于 2013-2-28 23:31

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
4
 楼主| 发表于 2013-2-28 09:55:38 | 只看该作者
我試了很多方法...就是沒辦法做到利用目標的屬性(如LUK,AGI)來給目標回復TP...{:2_253:}
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
179 小时
注册时间
2012-11-14
帖子
94
3
发表于 2013-2-27 17:17:22 | 只看该作者
a000b1745 发表于 2013-2-27 17:01
應該是說~ 我只要選了公式類型(HP回復,HP傷害等...)
VA就會把算出來的數字代到那個類型的功能裡面,
譬如 ...

我理解了,不过刚刚实验了下,才发现在 事件 或者 数据库 里面,没有TP值获取方式
弄的我用变量也不知道应该怎么才能获取角色的TP值
应该只能通过在技能中添加备注脚本的方式来实现了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
465 小时
注册时间
2009-10-11
帖子
407
2
 楼主| 发表于 2013-2-27 17:01:06 | 只看该作者
本帖最后由 a000b1745 于 2013-2-27 17:02 编辑

應該是說~ 我只要選了公式類型(HP回復,HP傷害等...)
VA就會把算出來的數字代到那個類型的功能裡面,
譬如我在"HP回復"寫的是 b.tp + a.luk
那他就會把施法角色的TP量和目標的LUK加起來做為HP回復的量.......
但其實我想要的是...目標B回復TP值回復量為施法角色的LUK值
{:2_254:}
因为现实太残酷、所以我们都在打造虚幻的天堂。如果现实不再残酷,也是因为有这快乐的天堂。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
179 小时
注册时间
2012-11-14
帖子
94
1
发表于 2013-2-27 16:16:20 | 只看该作者
在公式里面直接带入LUK进行计算不行么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 15:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表