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

Project1

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

[已经过期] 双手武器(冲突装备类型)制作问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2013-6-2 09:18:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. =begin
  2. 首先给各位简单介绍下什么是法球效果,这个功能是完全按照war3的法球效果、
  3. 法球优先级等做的一些特殊的判定,也就是相互冲突的法球装备无法同时使用的意思,
  4. 比如吸血法球和反馈法球无法同时使用,DOTA中的熊战士的怒意狂击法球无法与死亡面具
  5. 的吸血法球同时作用,但是光环可以不受到法球的限制···本人也是经过深思熟虑才
  6. 决定把双手武器和法球效果做到一起的,所以表见怪···

  7. 法球的类型以及编号列表
  8. 0没有
  9. 1双手武器(仅限武器):装备该法球的左手武器后右手武器会被强制卸除
  10. 2权威性魂器(仅限魂器):因为魂器可以同时装备6个一样的,如果某个魂器具有2号法球效果则无法被重复装备
  11. 从3开始的法球效果都是防具的,可以自行设定且可以与2号法球共用(就是2号法球与3号以后法球、1号法球不冲突,也就是说1、2号法球可以和其他任意一种法球共存)
  12. =end
  13. #------------------------------------------------------------------------------
  14. #法球判定设置#
  15. #------------------------------------------------------------------------------
  16. module RPG
  17.   class Weapon
  18.     def description
  19.       return @description.split(/,/)[0] # w 代表名称
  20.     end
  21.     def description_bhs
  22.       return @description.split(/,/)[1].to_i # w 代表法球
  23.     end  
  24.    end
  25.   class Armor
  26.     def description
  27.       return @description.split(/,/)[0] # w 代表名称
  28.     end
  29.     def description_bhs
  30.       return @description.split(/,/)[1].to_i # w 代表法球
  31.     end  
  32.   end
  33. end
  34. #p bhs.to_i
  35. #------------------------------------------------------------------------------
  36. #双手武器的法球设置
  37. #------------------------------------------------------------------------------

  38. $both_hands_weapon = [2,3]
  39. #--------------------------------------------------------------------------
  40. # ● 可以装备判定
  41. #     item : 物品
  42. #--------------------------------------------------------------------------
复制代码
我明明有在装备的介绍里面加对应的东西,但是却没法p出来···@hys111111 这问题我两个月前就问过你了呢···你那次搞的东西就跟没有一样···
大概双手武器的判定我是希望通过前面
  1.   class Weapon
  2.     def description
  3.       return @description.split(/,/)[0] # w 代表名称
  4.     end
  5.     def description_bhs
  6.       return @description.split(/,/)[1].to_i # w 代表法球
  7.     end  
  8.    end
复制代码
先获得武器的1号法球,如果武器具有一号法球则会判为双手武器而将其编号算入
  1. $both_hands_weapon =
