Project1

标题: 大佬们 怎么样让普攻有几率 连击1-5下 ?? [打印本页]

作者: lixinglixing022    时间: 2020-10-27 22:52
标题: 大佬们 怎么样让普攻有几率 连击1-5下 ??
就是普攻连击  比如连击第一下有50的几率 第二下40的几率 越往后越低  不要那种回来一次打一次的 要那种一次普攻连击的!!!求大神们了!!
作者: 天浩    时间: 2020-10-29 09:25
用强制喽。
技能里添加公共事件。
在公共事件里设定:
变量1=随机1-100
如果 变量1 =50
强制执行普攻技能
依此类推
作者: 89444640    时间: 2020-10-29 17:29
楼主要的是这个效果吧,一次行动攻击多次并且有多次判定,二刀流会根据左右手武器攻击命中发生变化,妖梦半灵攻击时本体的50%,因为miss看着不太明显
其实随机攻击多次也能做到,因为动作画不过来,少了个角色,就没让菜刀继续做。

能实现全是菜刀桑功劳哦~
作者: q3226257    时间: 2020-10-30 09:44
如果用动作序列很好实现啊
作者: rockcjc001    时间: 2022-9-27 13:12
天浩 发表于 2020-10-29 09:25
用强制喽。
技能里添加公共事件。
在公共事件里设定:

