Project1

标题: 为什么不能用实例变量? [打印本页]

作者: kvkv97    时间: 2022-8-4 23:11
标题: 为什么不能用实例变量?
  #------------------------------------------------------------------
  # ● 更改等级
  #     level : 新的等级
  #------------------------------------------------------------------
  def level=(level)
    # 检查上下限
    level = [[level, $data_actors[@actor_id].final_level].min, 1].max
    # 更改 EXP
    self.exp = @exp_list[level]
  end
在地图上设置加等级的NPC,等级+10,把level=(level)方法里面的第一行的level变成实变量,再把@exp_list[level]里面的level变成实变量,为什么等级是加了,但是技能只能学习初始化里的技能,升级后的技能却学不了?
作者: guoxiaomi    时间: 2022-8-5 16:06
你需要继续查看exp=方法
作者: kvkv97    时间: 2022-8-5 23:12
顶起!顶起!顶起!顶起!顶起!顶起!别沉
作者: chd114    时间: 2022-8-5 23:23
因为升级学习到技能是一个完整的升级流程里的其中一部分,你直接用脚本简单粗暴调高等级只是把代表等级的变量调高了···
除了和当前等级绑定的东西会跟着变化,到了等级以后自动学习/遗忘的技能不会因为你直接调等级而变化
具体的到了等级自动学习/遗忘技能的流程你应该可以在game_actor之类的地方找到
作者: guoxiaomi    时间: 2022-8-6 22:55
exp=方法的定义就在level=上面。很清楚的看出,在修改exp的时候,会逐步修改@level变量,并且添加相应的技能。
像你所做的,提前修改了@level,就会导致这个添加技能的步骤被跳过。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 更改 EXP
  3.   #     exp : 新的 EXP
  4.   #--------------------------------------------------------------------------
  5.   def exp=(exp)
  6.     @exp = [[exp, 9999999].min, 0].max
  7.     # 升级
  8.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  9.       @level += 1
  10.       # 学会特技
  11.       for j in $data_classes[@class_id].learnings
  12.         if j.level == @level
  13.           learn_skill(j.skill_id)
  14.         end
  15.       end
  16.     end
  17.     # 降级
  18.     while @exp < @exp_list[@level]
  19.       @level -= 1
  20.     end
  21.     # 修正当前的 HP 与 SP 超过最大值
  22.     @hp = [@hp, self.maxhp].min
  23.     @sp = [@sp, self.maxsp].min
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 更改等级
  27.   #     level : 新的等级
  28.   #--------------------------------------------------------------------------
  29.   def level=(level)
  30.     # 检查上下限
  31.     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  32.     # 更改 EXP
  33.     self.exp = @exp_list[level]
  34.   end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1