查看: 3876|回复: 10

[已经解决] 请问如何实现装备不同武器攻击时消耗不同物品

[复制链接]
梦石
0
星屑
85
在线时间
250 小时
注册时间
2011-12-18
回帖
44
发表于 2015-2-16 11:18:43 | 显示全部楼层 |阅读模式

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

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

×
比如说有两把枪 一把是7.62mm的 一把是5.45mm的,如何实现当我分别装备上这两种武器攻击时消耗相对应的口径子弹......

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-16 14:03:13 | 显示全部楼层
条件:角色 XXX 冲锋枪 装备中。
      增减物品:5.45mm 子弹  - 1
分歧结束
条件:角色 XXX 狙击枪 装备中。
      增减物品:7.62mm 子弹  - 1
分歧结束

点评

我觉得这样子不对吧。应该是装备着该武器时若攻击则扣子弹,应该再加个分歧吧  发表于 2015-2-16 14:35
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-11-18
回帖
62
发表于 2015-2-16 14:36:36 | 显示全部楼层
要么采用楼上再加个分歧,或者可以通过特技里面的公共事件来控制子弹的减少。
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-2-16 14:47:26 | 显示全部楼层
参考2楼,你可以在game_battler3里面的普通攻击那添加
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
85
在线时间
250 小时
注册时间
2011-12-18
回帖
44
 楼主| 发表于 2015-2-16 17:02:23 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-16 14:03
条件:角色 XXX 冲锋枪 装备中。
      增减物品:5.45mm 子弹  - 1
分歧结束

我想设置大量的武器,用事件一个一个设置太麻烦了......有没有脚本的方法....比如根据ID判断武器的类型,在根据类型设置需要消耗的物品........

点评

两个人  发表于 2015-2-16 17:23
LZ的角色是否只有一个人?  发表于 2015-2-16 17:22
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-16 18:18:15 | 显示全部楼层
  1. #--------------------------------------------------------------------------
  2. class Scene_Battle
  3.   # 在这儿添加:武器ID => 使用的子弹物品ID。
  4.   MOD = {21=>30, 22=>31}
  5.   # 没有子弹时的提醒语句。
  6.   NO_AMMUNITION_TIP = "子弹不足!"
  7.   #--------------------------------------------------------------------------
  8.   alias add_update_phase4_step2_xdrs update_phase4_step2
  9.   def update_phase4_step2
  10.     if @active_battler.is_a?(Game_Actor) and MOD.keys.include?(@active_battler.weapon_id)
  11.       unless @active_battler.current_action.forcing
  12.         unless consumption_bullets
  13.           $game_temp.forcing_battler = nil
  14.           @phase4_step = 1
  15.           return
  16.         end
  17.       end
  18.     end
  19.     add_update_phase4_step2_xdrs
  20.   end
  21.   #--------------------------------------------------------------------------   
  22.   def consumption_bullets
  23.     cb = $game_party.item_number(MOD[@active_battler.weapon_id]) > 0
  24.     cb ? $game_party.gain_item(MOD[@active_battler.weapon_id], -1) : ammunition_tip
  25.     return cb
  26.   end
  27.   #---------------------------------------------------------------------------
  28.   def ammunition_tip
  29.     $game_system.se_play($data_system.buzzer_se)
  30.     tip = Sprite.new
  31.     tip.x = 226; tip.y = 160
  32.     tip.bitmap = Bitmap.new(186, 32)
  33.     tip.bitmap.fill_rect(0, 0, 186, 32, Color.new(0,0,0))
  34.     tip.bitmap.font.color = Color.new(255,0,0)
  35.     tip.bitmap.draw_text(0,0,186,32,NO_AMMUNITION_TIP,1)
  36.     for i in 1..30
  37.       Graphics.update
  38.     end
  39.     for i in 1..10
  40.       Graphics.update
  41.       tip.opacity -= 25
  42.     end
  43.     tip.bitmap.dispose;  tip.dispose
  44.   end
  45. end
  46. #------------------------------------------------------------------------------
复制代码
没测试~

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
85
在线时间
250 小时
注册时间
2011-12-18
回帖
44
 楼主| 发表于 2015-2-16 20:31:29 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-16 18:18
没测试~

谢谢,请问这个是攻击和施放技能都消耗物品的么?

点评

然  发表于 2015-2-16 20:34
回复

使用道具 举报

梦石
0
星屑
85
在线时间
250 小时
注册时间
2011-12-18
回帖
44
 楼主| 发表于 2015-2-16 20:49:10 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-16 18:18
没测试~

谢谢,可以了,不过冒昧的在问一句 能不能实现某一技能消耗指定数量的物品,比如说技能 [连射] 消耗 5发子弹
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-16 21:22:29 | 显示全部楼层
本帖最后由 芯☆淡茹水 于 2015-2-16 21:55 编辑