这种方法只能指定固定一个角色连击!如果2号人物触发公共事件 结果还是1号人物去打!很蠢
作者: RMVXA    时间: 2022-9-27 13:36
可以参考BCJT的《封神榜外传》里哪吒的普通攻击或战技。那个游戏是开源的,好像不止是几率增加次数,还能随等级成长增加连击的几率。
作者: ACRI    时间: 2022-10-3 03:12
http://artificialprovidence.web.fc2.com/
日本某个大佬的脚本网站
你可以进去选择能力扩张,如何ctrl+f 查找 “使用後追加行動” 和 “通常攻撃ID変化特徴”
如果没办法进去,那么这里是你要的脚本
  1. #==============================================================================
  2. # ■ RGSS3 通常攻撃ID変化特徴 Ver1.02 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 本来はスキルID1番に指定されている通常攻撃のスキルIDを
  5. # 変更する特徴を作成する事が可能になります。
  6. #
  7. # これにより、通常攻撃のランダム攻撃化や全体攻撃化の効果を持つ
  8. # ステートや装備品を作成する事が可能になります。
  9. #
  10. # なお、RPGツクールVXAceプリセットスクリプトの不具合により
  11. # 攻撃追加回数が反映されませんが
  12. # 配布中の『通常攻撃時の追加攻撃回数強制適用』スクリプトを併用する事で
  13. # 攻撃追加回数が反映されるようになります。
  14. #==============================================================================
  15. # 特徴を有する項目(アクター・職業・装備・ステート等)のメモ欄に設定
  16. # 行を分けて複数設定可能です。
  17. #------------------------------------------------------------------------------
  18. # <攻撃ID変更:130>
  19. #
  20. # この場合は、通常攻撃のスキルID変化候補としてスキルID130が追加されます。
  21. #------------------------------------------------------------------------------
  22. # <攻撃ID変更:131,self.hp>=100>
  23. #
  24. # この場合は、コマンド選択時にHPが100以上の時に限り
  25. # 通常攻撃のスキルID変化候補としてスキルID131が追加されます。
  26. #------------------------------------------------------------------------------
  27. # <攻撃ID変更:132,mp==0>
  28. #
  29. # この場合は、コマンド選択時にMPが0の時に限り
  30. # 通常攻撃のスキルID変化候補としてスキルID132が追加されます。
  31. #------------------------------------------------------------------------------
  32. # <攻撃ID変更:133,mp>=skill_mp_cost($data_skills[133])>
  33. #
  34. # この場合は、コマンド選択時にMPがスキルID133の消費MP以上の時に限り
  35. # 通常攻撃のスキルID変化候補としてスキルID133が追加されます。
  36. #------------------------------------------------------------------------------
  37. # <攻撃ID変更:134,tp==100>
  38. #
  39. # この場合は、コマンド選択時にTPが100の時に限り
  40. # 通常攻撃のスキルID変化候補としてスキルID134が追加されます。
  41. #------------------------------------------------------------------------------
  42. # <攻撃ID変更:135,skill_cost_payable?($data_skills[135])>
  43. #
  44. # この場合は、コマンド選択時にスキルID135の使用コストが全て払える時に限り
  45. # 通常攻撃のスキルID変化候補としてスキルID135が追加されます。
  46. #------------------------------------------------------------------------------
  47. # <攻撃ID変更:136,usable?($data_skills[136])>
  48. #
  49. # この場合は、コマンド選択時にスキルID136が
  50. # スキルとして使用可能と判定された場合に限り(コスト以外についても判定されます)
  51. # 通常攻撃のスキルID変化候補としてスキルID136が追加されます。
  52. #------------------------------------------------------------------------------
  53. # <攻撃ID変更:137,mp>0&&state?(4)>
  54. #
  55. # この場合は、コマンド選択時にMPが0より大きくステートID4が付与されている時に限り
  56. # 通常攻撃のスキルID変化候補としてスキルID137が追加されます。
  57. #------------------------------------------------------------------------------
  58. # <攻撃ID変更:138,mp>0&&!state?(4)>
  59. #
  60. # この場合は、コマンド選択時にMPが0より大きくステートID4が付与されていない時に限り
  61. # 通常攻撃のスキルID変化候補としてスキルID138が追加されます。
  62. #==============================================================================
  63. # スキルのメモ欄に設定
  64. #------------------------------------------------------------------------------
  65. # <攻撃ID優先度変更:1>
  66. #
  67. # このスキルの攻撃ID優先度変更を1として設定します。
  68. #
  69. # 書き込まれた数値が優先度として機能し
  70. # 数値が高ければ高いほど攻撃IDとして優先されます。
  71. # (なお、優先度が指定されていない場合、自動的に優先度0となります)
  72. # 優先度が同じ攻撃スキルが存在する場合
  73. # スキルIDの値が高いスキルが優先されます。
  74. #==============================================================================
  75. module ATTACK_CHANGE
  76.   
  77.   #攻撃ID変更用のキーワードを設定します。
  78.   
  79.   WORD1 = "攻撃ID変更"
  80.   
  81.   #攻撃ID優先度変更用のキーワードを設定します。
  82.   
  83.   WORD2 = "攻撃ID優先度変更"
  84.   
  85. end
  86. class Scene_Battle < Scene_Base
  87.   #--------------------------------------------------------------------------
  88.   # コマンド[攻撃]
  89.   #--------------------------------------------------------------------------
  90.   alias command_attack_attack_change command_attack
  91.   def command_attack
  92.    
  93.     #通常攻撃時、対象を選択する必要がある場合は通常の処理を行う。
  94.    
  95.     return command_attack_attack_change if $data_skills[BattleManager.actor.attack_skill_id].need_selection?
  96.    
  97.     #通常攻撃時、対象を選択する必要が無い場合は
  98.     #攻撃をセットした後、次のアクターへ移す。
  99.    
  100.     BattleManager.actor.input.set_attack
  101.     next_command
  102.   end
  103. end
  104. class Game_BattlerBase
  105.   #--------------------------------------------------------------------------
  106.   # 通常攻撃のスキル ID を取得
  107.   #--------------------------------------------------------------------------
  108.   alias attack_skill_id_attack_change attack_skill_id
  109.   def attack_skill_id
  110.    
  111.     #空の配列を用意。
  112.    
  113.     data = []
  114.    
  115.     #特徴に通常攻撃IDが指定されている場合、そのIDを配列に加える。
  116.    
  117.     feature_objects.each do |f|
  118.       f.new_attack_skill_id.each {|aa| data.push(aa[0]) if aa[0] != 0 && eval(aa[1])}
  119.     end
  120.    
  121.     #配列が空の場合は通常の処理を行う。
  122.    
  123.     return attack_skill_id_attack_change if data.empty?
  124.    
  125.     #配列内の同じ物を消去し、並び変える。
  126.    
  127.     data.uniq!
  128.     data.sort!
  129.    
  130.     #スキルの優先度の最高値を取得する。
  131.    
  132.     number = 0
  133.     data.each do |d|
  134.       number = $data_skills[d].attack_skill_priority if number <= $data_skills[d].attack_skill_priority
  135.     end
  136.    
  137.     #配列から、スキル優先度が最高値でない物を削除する。
  138.    
  139.     data.reject! {|d| $data_skills[d].attack_skill_priority != number}
  140.    
  141.     #配列の末尾の値を取りだす。
  142.    
  143.     return data.pop
  144.   end
  145. end
  146. class RPG::BaseItem
  147.   #--------------------------------------------------------------------------
  148.   # 通常攻撃のスキルID候補を条件と共に取得
  149.   #--------------------------------------------------------------------------
  150.   def new_attack_skill_id
  151.    
  152.     #キャッシュがある場合はキャッシュを返す。
  153.    
  154.     @new_attack_skill_id ||= create_new_attack_skill_id
  155.    
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # 通常攻撃のスキルID候補を条件と共に作成
  159.   #--------------------------------------------------------------------------
  160.   def create_new_attack_skill_id
  161.     result = []
  162.     note.each_line {|l|
  163.     next unless /<#{ATTACK_CHANGE::WORD1}[::](\S+)>/  =~ l
  164.     a = $1.to_s.split(/\s*,\s*/).inject([]) {|r,i| r.push(i)}
  165.     a[0] = a[0].to_i
  166.     a.push("true") if a.size == 1
  167.     result.push(a)}
  168.     result
  169.   end
  170. end
  171. class RPG::Skill < RPG::UsableItem
  172.   #--------------------------------------------------------------------------
  173.   # 攻撃ID優先度を指定
  174.   #--------------------------------------------------------------------------
  175.   def attack_skill_priority
  176.    
  177.     #キャッシュがある場合はキャッシュを返す。
  178.    
  179.     @attack_skill_priority ||= /<#{ATTACK_CHANGE::WORD2}[::](\d+)>/  =~ note ? $1.to_i : 0
  180.    
  181.   end
  182. end
