搜索附件  

弹药消耗范例工程.zip

 

弹药消耗脚本:
是一个为自己的游戏而写的脚本,然后顺便分享出来咯……
更新记录
2018.6.21 - V1.0制作完成,在P1发布


更新计划
2018.6.23 - V1.1,新增弹夹模式,且带有换弹夹处理
2018.6.25 - V1.2,弹夹模式新增“换弹夹熟练度”,实现有时换弹夹不消耗回合有时则作为本次回合行动。还可以让不同角色有不同的几率。


功能
  • 可以设定某些武器普攻消耗弹药(物品)。
  • 不同武器可以消耗不同弹药,也可以一次消耗多个弹药。
截图

脚本
[Ruby] 纯文本查看 复制代码
#encoding:utf-8
# =============================================================================
# MCCF - 弹药消耗
# 版本 : 1.0
# =============================================================================
$fscript = {} if $fscript == nil
$fscript["MCCFAmmunition"] = "1.0.0703"
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2018.6.21 - V1.0制作完成,在P1发布
# =============================================================================
=begin

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

=end
# =============================================================================
# 无设定部分
# =============================================================================

#------------------------------------------------------------------------------
# ■ 以下有关备注读取
#------------------------------------------------------------------------------
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
  #=============================================================================
  # □ ReadNote
  #=============================================================================
  module ReadNote
    def self.read(str, section, mismatch = nil)
      str.each_line do |line|
        eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/
      end
      return mismatch
    end
  end
  #=============================================================================
  # ■ BaseItem
  #=============================================================================
  class BaseItem
    #-------------------------------------------------------------------------
    # ○ 读取rmva备注栏字段
    #     section  : 字段名
    #     mismatch : 未匹配时的返回值
    #-------------------------------------------------------------------------
    def read_note(section, mismatch = nil)
      ReadNote.read(self.note, section, mismatch)
    end
  end
  #=============================================================================
  # ■ Actor
  #=============================================================================
  class Actor
    def read_note(section, mismatch = nil)
      ReadNote.read(self.note, section, mismatch)
    end
  end
end

#------------------------------------------------------------------------------
# ■ 以下有关数据判定
#------------------------------------------------------------------------------
module MCCF
  module Ammunition
  
    # 返回当前角色普通攻击消耗的弹药ID,同时作为是否需要弹药的判断标准
    def self.Ammunition_id
      note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药ID')
      if note != nil
        return note
      else
        return false
      end
    end
  
    # 返回当前角色一次攻击消耗的弹药数量
    def self.Ammunition_once
      note = $data_weapons[BattleManager.actor.weapons[0].id].read_note('消耗弹药数量')
      if note != nil
        return note
      elsif MCCF::Ammunition.Ammunition_id
        return 1
      else
        return 0
      end
    end
   
    # 弹药是否足够的判定
    def self.Ammunition_if
      if MCCF::Ammunition.Ammunition_id
        hold = $game_party.item_number($data_items[MCCF::Ammunition.Ammunition_id])
        return hold >= MCCF::Ammunition.Ammunition_once
      else
        return true
      end
    end
  
  end
end
#------------------------------------------------------------------------------
# ■ 以下有关实际的弹药消耗/弹药判断
#------------------------------------------------------------------------------

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 指令“攻击”
  #--------------------------------------------------------------------------
  alias _command_attack command_attack
  def command_attack
    _command_attack
    if MCCF::Ammunition.Ammunition_id
      item = $data_items[MCCF::Ammunition.Ammunition_id]
      $game_party.lose_item(item, MCCF::Ammunition.Ammunition_once)
    end
  end
end

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 判定是否能使用普通攻击
  #--------------------------------------------------------------------------
  def attack_usable?
    usable?($data_skills[attack_skill_id]) && MCCF::Ammunition.Ammunition_if && MCCF::Ammunition::CAN_SELECT
  end
end

范例工程









             本帖来自P1论坛作者MCCF,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=409304  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-11-22 00:37 , Processed in 0.038112 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部