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

Project1

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

[已经过期] 使用特技时执行的公共事件中怎么获取被使用者

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1438
在线时间
328 小时
注册时间
2016-4-4
帖子
168

开拓者

跳转到指定楼层
1
发表于 2016-12-10 15:37:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想要实现一个角色使用了一个技能 然后用公共事件附加效果强制该角色强制行动使用另一个技能 的效果  如何实现?

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

2
发表于 2016-12-10 16:25:20 | 只看该作者
本帖最后由 jiushiainilip19 于 2016-12-10 16:26 编辑

不是有强制行动的选择么,应该很容易就看得到啊。。。公共事件之间是可以连接的。。。!
事件指令第三页有一个强制行动,里面可以选择的

技能选项里面也有个调用公共事件的选择啊,所以连起来就OK 了!
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1438
在线时间
328 小时
注册时间
2016-4-4
帖子
168

开拓者

3
 楼主| 发表于 2016-12-10 17:00:37 | 只看该作者
jiushiainilip19 发表于 2016-12-10 16:25
不是有强制行动的选择么,应该很容易就看得到啊。。。公共事件之间是可以连接的。。。!
事件指令第三页有 ...

我当然知道这玩意 我的意思是  怎么指定角色再次行动   强制行动里面只有第1位-第4位  没办法详细指定上一次使用技能的人  我需要的是指定使用该技能的使用者再次行动 的效果
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2385
在线时间
912 小时
注册时间
2014-10-14
帖子
1331

开拓者

