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

Project1

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

[已经过期] 如何设置被动触发条件

[复制链接]

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

1
发表于 2019-1-29 12:02:00 | 显示全部楼层


RUBY 代码复制
  1. module CLD99
  2.   module YOMIGAERU
  3.  
  4.     SKILL_ID = 5
  5.     # 死后满血复活的被动技能,只能设置一个
  6.  
  7.     FMT = "因为某个被动技能,%s满血复活了。"
  8.     # 复活后显示的消息,%s处会变为复活者的名字
  9.  
  10.     SOUND = "Audio/SE/Saint7"
  11.     # 复活时的音效
  12.  
  13.   end
  14. end
  15.  
  16. class << BattleManager
  17.   #--------------------------------------------------------------------------
  18.   # ● [别名修改]设置
  19.   #--------------------------------------------------------------------------
  20.   alias :setup_for_yomigaeru :setup
  21.   def setup(*args)
  22.     setup_for_yomigaeru(*args)
  23.     $yomigaeru = {} # 是否重生过的标志
  24.   end  
  25.   #--------------------------------------------------------------------------
  26.   # ● [别名修改]判断胜负
  27.   #--------------------------------------------------------------------------
  28.   alias judge_win_loss_for_yomigaeru judge_win_loss
  29.   def judge_win_loss
  30.     return false if $wait_yomigaeru # 先等待重生
  31.     judge_win_loss_for_yomigaeru
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● [追加]战斗消息
  35.   #--------------------------------------------------------------------------
  36.   def show_log(text)
  37.     return unless SceneManager.scene_is?(Scene_Battle)
  38.     SceneManager.scene.show_log(text)
  39.   end
  40. end
  41.  
  42. class Scene_Battle
  43.   #--------------------------------------------------------------------------
  44.   # ● [追加]战斗消息
  45.   #--------------------------------------------------------------------------
  46.   def show_log(text)
  47.     @log_window.add_text(text)
  48.     @log_window.wait
  49.   end
  50. end
  51.  
  52. class Game_Actor
  53.   #--------------------------------------------------------------------------
  54.   # ● [别名修改]刷新
  55.   #--------------------------------------------------------------------------
  56.   alias refresh_for_yomigaeru refresh
  57.   def refresh
  58.     return refresh_for_yomigaeru unless $game_party.in_battle # 非战斗中不触发
  59.     $wait_yomigaeru = true # 延迟胜负判断
  60.     refresh_for_yomigaeru # 原方法
  61.     if @states.include?(death_state_id)
  62.       if @skills.include?(CLD99::YOMIGAERU::SKILL_ID) && !$yomigaeru[@actor_id]
  63.         remove_state(death_state_id)
  64.         change_hp(self.mhp, enable_death = false)
  65.         BattleManager.show_log(sprintf(CLD99::YOMIGAERU::FMT, @name))
  66.         Audio.se_play(CLD99::YOMIGAERU::SOUND)
  67.         $yomigaeru[@actor_id] = true
  68.       end
  69.     end
  70.     $wait_yomigaeru = false # 恢复胜负判断
  71.   end
  72. end


自己写的一次复活,比较随意。
新建工程测试通过,如果有问题请报告。
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

2
发表于 2019-1-29 12:48:55 | 显示全部楼层



我在新建工程里是可以复活的。
你先检查一下技能id有没有弄错,然后看看测试的时候人物是否学习了技能。
如果用的不是默认的战斗系统,麻烦贴一下。
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-20 11:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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