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

Project1

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

[已经解决] 如何自定义战斗中技能的排列顺序?

[复制链接]

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
跳转到指定楼层
1
发表于 2014-2-5 21:41:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 crow2006 于 2014-2-5 22:23 编辑

我想自由设定每个主角已学技能在战斗中的排列顺序,因为有些被动技能是无法使用的,而它们在数据库中的序号排在了很多主动技能的前面,这样非常不方便。
如果要改动起来的话,比较麻烦。
求教,非常感谢。
补充一下,我已经将被动技能在战斗中屏蔽掉了,但是不知如何用脚本自由排列。
RUBY 代码复制
  1. class Window_Skill < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 刷新
  4.   #--------------------------------------------------------------------------
  5.   def refresh
  6.     @data = []
  7.     for skill in @actor.skills
  8. ######################################################
  9.       if $game_temp.in_battle
  10.         if not [378,379,380,381,382,383,384,385,386,387,601,602,603,604,605,606,607,
  11.           621,622,623,624,625,626,627,641,642,643,644,645,646,647,648,649,650,687,
  12.           701,702,703,704,853,854,855,856,866,867,868,869,870,871,872,873,874,875].include?(skill.id)
  13.          @data.push(skill)
  14.          if skill.id == @actor.last_skill_id
  15.           self.index = @data.size - 1
  16.          end
  17.         end
  18.       else
  19.       @data.push(skill)
  20.       if skill.id == @actor.last_skill_id
  21.         self.index = @data.size - 1
  22.       end        
  23.       end  
  24. ######################################################      
  25.     end
  26.     @item_max = @data.size   
  27.     create_contents
  28.     for i in 0...@item_max
  29.       draw_item(i)
  30.     end
  31.   end
  32. end



Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
2
发表于 2014-2-5 22:59:06 | 只看该作者
这根本不需要脚本的嘛。比如把你的主动技能设置在1到50,被动技能设置在51到100就行了

点评

有没有什么办法能够重新定义顺序而不用管数据库的?  发表于 2014-2-5 23:01
我知道这样可以。 但是我游戏中的技能太多了,而且很多都有自定义的不同的特殊效果。 现在已经积重难返了。  发表于 2014-2-5 23:00
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
3
发表于 2014-2-5 23:53:23 | 只看该作者
本帖最后由 a364774426 于 2014-2-6 11:19 编辑

