Project1

标题: 如何实现复数职业达到指定等级后自动学习某项技能 [打印本页]

作者: 绿坝    时间: 2014-11-21 10:23
标题: 如何实现复数职业达到指定等级后自动学习某项技能
比如要求是战士10级,法师10级。如何让角色达到这个要求后自动获得一个技能。
PS:任何角色达到要求都会获得技能,而不是特定某个角色。
作者: 路路    时间: 2014-11-21 10:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 三途亚梦    时间: 2014-11-21 11:56
这……难道不就是 数据库 - 职业 下面那一个技能列表做的事吗……
作者: 绿坝    时间: 2014-11-21 12:19

可能我说的不太明白楼上的误解了。
比方说A的职业是战士10级,然后他转职成法师也升级到10级,在法师升级到10级的时候他获得某个技能;
就是说在两个或两个以上职业达到某个等级要求的时候,角色获得某个技能。
作者: 三途亚梦    时间: 2014-11-21 12:46
绿坝 发表于 2014-11-21 12:19
可能我说的不太明白楼上的误解了。
比方说A的职业是战士10级,然后他转职成法师也升级到10级,在 ...

如果是需要复数职业达到特定等级,再让该人物习得某技能思路有很多种,
我在这就先提供一种思路给你。

假使战士10级、法师10级,习得火焰刃。

那么在战士10级的时候给该人物附加一个不会被死亡解除的状态,状态无内容只是充当“变量”用的。
然后在他法师10级的时候,检测该人物是否处于上述状态,
如果是则解除状态并习得火焰刃;如果不是附加上上述状态。

同理你在战士10级的时候给人物习得一个技能,叫“火焰刃灵感”的空壳技能。
法师时候检测是否学会该技能,是则学会真正的火焰刃。
作者: taroxd    时间: 2014-11-22 15:34
本帖最后由 taroxd 于 2014-11-25 12:33 编辑

未测试

RUBY 代码复制
  1. LIST_20141122 = [
  2.   # [ 技能ID, { 职业ID => 等级, 职业 ID => 等级, ...} ],
  3.   [ 12, { 1 => 10, 2 => 10 } ],
  4.   # and so on...
  5.  
  6. ]
  7.  
  8. class Game_Actor
  9.  
  10.   alias lvup_20141122 level_up
  11.  
  12.   def level_up
  13.  
  14.     lvup_20141122
  15.  
  16.     LIST_20141122.each do |skill_id, class_to_level|
  17.       class_to_level.all? do |cl, lv|
  18.         @exp[cl] ||= 0
  19.         @exp[cl] >= $data_classes[cl].exp_for_level(lv)
  20.       end && learn_skill(skill_id)
  21.     end
  22.   end
  23.  
  24. end

作者: chd114    时间: 2014-11-22 16:46
你指的是一个角色多职业?然后指定的职业都到了10级才能学会技能?
作者: 绿坝    时间: 2014-11-24 22:33
本帖最后由 绿坝 于 2014-11-24 22:49 编辑
taroxd 发表于 2014-11-22 15:34
未测试


只要获得经验就会显示第18行错误
作者: 企鹅达达    时间: 2014-11-25 09:23
本帖最后由 企鹅达达 于 2014-11-25 09:27 编辑

首先你得写个脚本储存每个角色各个职业的等级,因为va转职之后等级是清零或者直接转移到新职业(具体哪种忘了)
然后你可以用被动技能的脚本,在职业的备注栏里设定另一个职业等级多少时附加某个状态,该状态可以附加某技能
  1. =begin
  2. ####################################################################
  3.                  职业等级系统   1.0
  4.                    作者:企鹅达达
  5. 读取方式:$game_variables[1015][主角id][职业id]
  6. ####################################################################
  7. =end

  8.   module QE_CLASS
  9.     SAVE_VAR = 1015
  10.   end
  11.   
  12. #==============================================================================
  13. # ■ Game_Actor
  14. #------------------------------------------------------------------------------
  15. #  管理角色的类。
  16. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  17. #   具体使用请查看 Game_Party 类 ($game_party) 。
  18. #==============================================================================

  19. class Game_Actor < Game_Battler
  20.   #--------------------------------------------------------------------------
  21.   # ● 设置
  22.   #--------------------------------------------------------------------------
  23.   alias qe_class_setup setup
  24.   def setup(actor_id)
  25.     qe_class_setup(actor_id)
  26.     init_class_var
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 初始化等级记忆数组【新定义】
  30.   #     keep_exp : 是否保留经验值
  31.   #--------------------------------------------------------------------------
  32.   def init_class_var
  33.     $game_variables[QE_CLASS::SAVE_VAR]=[]
  34.     for i in 1..$data_actors.size
  35.       $game_variables[QE_CLASS::SAVE_VAR][i]=[]
  36.       for j in 1..$data_classes.size
  37.         $game_variables[QE_CLASS::SAVE_VAR][i][j]=1
  38.       end
  39.     end
  40.   end

  41.   #--------------------------------------------------------------------------
  42.   # ● 职业变化【更改】
  43.   #     keep_exp : 是否保留经验值
  44.   #--------------------------------------------------------------------------
  45.   def change_class(class_id, keep_exp = false)
  46.     $game_variables[QE_CLASS::SAVE_VAR][self.id][@class_id]=@level
  47.     if keep_exp
  48.       @exp[class_id] = exp
  49.       @class_id = class_id
  50.       change_exp(@exp[@class_id] || 0, false)
  51.     else
  52.       @class_id = class_id
  53.       change_level($game_variables[QE_CLASS::SAVE_VAR][self.id][@class_id], false)
  54.     end
  55.     refresh
  56.   end
  57. end
  58. ####################################################################
复制代码
http://victorscripts.wordpress.com/rpg-maker-vx-ace/gameplay-scripts/passive-states/
前者是我自己写的等级记忆的脚本(需要使用一个变量),后者是被动状态的脚本,职业里的备注参考我脚本里的写法。后面的网页需要代理,还需要前置脚本(请在网页里自己找)




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