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

Project1

 找回密码
 注册会员
搜索
查看: 5337|回复: 7

[原创发布] 弹药消耗脚本

[复制链接]

Lv4.逐梦者

梦石
2
星屑
6629
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

发表于 2018-7-20 20:26:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MCCF 于 2018-7-20 20:57 编辑

是一个为自己的游戏而写的脚本,然后顺便分享出来咯……
更新记录
更新计划


功能
截图
脚本
范例工程


有BUG?请一定反馈哦!(我十分怀疑会有一堆BUG)
本脚本已经发在RPG Maker技术区





祝好。

Lv3.寻梦者

梦石
0
星屑
1576
在线时间
161 小时
注册时间
2019-7-4
帖子
207
发表于 2019-7-9 18:10:08 | 显示全部楼层
我以为是地图战斗用的呢......
不过也十分感谢!

点评

抱歉没看时间,版主大大删了吧  发表于 2019-7-9 18:11
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
106
在线时间
35 小时
注册时间
2019-7-16
帖子
3
发表于 2019-7-21 15:45:20 | 显示全部楼层
如果是空手会出错。
希望更新
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
669
在线时间
77 小时
注册时间
2022-7-29
帖子
42
发表于 2022-9-5 00:08:17 | 显示全部楼层
战斗时如果弹药用尽,就没有武器可用,然后只能挨揍到死……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
669
在线时间
77 小时
注册时间
2022-7-29
帖子
42
发表于 2022-10-8 12:51:14 | 显示全部楼层
脚本以后不更新了吗?这个脚本大有可为、
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
4 小时
注册时间
2023-1-7
帖子
2
发表于 2023-2-16 10:14:37 | 显示全部楼层
感谢分享。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
775
在线时间
92 小时
注册时间
2018-2-5
帖子
70
发表于 2023-10-16 09:01:36 | 显示全部楼层
本帖最后由 suixinsua 于 2023-10-16 10:15 编辑

看来作者是不会更新了!
#encoding:utf-8
# =============================================================================
# MCCF - 弹药消耗
# 版本 : 1.0
# =============================================================================
$fscript = {} if $fscript == nil
$fscript["MCCFAmmunition"] = "1.0.0703"
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2018.6.21 - V1.0制作完成,在P1发布
# =============================================================================
# 更新记录:
# -----------------------------------------------------------------------------
# 2023.10.16 由霜月冬音修改无武器报错BUG!
# 战斗装备指令是我写上去的,不好用可以删掉!
# =============================================================================

=begin

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

=end
# =============================================================================
# 设定部分:
# =============================================================================
module MCCF
  module Ammunition
  
    # 没有弹药的时候是直接不允许攻击(false)还是攻击时无效(true)
    CAN_SELECT = true
   
    # 没有弹药时的无效用语(%s是角色名字)
    NO_AMMUNITION_VOCAB = "%s没有弹药了!"
  
  end
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
      return false if BattleManager.actor.weapons[0].nil?
      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


#==============================================================================
# ■ 以下在战斗画面添加装备指令的脚本!如果有冲突可以将下面删除!
#==============================================================================
#定义装备名
#==============================================================================
module Vocab
  # 戦闘
  WB         = "装备"
end

#==============================================================================
# ■ Window_PartyCommand
#------------------------------------------------------------------------------
#
#==============================================================================
class Window_PartyCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● 创建命令列表
  #--------------------------------------------------------------------------
  alias wb_make_command_list make_command_list
  def make_command_list
    wb_make_command_list
    add_command(Vocab::WB,  :wbgh)
  end  
end
  #--------------------------------------------------------------------------
  # ● 生成命令执行
  #--------------------------------------------------------------------------
class Scene_Battle < Scene_Base
  alias wb_create_party_command_window create_party_command_window
  def create_party_command_window
    wb_create_party_command_window
    @party_command_window.set_handler(:wbgh,     method(:command_wbgh))
  end
  
  def command_wbgh
    SceneManager.call(Scene_Equip)
  end
end
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-16 17:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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