Project1

标题: 新人求助 [打印本页]

作者: 中二大魔王    时间: 2017-4-18 20:00
标题: 新人求助
想帮表侄完成一个游戏,主角像刀剑里的桐人一样会二刀流,我想设定为主角每次普通攻击都会造成两次相等的伤害,怎么做?
我自己不用脚步,直接用事件做出来好像不行,求教!

333.png (64.99 KB, 下载次数: 20)

333.png

444.png (68.87 KB, 下载次数: 16)

444.png

555.png (68.13 KB, 下载次数: 19)

555.png

作者: soulsaga    时间: 2017-4-18 20:24
就是把单次伤害平分?
作者: 中二大魔王    时间: 2017-4-18 20:33
soulsaga 发表于 2017-4-18 20:24
就是把单次伤害平分?

不是,是把第一次造成的伤害再造成多一次,做到一次攻击,两次伤害的效果
作者: 中二大魔王    时间: 2017-4-18 20:34
哦哦,好的,谢谢
作者: soulsaga    时间: 2017-4-18 20:39
其实我觉得2刀流应该这样计算..力量+物攻+右手武器攻击为一次伤害
力量+物攻+左手武器攻击为一次伤害
作者: 中二大魔王    时间: 2017-4-18 21:08
soulsaga 发表于 2017-4-18 20:39
其实我觉得2刀流应该这样计算..力量+物攻+右手武器攻击为一次伤害
力量+物攻+左手武器攻击为一次伤害 ...

