用了一个技能熟练度升级的脚本。其中自己加了一些东西,见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?虽然查了好多地方,但是对于这些还是一知半解,求解答。
end
def addskillexp
return unless @action.skill.updatable?
@skillexp[@action.skill.id] = 0 if @skillexp[@action.skill.id].nil?
@skillexp[@action.skill.id] += @action.skill.eachexp
if @skillexp[@action.skill.id] >= @action.skill.maxexp
return if @skills.include?(@action.skill.nextskillid)
learn_skill(@action.skill.nextskillid)
if @action.skill.element_set.include?(30)
$game_variables[150][$game_party.members[@actor_index]] += 10
end
forget_skill(@action.skill.id) unless MULTISKILLS
$game_message.new_page
text = "技能" + @action.skill.name + "升级"
$game_message.texts.push(text)
text = "学会" + $data_skills[@action.skill.nextskillid].name
$game_message.texts.push(text)
end
end
end
class Game_Enemy
def addskillexp
end
end
module RPG
class Skill
def updatable?
@note =~ /下等级技能编号(\d+)/
return !$1.nil?
end
def nextskillid
@note =~ /下等级技能编号(\d+)/
return $1.to_i
end
def maxexp
@note =~ /升级经验(\d+)/
return $1.to_i
end
def eachexp
@note =~ /每次增加经验(\d+)/
return $1.to_i
end
end
end
class Scene_Battle
alias superexecute_action_skill execute_action_skill
def execute_action_skill
superexecute_action_skill
@active_battler.addskillexp
end
end
[/pre]