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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
跳转到指定楼层
1
发表于 2015-2-16 11:18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

评分

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

查看全部评分

Lv5.捕梦者

梦石
0
星屑
33488
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2015-2-16 14:47:26 | 只看该作者
参考2楼,你可以在game_battler3里面的普通攻击那添加
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
5
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33488
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
7
 楼主| 发表于 2015-2-16 20:31:29 | 只看该作者
芯☆淡茹水 发表于 2015-2-16 18:18
没测试~

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

点评

然  发表于 2015-2-16 20:34
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
8
 楼主| 发表于 2015-2-16 20:49:10 | 只看该作者
芯☆淡茹水 发表于 2015-2-16 18:18
没测试~

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33488
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
250 小时
注册时间
2011-12-18
帖子
59
10
 楼主| 发表于 2015-2-16 21:32:39 | 只看该作者
芯☆淡茹水 发表于 2015-2-16 21:22
测试下:

14行有错误......

点评

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 07:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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