幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: 地道联盟

[RMVX] [讨论]弹药和消耗道具系统/武器种类

[复制链接]

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-23 18:52:21 | 显示全部楼层
嗯,武器系统确实很有魅力-v-

不过我感觉这样做的麻烦就是很多属性,不过想来用弹药的武器也不会是很多。
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-23 19:06:47 | 显示全部楼层
判断武器种类,空手判断为10
判断武器是否为双手,武器种类为奇数的时候为双手武器

Game_Actor类添加:



#--------------------------------------------------------------------------
  # ● 获取当前武器的种类
  #--------------------------------------------------------------------------
  def weapon_type
    weapon = $data_weapons[@weapon_id]
    return weapon == nil ? 10 : weapon.atk % 10
  end

  #--------------------------------------------------------------------------
  # ● 是否为双手武器
  #--------------------------------------------------------------------------
  def two_handed?
    return (weapon_type % 2) == 1
  end



修改装备方法,双手武器不能和盾牌同时存在

  #--------------------------------------------------------------------------
  # ● 变更装备
  #     equip_type : 装备类型
  #     id    : 武器 or 防具 ID  (0 为解除装备)
  #--------------------------------------------------------------------------
  def equip(equip_type, id)
    case equip_type
    when 0  # 武器
      if id == 0 or $game_party.weapon_number(id) > 0
        $game_party.gain_weapon(@weapon_id, 1)
        @weapon_id = id
        $game_party.lose_weapon(id, 1)
        #双手武器,卸下盾牌
        if two_handed?
          equip(1, 0)
        end

      end
    when 1  # 盾
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor1_id], $data_armors[id])
        $game_party.gain_armor(@armor1_id, 1)
        @armor1_id = id
        $game_party.lose_armor(id, 1)
        #卸下双手武器
        if two_handed? and @armor1_id != 0
          equip(0, 0)
        end

      end
    when 2  # 头
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor2_id], $data_armors[id])
        $game_party.gain_armor(@armor2_id, 1)
        @armor2_id = id
        $game_party.lose_armor(id, 1)
      end
    when 3  # 身体
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor3_id], $data_armors[id])
        $game_party.gain_armor(@armor3_id, 1)
        @armor3_id = id
        $game_party.lose_armor(id, 1)
      end
    when 4  # 装饰品
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor4_id], $data_armors[id])
        $game_party.gain_armor(@armor4_id, 1)
        @armor4_id = id
        $game_party.lose_armor(id, 1)
      end
    end
  end


修改Scene_Equip类的update_item方法,替换掉@item_window.refresh,让全部装备窗口刷新。

    @item_window1.refresh
      @item_window2.refresh
      @item_window3.refresh
      @item_window4.refresh
      @item_window5.refresh
回复 支持 反对

使用道具 举报

好人卡的 该用户已被删除
发表于 2006-11-23 20:03:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-23 20:24:25 | 显示全部楼层
我这么做的目的就是尽量不用别的地方的数据-v-

这样编辑数据库资料的时候不用到处改了。
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-23 20:41:17 | 显示全部楼层
前面又想复杂了,攻击的动画应该在Game_Actor里面改,而不是Scene_Battle_4

  #--------------------------------------------------------------------------
  # ● 普通攻击 获取攻击方动画 ID
  #--------------------------------------------------------------------------
  def animation1_id
    weapon = $data_weapons[@weapon_id]
    return (weapon != nil and weapon_available?) ? weapon.animation1_id : 0
  end
  #--------------------------------------------------------------------------
  # ● 普通攻击 获取对像方动画 ID
  #--------------------------------------------------------------------------
  def animation2_id
    weapon = $data_weapons[@weapon_id]
    return w(weapon != nil and weapon_available?) ? weapon.animation2_id : 0
  end
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-24 20:01:53 | 显示全部楼层
引用第12楼好人卡的神话2006-11-23 20:03发表的:


就是当武器种类为奇数的时候就判定为双手武器把-v-?个人感觉好像用不到那么多- -,干脆做一个Array用来存放该类武器的ID如何?或者根据该武器的名字来判定?


多谢提醒,看来要不影响其它的数据,放在字符串里面最经济了。

名字太乱了,还是放在描述里面比较好-v-


要是有第三方的编辑器就好了-v-,这样就直接在RPG::Weapon里面定义扩展属性。
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2006-11-24 23:21:39 | 显示全部楼层
貌似可以直接在默认的module那里改,默认的module在帮助说明里面有。
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-25 01:01:58 | 显示全部楼层
module已经改过了。

不过数据库编辑器不识别新添加的属性,还是很麻烦。只好出此下策。


#==============================================================================
# ■ Game_Weapon
#------------------------------------------------------------------------------
#  武器扩展定义
#==============================================================================
module RPG
  class Weapon
    #--------------------------------------------------------------------------
    # ● 描述校正
    #--------------------------------------------------------------------------
    def description
      return @description.gsub(/{(.+)}/, "")
    end
    #--------------------------------------------------------------------------
    # ● 弹药ID
    #--------------------------------------------------------------------------
    def ammo_id
      s = @description[/{a.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● 弹药消耗量
    #--------------------------------------------------------------------------
    def ammo_req
      s = @description[/{a_r.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● 双手?
    #--------------------------------------------------------------------------
    def two_handed?
      return @description.index("{2h}") >=0
    end
    #--------------------------------------------------------------------------
    # ● 力量加成
    #--------------------------------------------------------------------------
    def str_bonus
      s = @description[/{s_b.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 100
    end
    #--------------------------------------------------------------------------
    # ● 敏捷加成
    #--------------------------------------------------------------------------
    def dex_bonus
      s = @description[/{d_b.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● 固定加成
    #--------------------------------------------------------------------------
    def bonus
      s = @description[/{b.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● 防御有效度
    #--------------------------------------------------------------------------
    def def_factor
      s = @description[/{d_f.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● hp影响度
    #--------------------------------------------------------------------------
    def hp_factor
      s = @description[/{h_f.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 0
    end
    #--------------------------------------------------------------------------
    # ● 状态加成影响度
    #--------------------------------------------------------------------------
    def sta_factor
      s = @description[/{s_f.+)}/]
      if s != nil
        return s[/([0-9]+)/].to_i
      end
      return 100
    end
  end
end
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2006-11-25 02:42:14 | 显示全部楼层
你做个范例吧……不然很多人看不懂…… [s:4]
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

8

主题

73

帖子

930

积分

⑤进阶

积分
930
 楼主| 发表于 2006-11-25 20:00:34 | 显示全部楼层
引用第18楼杀鸡四天王2006-11-25 02:42发表的:
你做个范例吧……不然很多人看不懂…… [s:4]


这个……目前还处于混乱阶段。


其实我有个设想,不知道有没有人愿意去当苦力[s:5]

http://bbs.rpgchina.com/read-htm-tid-23662.html
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-27 21:14 , Processed in 0.011775 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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