查看: 2848|回复: 8

[已经解决] 如何实现复数职业达到指定等级后自动学习某项技能

[复制链接]
梦石
0
星屑
1572
在线时间
903 小时
注册时间
2011-3-4
回帖
801
发表于 2014-11-21 10:23:24 | 显示全部楼层 |阅读模式

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

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

×
比如要求是战士10级,法师10级。如何让角色达到这个要求后自动获得一个技能。
PS:任何角色达到要求都会获得技能,而不是特定某个角色。
全民制作人们,大家好,我是练习时长两年半的黄油制作人绿坝,喜欢唱、跳、rap、篮球,music!欢迎加群:107335249
路路 该用户已被删除
发表于 2014-11-21 10:40:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2014-11-21 11:56:26 | 显示全部楼层
这……难道不就是 数据库 - 职业 下面那一个技能列表做的事吗……
回复

使用道具 举报

梦石
0
星屑
1572
在线时间
903 小时
注册时间
2011-3-4
回帖
801
 楼主| 发表于 2014-11-21 12:19:30 | 显示全部楼层

可能我说的不太明白楼上的误解了。
比方说A的职业是战士10级,然后他转职成法师也升级到10级,在法师升级到10级的时候他获得某个技能;
就是说在两个或两个以上职业达到某个等级要求的时候,角色获得某个技能。

点评

你的意思是要两个职业同时都达到某个等级才习得技能? 那我觉得你真该好好整理一下1L的意思  发表于 2014-11-21 12:37
全民制作人们,大家好,我是练习时长两年半的黄油制作人绿坝,喜欢唱、跳、rap、篮球,music!欢迎加群:107335249
回复

使用道具 举报

闇吼者の災悪眷族

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
回帖
6408
发表于 2014-11-21 12:46:54 | 显示全部楼层
绿坝 发表于 2014-11-21 12:19
可能我说的不太明白楼上的误解了。
比方说A的职业是战士10级,然后他转职成法师也升级到10级,在 ...

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

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

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

同理你在战士10级的时候给人物习得一个技能,叫“火焰刃灵感”的空壳技能。
法师时候检测是否学会该技能,是则学会真正的火焰刃。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-22 15:34:57 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-25 12:33 编辑

未测试

[pre lang="ruby" line="1"]
LIST_20141122 = [
  # [ 技能ID, { 职业ID => 等级, 职业 ID => 等级, ...} ],
  [ 12, { 1 => 10, 2 => 10 } ],
  # and so on...

]

class Game_Actor

  alias lvup_20141122 level_up

  def level_up

    lvup_20141122

    LIST_20141122.each do |skill_id, class_to_level|
      class_to_level.all? do |cl, lv|
        @exp[cl] ||= 0
        @exp[cl] >= $data_classes[cl].exp_for_level(lv)
      end && learn_skill(skill_id)
    end
  end

end[/pre]

评分

参与人数 2星屑 +31 梦石 +1 收起 理由
VIPArcher + 1 + 1 看不懂楼主问的是啥意思...
绿坝 + 30 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-11-22 16:46:54 | 显示全部楼层
你指的是一个角色多职业?然后指定的职业都到了10级才能学会技能?

点评

en  发表于 2014-11-24 11:01
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
1572
在线时间
903 小时
注册时间
2011-3-4
回帖
801
 楼主| 发表于 2014-11-24 22:33:50 | 显示全部楼层
本帖最后由 绿坝 于 2014-11-24 22:49 编辑
taroxd 发表于 2014-11-22 15:34
未测试


只要获得经验就会显示第18行错误

点评

好吧弄错了···是2012年···  发表于 2014-11-28 21:25
如果是要多职业的话···2013年的整合系统比赛的时候VA的有人发过,里面整合了一个多职业系统···  发表于 2014-11-28 21:25
已经尝试更正,但是依旧未测试  发表于 2014-11-25 12:33
全民制作人们,大家好,我是练习时长两年半的黄油制作人绿坝,喜欢唱、跳、rap、篮球,music!欢迎加群:107335249
回复

使用道具 举报

梦石
0
星屑
62
在线时间
839 小时
注册时间
2010-6-26
回帖
652
发表于 2014-11-25 09:23:48 | 显示全部楼层
本帖最后由 企鹅达达 于 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/
前者是我自己写的等级记忆的脚本(需要使用一个变量),后者是被动状态的脚本,职业里的备注参考我脚本里的写法。后面的网页需要代理,还需要前置脚本(请在网页里自己找)
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部