Project1

标题: 关于初始技能无法分歧的问题 [打印本页]

作者: qknight    时间: 2016-11-15 20:37
标题: 关于初始技能无法分歧的问题
本帖最后由 qknight 于 2016-11-16 22:21 编辑

我们都知道,直接在角色数据库的特性栏里就可以替角色设置初始技能了,可问题就是,该初始技能明明可以在角色的技能栏里找到,也可以正常使用,却无法被分歧条件找到。
(起初在下以为是自己脚本用多,又出BUG了,结果用VA新建个无脚本的新游戏测试也有这个问题)

分歧该名角色是否学会了这个技能时,系统会告诉你他不会这个技能……而且该初始技能无法遗忘……

目前在下找到的解决方法就是不设置初始技能,在游戏开始时直接让所有角色自动学会他们本该自带的初始技能,这样就不算初始技能而是后天技能了……
但如果可能的话,还是请大神告知,这个初始技能的问题到底出在哪里,有无办法可以永久解决?这样游戏中途重置(初始化)人物的时候会比较方便……

最后在下决定还是多用用公共事件,这样还可以附带设置些人物初始善恶值、声望值等变量
已解决
作者: QQ蚊子湯    时间: 2016-11-15 20:59
設置該技能為一等學會

作者: VIPArcher    时间: 2016-11-15 22:20
初始技能要设置在职业里面的那个技能里,学会的等级为你的初始等级即可。
不能是通过装备,特性,状态学会。
查看源码可以知道,RMVA中把通过【升级/事件/道具使用效果里面的学会技能】和通过状态/特性/装备防具特性里附加的技能区别对待
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取技能实例的数组
  4.   #--------------------------------------------------------------------------
  5.   def skills
  6.     (@skills | added_skills).sort.collect {|id| $data_skills[id] }
  7.   end
  8. end
复制代码

上面的 @skills 里就是角色真正学会(通过 learn_skill 方法)的技能 added_skills 则是通过特性附加的

而判断是否学会技能的时候
  1. #--------------------------------------------------------------------------
  2. # ● 判定技能是否已经学会
  3. #--------------------------------------------------------------------------
  4. def skill_learn?(skill)
  5.   skill.is_a?(RPG::Skill) && @skills.include?(skill.id)
  6. end
复制代码

仅仅只判断@skills数组内是否有这个技能

如果你初始技能就是通过职业栏里设置的,然而还是事件内无法判断是否学会,恐怕不是你自己事件的问题就是你RM的工程有问题
作者: qknight    时间: 2016-11-15 22:37
QQ蚊子湯 发表于 2016-11-15 20:59
設置該技能為一等學會

在职业中设置的初始技能可以被分歧也可以被遗忘!就是原本一些同职业的英雄都得各自设置职业树了……
作者: VIPArcher    时间: 2016-11-15 22:58
qknight 发表于 2016-11-15 22:37
在职业中设置的初始技能可以被分歧也可以被遗忘!就是原本一些同职业的英雄都得各自设置职业树了…… ...

现在你有两条路走,第一就是在职业栏里设置技能树
第二自己写一个方法来判断是否学会某技能,例如:【未测试】
  1. $game_actors[角色ID].skills.include? $data_skills[技能ID]
复制代码

作者: sq333333    时间: 2016-11-15 23:27
特性里设置的无法遗忘




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