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

Project1

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

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

[复制链接]

Lv5.捕梦者

梦石
0
星屑
32122
在线时间
5083 小时
注册时间
2012-11-19
帖子
4877

开拓者

1
发表于 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 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32122
在线时间
5083 小时
注册时间
2012-11-19
帖子
4877

开拓者

2
发表于 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 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32122
在线时间
5083 小时
注册时间
2012-11-19
帖子
4877

开拓者

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

测试下



RUBY 代码复制
  1. module X☆R
  2.   # 在这儿添加:武器ID => 使用的子弹物品ID。
  3.   MOD = {21=>30, 22=>31}
  4.  
  5.   # 特殊技能消耗:技能ID => 子弹数量 。未准备消耗子弹的武器,以及武器对应的
  6.   #子弹不够,都不能释放技能。没写入的技能消耗 1 。
  7.   SKILL_MOD = {77=>2, 79=>5}
  8.  
  9.   # 没有子弹时的提醒语句。
  10.   NO_AMMUNITION_TIP = "子弹不足!"
  11. end
  12. class Game_Battler
  13.   #--------------------------------------------------------------------------
  14.   alias add_skill_can_use_xdrs skill_can_use?
  15.   def skill_can_use?(skill_id)
  16.     if self.is_a?(Game_Actor) and X☆R::SKILL_MOD.keys.include?(skill_id)
  17.       return false unless X☆R::MOD.keys.include?(self.weapon_id)
  18.       return false if $game_party.item_number(X☆R::MOD[self.weapon_id]) < X☆R::SKILL_MOD[skill_id]
  19.     end   
  20.     add_skill_can_use_xdrs(skill_id)
  21.   end
  22. end
  23. #----------------------------------------------------------------------------
  24. class Scene_Battle
  25.   #--------------------------------------------------------------------------
  26.   alias add_update_phase4_step2_xdrs update_phase4_step2
  27.   def update_phase4_step2
  28.     if @active_battler.is_a?(Game_Actor) and @active_battler.current_action.kind == 0 and
  29.      @active_battler.current_action.basic == 0 and X☆R::MOD.keys.include?(@active_battler.weapon_id)
  30.       unless @active_battler.current_action.forcing
  31.         unless consumption_bullets
  32.           $game_temp.forcing_battler = nil
  33.           @phase4_step = 1
  34.           return
  35.         end
  36.       end
  37.     end
  38.     add_update_phase4_step2_xdrs
  39.   end
  40.   #--------------------------------------------------------------------------   
  41.   def consumption_bullets
  42.     cb = $game_party.item_number(X☆R::MOD[@active_battler.weapon_id]) > 0
  43.     cb ? lose_bullet : ammunition_tip
  44.     return cb
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   def make_skill_action_result
  48.     # 获取特技
  49.     @skill = $data_skills[@active_battler.current_action.skill_id]
  50.     # 如果不是强制行动
  51.     unless @active_battler.current_action.forcing
  52.       # 因为 SP 耗尽而无法使用的情况下
  53.       unless @active_battler.skill_can_use?(@skill.id)
  54.         # 清除强制行动对像的战斗者
  55.         $game_temp.forcing_battler = nil
  56.         # 移至步骤 1
  57.         @phase4_step = 1
  58.         return
  59.       end
  60.     end
  61.     if @active_battler.is_a?(Game_Actor) and X☆R::MOD.keys.include?(@active_battler.weapon_id)
  62.       lose_bullet
  63.     end
  64.     # 消耗 SP
  65.     @active_battler.sp -= @skill.sp_cost
  66.     # 刷新状态窗口
  67.     @status_window.refresh
  68.     # 在帮助窗口显示特技名
  69.     @help_window.set_text(@skill.name, 1)
  70.     # 设置动画 ID
  71.     @animation1_id = @skill.animation1_id
  72.     @animation2_id = @skill.animation2_id
  73.     # 设置公共事件 ID
  74.     @common_event_id = @skill.common_event_id
  75.     # 设置对像侧战斗者
  76.     set_target_battlers(@skill.scope)
  77.     # 应用特技效果
  78.     for target in @target_battlers
  79.       target.skill_effect(@active_battler, @skill)
  80.     end
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   def lose_bullet
  84.     kind = @active_battler.current_action.kind
  85.     id = kind == 0 ? 0 : @active_battler.current_action.skill_id
  86.     n = X☆R::SKILL_MOD.keys.include?(id) ? X☆R::SKILL_MOD[id] : 1
  87.     $game_party.gain_item(X☆R::MOD[@active_battler.weapon_id], -n)
  88.   end
  89.   #---------------------------------------------------------------------------
  90.   def ammunition_tip
  91.     $game_system.se_play($data_system.buzzer_se)
  92.     tip = Sprite.new
  93.     tip.x = 226; tip.y = 160
  94.     tip.bitmap = Bitmap.new(186, 32)
  95.     tip.bitmap.fill_rect(0, 0, 186, 32, Color.new(0,0,0))
  96.     tip.bitmap.font.color = Color.new(255,0,0)
  97.     tip.bitmap.draw_text(0,0,186,32,X☆R::NO_AMMUNITION_TIP,1)
  98.     for i in 1..30
  99.       Graphics.update
  100.     end
  101.     for i in 1..10
  102.       Graphics.update
  103.       tip.opacity -= 25
  104.     end
  105.     tip.bitmap.dispose;  tip.dispose
  106.   end
  107. end
  108. #------------------------------------------------------------------------------
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 10:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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