可以,但我不会做出这种效果,求教……
作者: 芯☆淡茹水    时间: 2017-4-18 21:28
  1. #==============================================================================
  2. # ★ 二次行动 ★       -> by   芯☆淡茹水
  3. #==============================================================================
  4. # ● 使用方法:复制脚本,插入到 main 前。
  5. #==============================================================================
  6. # ● 说明:
  7. #           二次行动相关的因素有:角色ID;职业ID;武器ID;防具ID;技能ID;
  8. #                                 敌人ID;状态ID。
  9. #
  10. #           在下面的设置项里,设置好对应项目的ID和二次行动的几率即可。
  11. #           格式为:项目ID => 几率
  12. #     
  13. #==============================================================================
  14. # ● 设置:
  15. module X☆R
  16.   #--------------------------------------------------------------------------
  17.   # 禁止二次行动的开关ID(打开禁止,关闭取消禁止)。
  18.   MOVE_AGAIN_SWITCH = 10
  19.   
  20.   #--------------------------------------------------------------------------
  21.   # 二次行动的角色ID和几率。
  22.   MOVE_AGAIN_ACTOR = {6=>15,8=>10}
  23.   
  24.   #--------------------------------------------------------------------------
  25.   # 二次行动的职业ID和几率。
  26.   MOVE_AGAIN_CLASS = {4=>10}
  27.   
  28.   #--------------------------------------------------------------------------
  29.   # 二次行动的武器ID和几率。
  30.   MOVE_AGAIN_WEAPON = {2=>18}
  31.   
  32.   #--------------------------------------------------------------------------
  33.   # 二次行动的防具ID和几率。
  34.   MOVE_AGAIN_ARMOR = {27=>22}
  35.   
  36.   #--------------------------------------------------------------------------
  37.   # 二次行动的技能ID和几率。
  38.   MOVE_AGAIN_SKILL = {81=>45}
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # 二次行动的敌人ID和几率。
  42.   MOVE_AGAIN_ENEMY = {1=>30}
  43.   
  44.   #--------------------------------------------------------------------------
  45.   # 二次行动的状态ID和几率。
  46.   MOVE_AGAIN_STATE = {17=>100}
  47. end
  48. #==============================================================================
  49. class Game_Battler
  50.   attr_accessor :move_again
  51.   #--------------------------------------------------------------------------
  52.   alias old_initialize_xr initialize
  53.   def initialize
  54.     @move_again = false
  55.     old_initialize_xr
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   def set_move_again
  59.     return unless exist?
  60.     return  if $game_switches[X☆R::MOVE_AGAIN_SWITCH]
  61.     if self.is_a?(Game_Actor)
  62.       if X☆R::MOVE_AGAIN_ACTOR.keys.include?(self.id)
  63.         if rand(100) < X☆R::MOVE_AGAIN_ACTOR[self.id]
  64.           @move_again = true
  65.           return
  66.         end
  67.       end
  68.       if X☆R::MOVE_AGAIN_CLASS.keys.include?(@class_id)
  69.         if rand(100) < X☆R::MOVE_AGAIN_CLASS[@class_id]
  70.           @move_again = true
  71.           return
  72.         end
  73.       end
  74.       if X☆R::MOVE_AGAIN_WEAPON.keys.include?(@weapon_id)
  75.         if rand(100) < X☆R::MOVE_AGAIN_WEAPON[@weapon_id]
  76.           @move_again = true
  77.           return
  78.         end
  79.       end
  80.       for a_id in [@armor1_id,@armor2_id,@armor3_id,@armor4_id]
  81.         if X☆R::MOVE_AGAIN_ARMOR.keys.include?(a_id)
  82.           if rand(100) < X☆R::MOVE_AGAIN_ARMOR[a_id]
  83.             @move_again = true
  84.             return
  85.           end
  86.         end
  87.       end
  88.       for s_id in X☆R::MOVE_AGAIN_SKILL.keys
  89.         if skill_learn?(s_id)
  90.           if rand(100) < X☆R::MOVE_AGAIN_SKILL[s_id]
  91.             @move_again = true
  92.             return
  93.           end
  94.         end
  95.       end
  96.     else
  97.       if X☆R::MOVE_AGAIN_ENEMY.keys.include?(self.id)
  98.         if rand(100) < X☆R::MOVE_AGAIN_ENEMY[self.id]
  99.           @move_again = true
  100.           return
  101.         end
  102.       end
  103.     end
  104.     for st_id in X☆R::MOVE_AGAIN_STATE.keys
  105.       if state?(st_id)
  106.         if rand(100) < X☆R::MOVE_AGAIN_STATE[st_id]
  107.           @move_again = true
  108.           return
  109.         end
  110.       end
  111.     end
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   alias old_make_action_speed_xr make_action_speed
  115.   def make_action_speed
  116.     set_move_again
  117.     old_make_action_speed_xr
  118.   end
  119. end
  120. #==============================================================================
  121. class Scene_Battle
  122.   #--------------------------------------------------------------------------
  123.   # ● 刷新画面 (主回合步骤 1 : 准备行动)
  124.   #--------------------------------------------------------------------------
  125.   def update_phase4_step1
  126.     # 隐藏帮助窗口
  127.     @help_window.visible = false
  128.     # 判定胜败
  129.     if judge
  130.       # 胜利或者失败的情况下 : 过程结束
  131.       return
  132.     end
  133.     # 强制行动的战斗者不存在的情况下
  134.     if $game_temp.forcing_battler == nil
  135.       # 设置战斗事件
  136.       setup_battle_event
  137.       # 执行战斗事件中的情况下
  138.       if $game_system.battle_interpreter.running?
  139.         return
  140.       end
  141.     end
  142.     # 强制行动的战斗者存在的情况下
  143.     if $game_temp.forcing_battler != nil
  144.       # 在头部添加后移动
  145.       @action_battlers.delete($game_temp.forcing_battler)
  146.       @action_battlers.unshift($game_temp.forcing_battler)
  147.     end
  148.     # 未行动的战斗者不存在的情况下 (全员已经行动)
  149.     if @action_battlers.size == 0
  150.       # 开始同伴命令回合
  151.       start_phase2
  152.       return
  153.     end
  154.     # 初始化动画 ID 和公共事件 ID
  155.     @animation1_id = 0
  156.     @animation2_id = 0
  157.     @common_event_id = 0
  158.     ######################################################################
  159.     if @action_battlers[0].move_again
  160.       again_battler = @action_battlers[0]
  161.       if again_battler != $game_temp.forcing_battler
  162.         @action_battlers.unshift(again_battler)
  163.       end
  164.       again_battler.move_again = false
  165.     end
  166.     ######################################################################
  167.     # 未行动的战斗者移动到序列的头部
  168.     @active_battler = @action_battlers.shift
  169.     # 如果已经在战斗之外的情况下
  170.     if @active_battler.index == nil
  171.       return
  172.     end
  173.     # 连续伤害
  174.     if @active_battler.hp > 0 and @active_battler.slip_damage?
  175.       @active_battler.slip_damage_effect
  176.       @active_battler.damage_pop = true
  177.     end
  178.     # 自然解除状态
  179.     @active_battler.remove_states_auto
  180.     # 刷新状态窗口
  181.     @status_window.refresh
  182.     # 移至步骤 2
  183.     @phase4_step = 2
  184.   end
  185. end
  186. #==============================================================================
复制代码

作者: 中二大魔王    时间: 2017-4-18 22:57
芯☆淡茹水 发表于 2017-4-18 21:28

谢谢!谢谢帮助!那请问,如果要敌人无法闪避我的攻击,应该怎么做?
作者: guoxiaomi    时间: 2017-4-20 19:49
快去看我在技术区发的“战斗中调用公共事件”……




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