Project1

标题: 關於刀下留人 [打印本页]

作者: sakazaki    时间: 2013-3-4 17:42
标题: 關於刀下留人
如何做出技能---刀下留人
解釋:比方說技能"刀下留人"----平時攻擊力=一般攻擊力*100%  就是說,攻擊力300使用下去打怪也是300(這個我會設定了,不用在教我^^)
然後打怪打一陣子之後,怪HP被打到剩下60點,使用"刀下留人",
正              常:狀況怪HP=>  60-300=-240  會直接判定怪陣亡(我目前的情況)
我需要的狀況:怪HP=>  60-300=-240  會再把怪的HP補回10%(比方說怪HP有400,怪被這招打到後雖然攻擊力超過所剩HP240點,但會自動幫怪補回HP40,始怪不死)

作者: OCTSJimmy    时间: 2013-3-4 18:40
直接把技能做成公共事件。
如此可将该技能作用的敌人HP回传至变量1中:
RUBY 代码复制
  1. a = $game_party.last_target_index
  2. $game_variables[0] = $game_troop.members[a].hp

这样就可以方便的判定了。
这样可以获取该技能该敌人的MAXHP至变量1中:
RUBY 代码复制
  1. a = $game_party.last_target_index
  2. $game_variables[0] = $game_troop.members[a].maxhp


然后条件分歧就好了。
作者: 怪蜀黍    时间: 2013-3-4 22:55
P叔不是很清楚,假定是如下数据:
怪剩余HP:240
我方攻击力:300
此时怪物刀下留人,你希望攻击后,怪物的HP是1还是60?
作者: sakazaki    时间: 2013-3-4 22:58
protosssonny 发表于 2013-3-4 22:55
P叔不是很清楚,假定是如下数据:
怪剩余HP:240
我方攻击力:300

回P叔的話!!

都行,只要怪不死就好Q_Q

最好是兩種都教一下拉^^
作者: 结城照美    时间: 2013-3-4 22:59
protosssonny 发表于 2013-3-4 22:55
P叔不是很清楚,假定是如下数据:
怪剩余HP:240
我方攻击力:300

LZ的意思是攻击后怪物的生命值会变成最大生命的10%...
说实话我觉得不是很科学,万一,一个怪一万的血量,在它剩200时用这个技能...怪回血了?
作者: a364774426    时间: 2013-3-5 00:33
P叔去睡觉了,那我就试试看能不能帮你实现吧,
在Game_Battler中的技能伤害定义处
  1. if obj.is_a?(RPG::Skill) and obj.id == x ##x是刀下留人的ID
  2. if self.hp <= damage
  3.   damage = self.hp - 1 #这样怪物中招后就只剩下1点血了
  4.   self.hp += self.maxhp/10 - 1 #然后怪物会恢复总血量的10%
  5. end
  6. end
复制代码
不过想LS说的,一个怪1W血,省下100.被你这招砍下去,反而有了1000血了,这到底是杀怪啊,还是救怪啊?
莫非LZ有耐人寻味的用意?
作者: sakazaki    时间: 2013-3-5 00:41
a364774426 发表于 2013-3-5 00:33
P叔去睡觉了,那我就试试看能不能帮你实现吧,
在Game_Battler中的技能伤害定义处不过想LS说的,一个怪1W血 ...

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # * 對於使用物品或使用技能所造成的傷害的計算
  3.   #     user : 技能的使用者或物品的使用者
  4.   #     obj  : 技能或物品(若是普通攻擊則為空)
  5.   #    最終所得的值將代入變數 @hp_damage 和 @mp_damage.
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 獲取基本傷害值
  9.     if damage > 0                                   # 一個正數?
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 與使用者的攻擊力關係度
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 與使用者的意志力關係度
  12.       unless obj.ignore_defense                     # 在無視防禦以外的情況下
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 與目標的攻擊力關係度
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 與目標的意志力關係度
  15.       end
  16.       damage = 0 if damage < 0                      # 如果值為負數,則值歸零
  17.     elsif damage < 0                                # 一個負數?
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 與使用者的攻擊力關係度
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 與使用者的意志力關係度
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 屬性調整
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散度
  24.     damage = apply_guard(damage)                    # 防禦調整
  25.     if obj.damage_to_mp  
  26.       @mp_damage = damage                           # MP傷害
  27.     else
  28.       @hp_damage = damage                           # HP傷害
  29.     end
  30.   end



請問代碼要改哪一段啊@@
作者: a364774426    时间: 2013-3-5 00:46
  1. if damage > 0                                   # 一個正數?
  2.       damage += user.atk * 4 * obj.atk_f / 100      # 與使用者的攻擊力關係度
  3.       damage += user.spi * 2 * obj.spi_f / 100      # 與使用者的意志力關係度
  4.       unless obj.ignore_defense                     # 在無視防禦以外的情況下
  5.         damage -= self.def * 2 * obj.atk_f / 100    # 與目標的攻擊力關係度
  6.         damage -= self.spi * 1 * obj.spi_f / 100    # 與目標的意志力關係度
  7.       end
  8.       damage = 0 if damage < 0                      # 如果值為負數,則值歸零
  9.     elsif damage < 0                                # 一個負數?
  10.       damage -= user.atk * 4 * obj.atk_f / 100      # 與使用者的攻擊力關係度
  11.       damage -= user.spi * 2 * obj.spi_f / 100      # 與使用者的意志力關係度
  12.     end
复制代码
这下面就行
作者: OCTSJimmy    时间: 2013-3-5 00:59
sakazaki 发表于 2013-3-5 00:41
#--------------------------------------------------------------------------
  # * 對於使用物品或 ...

果然还是脚本好用,另,我的答案被完全无视了么……泪奔……。。。
作者: sakazaki    时间: 2013-3-5 01:05
a364774426 发表于 2013-3-5 00:46
这下面就行

請問!!
第一次使怪變身且HP剩下1/10之後
第二次使用[刀下留人]攻擊力瞬間降到剩下20-30點,這跟回復1/10怪HP有關嗎??

若是不回復1/10HP   改成回血20點,請問該怎麼改

self.hp += self.maxhp/10 - 1 #然后怪物会恢复总血量的10%


作者: a364774426    时间: 2013-3-5 01:14
不能说是回血20点,应该是给怪物残留20点血,其实基本上是一样的
  1. if obj.is_a?(RPG::Skill) and obj.id == x ##x是刀下留人的ID
  2. if self.hp <= damage
  3.   damage = self.hp - 20 #当伤害值大于怪物剩余生命时,伤害值就比怪物的剩余血量少20
  4. end
  5. end
复制代码





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