测试下



[pre lang="ruby"]module X☆R
  # 在这儿添加:武器ID => 使用的子弹物品ID。
  MOD = {21=>30, 22=>31}
  
  # 特殊技能消耗:技能ID => 子弹数量 。未准备消耗子弹的武器,以及武器对应的
  #子弹不够,都不能释放技能。没写入的技能消耗 1 。
  SKILL_MOD = {77=>2, 79=>5}
  
  # 没有子弹时的提醒语句。
  NO_AMMUNITION_TIP = "子弹不足!"
end
class Game_Battler
  #--------------------------------------------------------------------------
  alias add_skill_can_use_xdrs skill_can_use?
  def skill_can_use?(skill_id)
    if self.is_a?(Game_Actor) and X☆R::SKILL_MOD.keys.include?(skill_id)
      return false unless X☆R::MOD.keys.include?(self.weapon_id)
      return false if $game_party.item_number(X☆R::MOD[self.weapon_id]) < X☆R::SKILL_MOD[skill_id]
    end   
    add_skill_can_use_xdrs(skill_id)
  end
end
#----------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  alias add_update_phase4_step2_xdrs update_phase4_step2
  def update_phase4_step2
    if @active_battler.is_a?(Game_Actor) and @active_battler.current_action.kind == 0 and
     @active_battler.current_action.basic == 0 and X☆R::MOD.keys.include?(@active_battler.weapon_id)
      unless @active_battler.current_action.forcing
        unless consumption_bullets
          $game_temp.forcing_battler = nil
          @phase4_step = 1
          return
        end
      end
    end
    add_update_phase4_step2_xdrs
  end
  #--------------------------------------------------------------------------   
  def consumption_bullets
    cb = $game_party.item_number(X☆R::MOD[@active_battler.weapon_id]) > 0
    cb ? lose_bullet : ammunition_tip
    return cb
  end
  #--------------------------------------------------------------------------
  def make_skill_action_result
    # 获取特技
    @skill = $data_skills[@active_battler.current_action.skill_id]
    # 如果不是强制行动
    unless @active_battler.current_action.forcing
      # 因为 SP 耗尽而无法使用的情况下
      unless @active_battler.skill_can_use?(@skill.id)
        # 清除强制行动对像的战斗者
        $game_temp.forcing_battler = nil
        # 移至步骤 1
        @phase4_step = 1
        return
      end
    end
    if @active_battler.is_a?(Game_Actor) and X☆R::MOD.keys.include?(@active_battler.weapon_id)
      lose_bullet
    end
    # 消耗 SP
    @active_battler.sp -= @skill.sp_cost
    # 刷新状态窗口
    @status_window.refresh
    # 在帮助窗口显示特技名
    @help_window.set_text(@skill.name, 1)
    # 设置动画 ID
    @animation1_id = @skill.animation1_id
    @animation2_id = @skill.animation2_id
    # 设置公共事件 ID
    @common_event_id = @skill.common_event_id
    # 设置对像侧战斗者
    set_target_battlers(@skill.scope)
    # 应用特技效果
    for target in @target_battlers
      target.skill_effect(@active_battler, @skill)
    end
  end
  #--------------------------------------------------------------------------
  def lose_bullet
    kind = @active_battler.current_action.kind
    id = kind == 0 ? 0 : @active_battler.current_action.skill_id
    n = X☆R::SKILL_MOD.keys.include?(id) ? X☆R::SKILL_MOD[id] : 1
    $game_party.gain_item(X☆R::MOD[@active_battler.weapon_id], -n)
  end
  #---------------------------------------------------------------------------
  def ammunition_tip
    $game_system.se_play($data_system.buzzer_se)
    tip = Sprite.new
    tip.x = 226; tip.y = 160
    tip.bitmap = Bitmap.new(186, 32)
    tip.bitmap.fill_rect(0, 0, 186, 32, Color.new(0,0,0))
    tip.bitmap.font.color = Color.new(255,0,0)
    tip.bitmap.draw_text(0,0,186,32,X☆R::NO_AMMUNITION_TIP,1)
    for i in 1..30
      Graphics.update
    end
    for i in 1..10
      Graphics.update
      tip.opacity -= 25
    end
    tip.bitmap.dispose;  tip.dispose
  end
end
#------------------------------------------------------------------------------[/pre]
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
85
在线时间
250 小时
注册时间
2011-12-18
回帖
44
 楼主| 发表于 2015-2-16 21:32:39 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-16 21:22
测试下:

14行有错误......

点评

上面已改。  发表于 2015-2-16 21:56
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部