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

Project1

 找回密码
 注册会员
搜索
楼主: 然然
打印 上一主题 下一主题

技能回血问题

 关闭 [复制链接]

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

11
发表于 2009-3-8 11:08:53 | 只看该作者
if !Ranran_Question::ITEM_ARRAY.include?(item.id)

你这是啥脚本的虾米功能- -

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
12
发表于 2009-3-8 11:57:45 | 只看该作者


动画应该还是可以出来的

至于你的最后一张图 威力那里  前提是battler—3里 伤害计算式 不是默认的
(很有和我修改后的一样 伤害为正是杀人 负数是救人)

还有 条件分歧 风林晚 - 死亡 +hp300
后 应该有个显示动画 (显示技能动画)
伤害处理(显示加血的数值)
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-18
帖子
458
13
 楼主| 发表于 2009-3-8 18:13:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-18
帖子
458
14
 楼主| 发表于 2009-3-8 18:21:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
15
发表于 2009-3-8 18:44:15 | 只看该作者
不是第二页的显示动画

是第三页右边的的显示动画 = =|

名字一样 使用的时机地点不一样

《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-18
帖子
458
16
 楼主| 发表于 2009-3-8 21:30:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

17
发表于 2009-3-8 22:16:23 | 只看该作者
原来如此= =你的目的就是为了让复活类道具和特技对活着的角色依然有效吧- -

or ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)

这句切了,顺便把战斗类脚本里and enemy.hp0?和and actor.hp0?
所有有这两句话的部分都切了这两个后半句。

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-18
帖子
458
18
 楼主| 发表于 2009-3-8 22:43:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
