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

Project1

 找回密码
 注册会员
搜索
查看: 4310|回复: 18
打印 上一主题 下一主题

负重系统v0.1

 关闭 [复制链接]

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-7-7 04:52:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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  



http://rpg.blue/upload_program/files/hide_xiu_96911465.png
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-23
帖子
458
2
发表于 2008-7-7 05:31:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

龙骑

梦石
0
星屑
525
在线时间
10 小时
注册时间
2007-12-31
帖子
2030
3
发表于 2008-7-7 05:49:58 | 只看该作者
现在啥系统都有了……顶一个!{/qiang}
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
50
在线时间
177 小时
注册时间
2008-3-21
帖子
939
4
发表于 2008-7-7 06:16:21 | 只看该作者
不错的系统!马上就可以用在我正制作的游戏里。
我的个人空间:
http://434986751.qzone.qq.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
6 小时
注册时间
2008-6-15
帖子
112
5
发表于 2008-7-7 06:56:35 | 只看该作者
建议:
除了负重,增加容积限制。比如默认16格,长武器3格、佩剑2格、匕首1格,药水1格等等
然后再计算总负重。可以用购买背包的方式进行容积扩展。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-7-4
帖子
30
6
发表于 2008-7-7 17:26:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

世界坑化协会

梦石
0
星屑
7812
在线时间
1563 小时
注册时间
2007-3-13
帖子
5542

极短23参与极短21参与开拓者贵宾第一届化妆舞会最佳服饰奖

7
发表于 2008-7-7 17:35:19 | 只看该作者
支持一个!!绣绣好厉害啊~~~{/se}

不过这个思路能不能接着出个人物负重呢?

比如人物负重=(HP X0.2+力量 X0.4)-(灵巧+速度) 超过负重的装备和武器不能装备上{/cy}
你的肩膀上有肩周炎~♪  秒懂  ☚   \没有
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-23
帖子
458
8
发表于 2008-7-7 18:18:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2007-12-16
帖子
3454
9
发表于 2008-7-7 18:31:39 | 只看该作者
BUG一只
装备上装备之后原装备负重为0
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

10
 楼主| 发表于 2008-7-7 18:46:53 | 只看该作者
BUG一只
装备上装备之后原装备负重为0

ms不会把{/jy}我怎么没发现
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 13:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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