查看: 96|回复: 0

[转载发布] 弹药消耗脚本

[复制链接]
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年二月十八日(春) | 显示全部楼层 |阅读模式
    是一个为自己的游戏而写的脚本,然后顺便分享出来咯……
    更新记录
    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在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-17 23:16 , Processed in 0.053658 second(s), 46 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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