设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 348|回复: 5
打印 上一主题 下一主题

[有事请教] 关于复制技能【已解决】

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1335
在线时间
82 小时
注册时间
2017-9-5
帖子
110
跳转到指定楼层
1
发表于 2024-9-23 21:35:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 间桐樱 于 2024-10-14 20:34 编辑

很早以前就问过了,当时以及搞定了,现在突发奇想,想把复制技能按到一个类似百变怪的队友身上,在战斗中攻击敌人,复制敌人所有技能,在本次战斗中使用
然后就要大改复制技能了,以前是指定复制技能的技能,现在能不能改成指定队友的id,以及相关脚本的修改,能力实在不足
#==============================================================================
# ■ RPG::UsableItem
#==============================================================================
class RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ 偷窃技能的技能かどうかを返す
  #--------------------------------------------------------------------------
  def steal_skill?
    [66].include?(@id)
  end
end

#==============================================================================
# ■ RPG::Item
#==============================================================================
class RPG::Item
  #--------------------------------------------------------------------------
  # ○ 盗めるスキルかどうかを返す
  #--------------------------------------------------------------------------
  def can_steal?
    false
  end
end

#==============================================================================
# ■ Game_ActionResult
#==============================================================================
class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :steal_skills             # 盗まれたスキルIDの配列
  #--------------------------------------------------------------------------
  # ● クリア
  #--------------------------------------------------------------------------
  alias tmsksteal_game_actionresult_clear clear
  def clear
    tmsksteal_game_actionresult_clear
    @steal_skills = []
  end
  #--------------------------------------------------------------------------
  # ● 何らかのステータス(能力値かステート)が影響を受けたかの判定
  #--------------------------------------------------------------------------
  alias tmsksteal_game_actionresult_status_affected? status_affected?
  def status_affected?
    tmsksteal_game_actionresult_status_affected? || !@steal_skills.empty?
  end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● スキル/アイテムの効果適用
  #--------------------------------------------------------------------------
  alias tmsksteal_game_battler_item_apply item_apply
  def item_apply(user, item)
    tmsksteal_game_battler_item_apply(user, item)
    return if user.enemy?
    if enemy? && item.steal_skill? && @result.hit?
      enemy.actions.each do |action|
        skill = $data_skills[action.skill_id]
        next if user.skill_learn?(skill)        # すでに習得済み
        @result.steal_skills.push(skill.id)
        user.learn_steal_skill(skill.id)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 戦闘終了処理
  #--------------------------------------------------------------------------
  alias tmsksteal_game_battler_on_battle_end on_battle_end
  def on_battle_end
    @steal_skills.clear unless enemy?
    tmsksteal_game_battler_on_battle_end
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● スキルの初期化
  #--------------------------------------------------------------------------
  alias tmsksteal_game_actor_init_skills init_skills
  def init_skills
    @steal_skills = []
    tmsksteal_game_actor_init_skills
  end
  #--------------------------------------------------------------------------
  # ● 追加スキルの取得
  #--------------------------------------------------------------------------
  alias tmsksteal_game_actor_added_skills added_skills
  def added_skills
    result = tmsksteal_game_actor_added_skills
    @steal_skills.each {|id| result.push(id) }
    result
  end
  #--------------------------------------------------------------------------
  # ● スキルの習得済み判定
  #--------------------------------------------------------------------------
  alias tmsksteal_game_actor_skill_learn? skill_learn?
  def skill_learn?(skill)
    return true if tmsksteal_game_actor_skill_learn?(skill)
    skill.is_a?(RPG::Skill) && @steal_skills.include?(skill.id)
  end
  #--------------------------------------------------------------------------
  # ○ 盗んだスキルの習得
  #--------------------------------------------------------------------------
  def learn_steal_skill(skill_id)
    @steal_skills.push(skill_id)
  end
end

#==============================================================================
# ■ Window_BattleLog
#==============================================================================
class Window_BattleLog < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 能力強化/弱体の表示
  #--------------------------------------------------------------------------
  alias tmsksteal_window_battlelog_display_changed_buffs display_changed_buffs
  def display_changed_buffs(target)
    tmsksteal_window_battlelog_display_changed_buffs(target)
    display_steal_skill(target)
  end
  #--------------------------------------------------------------------------
  # ○ 盗んだスキルの表示
  #--------------------------------------------------------------------------
  def display_steal_skill(target)
    target.result.steal_skills.each do |id|
      replace_text(sprintf("%sを盗んだ!", $data_skills[id].name))
      wait
    end
  end
end

Lv4.逐梦者

梦石
0
星屑
6260
在线时间
1481 小时
注册时间
2015-7-25
帖子
652

开拓者