19
发表于 2009-3-11 05:01:41 | 只看该作者
  1. class Game_Battler
  2. def item_effect(item)
  3.    # 清除会心一击标志
  4.    self.critical = false
  5.    # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  6.    # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  7.    if !Ranran_Question::ITEM_ARRAY.include?(item.id) then
  8.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  9.       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  10.      # 过程结束
  11.      return false
  12.    end
  13.    end
  14.    # 清除有效标志
  15.    effective = false
  16.    # 公共事件 ID 是有效的情况下,设置为有效标志
  17.    effective |= item.common_event_id > 0
  18.    # 命中判定
  19.    hit_result = (rand(100) < item.hit)
  20.    # 不确定的特技的情况下设置为有效标志
  21.    effective |= item.hit < 100
  22.    # 命中的情况
  23.    if hit_result == true
  24.      
  25.      # 计算回复量
  26.      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  27.      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  28.      if recover_hp < 0
  29.        recover_hp += self.pdef * item.pdef_f / 20
  30.        recover_hp += self.mdef * item.mdef_f / 20
  31.        recover_hp = [recover_hp, 0].min
  32.      end
  33.      # 属性修正
  34.      recover_hp *= elements_correct(item.element_set)
  35.      recover_hp /= 100
  36.      recover_sp *= elements_correct(item.element_set)
  37.      recover_sp /= 100
  38.      # 分散
  39.      if item.variance > 0 and recover_hp.abs > 0
  40.        amp = [recover_hp.abs * item.variance / 100, 1].max
  41.        recover_hp += rand(amp+1) + rand(amp+1) - amp
  42.      end
  43.      if item.variance > 0 and recover_sp.abs > 0
  44.        amp = [recover_sp.abs * item.variance / 100, 1].max
  45.        recover_sp += rand(amp+1) + rand(amp+1) - amp
  46.      end
  47.      # 回复量符号为负的情况下
  48.      if recover_hp < 0
  49.        # 防御修正
  50.        if self.guarding?
  51.          recover_hp /= 2
  52.        end
  53.      end
  54.      # HP 回复量符号的反转、设置伤害值
  55.      self.damage = -recover_hp
  56.      # HP 以及 SP 的回复
  57.      last_hp = self.hp
  58.      last_sp = self.sp
  59.      self.hp += recover_hp
  60.      self.sp += recover_sp
  61.      effective |= self.hp != last_hp
  62.      effective |= self.sp != last_sp
  63.      # 状态变化
  64.      @state_changed = false
  65.      effective |= states_plus(item.plus_state_set)
  66.      effective |= states_minus(item.minus_state_set)
  67.      # 能力上升值有效的情况下
  68.      if item.parameter_type > 0 and item.parameter_points != 0
  69.        # 能力值的分支
  70.        case item.parameter_type
  71.        when 1  # MaxHP
  72.          @maxhp_plus += item.parameter_points
  73.        when 2  # MaxSP
  74.          @maxsp_plus += item.parameter_points
  75.        when 3  # 力量
  76.          @str_plus += item.parameter_points
  77.        when 4  # 灵巧
  78.          @dex_plus += item.parameter_points
  79.        when 5  # 速度
  80.          @agi_plus += item.parameter_points
  81.        when 6  # 魔力
  82.          @int_plus += item.parameter_points
  83.        end
  84.        # 设置有效标志
  85.        effective = true
  86.      end
  87.      # HP 回复率与回复量为 0 的情况下
  88.      if item.recover_hp_rate == 0 and item.recover_hp == 0
  89.        # 设置伤害为空的字符串
  90.        self.damage = ""
  91.        # SP 回复率与回复量为 0、能力上升值无效的情况下
  92.        if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  93.           (item.parameter_type == 0 or item.parameter_points == 0)
  94.          # 状态没有变化的情况下
  95.          unless @state_changed
  96.            # 伤害设置为 "Miss"
  97.            self.damage = "Miss"
  98.          end
  99.        end
  100.      end
  101.    # Miss 的情况下
  102.    else
  103.      # 伤害设置为 "Miss"
  104.      self.damage = "Miss"
  105.    end
  106.    # 不在战斗中的情况下
  107.    unless $game_temp.in_battle
  108.      # 伤害设置为 nil
  109.      self.damage = nil
  110.    end
  111.    # 过程结束
  112.    return effective
  113. end
  114. end

  115. def skill_effect(user, skill)
  116.    # 清除会心一击标志
  117.    self.critical = false
  118.    # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  119.    # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  120.    if !Ranran_Question::SKILL_ARRAY.include?(skill.id) then
  121.    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  122.       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  123.      # 过程结束
  124.      return false
  125.    end
  126.   end
  127.    # 清除有效标志
  128.    effective = false
  129.    # 公共事件 ID 是有效的情况下,设置为有效标志
  130.    effective |= skill.common_event_id > 0
  131.    # 第一命中判定
  132.    hit = skill.hit
  133.    if skill.atk_f > 0
  134.      hit *= user.hit / 100
  135.    end
  136.    hit_result = (rand(100) < hit)
  137.    # 不确定的特技的情况下设置为有效标志
  138.    effective |= hit < 100
  139.    # 命中的情况下
  140.    if hit_result == true
  141.      # 计算威力
  142.      power = skill.power + user.atk * skill.atk_f / 100
  143.      if power > 0
  144.        power -= self.pdef * skill.pdef_f / 200
  145.        power -= self.mdef * skill.mdef_f / 200
  146.        power = [power, 0].max
  147.      end
  148.      # 计算倍率
  149.      rate = 20
  150.      rate += (user.str * skill.str_f / 100)
  151.      rate += (user.dex * skill.dex_f / 100)
  152.      rate += (user.agi * skill.agi_f / 100)
  153.      rate += (user.int * skill.int_f / 100)
  154.      # 计算基本伤害
  155.      self.damage = power * rate / 20
  156.      # 属性修正
  157.      self.damage *= elements_correct(skill.element_set)
  158.      self.damage /= 100
  159.      # 伤害符号正确的情况下
  160.      if self.damage > 0
  161.        # 防御修正
  162.        if self.guarding?
  163.          self.damage /= 2
  164.        end
  165.      end
  166.      p self.damage
  167.      # 分散
  168.      if skill.variance > 0 and self.damage.abs > 0
  169.        amp = [self.damage.abs * skill.variance / 100, 1].max
  170.        self.damage += rand(amp+1) + rand(amp+1) - amp
  171.      end
  172.      # 第二命中判定
  173.      eva = 8 * self.agi / user.dex + self.eva
  174.      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  175.      hit = self.cant_evade? ? 100 : hit
  176.      hit_result = (rand(100) < hit)
  177.      # 不确定的特技的情况下设置为有效标志
  178.      effective |= hit < 100
  179.    end
  180.    # 命中的情况下
  181.    if hit_result == true
  182.      # 威力 0 以外的物理攻击的情况下
  183.      if skill.power != 0 and skill.atk_f > 0
  184.        # 状态冲击解除
  185.        remove_states_shock
  186.        # 设置有效标志
  187.        effective = true
  188.      end
  189.      # HP 的伤害减法运算
  190.      last_hp = self.hp
  191.      self.hp -= self.damage
  192.      effective |= self.hp != last_hp
  193.      # 状态变化
  194.      @state_changed = false
  195.      effective |= states_plus(skill.plus_state_set)
  196.      effective |= states_minus(skill.minus_state_set)
  197.      # 威力为 0 的场合
  198.      if skill.power == 0
  199.        # 伤害设置为空的字串
  200.        self.damage = ""
  201.        # 状态没有变化的情况下
  202.        unless @state_changed
  203.          # 伤害设置为 "Miss"
  204.          self.damage = "Miss"
  205.        end
  206.      end
  207.    # Miss 的情况下
  208.    else
  209.      # 伤害设置为 "Miss"
  210.      self.damage = "Miss"
  211.    end
  212.    # 不在战斗中的情况下
  213.    unless $game_temp.in_battle
  214.      # 伤害设置为 nil
  215.      self.damage = nil
  216.    end
  217.    # 过程结束
  218.    return effective
  219. end

  220. module Ranran_Question

  221. SKILL_ARRAY = [1]

  222. ITEM_ARRAY = [9]

  223. end

  224. class Scene_Battle

  225. def make_skill_action_result
  226.    @skill = $data_skills[@active_battler.current_action.skill_id]
  227.    unless @active_battler.current_action.forcing
  228.      unless @active_battler.skill_can_use?(@skill.id)
  229.        $game_temp.forcing_battler = nil
  230.        @phase4_step = 1
  231.        return
  232.      end
  233.    end
  234.    @active_battler.sp -= @skill.sp_cost
  235.    @status_window.refresh
  236.    @help_window.set_text(@skill.name, 1)
  237.    @animation1_id = @skill.animation1_id
  238.    @animation2_id = @skill.animation2_id
  239.    @common_event_id = @skill.common_event_id
  240.    
  241.    
  242.    if Ranran_Question::SKILL_ARRAY.include?(@skill.id)
  243.      set_target_battlers(8)
  244.    else
  245.      set_target_battlers(@skill.scope)
  246.    end
  247.    
  248.    p @target_battlers
  249.    
  250.    for target in @target_battlers
  251.      target.skill_effect(@active_battler, @skill)
  252.    end
  253. end

  254. def make_item_action_result
  255.    @item = $data_items[@active_battler.current_action.item_id]
  256.    unless $game_party.item_can_use?(@item.id)
  257.      # 移至步骤 1
  258.      @phase4_step = 1
  259.      return
  260.    end
  261.    # 消耗品的情况下
  262.    if @item.consumable
  263.      # 使用的物品减 1
  264.      $game_party.lose_item(@item.id, 1)
  265.    end
  266.    # 在帮助窗口显示物品名
  267.    @help_window.set_text(@item.name, 1)
  268.    # 设置动画 ID
  269.    @animation1_id = @item.animation1_id
  270.    @animation2_id = @item.animation2_id
  271.    # 设置公共事件 ID
  272.    @common_event_id = @item.common_event_id
  273.    # 确定对像
  274.    index = @active_battler.current_action.target_index
  275.    target = $game_party.smooth_target_actor(index)
  276.    
  277.    
  278.    if Ranran_Question::ITEM_ARRAY.include?(@item.id)
  279.      set_target_battlers(8)
  280.    else
  281.      set_target_battlers(@item.scope)
  282.    end
  283.    
  284.    
  285.    for target in @target_battlers
  286.      target.item_effect(@item)
  287.    end
  288. end

  289. alias old_set_target_battlers set_target_battlers

  290. def set_target_battlers(scope)
  291.    
  292.    if @active_battler.is_a?(Game_Actor)
  293.     if scope == 8
  294.        index = @active_battler.current_action.target_index
  295.        actor = $game_party.actors[index]
  296.         if actor != nil then
  297.          if actor.hp0?
  298.           @target_battlers.push(actor)
  299.          else
  300.           @target_battlers.push($game_party.smooth_target_actor(index))
  301.          end
  302.        end
  303.     return   
  304.     end
  305.    old_set_target_battlers(scope)
  306.   end

  307. end

  308. end

复制代码



偶试了可以,你的外挂脚本较多,不知道你行不行{/gg}
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

20
发表于 2009-3-13 16:57:46 | 只看该作者
以下引用然然于2009-3-8 14:43:35的发言:


顺便把战斗类脚本里and enemy.hp0?和and actor.hp0?
所有有这两句话的部分都切了这两个后半句。


这句话是什么意思?没有那两句话啊……

when 5  # 我方单体 (HP 0)
       index = @active_battler.current_action.target_index
       actor = $game_party.actors[index]
       if actor != nil and actor.hp0?
         @target_battlers.push(actor)
       end

你这不是引出来了么= =直接修改为
when 5  # 我方单体 (HP 0)
       index = @active_battler.current_action.target_index
       actor = $game_party.actors[index]
       if actor != nil
         @target_battlers.push(actor)
       end

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-20 16:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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