4
发表于 2016-12-10 23:55:13 | 只看该作者
这个脚本 跟你说的差不多
RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自[url]www.66rpg.com[/url],转载与使用请保留此内容。
  3. #==============================================================================
  4. # ■ 追加攻击    Ver. 3.2.3                  by Claimh
  5. #------------------------------------------------------------------------------
  6. # [url]http://www.k3.dion.ne.jp/~claimh/[/url]
  7. #------------------------------------------------------------------------------
  8. # ·普通攻击时,如果时机很好地输按键(默认的回车),追加攻击发动。
  9. # ·自动发动,连续尾随回数也可设定
  10. # ·critical发动时动画不同…………总之看下面的自定义内容就可以了。
  11. #==============================================================================
  12.  
  13. module Add_attack
  14. #==============================================================================
  15. # □ 自定义内容开始
  16. #==============================================================================
  17.   # 启动追加攻击的按键(也就是说,默认情况下,攻击动画发动的时候按下回车键就会
  18.   # 发动追加攻击,类似FF8的枪刀)
  19.   ADD_ATK_KEY = Input::C
  20.  
  21.   # 伤害概括(?)
  22.   ADD_ATK_DMG_ALL = true            # 不需要的时候就false
  23.  
  24.   # 等待时间
  25.   ADD_ATK_WAIT = 4                  # 数值输入
  26.  
  27.   # 通常攻击如果Miss了就无法追加
  28.   ADD_ATK_MISS = true               # 如果Miss仍然可以追加,就 = true
  29.  
  30.   # Critical发生时动画发生变化
  31.   ADD_ATK_CRITICAL = true           # 不需要的话就 = false
  32.  
  33.   # 追加攻击成功时播放的声效
  34.   ADD_ATK_SE = "020-Teleport03"     # 不需要的话就 = nil
  35.  
  36.   # 追加攻击设定举例
  37.   # [武器ID, 追加攻击力(%), 追加动画ID,自动发生标志, 追加成功率,
  38.   #   连续回数, Criticle时的动画编号]
  39.   ADD1 = [1, 80, 30, false, 100, 5, 31]
  40.   ADD2 = [5, 150, 33, false, 50, 8, 34]
  41.   ADD3 = [25, 80, 42, false, 100, 8, 43]
  42.   ADD4 = [29, 150, 48, false, 20, 6, 49]
  43.  
  44.   # 将所有正确定义的内容添加进来
  45.   ADD_ATK = [ADD1, ADD2, ADD3, ADD4]
  46. #==============================================================================
  47. # □ 自定义内容结束
  48. #==============================================================================
  49. end
  50.  
  51. class Scene_Battle
  52.   include Add_attack
  53.   #--------------------------------------------------------------------------
  54.   #--------------------------------------------------------------------------
  55.   alias update_phase4_step1_add_atk update_phase4_step1
  56.   def update_phase4_step1
  57.     update_phase4_step1_add_atk
  58.     @add_atk_flg = false          # 追加攻击开始
  59.     $add_atk_exercise = false     # 追加攻击执行中
  60.     $add_atk_end = false          # 追加攻击终了
  61.     @add_atk_check_key = false    # 追加判定执行中
  62.     @add_atk_success = false      # 追加成功
  63.     @add_atk_count = 0            # 追加数
  64.     $add_atk_first = true         # 初期设定
  65.   end
  66.  
  67.   #--------------------------------------------------------------------------
  68.   #--------------------------------------------------------------------------
  69.   alias update_phase4_step3_add_atk update_phase4_step3
  70.   def update_phase4_step3
  71.     if $add_atk_exercise
  72.       @phase4_step = 4
  73.       return
  74.     elsif @active_battler.current_action.basic == 0
  75.       if @active_battler.is_a?(Game_Actor)
  76.         add_atk_check(@active_battler)
  77.       end
  78.     end
  79.     update_phase4_step3_add_atk
  80.   end
  81.  
  82.   #--------------------------------------------------------------------------
  83.   #--------------------------------------------------------------------------
  84.   def add_atk_check(actor)
  85.     for i in 0..ADD_ATK.size-1
  86.       $add_atk_set = ADD_ATK[i]
  87.       if actor.weapon_id  == $add_atk_set[0]
  88.         @add_atk_flg = true
  89.         return
  90.       end
  91.     end
  92.   end
  93.  
  94.   #--------------------------------------------------------------------------
  95.   #--------------------------------------------------------------------------
  96.   alias update_phase4_step4_add_atk update_phase4_step4
  97.   def update_phase4_step4
  98.     # 追加攻击
  99.     if @add_atk_flg
  100.       @add_atk_check_key = true
  101.       if $add_atk_exercise
  102.         @animation2_id = $add_atk_set[2]
  103.       end
  104.       for target in @target_battlers
  105.         if ADD_ATK_CRITICAL and target.critical and $add_atk_first
  106.           target.animation_id = $add_atk_set[6]
  107.         else
  108.           if target.one_critical and ADD_ATK_DMG_ALL
  109.             target.critical = true
  110.           end
  111.           target.animation_id = @animation2_id
  112.         end
  113.         target.animation_hit = (target.damage != "Miss")
  114.       end
  115.       if ADD_ATK_WAIT != nil
  116.         @wait_count = ADD_ATK_WAIT
  117.       end
  118.       @phase4_step = 5
  119.       return
  120.     end
  121.     update_phase4_step4_add_atk     # 原内容
  122.   end
  123.  
  124.   #--------------------------------------------------------------------------
  125.   #--------------------------------------------------------------------------
  126.   alias update_phase4_step5_add_atk update_phase4_step5
  127.   def update_phase4_step5
  128.     @add_atk_check_key = false
  129.     # 追加成功
  130.     if @add_atk_success
  131.       $add_atk_exercise = true
  132.     end
  133.     if ADD_ATK_DMG_ALL and $add_atk_exercise
  134.       # 追加终了 or 追加失败
  135.       if $add_atk_end or !@add_atk_success
  136.         $add_atk_exercise = false
  137.         @add_atk_flg = false
  138.         $add_atk_end = false
  139.         @help_window.visible = false
  140.         @status_window.refresh
  141.         for target in @target_battlers
  142.           if target.add_atk_all_dmg != nil
  143.             target.damage = target.add_atk_all_dmg
  144.             target.damage_pop = true
  145.             target.add_atk_all_dmg = nil
  146.             if target.add_atk_dead_end
  147.               target.hp = 0
  148.               target.add_atk_dead_end = false
  149.             end
  150.           end
  151.         end
  152.         @phase4_step = 6
  153.         return
  154.       end
  155.     else
  156.       update_phase4_step5_add_atk
  157.     end
  158.     if $add_atk_end or !@add_atk_success
  159.       $add_atk_exercise = false
  160.       @add_atk_flg = false
  161.       $add_atk_end = false
  162.       if ADD_ATK_DMG_ALL
  163.         for target in @target_battlers
  164.           target.add_atk_all_dmg = nil
  165.           if target.add_atk_dead_end
  166.             target.hp = 0
  167.           end
  168.         end
  169.       end
  170.     end
  171.     if $add_atk_exercise
  172.       @add_atk_success = false
  173.       @phase4_step = 2
  174.     end
  175.   end
  176.  
  177.   #--------------------------------------------------------------------------
  178.   #--------------------------------------------------------------------------
  179.   alias update_add_atk update
  180.   def update
  181.     if @add_atk_check_key and @add_atk_flg
  182.       if (Input.trigger?(ADD_ATK_KEY) or $add_atk_set[3])
  183.         if rand(100) <= $add_atk_set[4]
  184.           @add_atk_success = true
  185.           @add_atk_check_key = false
  186.           @add_atk_count += 1
  187.           if @add_atk_count >= $add_atk_set[5] or $add_atk_end
  188.             $add_atk_end = true
  189.           else
  190.             if ADD_ATK_SE != nil and !$add_atk_end
  191.               Audio.se_play("Audio/SE/" + ADD_ATK_SE)
  192.             end
  193.           end
  194.         end
  195.       end
  196.     end
  197.     update_add_atk
  198.   end
  199.  
  200.   #--------------------------------------------------------------------------
  201.   #--------------------------------------------------------------------------
  202.   alias update_phase4_step6_add_atk update_phase4_step6
  203.   def update_phase4_step6
  204.     @add_atk_flg = false         
  205.     $add_atk_exercise = false     
  206.     $add_atk_end = false         
  207.     @add_atk_check_key = false   
  208.     @add_atk_success = false      
  209.     @add_atk_count = 0            
  210.     $add_atk_first = false        
  211.     update_phase4_step6_add_atk
  212.   end
  213. end
  214.  
  215.  
  216. #==============================================================================
  217. # ■ Game_Battler
  218. #==============================================================================
  219. class Game_Battler
  220.   include Add_attack
  221.   attr_accessor :add_atk_all_dmg           
  222.   attr_accessor :add_atk_dead_end         
  223.   attr_accessor :one_critical              
  224.   #--------------------------------------------------------------------------
  225.   #--------------------------------------------------------------------------
  226.   alias initialize_skill_add_atk initialize
  227.   def initialize
  228.     initialize_skill_add_atk
  229.     @add_atk_all_dmg = nil
  230.     @add_atk_dead_end = false
  231.     @one_critical = false
  232.   end
  233.  
  234.   #--------------------------------------------------------------------------
  235.   #--------------------------------------------------------------------------
  236.   alias attack_effect_addition attack_effect
  237.   def attack_effect(attacker)
  238.     if $add_atk_exercise
  239.       self.critical = false
  240.       atk = [attacker.atk * $add_atk_set[1]/100 - self.pdef / 2, 0].max
  241.       self.damage = atk * (20 + attacker.str) / 20
  242.       self.damage *= elements_correct(attacker.element_set)
  243.       self.damage /= 100
  244.       if self.damage > 0
  245.         if rand(100) < 4 * attacker.dex / self.agi
  246.           self.damage *= 2
  247.           self.critical = true
  248.           self.one_critical = true
  249.         end
  250.         if self.guarding?
  251.           self.damage /= 2
  252.         end
  253.       end
  254.       if self.damage.abs > 0
  255.         amp = [self.damage.abs * 15 / 100, 1].max
  256.         self.damage += rand(amp+1) + rand(amp+1) - amp
  257.       end
  258.       eva = 8 * self.agi / attacker.dex + self.eva
  259.       hit = self.damage < 0 ? 100 : 100 - eva
  260.       hit = self.cant_evade? ? 100 : hit
  261.       hit_result = (rand(100) < hit)
  262.       if hit_result == true
  263.         remove_states_shock
  264.         self.hp -= self.damage
  265.         @state_changed = false
  266.         states_plus(attacker.plus_state_set)
  267.         states_minus(attacker.minus_state_set)
  268.       else
  269.         self.damage = "Miss"
  270.         self.critical = false
  271.       end
  272.     else
  273.       attack_effect_addition(attacker)  
  274.     end
  275.     if self.dead?
  276.       @add_atk_dead_end = true
  277.       if ADD_ATK_DMG_ALL and ($add_atk_exercise or $add_atk_first)
  278.         self.hp = 1
  279.       else
  280.         $add_atk_end = true
  281.       end
  282.     end
  283.     if ADD_ATK_DMG_ALL and self.damage != "Miss" and $add_atk_exercise
  284.       @add_atk_all_dmg = (@add_atk_all_dmg == nil ? 0 : @add_atk_all_dmg)
  285.       @add_atk_all_dmg += self.damage
  286.       self.damage = nil
  287.     elsif ADD_ATK_DMG_ALL and self.damage != "Miss" and $add_atk_first
  288.       @add_atk_all_dmg = (@add_atk_all_dmg == nil ? 0 : @add_atk_all_dmg)
  289.       @add_atk_all_dmg += self.damage
  290.       $add_atk_first = false
  291.     else
  292.       if ADD_ATK_MISS and self.damage == "Miss"
  293.         $add_atk_end = true
  294.         if ADD_ATK_DMG_ALL and @add_atk_all_dmg == nil
  295.           @add_atk_all_dmg = "Miss"
  296.         end
  297.       end
  298.     end
  299.     return true
  300.   end
  301. end
  302.  
  303.  
  304.  
  305.  
  306. 2、特技的追加攻击:
  307.  
  308. #==============================================================================
  309. # 本脚本来自[url]www.66rpg.com[/url],转载与使用请保留此内容。
  310. #==============================================================================
  311. # ■ 技能连击追加    Ver. 3.2.3                  by Claimh
  312. #------------------------------------------------------------------------------
  313. # [url]http://www.k3.dion.ne.jp/~claimh/[/url]
  314. #------------------------------------------------------------------------------
  315.  
  316. module Skill_chase
  317.   #==============================================================================
  318.   # □ 自定义内容开始
  319.   #==============================================================================
  320.   # 追加攻击按键
  321.   SKILL_CHASE_KEY = Input::C
  322.  
  323.   # 导入技艺水平制(?)
  324.   USE_SKILL_LEVEL = false      # 不要的话就false
  325.  
  326.   # 损伤表示
  327.   SKILL_CHASE_DMG_ALL = true          # 不要的话就false
  328.  
  329.   # 等待时间
  330.   SKILL_CHASE_WAIT = 4                # 输入一个数值
  331.  
  332.   # 要是Miss就不追加攻击。true/false
  333.   SKILL_CHASE_MISS = true
  334.  
  335.   # CRITICAL动画变化。true/false
  336.   SKILL_CHASE_CRITICAL = true
  337.  
  338.   # 物理攻击系特技的属性ID
  339.   CHASE_WEAPON = 19
  340.  
  341.   # 魔法攻击系特技的属性ID  #——这两个要注意。
  342.   CHASE_MAGIC = 20
  343.  
  344.   # 成功时发出的SE声音
  345.   SKILL_CHASE_SE = "020-Teleport03"     # 不需要的话就nil
  346.  
  347.   # 设定举例
  348.   # [特技ID,追加攻击的攻击力(%),连锁动画ID,成功率,
  349.   #  连续回数,critical时候动画ID]
  350.   CHASE1 = [57, 100, 31, false, 100, 5, 32]
  351.   CHASE2 = [61, 100, 42, false, 100, 4, 43]
  352.  
  353.   # 将以上内容拿下来
  354.   SKILL_CHASE = [CHASE1, CHASE2]
  355.   #==============================================================================
  356.   # □ 自定义内容结束
  357.   #==============================================================================
  358. end
  359.  
  360. class Scene_Battle
  361.   include Skill_chase
  362.   #--------------------------------------------------------------------------
  363.   # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  364.   #--------------------------------------------------------------------------
  365.   alias update_phase4_step1_skill_chase update_phase4_step1
  366.   def update_phase4_step1
  367.     update_phase4_step1_skill_chase
  368.     @skill_chase_flg = false          # 追加攻撃開始
  369.     $skill_chase_exercise = false     # 追加攻撃実行中
  370.     $skill_chase_end = false          # 追加攻撃終了
  371.     @skill_chase_check_key = false    # 追加攻撃判定実行中
  372.     @skill_chase_success = false      # 追加攻撃成功
  373.     @skill_chase_count = 0            # 追加攻撃数カウント
  374.     $skill_chase_first = true         # 初期フラグ
  375.   end
  376.  
  377.   #--------------------------------------------------------------------------
  378.   # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  379.   #--------------------------------------------------------------------------
  380.   alias update_phase4_step3_skill_chase update_phase4_step3
  381.   def update_phase4_step3
  382.     # 追加攻撃実行中ならステップ4に強制移行
  383.     if $skill_chase_exercise
  384.       # ステップ 4 に移行
  385.       @phase4_step = 4
  386.       return
  387.     elsif @active_battler.current_action.kind == 1
  388.       if @active_battler.is_a?(Game_Actor)
  389.         # 追加攻撃チェック
  390.         skill_chase_check(@skill)
  391.       end
  392.     end
  393.     update_phase4_step3_skill_chase       # 原物
  394.   end
  395.  
  396.  
  397.   #--------------------------------------------------------------------------
  398.   # ● 判定・設定
  399.   #--------------------------------------------------------------------------
  400.   def skill_chase_check(skill)
  401.     for i in 0..SKILL_CHASE.size-1
  402.       $skill_chase_set = SKILL_CHASE[i]
  403.       if skill.id  == $skill_chase_set[0]
  404.         @skill_chase_flg = true
  405.         return
  406.       end
  407.     end
  408.   end
  409.  
  410.   #--------------------------------------------------------------------------
  411.   # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  412.   #--------------------------------------------------------------------------
  413.   alias update_phase4_step4_skill_chase update_phase4_step4
  414.   def update_phase4_step4
  415.     # 追加攻撃
  416.     if @skill_chase_flg
  417.       # キーチェックを開始する
  418.       @skill_chase_check_key = true
  419.       # 追加攻撃実行中ならアニメーション再セット
  420.       if $skill_chase_exercise
  421.         @animation2_id = $skill_chase_set[2]
  422.       end
  423.       # 対象側アニメーション
  424.       for target in @target_battlers
  425.         # クリティカルでアニメーション変化
  426.         if SKILL_CHASE_CRITICAL and target.critical and $skill_chase_first
  427.           target.animation_id = $skill_chase_set[6]
  428.         else
  429.           # 一度でもクリティカルがあった
  430.           if target.once_critical and SKILL_CHASE_DMG_ALL
  431.             target.critical = true
  432.           end
  433.           target.animation_id = @animation2_id
  434.         end
  435.         target.animation_hit = (target.damage != "Miss")
  436.       end
  437.       # ウェイトを入れる
  438.       if SKILL_CHASE_WAIT != nil
  439.         @wait_count = SKILL_CHASE_WAIT
  440.       end
  441.       # ステップ 5 に移行
  442.       @phase4_step = 5
  443.       return
  444.     end
  445.     update_phase4_step4_skill_chase     # 原物
  446.   end
  447.  
  448.   #--------------------------------------------------------------------------
  449.   # ● 追加攻撃力設定
  450.   #--------------------------------------------------------------------------
  451.   def skill_chase_atk
  452.     # 物理攻撃系
  453.     if @skill.element_set.include?(CHASE_WEAPON)
  454.       $chase_skill_type = 1
  455.       $skill_atk_f = @skill.atk_f/100
  456.     # 魔法攻撃系
  457.     elsif @skill.element_set.include?(CHASE_MAGIC)
  458.       $chase_skill_type = 2
  459.       $skill_atk_f = @skill.int_f/100
  460.     else
  461.       p "設定ミス"
  462.     end
  463.     $skill_chase_set[1] = @skill.power * $skill_chase_set[1]/100
  464.   end
  465.  
  466.   #--------------------------------------------------------------------------
  467.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  468.   #--------------------------------------------------------------------------
  469.   alias update_phase4_step5_skill_chase update_phase4_step5
  470.   def update_phase4_step5
  471.     # キーチェック終了
  472.     @skill_chase_check_key = false
  473.     # 追加攻撃成功
  474.     if @skill_chase_success
  475.       skill_chase_atk
  476.       # 追加攻撃実行中に移行
  477.       $skill_chase_exercise = true
  478.     end
  479.     # ダメージ一括表示
  480.     if SKILL_CHASE_DMG_ALL and $skill_chase_exercise
  481.       # 追加攻撃終了or追加攻撃失敗
  482.       if $skill_chase_end or !@skill_chase_success
  483.         $skill_chase_exercise = false
  484.         @skill_chase_flg = false
  485.         $skill_chase_end = false
  486.         # ヘルプウィンドウを隠す
  487.         @help_window.visible = false
  488.         # ステータスウィンドウをリフレッシュ
  489.         @status_window.refresh
  490.         # 積算ダメージの描写
  491.         for target in @target_battlers
  492.           if target.skill_chase_all_dmg != nil
  493.             target.damage = target.skill_chase_all_dmg
  494.             target.damage_pop = true
  495.             target.skill_chase_all_dmg = nil
  496.             # 途中で死んでたらトドメをさす
  497.             if target.skill_chase_dead_end
  498.               target.hp = 0
  499.               target.skill_chase_dead_end = false
  500.             end
  501.           end
  502.         end
  503.         # ステップ 6 に移行
  504.         @phase4_step = 6
  505.         return
  506.       end
  507.     else
  508.       update_phase4_step5_skill_chase       # 原物
  509.     end
  510.     # 追加攻撃終了or追加攻撃失敗
  511.     if $skill_chase_end or !@skill_chase_success
  512.       $skill_chase_exercise = false
  513.       @skill_chase_flg = false
  514.       $skill_chase_end = false
  515.       if SKILL_CHASE_DMG_ALL
  516.         for target in @target_battlers
  517.           target.skill_chase_all_dmg = nil
  518.           if target.skill_chase_dead_end
  519.             target.hp = 0
  520.           end
  521.         end
  522.       end
  523.     end
  524.     if $skill_chase_exercise
  525.       @skill_chase_success = false
  526.       # 追加攻撃開始
  527.       @phase4_step = 2
  528.       @active_battler.current_action.kind = 0
  529.       @active_battler.current_action.basic = 0
  530.     end
  531.   end
  532.  
  533.   #--------------------------------------------------------------------------
  534.   # ● フレーム更新
  535.   #--------------------------------------------------------------------------
  536.   alias update_skill_chase update
  537.   def update
  538.     if @skill_chase_check_key and @skill_chase_flg
  539.       # 追加攻撃発動チェック
  540.       if (Input.trigger?(SKILL_CHASE_KEY) or $skill_chase_set[3])
  541.         # 確率チェック
  542.         if rand(100) <= $skill_chase_set[4]
  543.           @skill_chase_success = true
  544.           @skill_chase_check_key = false
  545.           @skill_chase_count += 1
  546.           # 追加攻撃回数チェック
  547.           if @skill_chase_count >= $skill_chase_set[5] or $skill_chase_end
  548.             $skill_chase_end = true
  549.           else
  550.             # 追加攻撃成功SEを鳴らしてみる
  551.             if SKILL_CHASE_SE != nil or !$skill_chase_end
  552.               Audio.se_play("Audio/SE/" + SKILL_CHASE_SE)
  553.             end
  554.           end
  555.         end
  556.       end
  557.     end
  558.     update_skill_chase              # 原物
  559.   end
  560.  
  561.   #--------------------------------------------------------------------------
  562.   # ● スキルレベル取得
  563.   #--------------------------------------------------------------------------
  564.   def get_skill_level
  565.     return $game_actors[@activ_battler.eid].skill_level[@skill.id]
  566.   end
  567. end
  568.  
  569.  
  570. #==============================================================================
  571. # ■ Game_Battler
  572. #==============================================================================
  573. class Game_Battler
  574.   include Skill_chase
  575.   attr_accessor :skill_chase_all_dmg           # 積算ダメージ
  576.   attr_accessor :skill_chase_dead_end          # 死亡フラグ
  577.   attr_accessor :once_critical           # クリティカルフラグ(一括表示用)
  578.   #--------------------------------------------------------------------------
  579.   # ● オブジェクト初期化
  580.   #--------------------------------------------------------------------------
  581.   alias initialize_skill_chase initialize
  582.   def initialize
  583.     initialize_skill_chase
  584.     @skill_chase_all_dmg = nil
  585.     @skill_chase_dead_end = false
  586.     @once_critical = false
  587.   end
  588.  
  589.   #--------------------------------------------------------------------------
  590.   # ● 通常攻撃の効果適用
  591.   #     attacker : 攻撃者 (バトラー)
  592.   #--------------------------------------------------------------------------
  593.   alias attack_effect_skill_chase attack_effect
  594.   def attack_effect(attacker)
  595.     if $skill_chase_exercise
  596.       # クリティカルフラグをクリア
  597.       self.critical = false
  598.       # 基本ダメージを計算
  599.       if $chase_skill_type == 1
  600.         atk_skill = (attacker.atk * $skill_atk_f + $skill_chase_set[1])/1.2
  601.       elsif $chase_skill_type == 2
  602.         atk_skill = (attacker.int * $skill_atk_f + $skill_chase_set[1])/1.2
  603.       else
  604.         p "設定ミス2"
  605.       end
  606.       atk = [atk_skill.to_int - self.pdef / 2, 0].max
  607.       self.damage = atk * (20 + attacker.str) / 20
  608.       # 属性修正
  609.       self.damage *= elements_correct(attacker.element_set)
  610.       self.damage /= 100
  611.       # ダメージの符号が正の場合
  612.       if self.damage > 0
  613.         # クリティカル修正
  614.         if rand(100) < 4 * attacker.dex / self.agi
  615.           self.damage *= 2
  616.           self.critical = true
  617.           self.once_critical = true
  618.         end
  619.         # 防御修正
  620.         if self.guarding?
  621.           self.damage /= 2
  622.         end
  623.       end
  624.       # 分散
  625.       if self.damage.abs > 0
  626.         amp = [self.damage.abs * 15 / 100, 1].max
  627.         self.damage += rand(amp+1) + rand(amp+1) - amp
  628.       end
  629.       # 第二命中判定
  630.       eva = 8 * self.agi / attacker.dex + self.eva
  631.       hit = self.damage < 0 ? 100 : 100 - eva
  632.       hit = self.cant_evade? ? 100 : hit
  633.       hit_result = (rand(100) < hit)
  634.       # 命中の場合
  635.       if hit_result == true
  636.         # ステート衝撃解除
  637.         remove_states_shock
  638.         # HP からダメージを減算
  639.         self.hp -= self.damage
  640.         # ステート変化
  641.         @state_changed = false
  642.         states_plus(attacker.plus_state_set)
  643.         states_minus(attacker.minus_state_set)
  644.       # ミスの場合
  645.       else
  646.         # ダメージに "Miss" を設定
  647.         self.damage = "Miss"
  648.         # クリティカルフラグをクリア
  649.         self.critical = false
  650.       end
  651.     else
  652.       attack_effect_skill_chase(attacker)      # 原物
  653.     end
  654.     if self.dead?
  655.       # こいつはもう死んでいる
  656.       @skill_chase_dead_end = true
  657.       # ダメージ一括表示
  658.       if SKILL_CHASE_DMG_ALL and $skill_chase_exercise
  659.         # とりあえず生かしておく
  660.         self.hp = 1
  661.       else
  662.         $skill_chase_end = true
  663.       end
  664.     end
  665.     # ダメージ一括表示ならダメージの蓄積
  666.     if SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $skill_chase_exercise
  667.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  668.       @skill_chase_all_dmg += self.damage
  669.       self.damage = nil
  670.     elsif SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $skill_chase_first
  671.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  672.       @skill_chase_all_dmg += self.damage
  673.       $skill_chase_first = false
  674.     else
  675.       # ダメージミスなら終了
  676.       if SKILL_CHASE_MISS and self.damage == "Miss"
  677.         $skill_chase_end = true
  678.         if SKILL_CHASE_DMG_ALL and @skill_chase_all_dmg == nil
  679.           @skill_chase_all_dmg = "Miss"
  680.         end
  681.       end
  682.     end
  683.     # メソッド終了
  684.     return true
  685.   end
  686.  
  687.   #--------------------------------------------------------------------------
  688.   # ● スキルの効果適用
  689.   #     user  : スキルの使用者 (バトラー)
  690.   #     skill : スキル
  691.   #--------------------------------------------------------------------------
  692.   alias skill_effect_skill_chase skill_effect
  693.   def skill_effect(user, skill)
  694.     ret = skill_effect_skill_chase(user, skill)
  695.     if self.dead?
  696.       # こいつはもう死んでいる
  697.       @skill_chase_dead_end = true
  698.       # ダメージ一括表示
  699.       if SKILL_CHASE_DMG_ALL and ($skill_chase_exercise or $skill_chase_first)
  700.         # とりあえず生かしておく
  701.         self.hp = 1
  702.       else
  703.         $skill_chase_end = true
  704.       end
  705.     end
  706.     # ダメージ一括表示ならダメージの蓄積
  707.     if SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $skill_chase_exercise
  708.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  709.       @skill_chase_all_dmg += self.damage
  710.       self.damage = nil
  711.     elsif SKILL_CHASE_DMG_ALL and self.damage != "Miss" and $skill_chase_first
  712.       @skill_chase_all_dmg = (@skill_chase_all_dmg == nil ? 0 : @skill_chase_all_dmg)
  713.       @skill_chase_all_dmg = self.damage
  714.       $skill_chase_first = false
  715.     else
  716.       # ダメージミスなら終了
  717.       if SKILL_CHASE_MISS and self.damage == "Miss"
  718.         $skill_chase_end = true
  719.         if SKILL_CHASE_DMG_ALL and @skill_chase_all_dmg == nil
  720.           @skill_chase_all_dmg = "Miss"
  721.         end
  722.       end
  723.     end
  724.     return ret
  725.   end
  726. end
