赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
就是在物品画面的右上角放了一个显示负重的窗口
在物品的备注里面写
[load N] 则该物品占用 N 点负重
load也可以写成「负重」或「負重」
不写的话默认为 0
每个角色的负重公式:
(HP最大值+MP最大值) X 等级 / 速度
超过队伍总负重时无法获得物品
$game_party.current_load 获取队伍当前负重
$game_party.total_load 获取队伍总负重
新增功能说明:
可以用
来判断是不是会超过负重
类型: 0:物品 1:武器 2:防具
调用「增减物品/武器/防具」指令时,会自动判断负重,超过负重时自动执行「中断事件处理」
所以请注意「增减物品/武器/防具」指令在事件中的位置,不要放在开关或变量操作的後面
脚本更新:
* 2009/02/17
- BUG 修正:更正改职业时会出现错误的问题
* 2009/02/20
- 功能修改:超过负重时自动调用「中断事件处理」
- 功能增加:可以用脚本 check_load(物品ID, 类型, 数量) 来判断是不是会超过负重
* 2009/05/02
- 功能增加:按 X 键删除当前物品 1 个
- BUG 修正:负重变更时,负重窗口刷新问题
- class RPG::BaseItem
- # 获取物品重量
- def load
- return if self.is_a?(RPG::Skill)
- self.note.split(/[\r\n]+/).each { |line|
- if line =~ /\[(?:load|负重|負重) (\w+)\]/
- return $1.nil? ? 0 : $1.to_i
- end}
- return 0
- end
- end
- class Scene_Item < Scene_Base
- alias load_start start
- alias load_terminate terminate
- alias load_update update
- alias load_update_item_selection update_item_selection
- def start
- # 生成负重显示窗口
- load_start
- @load_window = Window_Base.new(392, 0, 152, 56)
- @load_window.viewport = @viewport
- end
- def terminate
- # 释放负重显示窗口
- @load_window.dispose
- load_terminate
- end
- def update
- @load_window.update
- # 刷新负重显示窗口
- if @temp_load != $game_party.current_load
- @load_window.contents.clear
- @load_window.contents.draw_text(0, 0, 120, 24, "#{$game_party.current_load}/#{$game_party.total_load}")
- @temp_load = $game_party.current_load
- end
- load_update
- end
- def update_item_selection
- if Input.trigger?(Input::X)
- @item = @item_window.item
- $game_party.lose_item(@item, 1)
- @item_window.refresh
- else
- load_update_item_selection
- end
- end
- end
- class Game_Party < Game_Unit
- attr_reader :current_load
- alias load_initialize initialize
- alias load_gain_item gain_item
- def initialize
- load_initialize
- @current_load = 0
- end
- # 获取队伍最大负重
- def total_load
- party_load = 0
- #members.size.times do |i|
- for i in 0...members.size
- actor = members[i]
- party_load += actor.load
- end
- return party_load
- end
- def gain_item(item, n, include_equip = false)
- return if item.nil?
- if ((item.load * n) + @current_load) > total_load
- $game_message.texts.push("負重不足,請先清空身上的物品")
- $game_message.visible = true
- return
- else
- @current_load += item.load * n
- end
- load_gain_item(item, n, include_equip)
- end
- end
- class Game_Actor < Game_Battler
- # 获取队员负重
- def load
- return (maxhp + maxmp) * @level / agi
- end
- end
- class Game_Interpreter
- alias load_command_126 command_126
- alias load_command_127 command_127
- alias load_command_128 command_128
- def command_126
- n = operate_value(@params[1], @params[2], @params[3])
- return command_115 if check_load(@params[0], 0, n)
- load_command_126
- end
- #--------------------------------------------------------------------------
- # ● 增減武器
- #--------------------------------------------------------------------------
- def command_127
- n = operate_value(@params[1], @params[2], @params[3])
- return command_115 if check_load(@params[0], 1, n)
- load_command_127
- end
- #--------------------------------------------------------------------------
- # ● 增減防具
- #--------------------------------------------------------------------------
- def command_128
- n = operate_value(@params[1], @params[2], @params[3])
- return command_115 if check_load(@params[0], 2, n)
- load_command_128
- end
- def check_load(item_id, type, n)
- case type
- when 0; item = $data_items[item_id]
- when 1; item = $data_weapons[item_id]
- when 2; item = $data_armors[item_id]
- end
- if (((item.load * n) + $game_party.current_load) > $game_party.total_load)
- $game_message.texts.push("負重不足,請先清空身上的物品")
- $game_message.visible = true
- return true
- end
- return false
- end
- end
复制代码 |
|