复制代码
,而其他法球效果我是要各种冲突(魂器2号法球共存)
  1. #==============================================================================
  2. # ■ Scene_Equip
  3. #------------------------------------------------------------------------------
  4. #  处理装备画面的类。
  5. #==============================================================================

  6. class Scene_Equip
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor_index : 角色索引
  10.   #     equip_index : 装备索引
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor_index = 0, equip_index = 0)
  13.     @actor_index = actor_index
  14.     @equip_index = equip_index
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 主处理
  18.   #--------------------------------------------------------------------------
  19.   def main
  20.     # 获取角色
  21.     [url=home.php?mod=space&uid=95897]@actor[/url] = $game_party.actors[@actor_index]
  22.     # 生成窗口
  23.     @help_window = Window_Help.new
  24.     @left_window = Window_EquipLeft.new(@actor)
  25.     @right_window = Window_EquipRight.new(@actor)
  26.     @item_window1 = Window_EquipItem.new(@actor, 0)
  27.     @item_window2 = Window_EquipItem.new(@actor, 1)
  28.     @item_window3 = Window_EquipItem.new(@actor, 2)
  29.     @item_window4 = Window_EquipItem.new(@actor, 3)
  30.     @item_window5 = Window_EquipItem.new(@actor, 4)
  31.     @item_window6 = Window_EquipItem.new(@actor, 5)
  32.     @item_window7 = Window_EquipItem.new(@actor, 6)
  33.     @item_window8 = Window_EquipItem.new(@actor, 7)
  34.     @item_window9 = Window_EquipItem.new(@actor, 8)
  35.     @item_window10 = Window_EquipItem.new(@actor, 9)
  36.     @item_window11 = Window_EquipItem.new(@actor, 10)
  37.     @item_window12 = Window_EquipItem.new(@actor, 11)
  38.     @item_window13 = Window_EquipItem.new(@actor, 12)
  39.     @item_window14 = Window_EquipItem.new(@actor, 12)
  40.     @item_window15 = Window_EquipItem.new(@actor, 12)
  41.     @item_window16 = Window_EquipItem.new(@actor, 12)
  42.     @item_window17 = Window_EquipItem.new(@actor, 12)
  43.     @item_window18 = Window_EquipItem.new(@actor, 12)
  44.     # 关联帮助窗口
  45.     @right_window.help_window = @help_window
  46.     @item_window1.help_window = @help_window
  47.     @item_window2.help_window = @help_window
  48.     @item_window3.help_window = @help_window
  49.     @item_window4.help_window = @help_window
  50.     @item_window5.help_window = @help_window
  51.     @item_window6.help_window = @help_window
  52.     @item_window7.help_window = @help_window
  53.     @item_window8.help_window = @help_window
  54.     @item_window9.help_window = @help_window
  55.     @item_window10.help_window = @help_window
  56.     @item_window11.help_window = @help_window
  57.     @item_window12.help_window = @help_window
  58.     @item_window13.help_window = @help_window
  59.     @item_window14.help_window = @help_window
  60.     @item_window15.help_window = @help_window
  61.     @item_window16.help_window = @help_window
  62.     @item_window17.help_window = @help_window
  63.     @item_window18.help_window = @help_window
  64.     # 设置光标位置
  65.     @right_window.index = @equip_index
  66.     refresh
  67.     # 执行过渡
  68.     Graphics.transition
  69.     # 主循环
  70.     loop do
  71.       # 刷新游戏画面
  72.       Graphics.update
  73.       # 刷新输入信息
  74.       Input.update
  75.       # 刷新画面
  76.       update
  77.       # 如果画面切换的话的就中断循环
  78.       if $scene != self
  79.         break
  80.       end
  81.     end
  82.     # 准备过渡
  83.     Graphics.freeze
  84.     # 释放窗口
  85.     @help_window.dispose
  86.     @left_window.dispose
  87.     @right_window.dispose
  88.     @item_window1.dispose
  89.     @item_window2.dispose
  90.     @item_window3.dispose
  91.     @item_window4.dispose
  92.     @item_window5.dispose
  93.     @item_window6.dispose
  94.     @item_window7.dispose
  95.     @item_window8.dispose
  96.     @item_window9.dispose
  97.     @item_window10.dispose
  98.     @item_window11.dispose
  99.     @item_window12.dispose
  100.     @item_window13.dispose
  101.     @item_window14.dispose
  102.     @item_window15.dispose
  103.     @item_window16.dispose
  104.     @item_window17.dispose
  105.     @item_window18.dispose
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 刷新
  109.   #--------------------------------------------------------------------------
  110.   def refresh
  111.     # 设置物品窗口的可视状态
  112.     @item_window1.visible = (@right_window.index == 0)
  113.     @item_window2.visible = (@right_window.index == 1)
  114.     @item_window3.visible = (@right_window.index == 2)
  115.     @item_window4.visible = (@right_window.index == 3)
  116.     @item_window5.visible = (@right_window.index == 4)
  117.     @item_window6.visible = (@right_window.index == 5)
  118.     @item_window7.visible = (@right_window.index == 6)
  119.     @item_window8.visible = (@right_window.index == 7)
  120.     @item_window9.visible = (@right_window.index == 8)
  121.     @item_window10.visible = (@right_window.index == 9)
  122.     @item_window11.visible = (@right_window.index == 10)
  123.     @item_window12.visible = (@right_window.index == 11)
  124.     @item_window13.visible = (@right_window.index == 12)
  125.     @item_window14.visible = (@right_window.index == 13)
  126.     @item_window15.visible = (@right_window.index == 14)
  127.     @item_window16.visible = (@right_window.index == 15)
  128.     @item_window17.visible = (@right_window.index == 16)
  129.     @item_window18.visible = (@right_window.index == 17)
  130.     # 获取当前装备中的物品
  131.     item1 = @right_window.item
  132.     # 设置当前的物品窗口到 @item_window
  133.     case @right_window.index
  134.     when 0
  135.       @item_window = @item_window1
  136.     when 1
  137.       @item_window = @item_window2
  138.     when 2
  139.       @item_window = @item_window3
  140.     when 3
  141.       @item_window = @item_window4
  142.     when 4
  143.       @item_window = @item_window5
  144.     when 5
  145.       @item_window = @item_window6
  146.     when 6
  147.       @item_window = @item_window7
  148.     when 7
  149.       @item_window = @item_window8
  150.     when 8
  151.       @item_window = @item_window9
  152.     when 9
  153.       @item_window = @item_window10
  154.     when 10
  155.       @item_window = @item_window11
  156.     when 11
  157.       @item_window = @item_window12
  158.     when 12
  159.       @item_window = @item_window13
  160.     when 13
  161.       @item_window = @item_window14
  162.     when 14
  163.       @item_window = @item_window15
  164.     when 15
  165.       @item_window = @item_window16
  166.     when 16
  167.       @item_window = @item_window17
  168.     when 17
  169.       @item_window = @item_window18
  170.     end
  171.     # 右窗口被激活的情况下
  172.     if @right_window.active
  173.       # 删除变更装备后的能力
  174.       @left_window.set_new_parameters(nil, nil, nil)
  175.     end
  176.     # 物品窗口被激活的情况下
  177.     if @item_window.active
  178.       # 获取现在选中的物品
  179.       item2 = @item_window.item
  180.       # 变更装备
  181.       last_hp = @actor.hp
  182.       last_sp = @actor.sp
  183.       @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
  184.       # 获取变更装备后的能力值
  185.       new_atk = @actor.atk
  186.       new_pdef = @actor.pdef
  187.       new_mdef = @actor.mdef
  188.       # 返回到装备
  189.       @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
  190.       @actor.hp = last_hp
  191.       @actor.sp = last_sp
  192.       # 描画左窗口
  193.       @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 刷新画面
  198.   #--------------------------------------------------------------------------
  199.   def update
  200.     # 刷新窗口
  201.     @left_window.update
  202.     @right_window.update
  203.     @item_window.update
  204.     refresh
  205.     # 右侧窗口被激活的情况下: 调用 update_right
  206.     if @right_window.active
  207.       update_right
  208.       return
  209.     end
  210.     # 物品窗口被激活的情况下: 调用 update_item
  211.     if @item_window.active
  212.       update_item
  213.       return
  214.     end
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 刷新画面 (右侧窗口被激活的情况下)
  218.   #--------------------------------------------------------------------------
  219.   def update_right
  220.     # 按下 B 键的情况下
  221.     if Input.trigger?(Input::B)
  222.       # 演奏取消 SE
  223.       $game_system.se_play($data_system.cancel_se)
  224.       # 切换到菜单画面
  225.       $scene = Scene_Menu.new(2)
  226.       return
  227.     end
  228.     # 按下 C 键的情况下
  229.     if Input.trigger?(Input::C)
  230.       # 固定装备的情况下
  231.       if @actor.equip_fix?(@right_window.index)
  232.         # 演奏冻结 SE
  233.         $game_system.se_play($data_system.buzzer_se)
  234.         return
  235.       end
  236.       if @right_window.index == 1 && $both_hands_weapon.include?(@actor.left_id)
  237.         # 演奏冻结 SE
  238.         $game_system.se_play($data_system.buzzer_se)
  239.         return
  240.       end
  241.       # 演奏确定 SE
  242.       $game_system.se_play($data_system.decision_se)
  243.       # 激活物品窗口
  244.       @right_window.active = false
  245.       @item_window.active = true
  246.       @item_window.index = 0
  247.       return
  248.     end
  249.     # 按下 R 键的情况下
  250.     if Input.trigger?(Input::R)
  251.       # 演奏光标 SE
  252.       $game_system.se_play($data_system.cursor_se)
  253.       # 移至下一位角色
  254.       @actor_index += 1
  255.       @actor_index %= $game_party.actors.size
  256.       # 切换到别的装备画面
  257.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  258.       return
  259.     end
  260.     # 按下 L 键的情况下
  261.     if Input.trigger?(Input::L)
  262.       # 演奏光标 SE
  263.       $game_system.se_play($data_system.cursor_se)
  264.       # 移至上一位角色
  265.       @actor_index += $game_party.actors.size - 1
  266.       @actor_index %= $game_party.actors.size
  267.       # 切换到别的装备画面
  268.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  269.       return
  270.     end
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 刷新画面 (物品窗口被激活的情况下)
  274.   #--------------------------------------------------------------------------
  275.   def update_item
  276.     # 按下 B 键的情况下
  277.     if Input.trigger?(Input::B)
  278.       # 演奏取消 SE
  279.       $game_system.se_play($data_system.cancel_se)
  280.       # 激活右侧窗口
  281.       @right_window.active = true
  282.       @item_window.active = false
  283.       @item_window.index = -1
  284.       return
  285.     end
  286.     # 按下 C 键的情况下
  287.     if Input.trigger?(Input::C)
  288.       # 演奏装备 SE
  289.       $game_system.se_play($data_system.equip_se)
  290.       # 获取物品窗口现在选择的装备数据
  291.       item = @item_window.item
  292.       # 变更装备
  293.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)
  294.       if $both_hands_weapon.include?(item.id) && @right_window.index == 0
  295.         @actor.equip(1,0)
  296.       end
  297.       # 激活右侧窗口
  298.       @right_window.active = true
  299.       @item_window.active = false
  300.       @item_window.index = -1
  301.       # 再生成右侧窗口、物品窗口的内容
  302.       @right_window.refresh
  303.       @item_window.refresh
  304.       $game_temp.common_event_id = 4#增加当前装备的能力
  305.       return
  306.     end
  307.   end
  308. end
