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

Project1

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

[已经过期] 装备脚本修改后出BUG求解

[复制链接]

Lv4.逐梦者

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

开拓者

跳转到指定楼层
1
发表于 2013-5-12 11:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  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.       $game_temp.common_event_id = 19#减少当前装备的能力
  294.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)
  295.       if $both_hands_weapon.include?(item.id) && @right_window.index == 0
  296.         @actor.equip(1,0)
  297.       end
  298.       # 激活右侧窗口
  299.       @right_window.active = true
  300.       @item_window.active = false
  301.       @item_window.index = -1
  302.       # 再生成右侧窗口、物品窗口的内容
  303.       @right_window.refresh
  304.       @item_window.refresh
  305.       $game_temp.common_event_id = 20#增加当前装备的能力
  306.       return
  307.     end
  308.   end
  309. end
复制代码
19号事件
  1. $game_variables[15]==$game_actors.id
  2. $game_variables[9]=[$game_variables[8][0]\
  3. [$game_actors[1].left_id-1]]
  4. p = 0
  5. while p < 1
  6. $game_variables[1]\
  7. [$game_variables[15]][p][1]-=\
  8. $game_variables[3]\
  9. [$game_variables[15]][p]*\
  10. $game_variables[9][0][21+p]/100+\
  11. $game_variables[9][0][p]
  12. p += 1
  13. end
  14. i = 0
  15. while i < 21
  16. $game_variables[1]\
  17. [$game_variables[15]][i][0]-=\
  18. $game_variables[3]\
  19. [$game_variables[15]][i]*\
  20. $game_variables[9][0][21+i]/100+\
  21. $game_variables[9][0][i]
  22. i += 1
  23. end
复制代码
纯脚本

20号事件
  1. $game_variables[15]==$game_actors.id
  2. $game_variables[9]=[$game_variables[8][0]\
  3. [$game_actors[1].left_id-1]]
  4. p = 0
  5. while p < 1
  6. $game_variables[1]\
  7. [$game_variables[15]][p][1]+=\
  8. $game_variables[3]\
  9. [$game_variables[15]][p]*\
  10. $game_variables[9][0][21+p]/100+\
  11. $game_variables[9][0][p]
  12. p += 1
  13. end
  14. i = 0
  15. while i < 21
  16. $game_variables[1]\
  17. [$game_variables[15]][i][0]+=\
  18. $game_variables[3]\
  19. [$game_variables[15]][i]*\
  20. $game_variables[9][0][21+i]/100+\
  21. $game_variables[9][0][i]
  22. i += 1
  23. end
复制代码
这两个事件在脚本编辑器处理就出问题了···@hys111111 @hcm @论坛助理 @joe5491 求解···


PS:这个脚本修改的目的是为了提高变更装备后新能力转换的效率···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv4.逐梦者

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

开拓者

2
 楼主| 发表于 2013-5-12 11:13:43 | 只看该作者
···@hys111111  @hcm  @论坛助理  @joe5491   

点评

我最近才能勉强上6R管理一下帖子……  发表于 2013-5-12 19:00
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

3
发表于 2013-5-12 15:11:53 | 只看该作者
列出错误点,你自己再看看
$game_actors.id     这个东西不对,你要的是角色的ID吧,这个调用的是Object类里的那个id方法。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

4
 楼主| 发表于 2013-5-12 15:28:11 | 只看该作者
亿万星辰 发表于 2013-5-12 15:11
列出错误点,你自己再看看
$game_actors.id     这个东西不对,你要的是角色的ID吧,这个调用的是Object类 ...

我要读取的是目前正在变更装备的角色的ID,然后代入变量,然后变量函数改变···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

5
 楼主| 发表于 2013-5-12 15:29:17 | 只看该作者
亿万星辰 发表于 2013-5-12 15:11
列出错误点,你自己再看看
$game_actors.id     这个东西不对,你要的是角色的ID吧,这个调用的是Object类 ...

出的BUG不会弹错,就是换完装备后变量没改变,然后角色动不了 Data.rar (233.65 KB, 下载次数: 15)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
6
发表于 2013-5-14 01:15:17 | 只看该作者
把$game_actors.id改成$game_party[0].id看看
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

7
 楼主| 发表于 2013-5-15 14:22:59 | 只看该作者
joe5491 发表于 2013-5-14 01:15
把$game_actors.id改成$game_party[0].id看看

我要读取的是当前更换装备的角色的编号···不是1号角色的编号···这是在装备栏里面···如果我换其他角色的装备的话按照你这样改的话只有1号角色的能力变来变去吧···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

8
发表于 2013-5-15 17:22:33 | 只看该作者
你写的 $game_actors.id 根本不是当前角色的ID
你重定义了$game_actors这个变量么?默认这个变量里存储的是所有角色的信息,是个数组,你用.id方法调用的是Object类里的id方法。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

9
 楼主| 发表于 2013-5-15 19:07:58 | 只看该作者
亿万星辰 发表于 2013-5-15 17:22
你写的 $game_actors.id 根本不是当前角色的ID
你重定义了$game_actors这个变量么?默认这个变量里存储的是 ...

没定义····那么应该怎么写呢···如果直接写某个角色的ID就会出现换其他角色的装备时该角色能力同时改变的情况···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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