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

Project1

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

[已经解决] 请问如何做出这些效果技能

[复制链接]

Lv2.观梦者

梦石
0
星屑
817
在线时间
85 小时
注册时间
2020-1-8
帖子
66
跳转到指定楼层
1
发表于 2020-1-21 17:50:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
rt
1.血量越少伤害越高
2.自损八百杀敌一千【扣血技能】
3.无差别全体技能【类似宝可梦大晴天】
4.对敌人造成伤害并且给使用者上增益buff

万分感激
钟山老龙,烛龙兎嵐字音苍

Lv4.逐梦者

梦石
0
星屑
13640
在线时间
3853 小时
注册时间
2013-7-18
帖子
2313
2
发表于 2020-1-22 12:00:23 | 只看该作者
你只需要一个公共事件,技能带这个公共事件
1,总血量/当前血量,变量代入,计算倍数即可,比如总血量1000,当前血量200,1000/200=5,即造成5倍伤害,深入一点的,game Battle3里伤害公式前+个变量,平时为1,当用这个技能时候 ,变量代入,就变成N倍伤害,战斗结束变量归于1.
2,扣自己血量若干即可
3,不明
4,给添加一个状态即可

以上都在公共事件里设置就可

点评

U2FsdGVkX18+RCZr2QdvyL6+MhlboiUiGy13VfxttuY5W5FVZ4lJLW7LOyoEcxWI qYe2ePxxcQkmmF5LloI8lGscY4BHDv/eAGDK9a/1H30lMF8Z/B2guC2BU6lcehVK WGQ4IPO2eDETlc3wkbcQBw==AES1  发表于 2020-1-22 12:29
山岚野人,快人快语,礼数不周,还望海涵....
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
817
在线时间
85 小时
注册时间
2020-1-8
帖子
66
3
 楼主| 发表于 2020-1-22 12:40:19 | 只看该作者
y967 发表于 2020-1-22 12:00
你只需要一个公共事件,技能带这个公共事件
1,总血量/当前血量,变量代入,计算倍数即可,比如总血量1000 ...

额,4那个,如果是角色和敌人都通用的技能,怎么设置

点评

设置两个技能,带不同的公共事件,一个给自己加,一个给敌人加  发表于 2020-1-22 21:32
钟山老龙,烛龙兎嵐字音苍
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2604
在线时间
462 小时
注册时间
2019-6-22
帖子
74
4
发表于 2020-1-27 03:02:46 | 只看该作者
本帖最后由 kunikai 于 2020-1-27 03:04 编辑

从另一个问题过来,复制自己的部分回答好了。

首先,我们要知道什么是“计算公式”。


1. 提供三个简单范例。设原计算公式为(a.atk-b.def)。

(1)  (a.atk-b.def)*(2-(10*a.hp*10/a.mhp/100)) 使用者的血量每减少1%,攻击就多造成1%的伤害。
   
(2)  (a.atk+((a.mhp-a.hp)*0.2)-b.def)  使用者的血量每少于其血量上限5点,攻击就多造成1点的伤害。      

(3)  (a.atk-b.def)*(0.9+((1-(10*a.hp*10/a.mhp/100))*0.2)) 使用者的血量由100%→0%时,技能伤害由90%→110%。


2.
a.hp -= 公式1;公式2


例:a.hp -= (a.atk-b.def)*8/10 ; (a.atk-b.def) 使用者受到的伤害等于造成伤害的80%。

