加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 黑夜守望者 于 2021-12-10 12:02 编辑
首先说明,是盗窃“技能”而不是盗窃技能
效果是在战斗的时候对敌人使用该技能,则可以偷盗(习得)一个技能,就和GBA上的最终幻想战略版A一样偷盗技能啦。
方法:首先在Game_Battler 3的class Game_Battler下面添加一个函数:
#-------------------------------------------------------------------------- # ● 取得可盗窃的技能id # enemy_id : 敌方id #-------------------------------------------------------------------------- def steal_skill_id(enemy_id) case enemy_id when 1 #幽灵 return 33 #毒 when 2 #蜥蜴 return 7 #火 end end
#--------------------------------------------------------------------------
# ● 取得可盗窃的技能id
# enemy_id : 敌方id
#--------------------------------------------------------------------------
def steal_skill_id(enemy_id)
case enemy_id
when 1 #幽灵
return 33 #毒
when 2 #蜥蜴
return 7 #火
end
end
作用是设置某个id的敌人对应获取某个id的技能。
这里只添加了1号的幽灵和2号的蜥蜴能偷盗的技能33毒和7火,其他类推。
然后在第201行下面插入
#技能盗取 if user.is_a?(Game_Actor) && skill.id == 81 #判定使用者为actor,偷窃技能的技能id为81 @enemy_id = self.id #获取敌方id @steal_skill_id = steal_skill_id(@enemy_id) #获取可以盗取的敌人技能 @user_skill_learn = user.skill_learn?(@steal_skill_id) #判定是否已习得技能 @skill_name = $data_skills[@steal_skill_id].name #获取技能名称 if rand() < 0.5 && @user_skill_learn == false && @steal_skill_id != nil #盗取成功率&是否已学得该技能&可偷技能不为空 user.learn_skill(@steal_skill_id) #习得技能 self.damage = @skill_name + "skill stolen" #成功显示 else self.damage = "Miss" #不成功显示 end end
#技能盗取
if user.is_a?(Game_Actor) && skill.id == 81 #判定使用者为actor,偷窃技能的技能id为81
@enemy_id = self.id #获取敌方id
@steal_skill_id = steal_skill_id(@enemy_id) #获取可以盗取的敌人技能
@user_skill_learn = user.skill_learn?(@steal_skill_id) #判定是否已习得技能
@skill_name = $data_skills[@steal_skill_id].name #获取技能名称
if rand() < 0.5 && @user_skill_learn == false && @steal_skill_id != nil #盗取成功率&是否已学得该技能&可偷技能不为空
user.learn_skill(@steal_skill_id) #习得技能
self.damage = @skill_name + "skill stolen" #成功显示
else
self.damage = "Miss" #不成功显示
end
end
这样使用技能ID81的技打中id为1的敌人时,使用技能的角色就会学会33号的技能。
习得成功显示窗口尚在研究中,这个只是个思路,按照这个思路可以方便地做出盗窃物品的脚本。
当然这样设置比较笨,你可以弄个hash表设置敌人id和可偷技能id的对应。
脚本小白,还在学习中…………
|