2
发表于 2024-9-26 15:32:19 | 只看该作者
不需要大改的,把你发的这段脚本放编辑器里然后找到第61行,把 if enemy? && item.steal_skill? && @result.hit? 改成 if (user.id == 角色ID || (enemy? && item.steal_skill?)) && @result.hit? 就可以了,这样该角色攻击或者放任何技能就会复制对方所有技能,同时原版的偷窃技能也不受影响可以继续使用
笨肉包的首款像素OC游戏《花城梦之心》尝试制作中~
目前的坑 【不可思议的迷宫】幽灵契约外传:歌莉娅
持续更新中~ 当前进度 v0.28
大版本更新时才会更新网盘文件,预计下次大版本更新:v0.30
完成度:
主线 15% 支线 0% 数据库 6% 系统 86% 美术 6%
两边同时填坑~
( 这里是笨肉包~专修魔法!目标是大魔法师!
( 坑太大啦,一个人填不完啦hhh 一定会填完的嗯...
( 每天都和bug们比试魔力~吾之魔法将扫平一切!
( 弱点是美术,魔法修行之余再补补课吧~
( 哼哼哼~这便是魔法的力量!
大家都离开啦,笨肉包也不知道还能坚持多久呀...
这是属于笨肉包一个人的旅行(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1335
在线时间
82 小时
注册时间
2017-9-5
帖子
110
3
 楼主| 发表于 2024-9-26 19:44:21 | 只看该作者
魔法丶小肉包 发表于 2024-9-26 15:32
不需要大改的,把你发的这段脚本放编辑器里然后找到第61行,把 if enemy? && item.steal_skill? && @result ...

是肉包大佬,一出手就解决了困扰的我问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1335
在线时间
82 小时
注册时间
2017-9-5
帖子
110
4
 楼主| 发表于 2024-9-27 18:08:18 | 只看该作者
魔法丶小肉包 发表于 2024-9-26 15:32
不需要大改的,把你发的这段脚本放编辑器里然后找到第61行,把 if enemy? && item.steal_skill? && @result ...

大佬大佬,这脚本还能在延伸一下,加上复制队友的技能吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6260
在线时间
1481 小时
注册时间
2015-7-25
帖子
652

开拓者

5
发表于 2024-9-27 19:05:28 | 只看该作者
间桐樱 发表于 2024-9-27 18:08
大佬大佬,这脚本还能在延伸一下,加上复制队友的技能吗?

从57行开始一整个方法都替换掉
RUBY 代码复制
  1. alias tmsksteal_game_battler_item_apply item_apply
  2.   def item_apply(user, item)
  3.     tmsksteal_game_battler_item_apply(user, item)
  4.     return if user.enemy?
  5.     if (user.id == 2 || item.steal_skill?) && @result.hit?
  6.       if enemy?
  7.         enemy.actions.each do |action|
  8.           skill = $data_skills[action.skill_id]
  9.           next if user.skill_learn?(skill)        # すでに習得済み
  10.           @result.steal_skills.push(skill.id)
  11.           user.learn_steal_skill(skill.id)
  12.         end
  13.       else
  14.         skills.each do |skill|
  15.           next if user.skill_learn?(skill)
  16.           @result.steal_skills.push(skill.id)
  17.           user.learn_steal_skill(skill.id)
  18.         end
  19.       end
  20.     end
  21.   end
笨肉包的首款像素OC游戏《花城梦之心》尝试制作中~
目前的坑 【不可思议的迷宫】幽灵契约外传:歌莉娅
持续更新中~ 当前进度 v0.28
大版本更新时才会更新网盘文件,预计下次大版本更新:v0.30
完成度:
主线 15% 支线 0% 数据库 6% 系统 86% 美术 6%
两边同时填坑~
( 这里是笨肉包~专修魔法!目标是大魔法师!
( 坑太大啦,一个人填不完啦hhh 一定会填完的嗯...
( 每天都和bug们比试魔力~吾之魔法将扫平一切!
( 弱点是美术,魔法修行之余再补补课吧~
( 哼哼哼~这便是魔法的力量!
大家都离开啦,笨肉包也不知道还能坚持多久呀...
这是属于笨肉包一个人的旅行(再见了...蚊子湯,七重酱,笨肉包永远想你们!TwT
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1335
在线时间
82 小时
注册时间
2017-9-5
帖子
110
6
 楼主| 发表于 2024-9-27 19:52:45 | 只看该作者
魔法丶小肉包 发表于 2024-9-27 19:05
从57行开始一整个方法都替换掉
alias tmsksteal_game_battler_item_apply item_apply
  def item_apply(u ...

感谢肉包大佬的馈赠,脚本运行完美
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 20:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表