复制代码
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
 楼主| 发表于 2013-6-2 09:21:44 | 只看该作者
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
3
发表于 2013-6-2 12:21:10 | 只看该作者
说下你目前是什么问题吧,那样修复起来容易些
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
 楼主| 发表于 2013-6-2 12:33:53 | 只看该作者
wwwcctvty 发表于 2013-6-2 12:21
说下你目前是什么问题吧,那样修复起来容易些

就是双手武器的设置···用数组的话武器多了写起来很麻烦···还有是我想做一个伪造的装备冲突系统,举个例子,当身上穿了铠甲套装时裤子类型的装备不能穿···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
5
发表于 2013-6-2 19:02:55 | 只看该作者
你看下可不可以、、、、、、发现楼主变量用的太牛了、、、
Data.rar (252.39 KB, 下载次数: 38)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
 楼主| 发表于 2013-6-5 15:15:35 | 只看该作者
wwwcctvty 发表于 2013-6-2 19:02
你看下可不可以、、、、、、发现楼主变量用的太牛了、、、

你这改了感觉跟没动一样···改了哪里呢···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
7
发表于 2013-6-5 15:23:37 | 只看该作者
chd114 发表于 2013-6-5 15:15
你这改了感觉跟没动一样···改了哪里呢···

{:2_263:} 改了穿披风后不能穿裤子、、、、、、、、、、、、、、、我不是在脚本注释了吗、、、、、
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
 楼主| 发表于 2013-6-5 15:29:46 | 只看该作者
wwwcctvty 发表于 2013-6-5 15:23
改了穿披风后不能穿裤子、、、、、、、、、、、、、、、我不是在脚本注释了吗、、、、、 ...

你没标记哪里有改我也找不到啊TAT亲···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
9
发表于 2013-6-5 15:33:01 | 只看该作者
chd114 发表于 2013-6-5 15:29
你没标记哪里有改我也找不到啊TAT亲···

{:2_270:} 工程 已经删除了、、、、你先试下看有用没有
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 01:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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