赞 | 0 |
VIP | 25 |
好人卡 | 0 |
积分 | 1 |
经验 | 126953 |
最后登录 | 2020-5-5 |
在线时间 | 39 小时 |
Lv1.梦旅人 粉蜘蛛秀秀
- 梦石
- 0
- 星屑
- 76
- 在线时间
- 39 小时
- 注册时间
- 2007-6-4
- 帖子
- 384
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
昨天看到VX区有人做了个
所以自己也用XP做了个{/cy}
负重系统v0.1
作者:秀秀
功能:物品 武器 防具都多了重量属性
增加了背包负重 超过负重最大值 则不能获得
使用方法:在(物品,武器,防具)数据库中设置名称
方式为:名称+n+重量
比如 铜剑n1.5 表示铜剑重量为1.5
回复剂n0.5 表示回复剂重量为0.5
设置背包重量:默认为变量1,一定要在游戏开始设置好
搜索 VAR_NUMBER 可以改变存放背包负重的变量
当然也可以随时改变这个数值
获取背包最大负重:
$game_variables[VAR_NUMBER]
获取背包当前负重:
$gane_party.weight
获取物品重量:
$data_items[id].weight
获取武器重量:
$data_weapons[id].weight
获取防具重量:
$data_armors[id].weight
-------------下载范例-------------------------------------------------------
http://rpg.blue/upload_program/f ... ��v0.1_95806313.rar
----------------------------------------------------------------------------
=begin
负重系统v0.1
作者:秀秀
功能:物品 武器 防具都多了重量属性
增加了背包负重 超过负重最大值 则不能获得
使用方法:在(物品,武器,防具)数据库中设置名称
方式为:名称+n+重量
比如 铜剑n1.5 表示铜剑重量为1.5
回复剂n0.5 表示回复剂重量为0.5
设置背包重量:默认为变量1,一定要在游戏开始设置好
搜索 VAR_NUMBER 可以改变存放背包负重的变量
当然也可以随时改变这个数值
获取背包最大负重:
$game_variables[VAR_NUMBER]
获取背包当前负重:
$gane_party.weight
获取物品重量:
$data_items[id].weight
获取武器重量:
$data_weapons[id].weight
获取防具重量:
$data_armors[id].weight
=end
module RPG
class Item
def name
return @name.split(/n/)[0] # w 代表重量
end
def weight
return @name.split(/n/)[1].to_f # w 代表重量
end
end
class Weapon
def name
return @name.split(/n/)[0] # w 代表重量
end
def weight
return @name.split(/n/)[1].to_f # w 代表重量
end
end
class Armor
def name
return @name.split(/n/)[0] # w 代表重量
end
def weight
return @name.split(/n/)[1].to_f # w 代表重量
end
end
end
class Game_Party
VAR_NUMBER = 1
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :actors # 角色
attr_reader :gold # 金钱
attr_reader :steps # 步数
attr_accessor :weight
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# 建立角色序列
@actors = []
# 初始化金钱与步数
@gold = 0
@steps = 0
# 生成物品、武器、防具的所持数 hash
@items = {}
@weapons = {}
@armors = {}
# 重量
@weight = 0
end
#--------------------------------------------------------------------------
# ● 增加物品 (减少)
# item_id : 物品 ID
# n : 个数
#--------------------------------------------------------------------------
def gain_item(item_id, n)
# 更新 hash 的个数数据
if item_id > 0
temp = @weight + $data_items[item_id].weight * n
return if (n < 0 and @items[item_id] == nil)
if temp > max_weight
# 添加到物品仓库
return
end
if temp < 0
a = @weight
for i in 1..n.abs
a -= $data_items[item_id].weight
if a < 0
return
else
# 数量-1
@items[item_id] = [[item_number(item_id) - i, 0].max, 99].min
# 负重-1
@weight -= $data_items[item_id].weight
# p @weight
end
end
# p @weight
return
end
if @items[item_id] != nil
b = @items[item_id] - n.abs
if b < 0 and n < 0
c = @items[item_id]
@items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
@weight -= $data_items[item_id].weight * c
# p @weight
return
end
end
@items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
@weight = temp
# p @weight
end
end
#--------------------------------------------------------------------------
# ● 增加武器 (减少)
# weapon_id : 武器 ID
# n : 个数
#--------------------------------------------------------------------------
def gain_weapon(weapon_id, n)
# 更新 hash 的个数数据
if weapon_id > 0
temp = @weight + $data_weapons[weapon_id].weight * n
return if (n < 0 and @weapons[weapon_id] == nil)
if temp > max_weight
# 添加到武器仓库
return
end
if temp < 0
a = @weight
for i in 1..n.abs
a -= $data_weapons[weapon_id].weight
if a < 0
return
else
# 数量-1
@weapons[weapon_id] = [[weapon_number(weapon_id) - i, 0].max, 99].min
# 负重-1
@weight -= $data_weapons[weapon_id].weight
# p @weight
end
end
# p @weight
return
end
if @weapons[weapon_id] != nil
b = @weapons[weapon_id] - n.abs
if b < 0 and n < 0
c = @weapons[weapon_id]
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
@weight -= $data_weapons[weapon_id].weight * c
# p @weight
return
end
end
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
@weight = temp
# p @weight
end
end
#--------------------------------------------------------------------------
# ● 增加防具 (减少)
# armor_id : 防具 ID
# n : 个数
#--------------------------------------------------------------------------
def gain_armor(armor_id, n)
# 更新 hash 的个数数据
if armor_id > 0
temp = @weight + $data_armors[armor_id].weight * n
return if (n < 0 and @armors[armor_id] == nil)
if temp > max_weight
# 添加到武器仓库
return
end
if temp < 0
a = @weight
for i in 1..n.abs
a -= $data_armors[armor_id].weight
if a < 0
return
else
# 数量-1
@armors[armor_id] = [[armor_number(armor_id) - i, 0].max, 99].min
# 负重-1
@weight -= $data_armors[armor_id].weight
# p @weight
end
end
# p @weight
return
end
if @armors[armor_id] != nil
b = @armors[armor_id] - n.abs
if b < 0 and n < 0
c = @armors[armor_id]
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
@weight -= $data_armors[armor_id].weight * c
# p @weight
return
end
end
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
@weight = temp
# p @weight
end
end
def max_weight
return $game_variables[VAR_NUMBER]
end
def check_weight
end
end
#==============================================================================
# ■ Scene_Item
#------------------------------------------------------------------------------
# 处理物品画面的类。
#==============================================================================
class Scene_Item
alias ori_main main
def main
@weight_winodw = Window_Weight.new
@weight_winodw.x = 150
@weight_winodw.y = 50
@weight_winodw.z = 9999
ori_main
@weight_winodw.dispose
end
alias ori_update update
def update
if Input.press?(Input::UP) or
Input.press?(Input::DOWN) or
Input.press?(Input::LEFT) or
Input.press?(Input::RIGHT)
case @item_window.item
when RPG::Item
@weight_winodw.refresh($data_items[@item_window.item.id].weight)
when RPG::Weapon
@weight_winodw.refresh($data_weapons[@item_window.item.id].weight)
when RPG::Armor
@weight_winodw.refresh($data_armors[@item_window.item.id].weight)
end
end
#@weight_window.update
ori_update
end
end
class Window_Weight < Window_Base
def initialize
super(0,0,250,96)
self.opacity = 128
self.contents = Bitmap.new(width-32,height-32)
refresh(nil)
end
def refresh(weight)
self.contents.clear
if weight != nil
self.contents.draw_text(0,0,250,32,"物品重量:#{weight}")
end
self.contents.draw_text(0,32,250,32,"背包重量:"+$game_party.weight.to_s +
"/" + $game_variables[1].to_s , 0)
end
end
|
|