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

Project1

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

[已经解决] 如何获取战斗中使用技能的队员的ID(有范例)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
跳转到指定楼层
1
发表于 2015-3-26 16:29:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 duchen5779 于 2015-3-26 20:20 编辑

用了一个技能熟练度升级的脚本。其中自己加了一些东西,见27行-29行:当目前使用的技能的属性为30号属性时,150号变量数组里的当前使用技能的这个队员的ID号变量加10。
具体意思就是,150号变量是我设置的一个数组,数组里的每一个变量是和相应的队友的ID是绑定的,比如02号队友,用的就是[150][2]号来储存一个系数。这样在战斗中当技能升级时,可以方便的增加这个系数的值。
但测试的时候出现 ‘no implicit conversion from nil to integer“的错误,第28行的,我估计是和变量没有转换有关系。可是到底应该怎么写?$game_party.members[@actor_index]?还是$game_party.members[@actor_index].id?虽然查了好多地方,但是对于这些还是一知半解,求解答。

RUBY 代码复制
  1. =begin
  2. 在可以升级的技能的备注栏里写上
  3. 下等级技能编号
  4. 升级经验
  5. 每次增加经验
  6. 下等级技能编号2
  7. 升级经验10
  8. 每次增加经验2
  9. =end
  10. class Game_Actor
  11.   MULTISKILLS = false#true时可以同时学会高等级技能和低等级技能,
  12.                     #false时候学会高等级技能后会遗忘低等级技能
  13.   alias supersetup setup
  14.   def setup(*args)
  15.     supersetup(*args)
  16.     @skillexp = {}
  17.  
  18.     end
  19.   def addskillexp
  20.     return unless @action.skill.updatable?
  21.     @skillexp[@action.skill.id] = 0 if @skillexp[@action.skill.id].nil?
  22.     @skillexp[@action.skill.id] += @action.skill.eachexp
  23.     if @skillexp[@action.skill.id] >= @action.skill.maxexp
  24.       return if @skills.include?(@action.skill.nextskillid)
  25.       learn_skill(@action.skill.nextskillid)  
  26.     if @action.skill.element_set.include?(30)      
  27.     $game_variables[150][$game_party.members[@actor_index]] += 10
  28.      end
  29.       forget_skill(@action.skill.id) unless MULTISKILLS
  30.       $game_message.new_page
  31.       text = "技能" + @action.skill.name + "升级"
  32.       $game_message.texts.push(text)
  33.       text = "学会" + $data_skills[@action.skill.nextskillid].name
  34.       $game_message.texts.push(text)
  35.  
  36.  
  37.     end
  38.     end
  39.   end
  40.  
  41.  
  42.  
  43. class Game_Enemy
  44.   def addskillexp
  45.   end
  46. end
  47. module RPG
  48.   class Skill
  49.     def updatable?
  50.       @note =~ /下等级技能编号(\d+)/
  51.       return !$1.nil?
  52.     end
  53.     def nextskillid
  54.       @note =~ /下等级技能编号(\d+)/
  55.       return $1.to_i
  56.     end
  57.     def maxexp
  58.       @note =~ /升级经验(\d+)/
  59.       return $1.to_i
  60.     end
  61.     def eachexp
  62.       @note =~ /每次增加经验(\d+)/
  63.       return $1.to_i
  64.     end
  65.   end
  66. end
  67. class Scene_Battle
  68.   alias superexecute_action_skill execute_action_skill
  69.   def execute_action_skill
  70.     superexecute_action_skill
  71.     @active_battler.addskillexp
  72.   end
  73. end


上传了一个范例……战斗的时候用“炎”这个技能之后报错,求助!谢谢!感激不尽!!
@正太君  
@怪蜀黍  

Project3.rar

238.3 KB, 下载次数: 47

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2015-3-27 09:15:05 | 只看该作者
事件1:
  1. $game_variables[1] = Array.new($data_actors.size + 1){0} unless $game_variables[1].is_a?(Array)
复制代码
独立开关: A = ON


脚本编辑器:
  1.   def addskillexp
  2.     return unless @action.skill.updatable?
  3.     @skillexp[@action.skill.id] = 0 if @skillexp[@action.skill.id].nil?
  4.     @skillexp[@action.skill.id] += @action.skill.eachexp
  5.     if @skillexp[@action.skill.id] >= @action.skill.maxexp
  6.       return if @skills.include?(@action.skill.nextskillid)
  7.       learn_skill(@action.skill.nextskillid)  
  8.     if @action.skill.element_set.include?(10)      
  9.       $game_variables[1][@actor_id] += 10
  10.     end
  11.       forget_skill(@action.skill.id) unless MULTISKILLS
  12.       $game_message.new_page
  13.       text = "技能" + @action.skill.name + "升级"
  14.       $game_message.texts.push(text)
  15.       text = "学会" + $data_skills[@action.skill.nextskillid].name
  16.       $game_message.texts.push(text)
  17.     end
  18.   end
复制代码

评分

参与人数 1梦石 +1 收起 理由
Luciffer + 1 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
3
 楼主| 发表于 2015-3-27 10:48:39 | 只看该作者
本帖最后由 duchen5779 于 2015-3-27 11:16 编辑

试了一下,没问题。
额……才看明白,第一行代码是初始化变量数组吧?其实我在地图上弄了一个这样的事件:$game_variables[150] = []
其实问题主要是在那个@actor.id那里……先前觉得肯定很复杂,搞了好多复杂的用索引用ID的办法……结果没想到一个简单的@actor.id就代表了当前使用技能的队员的编号……看来还得摸索啊……
另:不知道这个帖子 https://rpg.blue/thread-377590-1-1.html   里面的那个不同队员不同经验值是不是能做呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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