查看: 3206|回复: 1

[RMVA发布] 弹药自动消耗

[复制链接]
梦石
2
星屑
6767
在线时间
501 小时
注册时间
2018-3-23
回帖
487

R考场第七期银奖

发表于 2018-7-19 20:48:22 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 MCCF 于 2018-7-20 20:32 编辑

是一个为自己的游戏而写的脚本,然后顺便分享出来咯……
[fold=更新记录]
2018.6.21 - V1.0制作完成,在P1发布
[/fold]
[fold=更新计划]
2018.6.23 - V1.1,新增弹夹模式,且带有换弹夹处理
2018.6.25 - V1.2,弹夹模式新增“换弹夹熟练度”,实现有时换弹夹不消耗回合有时则作为本次回合行动。还可以让不同角色有不同的几率。
[/fold]


[fold=功能]
  • 可以设定某些武器普攻消耗弹药(物品)。
  • 不同武器可以消耗不同弹药,也可以一次消耗多个弹药。
[/fold]
[fold=截图]
没什么好截图的……

没有弹药的时候

没有弹药的时候

[/fold]
[fold=脚本]
  1. #encoding:utf-8
  2. # =============================================================================
  3. # MCCF - 弹药消耗
  4. # 版本 : 1.0
  5. # =============================================================================
  6. $fscript = {} if $fscript == nil
  7. $fscript["MCCFAmmunition"] = "1.0.0703"
  8. # =============================================================================
  9. # 更新记录:
  10. # -----------------------------------------------------------------------------
  11. # 2018.6.21 - V1.0制作完成,在P1发布
  12. # =============================================================================
  13. =begin

  14.   介绍:
  15.   可以设定某些武器普攻消耗弹药。
  16.   
  17.   在武器备注栏备注
  18.   消耗弹药ID = ID
  19.   ID:该武器普通攻击消耗的弹药(物品)ID
  20.   
  21.   <消耗弹药数量 = NUMBER>
  22.   NUMBER:该武器一次普通攻击消耗的弹药(物品)数量,默认为1
  23.   
  24.   作者的测试比较粗略,若有BUG一定要回帖提出哦!
  25.   
  26.   使用方法:
  27.   插入到插件脚本之下,Main之上即可。
  28.   
  29.   兼容性:
  30.   为保险请放在其它更改攻击指令脚本的下面。(不过一般没有太大必要)
  31.   另外,敬请确保没有使用装备栏自定义脚本改变第一个装备,也就是第一个装备位置一定要是
  32.   武器。
  33.   
  34.   使用条款:
  35.   只要署名MCCF即可。只要不以自己的名义发布,你可以自由修改此脚本。若用于商业游戏,
  36.   请给我一份免费的游戏拷贝。

  37. =end
  38. # =============================================================================
  39. # 无设定部分
  40. # =============================================================================

  41. #------------------------------------------------------------------------------
  42. # ■ 以下有关备注读取
  43. #------------------------------------------------------------------------------
  44. #==============================================================================
  45. # ■ RPG
  46. #==============================================================================
  47. module RPG
  48.   #=============================================================================
  49.   # □ ReadNote
  50.   #=============================================================================
  51.   module ReadNote
  52.     def self.read(str, section, mismatch = nil)
  53.       str.each_line do |line|
  54.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/
  55.       end
  56.       return mismatch
  57.     end
  58.   end
  59.   #=============================================================================
  60.   # ■ BaseItem
  61.   #=============================================================================
  62.   class BaseItem
  63.     #-------------------------------------------------------------------------
  64.     # ○ 读取rmva备注栏字段
  65.     #     section  : 字段名
  66.     #     mismatch : 未匹配时的返回值
  67.     #-------------------------------------------------------------------------
  68.     def read_note(section, mismatch = nil)
  69.       ReadNote.read(self.note, section, mismatch)
  70.     end
  71.   end
  72.   #=============================================================================
  73.   # ■ Actor
  74.   #=============================================================================
  75.   class Actor
  76.     def read_note(section, mismatch = nil)
  77.       ReadNote.read(self.note, section, mismatch)
  78.     end
  79.   end
  80. end

  81. #------------------------------------------------------------------------------
  82. # ■ 以下有关数据判定
  83. #------------------------------------------------------------------------------
  84. module MCCF
  85.   module Ammunition
  86.   
  87.     # 返回当前角色普通攻击消耗的弹药ID,同时作为是否需要弹药的判断标准
  88.     def self.Ammunition_id
  89.       note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药ID')
  90.       if note != nil
  91.         return note
  92.       else
  93.         return false
  94.       end
  95.     end
  96.   
  97.     # 返回当前角色一次攻击消耗的弹药数量
  98.     def self.Ammunition_once
  99.       note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药数量')
  100.       if note != nil
  101.         return note
  102.       elsif MCCF::Ammunition.Ammunition_id
  103.         return 1
  104.       else
  105.         return 0
  106.       end
  107.     end
  108.    
  109.     # 弹药是否足够的判定
  110.     def self.Ammunition_if
  111.       if MCCF::Ammunition.Ammunition_id
  112.         hold = $game_party.item_number($data_items[MCCF::Ammunition.Ammunition_id])
  113.         return hold >= MCCF::Ammunition.Ammunition_once
  114.       else
  115.         return true
  116.       end
  117.     end
  118.   
  119.   end
  120. end
  121. #------------------------------------------------------------------------------
  122. # ■ 以下有关实际的弹药消耗/弹药判断
  123. #------------------------------------------------------------------------------

  124. class Scene_Battle < Scene_Base
  125.   #--------------------------------------------------------------------------
  126.   # ● 指令“攻击”
  127.   #--------------------------------------------------------------------------
  128.   alias _command_attack command_attack
  129.   def command_attack
  130.     _command_attack
  131.     if MCCF::Ammunition.Ammunition_id
  132.       item = $data_items[MCCF::Ammunition.Ammunition_id]
  133.       $game_party.lose_item(item, MCCF::Ammunition.Ammunition_once)
  134.     end
  135.   end
  136. end

  137. class Game_BattlerBase
  138.   #--------------------------------------------------------------------------
  139.   # ● 判定是否能使用普通攻击
  140.   #--------------------------------------------------------------------------
  141.   def attack_usable?
  142.     usable?($data_skills[attack_skill_id]) && MCCF::Ammunition.Ammunition_if && MCCF::Ammunition::CAN_SELECT
  143.   end
  144. end
复制代码


[/fold]
[fold=范例工程]
弹药消耗范例工程.zip (1.43 MB, 下载次数: 27, 售价: 5 星屑)
[/fold]

有BUG?请一定反馈哦!(我十分怀疑会有一堆BUG)




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

本版积分规则

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

在本版发帖返回顶部