复制代码


  1. #==============================================================================
  2. # ■ RGSS3 使用後追加行動効果 Ver1.02 by 星潟
  3. #==============================================================================
  4. # アイテム・スキルに対し、戦闘中に使用した後に
  5. # 更に別のスキルを使用する行動を追加する効果が設定できるようになります。
  6. #
  7. # また、行動中に行動不能になった場合は追加行動は発生しません。
  8. # 設定次第では永久に行動し続ける為注意が必要です。
  9. #==============================================================================
  10. # アイテム/スキルのメモ欄に指定。行を分けて記入する事でいくつでも指定可能。
  11. # 最初にスキルID(0以下の場合は使用できる物を自動行動扱いで使用)、
  12. # 次にターゲットインデックス、
  13. # (-2で最終ターゲット、-1でランダムターゲット、0~はそのまま対象のインデックス)
  14. # 最後に任意で発動確率を指定。
  15. #------------------------------------------------------------------------------
  16. # <使用後追加行動:0,-1,50>
  17. #
  18. # 50%の確率でランダムターゲットで自動行動。
  19. #------------------------------------------------------------------------------
  20. # <使用後追加行動:1,-2>
  21. #
  22. # 100%の確率でラストターゲットに対してスキルID1を使用。
  23. #------------------------------------------------------------------------------
  24. # <使用後追加行動:1,0>
  25. #
  26. # 100%の確率でIndex0の対象に対してスキルID1を使用。
  27. #------------------------------------------------------------------------------
  28. # <使用後追加行動:attack_skill_id,-2>
  29. #
  30. # 100%の確率でラストターゲットに対して通常攻撃を使用。
  31. # (通常攻撃IDが変更されるタイプのスクリプト等を使用している場合向け)
  32. #------------------------------------------------------------------------------
  33. # <使用後追加行動:guard_skill_id,0>
  34. #
  35. # 100%の確率でIndex0の対象に対して防御を使用。
  36. # (防御IDが変更されるタイプのスクリプト等を使用している場合向け。
  37. #   通常、防御は自分が対象なので、ターゲットは常に自分になる)
  38. #==============================================================================
  39. module AddAfterAction
  40.   
  41.   #設定用キーワードを指定。
  42.   
  43.   Word = "使用後追加行動"
  44.   
  45.   #追加行動を強制的に最速行動にするかを指定。
  46.   #(通常は不要。鳥小屋.txt様のターン消費無しスキル/アイテム導入時に
  47.   # 行動直後に追加行動を発動させたい場合にtrueにする必要あり)
  48.   
  49.   Speed = false
  50.   
  51.   #Speedがtrueの場合の速度を指定。
  52.   #なるべく極端に大きい値を推奨。
  53.   
  54.   Value = 99999999999
  55.   
  56. end
  57. class Game_Battler < Game_BattlerBase
  58.   #--------------------------------------------------------------------------
  59.   # 使用後追加行動
  60.   #--------------------------------------------------------------------------
  61.   def add_after_action(item)
  62.     item.add_after_action.each {|a|
  63.     next if eval(a[2]) < rand(100)
  64.     a0 = eval(a[0])
  65.     s = a0 < 1 ? decide_add_random_after_action_id : a0
  66.     next unless s
  67.     add_after_action_main(s,eval(a[1]))}
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # 使用後追加行動メイン
  71.   #--------------------------------------------------------------------------
  72.   def add_after_action_main(sid,ti)
  73.     return unless movable?
  74.     action = Game_Action.new(self)
  75.     action.set_skill(sid)
  76.     if ti == -2
  77.       action.target_index = last_target_index
  78.     elsif ti == -1
  79.       action.decide_random_target
  80.     else
  81.       action.target_index = ti
  82.     end
  83.     action.quick_aciton_speed_set = true if AddAfterAction::Speed
  84.     @actions = [@actions[0]] + [action] + @actions[1,@actions.size]
  85.   end
  86. end
  87. if AddAfterAction::Speed
  88. class Game_Action
  89.   attr_accessor :quick_aciton_speed_set
  90.   #--------------------------------------------------------------------------
  91.   # 行動速度
  92.   #--------------------------------------------------------------------------
  93.   alias speed_ex_item_add_action speed
  94.   def speed
  95.     return AddAfterAction::Value if @quick_aciton_speed_set
  96.     speed_ex_item_add_action
  97.   end
  98. end
  99. end
  100. class Game_Actor < Game_Battler
  101.   #--------------------------------------------------------------------------
  102.   # 次のランダム行動を決定
  103.   #--------------------------------------------------------------------------
  104.   def decide_add_random_after_action_id
  105.     (make_action_list.max_by {|action| action.value }).item.id
  106.   end
  107. end
  108. class Game_Enemy < Game_Battler
  109.   #--------------------------------------------------------------------------
  110.   # 次のランダム行動を決定
  111.   #--------------------------------------------------------------------------
  112.   def decide_add_random_after_action_id
  113.     action_list = enemy.actions.select {|a| action_valid?(a) }
  114.     return nil if action_list.empty?
  115.     rating_max = action_list.collect {|a| a.rating }.max
  116.     rating_zero = rating_max - 3
  117.     action_list.reject! {|a| a.rating <= rating_zero }
  118.     b = select_enemy_action(action_list, rating_zero)
  119.     b.skill_id
  120.   end
  121. end
  122. class Scene_Battle < Scene_Base
  123.   #--------------------------------------------------------------------------
  124.   # スキル/アイテムの使用
  125.   #--------------------------------------------------------------------------
  126.   alias use_item_ex_item_add_action use_item
  127.   def use_item
  128.     item = @subject.current_action.item
  129.     use_item_ex_item_add_action
  130.     @subject.add_after_action(item)
  131.   end
  132. end
  133. class RPG::UsableItem < RPG::BaseItem
  134.   #--------------------------------------------------------------------------
  135.   # 使用後追加行動
  136.   #--------------------------------------------------------------------------
  137.   def add_after_action
  138.     @add_after_action ||= create_add_after_action
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # 使用後追加行動データ作成
  142.   #--------------------------------------------------------------------------
  143.   def create_add_after_action
  144.     a = []
  145.     note.each_line {|l|
  146.     b = /<#{AddAfterAction::Word}[::](\S+)>/ =~ l ? $1.to_s : nil
  147.     if b
  148.       c = b.split(/\s*,\s*/).inject([]) {|r,i| r.push(i)}
  149.       case c.size
  150.       when 2;c.push("100")
  151.       when 3;
  152.       else;next
  153.       end
  154.       a.push(c)
  155.     end}
  156.     a
  157.   end
  158. end
复制代码





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