| 
 
| 赞 | 4 |  
| VIP | 71 |  
| 好人卡 | 22 |  
| 积分 | 7 |  
| 经验 | 32145 |  
| 最后登录 | 2013-8-9 |  
| 在线时间 | 184 小时 |  
 Lv2.观梦者 天仙 
	梦石0 星屑680 在线时间184 小时注册时间2008-4-15帖子5023 
 | 
| 本帖最后由 雪流星 于 2011-1-9 21:53 编辑 
 插入main 前面即可,注意最上面要設置好,數據庫裡面也要增加對應id 的物品、裝備或狀態。不想使用的設置為0 (例如你不想使用自動復活裝備,就把$revive_equip_id設為0)复制代码$revive_item_id = 21  # 復活物品ID
$revive_equip_id = 31 # 復活裝備ID
$revive_state_id = 17  # 復活狀態ID
module Vocab
  #=======================================================
  # %1$s 會替代為物品/裝備/狀態名稱
  # %2$s 會替代為角色名稱
  # %3$s 會替代為數據庫中設定的 HP 名稱
  #=======================================================
  AutoRevive_Item  = "%1$s發生效用,%2$s復活並恢復一半%3$s"
  AutoRevive_Equip = "%1$s發生效用,%2$s復活並恢復一半%3$s"
  AutoRevive_State = "%1$s發生效用,%2$s復活並恢復一半%3$s"
end
class Game_Battler
  def auto_revive?
    # 檢查角色是否附有自動復活狀態
    return 1 if $revive_state_id!=0 and state?($revive_state_id)
    # 檢查角色是否裝備自動復活裝備
    return 2 if $revive_equip_id!=0 and armor4_id == $revive_equip_id
    # 檢查隊伍是否擁有自動復活物品
    return 3 if $revive_item_id!=0 and $game_party.item_number($data_items[$revive_item_id])>0
    # 無法自動復活
    return false
  end
  def try_auto_revive
    return 0 unless actor?
    return 0 unless dead?
    ar = auto_revive?
    return 0 unless ar
    @hp = maxhp/2 # 補充一半的HP
    remove_state(1)
    case ar
    # 若復活方式是使用自動復活狀態
    when 1
      remove_state($revive_state_id)             # 移除自動復活狀態
    # 若復活方式是使用自動復活裝備
    when 2 
      lose_armor = $data_armors[$revive_equip_id]
      discard_equip(lose_armor)                  # 損失復活裝備
    # 若復活方式是使用隊伍中的自動復活物品
    when 3 
      lose_item = $data_items[$revive_item_id]
      $game_party.lose_item(lose_item, 1, false) # 損失復活物品
    end
    return ar
  end
end
class Scene_Battle < Scene_Base
  alias auto_revivie_display_state_changes display_state_changes
  def display_state_changes(target, obj = nil)
    auto_revivie_display_state_changes(target, obj) # 呼叫原有方法
    do_auto_revive(target)
  end
  def do_auto_revive(target)
    ar = target.try_auto_revive                     # 嘗試自動復活
    return if ar==0                                 # 若復活失敗則離開本方法
    case ar
    when 1
      ar_text = sprintf(Vocab::AutoRevive_State, $data_states[$revive_state_id].name, target.name, Vocab::hp)
    when 2
      ar_text = sprintf(Vocab::AutoRevive_Equip, $data_armors[$revive_equip_id].name, target.name, Vocab::hp)
    when 3
      ar_text = sprintf(Vocab::AutoRevive_Item, $data_items[$revive_item_id].name, target.name, Vocab::hp)
    end
    @message_window.add_instant_text(ar_text)       # 顯示復活文字
  end
end
 | 
 评分
查看全部评分
 |