先插入下面这个读取备注栏的脚本
  1. #==============================================================================
  2. # ■ [VX] 读取rmvx备注栏
  3. #    [VX] ReadNote
  4. #----------------------------------------------------------------------------
  5. # 使用说明:
  6. # 【例】在vx数据库比如1号物品的备注栏里写: 耐久度 = 10
  7. #       读取时使用: p $data_items[1].read_note('耐久度')
  8. # 几点注意:
  9. #       ① 支持汉字,英文忽略大小写
  10. #       ② 等号右边遵循ruby语法格式,例如:
  11. #              test1 = 1              #=> 1
  12. #              test2 = "a"            #=> "a"
  13. #              test3 = true           #=> true
  14. #              test4 = [1,2,3]        #=> [1,2,3]
  15. #              test5 = {"orz"=>1}     #=> {"orz"=>1}
  16. #       ③ 等号忽略空格,以下均正确:
  17. #              test = nil; test= nil; test =nil; test=nil
  18. #----------------------------------------------------------------------------
  19. #    更新作者: 沉影不器
  20. #    许可协议: FSL
  21. #    项目版本: 2.02.1001
  22. #    引用网址: http://rpg.blue/thread-99474-1-1.html
  23. #----------------------------------------------------------------------------
  24. #    - *2.02.1001* (2010-10-01) By 沉影不器
  25. #      *修复引用方法带Binding的错误
  26. #
  27. #    - *2.01.0806* (2010-08-06) By 沉影不器
  28. #      *完全用eval执行文本,进一步简化代码
  29. #
  30. #    - *2.00.0729* (2010-07-29) By 沉影不器
  31. #      *改用eval执行赋值内容,支持浮点.数组.哈希等
  32. #      *强制忽略大小写
  33. #      *简化脚本
  34. #
  35. #    - *1.11.0824* (2008-08-24) By 沉影不器
  36. #      *修正rmvx英文帮助带来的类名错误
  37. #
  38. #    - *1.10.0821* (2008-08-21) By 沉影不器
  39. #      *扩展到支持rmvx数据库内所有带备注栏的选项
  40. #      *改了一下算法,使备注栏的注释也同ruby语法一样忽略空格
  41. #
  42. #    - *1.02.0819* (2008-08-19) By 沉影不器
  43. #      *直接成为RPG::BaseItem内一个函数,简化使用方法
  44. #
  45. #    - *1.00.0818* (2008-08-18) By 沉影不器
  46. #      *初版
  47. #==============================================================================
  48. $fscript = {} if $fscript == nil
  49. $fscript["ReadNote"] = "2.02.1001"
  50. #==============================================================================
  51. # ■ RPG
  52. #==============================================================================
  53. module RPG
  54.   #=============================================================================
  55.   # □ ReadNote
  56.   #=============================================================================
  57.   module ReadNote
  58.     def self.read(str, section, mismatch = nil)
  59.       str.each_line do |line|
  60.         ## 不希望忽略大小写,则删掉下一行最后一个i
  61.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  62.       end
  63.       return mismatch
  64.     end
  65.   end
  66.   #=============================================================================
  67.   # ■ BaseItem
  68.   #=============================================================================
  69.   class BaseItem
  70.     #-------------------------------------------------------------------------
  71.     # ○ 读取rmvx备注栏指定字段
  72.     #     section  : 字段名
  73.     #     mismatch : 未匹配时的返回值
  74.     #-------------------------------------------------------------------------
  75.     def read_note(section, mismatch = nil)
  76.       ReadNote.read(self.note, section, mismatch)
  77.     end
  78.   end
  79.   #=============================================================================
  80.   # ■ Enemy
  81.   #=============================================================================
  82.   class Enemy
  83.     def read_note(section, mismatch = nil)
  84.       ReadNote.read(self.note, section, mismatch)
  85.     end
  86.   end
  87.   #=============================================================================
  88.   # ■ State
  89.   #=============================================================================
  90.   class State
  91.     def read_note(section, mismatch = nil)
  92.       ReadNote.read(self.note, section, mismatch)
  93.     end
  94.   end
  95. end
复制代码
然后更改Window_SKill
  1. def refresh
  2. ……
  3. end
复制代码
的内容为
  1.   def refresh
  2.     @data = []
  3.     if $game_temp.in_battle
  4.       for skill in @actor.skills
  5.         @data.push(skill) if skill.read_note('类型') == nil
  6.       end
  7.       if skill.id == @actor.last_skill_id
  8.         self.index = @data.size - 1
  9.       end
  10.     else
  11.       for skill in @actor.skills
  12.         @data.push(skill) if skill.read_note('类型') == nil
  13.       end
  14.       for skill in @actor.skills
  15.         @data.push(skill) if skill.read_note('类型') == "被动"
  16.         if skill.id == @actor.last_skill_id
  17.           self.index = @data.size - 1
  18.         end
  19.       end
  20.     end
  21.     @item_max = @data.size
  22.     create_contents
  23.     for i in 0...@item_max
  24.       draw_item(i)
  25.     end
  26.   end
复制代码
最后在技能的备注栏中写上:类型 = "被动",那么这个技能就会被排到最后了,并且战斗中屏蔽了被动技能
PS:未经周密测试,有问题的话再说

评分

参与人数 1星屑 +100 收起 理由
铃仙·优昙华院·因幡 + 100 认可答案

查看全部评分

这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
4
 楼主| 发表于 2014-2-7 10:24:18 | 只看该作者
a364774426 发表于 2014-2-5 23:53
先插入下面这个读取备注栏的脚本然后更改Window_SKill
的的内容为最后在技能的备注栏中写上:类型 = "被动" ...

谢谢,只是这样的话还不能达到自定义技能顺序的效果。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-6 23:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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