3.
RUBY 代码复制
  1. =begin #=======================================================================
  2.  
  3. ◆◇ターゲット拡張 RGSS3◇◆
  4.  
  5. ◆DEICIDE ALMA
  6. ◆レーネ 
  7. ◆[url]http://blog.goo.ne.jp/exa_deicide_alma[/url]
  8.  
  9. ◆機能/注意
  10. スキルやアイテムにデータベースで設定できない効果範囲を設定できるようにします。
  11. また、ランダム攻撃時の攻撃の重複回数の限界を設定することができます。
  12.  
  13. ※効果範囲がランダムや全体の場合は
  14.  データベースの効果範囲はタゲ選択不可のランダムか全体にしてください。
  15.  
  16. ★スキルかアイテムのメモ欄に以下のワードを書いて使用します。
  17. --------------------------------------------------------------------------------
  18. ◆重複回数の設定
  19. <重複限界:n> ⇒ ランダム攻撃時の同じユニットへの重複回数の限界
  20.  
  21. ※制限超過分は拡散せずに消滅。
  22.   敵3体にランダム8回攻撃を行った際に4、1、3回当たるとして
  23.   <重複限界:2>の表記があった場合は2、1、2回になります。
  24.  
  25. ◆重複アニメの設定
  26. <重複アニメ無効> ⇒ 同じターゲットにアニメを1度しか再生しないようにする
  27.  
  28. ※VXAでは、ランダムn体のときに同じタゲに何度もアニメを再生します。
  29. (中心のアニメのみ?)
  30. --------------------------------------------------------------------------------
  31. ◆ターゲット拡張用ワード(2つ以上書かないこと)
  32. <敵単体連続:n> ⇒ 敵単体にn回効果
  33. <敵全体連続:n> ⇒ 敵全体にn回効果
  34. <敵ランダム:n> ⇒ 敵にn回効果(タゲは1回ごとにバラバラ、重複あり)
  35. <敵ランダム連続:n> ⇒ ランダムな敵1体に対してn回効果(タゲ選択不可の敵単体連続)
  36.  
  37. <味方単体連続:n> ⇒ 味方単体にn回効果
  38. <味方全体連続:n> ⇒ 味方全体にn回効果
  39. <味方ランダム:n> ⇒ 味方にn回効果(タゲは1回ごとにバラバラ、重複あり)
  40. <味方ランダム連続:n> ⇒ タゲ選択不可の味方単体連続
  41.  
  42. <敵味方全体>       ⇒ 敵味方全体に効果
  43. <敵味方ランダム:n> ⇒ 敵味方にn回効果(タゲは1回ごとにバラバラ、重複あり)
  44. --------------------------------------------------------------------------------
  45. ◆上記ワードと併用前提のワード(単独使用不可)
  46. <追加ランダム:n> ⇒ 効果を0~n回追加
  47.  
  48. <使用者除外:n> ※n は 0 か 1
  49.  
  50. 0 ⇒ 最後に使用者を除外する
  51.    (ランダム範囲の場合、使用者が選ばれた回数分、攻撃回数が減ります)
  52.  
  53. 1 ⇒ 始めから使用者を除外しておく
  54.      (ランダム範囲専用、使用者が選ばれることがないので回数分攻撃)
  55.  
  56. ※ランダム範囲でない場合は 0 にしてください。
  57. --------------------------------------------------------------------------------
  58. ■例1:自分以外の味方全体
  59. メモ欄記述は
  60. <味方全体連続:1>
  61. <使用者除外:0>
  62.  
  63. ■例2:自分以外の敵味方ランダムで5~8回攻撃
  64. メモ欄記述は
  65. <敵味方ランダム:5>
  66. <追加ランダム:3>
  67. <使用者除外:1>    ※0 だと使用者が選ばれた回数分、攻撃回数が減ってしまいます。
  68.  
  69. --------------------------------------------------------------------------------
  70. ※ターゲットが誰もいなくなる場合は、自動的に使用者に効果になります。
  71.  この場合、効果範囲の設定がおかしいので設定を見直してください。
  72.  (味方ランダム&使用者除外など)
  73.  
  74. ◆導入箇所
  75. ▼素材のところ、mainより上
  76.  
  77. =end #=========================================================================
  78. module RENNE ; module Target_Exp
  79.   # 重複限界
  80.   OVERLAP = /<重複限界[::](\d+)>/
  81.  
  82.   # 重複アニメ無効
  83.   NON_OL_ANIMA = "<重複アニメ無効>"
  84.  
  85.   # 敵のターゲット拡張
  86.   Reg1 = /<敵単体連続:(\d+)>/
  87.   Reg2 = /<敵全体連続:(\d+)>/
  88.   Reg3 = /<敵ランダム:(\d+)>/
  89.  
  90.   # 味方のターゲット拡張
  91.   Reg4 = /<味方単体連続:(\d+)>/
  92.   Reg5 = /<味方全体連続:(\d+)>/
  93.   Reg6 = /<味方ランダム:(\d+)>/
  94.  
  95.   # 敵味方など特殊なターゲット
  96.   Reg7 = /<敵ランダム連続:(\d+)>/
  97.   Reg8 = /<味方ランダム連続:(\d+)>/
  98.   Reg9 = /<敵味方全体>/
  99.   Reg10 = /<敵味方ランダム:(\d+)>/
  100.  
  101.   # 上記ワードとの併用ワード(単独使用不可)
  102.   Add1 = /<追加ランダム:(\d+)>/
  103.   Add2 = /<使用者除外:(\d+)>/
  104.  
  105. end ; end
  106.  
  107. $renne_rgss3 = {} if $renne_rgss3.nil?
  108. $renne_rgss3[:target_exp] = true
  109.  
  110. class RPG::UsableItem < RPG::BaseItem
  111.   #--------------------------------------------------------------------------
  112.   # ● インクルード
  113.   #--------------------------------------------------------------------------
  114.   include RENNE::Target_Exp
  115.   #--------------------------------------------------------------------------
  116.   # ● 拡張ターゲットの取得
  117.   #--------------------------------------------------------------------------
  118.   def exp_target?
  119.     if @exp_target.nil?
  120.       @exp_target = []
  121.       @exp_target[2] = -1
  122.       note.each_line{|line|
  123.       case line
  124.       when Reg1 ; @exp_target[0] = [1,$1.to_i]
  125.       when Reg2 ; @exp_target[0] = [2,$1.to_i]
  126.       when Reg3 ; @exp_target[0] = [3,$1.to_i]
  127.       when Reg4 ; @exp_target[0] = [4,$1.to_i]
  128.       when Reg5 ; @exp_target[0] = [5,$1.to_i]
  129.       when Reg6 ; @exp_target[0] = [6,$1.to_i]
  130.       when Reg7 ; @exp_target[0] = [7,$1.to_i]
  131.       when Reg8 ; @exp_target[0] = [8,$1.to_i]
  132.       when Reg9 ; @exp_target[0] = [9, true]
  133.       when Reg10; @exp_target[0] = [10,$1.to_i]
  134.       when Add1 ; @exp_target[1] = $1.to_i + 1
  135.       when Add2 ; @exp_target[2] = $1.to_i
  136.       end
  137.       }
  138.       if @exp_target[0].nil?
  139.         @exp_target = false
  140.       end
  141.     end
  142.     return @exp_target
  143.   end
  144.   alias exp_target exp_target?
  145.   #--------------------------------------------------------------------------
  146.   # ● 重複限界スキルの設定を取得
  147.   #--------------------------------------------------------------------------
  148.   def overlap_limit
  149.     if @overlap_limit.nil?
  150.       @overlap_limit = note[OVERLAP,1].to_i
  151.     end
  152.     return @overlap_limit
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 重複アニメの無効化フラグの取得
  156.   #--------------------------------------------------------------------------
  157.   def non_overlap_anima?
  158.     if @non_overlap_anima.nil?
  159.       @non_overlap_anima = note.include?(NON_OL_ANIMA)
  160.     end
  161.     return @non_overlap_anima
  162.   end
  163. end
  164.  
  165. class Game_Unit
  166.   #--------------------------------------------------------------------------
  167.   # ● 拡張ランダムターゲットの取得
  168.   #--------------------------------------------------------------------------
  169.   def exp_ram_target(subject)
  170.     tgr_rand = rand * (tgr_sum - subject.tgr)
  171.     arr = alive_members - [subject]
  172.     arr.each do |member|
  173.       tgr_rand -= member.tgr
  174.       return member if tgr_rand < 0
  175.     end
  176.     return arr[0]
  177.   end
  178. end
  179.  
  180. class Game_Action
  181.   #--------------------------------------------------------------------------
  182.   # ● 制限ターゲットの作成
  183.   #--------------------------------------------------------------------------
  184.   def limit_targets(arr, max)
  185.     result = []
  186.     temp = {}
  187.     arr.each{|obj|
  188.       temp[obj] = temp[obj].to_i + 1
  189.       result << obj unless temp[obj] > max
  190.     }
  191.     return result
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 拡張ターゲットの作成
  195.   #--------------------------------------------------------------------------
  196.   def make_exp_targets
  197.     arr = []
  198.     exp = item.exp_target
  199.     exp_id = exp[0][0]
  200.     num = exp[0][1]
  201.     ram = exp[1] ? rand(exp[1]) : 0
  202.     ex_remove = friends_unit.members.size == 1
  203.     case exp_id
  204.     when 1
  205.       arr << opponents_unit.smooth_target(@target_index)
  206.       arr *= (num + ram)
  207.     when 2
  208.       arr = opponents_unit.alive_members
  209.       arr *= (num + ram)
  210.     when 3
  211.       (num + ram).times do arr << opponents_unit.random_target end
  212.     when 4
  213.       arr << friends_unit.smooth_target(@target_index)
  214.       arr *= (num + ram)
  215.     when 5
  216.       arr = friends_unit.alive_members
  217.       arr *= (num + ram)
  218.     when 6
  219.       if exp[2] == 1
  220.         (num + ram).times do arr << friends_unit.exp_ram_target(subject) end
  221.       else
  222.         (num + ram).times do arr << friends_unit.random_target end
  223.       end
  224.     when 7
  225.       arr << opponents_unit.random_target
  226.       arr *= (num + ram)
  227.     when 8
  228.       arr << friends_unit.random_target
  229.       arr *= (num + ram)
  230.     when 9
  231.       arr = opponents_unit.alive_members + friends_unit.alive_members
  232.       arr *= (1 + ram)
  233.     when 10
  234.       if ex_remove
  235.         (num + ram).times do arr << opponents_unit.random_target end
  236.       else
  237.         (num + ram).times do
  238.           if rand(2).zero?
  239.             arr << opponents_unit.random_target
  240.           else
  241.             if exp[2] == 1
  242.               arr << friends_unit.exp_ram_target(subject)
  243.             else
  244.               arr << friends_unit.random_target
  245.             end
  246.           end
  247.         end
  248.       end
  249.     end
  250.     arr.delete(subject) if exp[2].zero?
  251.     arr.compact!
  252.     arr = [subject] if arr.empty?
  253.     return arr
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● ターゲットの配列作成(エイリアス)
  257.   #--------------------------------------------------------------------------
  258.   alias target_exp_make_targets make_targets
  259.   def make_targets
  260.     if !(!forcing && subject.confusion?) && item.exp_target?
  261.       targets = make_exp_targets
  262.     else
  263.       targets = target_exp_make_targets
  264.     end
  265.     if item.overlap_limit > 0
  266.       targets = limit_targets(targets, item.overlap_limit)
  267.     end
  268.     return targets
  269.   end
  270. end
  271.  
  272. class Scene_Battle < Scene_Base
  273.   #--------------------------------------------------------------------------
  274.   # ● アニメーションの表示(エイリアス)
  275.   #--------------------------------------------------------------------------
  276.   alias target_exp_show_animation show_animation
  277.   def show_animation(targets, animation_id)
  278.     item = @subject.current_action.item
  279.     if item.non_overlap_anima?
  280.       targets = targets.uniq
  281.     end
  282.     target_exp_show_animation(targets, animation_id)
  283.   end
  284. end


将该脚本插入到默认脚本以下、Main以上,技能备注<敵味方全体>。

4. 计算公式中这样写:
a.add_state(X);伤害公式


例:a.add_state(6);(a.atk-b.def) 造成伤害的同时,为自己附加6号状态。


点评

欢迎继续询问同类型问题。  发表于 2020-1-27 13:12
赞!非常感谢指导!  发表于 2020-1-27 12:32

评分

参与人数 1星屑 +10 +1 收起 理由
寂静的夜里 + 10 + 1 认可答案

查看全部评分

一介凡人。对大多数事情都有心无力的凡人。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 07:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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