------落尽红樱君不见,轻绘梨花泪沾衣。~~~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1438
在线时间
328 小时
注册时间
2016-4-4
帖子
168

开拓者

5
 楼主| 发表于 2016-12-11 16:19:49 | 只看该作者
j296196585 发表于 2016-12-10 23:55
这个脚本 跟你说的差不多#============================================================================ ...

不... 感觉差的有点远...   我想要的效果是  这个角色用完一个技能后 自动释放另一个技能   并不是手动控制的 用公共事件的强制行动的话 又不知道判定条件怎么写  

点评

好吧  发表于 2016-12-11 21:53
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
270
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

6
发表于 2016-12-12 11:24:16 | 只看该作者
你可以说的再具体些,比如一开始释放的技能是单体对敌技能还是什么,然后后续自动释放的技能又是什么样的技能。

点评

就是一个人使用一个技能后通过公共事件或是脚本来让这个人自动再用一次别的技能  发表于 2016-12-16 22:40
我觉得他想表达的是技能之间的自动连续对接技能1-2-3-4结束!  发表于 2016-12-12 15:16
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1438
在线时间
328 小时
注册时间
2016-4-4
帖子
168

开拓者

7
 楼主| 发表于 2016-12-24 11:55:48 | 只看该作者
好吧  终于找到了  在公共事件的条件分歧里写入$game_party.actors[0].id == 角色id  (“[0]”中的0是队伍中排头的人 以此类推 将里面的“0”换成“1”,“2”,“3”,分别对应 第 2 ,第3 ,第4人 ) 就行了   

