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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 铁道工
打印 上一主题 下一主题

[已经解决] 请问如何制作战斗中自动生效的重生十字章?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
95 小时
注册时间
2008-2-18
帖子
20
11
发表于 2011-5-27 17:46:08 | 只看该作者
本帖最后由 Yuee 于 2011-5-27 18:36 编辑
  1. #==============================================================================
  2. # ■ 重生十字章功能
  3. #==============================================================================

  4. #--------------------------------------------------------------------------
  5. # ● 设定
  6. #--------------------------------------------------------------------------
  7. module Rebirth_Setting
  8. #模式
  9. # 1 :持有复活道具,任意角色死亡即会自动复活一次
  10. # 2 : 装备有复活用防具的角色死亡时,会自动复活一次
  11. REBIRTH_MODE = 1

  12. #重生道具ID/防具ID
  13. REBIRTH_ITEM_ID = 21

  14. #重生文本
  15. REBIRTH_TEXT1 = "发出了耀眼的光芒!" # 例:重生十字章发出了耀眼的光芒!
  16. REBIRTH_TEXT2 = "信春哥满血原地复活了!" # 例:拉尔夫信春哥满血原地复活了!
  17. end

  18. #==============================================================================
  19. class Scene_Battle < Scene_Base
  20.   #--------------------------------------------------------------------------
  21.   # ● 显示附加状态
  22.   # ★ 追加定义
  23.   #     target : 目标
  24.   #     obj    : 技能或物品
  25.   #--------------------------------------------------------------------------
  26.   alias display_added_states_rebirth display_added_states
  27.   
  28.   def display_added_states(target, obj = nil)
  29.     display_added_states_rebirth(target, obj)
  30.    
  31.     #如果目标玩家角色已经死亡,则尝试重生
  32.     if target.actor? and target.dead?
  33.       if target.try_to_rebirth
  34.         @message_window.clear
  35.    
  36.         wait(20)
  37.         
  38.         case Rebirth_Setting::REBIRTH_MODE
  39.         when 1
  40.           item_name = $data_items[Rebirth_Setting::REBIRTH_ITEM_ID].name
  41.         when 2
  42.           item_name = $data_armors[Rebirth_Setting::REBIRTH_ITEM_ID].name
  43.         end
  44.    
  45.         text = item_name + Rebirth_Setting::REBIRTH_TEXT1
  46.         saint_se = RPG::SE.new("Saint7",80)
  47.         saint_se.play
  48.         @message_window.add_instant_text(text)
  49.         wait(50)
  50.         
  51.         text = target.name + Rebirth_Setting::REBIRTH_TEXT2
  52.         Sound.play_recovery
  53.         @message_window.add_instant_text(text)
  54.         wait(50)
  55.       end
  56.     end
  57.   
  58.   end #def display_added_states(target, obj = nil)
  59. end # class Scene_Battle < Scene_Base

  60. #==============================================================================
  61. class Game_Actor < Game_Battler  
  62.   #--------------------------------------------------------------------------
  63.   # ● 尝试重生
  64.   # ★ 新定义
  65.   #--------------------------------------------------------------------------
  66.   def try_to_rebirth
  67.     # 道具重生
  68.     if Rebirth_Setting::REBIRTH_MODE == 1 and $game_party.has_item?($data_items[Rebirth_Setting::REBIRTH_ITEM_ID])
  69.       $game_party.lose_item($data_items[Rebirth_Setting::REBIRTH_ITEM_ID],1)
  70.       remove_state(1)
  71.       @hp = maxhp
  72.       @mp = maxmp
  73.       return true
  74.     # 装备防具重生
  75.     elsif Rebirth_Setting::REBIRTH_MODE == 2
  76.       for armor in armors
  77.         if armor.id == Rebirth_Setting::REBIRTH_ITEM_ID
  78.           discard_equip($data_armors[Rebirth_Setting::REBIRTH_ITEM_ID])
  79.           remove_state(1)
  80.           @hp = maxhp
  81.           @mp = maxmp
  82.           return true
  83.         end
  84.       end # for armor
  85.     end # if
  86.    
  87.     return false
  88.   end # try_to_rebirth(target)
  89.   
  90. end # class Game_Actor < Game_Battler
复制代码
支持两种模式,一种是道具模式,一种是防具模式
在最前面的设定配置

道具模式只要身上持有复活用道具,任意角色被击败都会自动复活一次。
防具模式需要把复活用防具装备着,装备着复活防具的角色被打死后,会复活一次,之后防具消失。

以上只对战斗中受到伤害死亡有效,用事件改成死亡是无效的。

简单测了一下,应该没问题
回复

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42887
在线时间
7625 小时
注册时间
2009-7-6
帖子
13507

开拓者贵宾

12
发表于 2011-5-27 19:38:22 | 只看该作者
插入到Main上方game_battler下方
  1. class Game_Battler
  2.   def add_state(state_id)
  3.     state = $data_states[state_id]        # 获取状态资料
  4.     return if state == nil                # 资料是否为空?
  5.     return if state_ignore?(state_id)     # 状态是否无视?
  6.     unless state?(state_id)               # 状态是否存在?
  7.       unless state_offset?(state_id)      # 状态是否抵销?
  8.         @states.push(state_id)            # 加入状态
  9.       end
  10.       if state_id == 1                    # 如状态是「无法战斗」(1号状态)
  11.         @hp = 0                           # 设体力为0
  12.         if $game_party.has_item?($data_items[20])   # 是否有道具20
  13.           $game_party.gain_item($data_items[20], -1) # 道具-1
  14.           recover_all           # 回复
  15.         end
  16.       end
  17.       unless inputable?                   # 除非角色无法输入命令
  18.         @action.clear                     # 清除所有行动
  19.       end
  20.       for i in state.state_set            # 获取「移除状态」列表
  21.         remove_state(i)                   # 移除状态
  22.         @removed_states.delete(i)         # 清除
  23.       end
  24.       sort_states                         # 依照优先度排列状态
  25.     end
  26.     @state_turns[state_id] = state.hold_turn    # 设置回合数
  27.   end
  28. end
复制代码
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2011-4-19
帖子
12
13
 楼主| 发表于 2011-5-27 21:29:16 | 只看该作者
非常感谢楼上诸位的帮助,可惜只能认可一个答案。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 12:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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