点评

另外 我找到了一个插件 以后可以在==后面写@attacker代表使用者 @targets代表被选中的对象  发表于 2016-12-24 21:37
这个 由于目前这种技能不是很常见 所以 特别指定只有某个角色才能使用 所以 可以用这个 id特别指定  发表于 2016-12-24 21:36
问题不应该是怎么判断是0123哪个人在使用吗  发表于 2016-12-24 18:12
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

8
发表于 2016-12-28 20:53:05 | 只看该作者
本帖最后由 guoxiaomi 于 2016-12-28 22:34 编辑

占坑晚上回去写~

=== === ===
如何获取特技的使用者和被使用者
一个快速的方法是在脚本里添加:
RUBY 代码复制
  1. class Scene_Battle
  2.   attr_reader     :active_battler
  3.   attr_reader     :target_battlers
  4. end

然后技能调用公共事件,事件脚本里用'$scene.active_battler'就是使用者的Game_Actor/Game_Enemy对象。
事件脚本里用'$scene.target_battlers[0]'就是第一个目标的Game_Actor/Game_Enemy对象。
如果技能是单目标的话就是唯一的那个目标。

如何紧接着使用技能:
技能调用公共事件,公共事件里添加事件脚本:
RUBY 代码复制
  1. @a = $scene.active_battler
  2. @action = @a.current_action
  3. @action.kind = 1
  4. @action.skill_id = 10
  5. @action.target_index = 0
  6. $game_temp.forcing_battler = @a

这样就会紧接着使用第10号特技,目标编号是第0个敌人/队友。如果第10号特技的目标不是单体,target_index无需设置。

关于action的各属性的设置方法,可以参见Game_BattleAction类的第8-18行,如果设置了forcing属性为true,技能会无视SP强制触发。
RUBY 代码复制
  1. class Game_BattleAction
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_accessor :speed                    # 速度
  6.   attr_accessor :kind                     # 种类 (基本 / 特技 / 物品)
  7.   attr_accessor :basic                    # 基本 (攻击 / 防御 / 逃跑)
  8.   attr_accessor :skill_id                 # 特技 ID
  9.   attr_accessor :item_id                  # 物品 ID
  10.   attr_accessor :target_index             # 对像索引
  11.   attr_accessor :forcing                  # 强制标志


使用物品也是一样的。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9138
在线时间
464 小时
注册时间
2015-5-8
帖子
865
9
发表于 2019-7-21 19:34:24 | 只看该作者
guoxiaomi 发表于 2016-12-28 20:53
占坑晚上回去写~

=== === ===

请教大神这段:
“然后技能调用公共事件,事件脚本里用'$scene.active_battler'就是使用者的Game_Actor/Game_Enemy对象。
事件脚本里用'$scene.target_battlers[0]'就是第一个目标的Game_Actor/Game_Enemy对象。
如果技能是单目标的话就是唯一的那个目标。”

咱还是不太懂,尤其是那两个“就是”...

点评

每个敌人和队友都是一个对象(Object),大概这么去理解吧  发表于 2019-7-24 21:56
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36206
在线时间
10729 小时
注册时间
2009-3-15
帖子
4826
10
发表于 2019-7-21 19:48:46 | 只看该作者
taeckle 发表于 2019-7-21 19:34
请教大神这段:
“然后技能调用公共事件,事件脚本里用'$scene.active_battler'就是使用者的Game_Actor/G ...

有你这样问问题的吗..大神都没法答你..
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-4-4 13:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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