Project1

标题: 如何做一个复活饰品? [打印本页]

作者: 凶兆の黑猫    时间: 2011-1-9 07:55
标题: 如何做一个复活饰品?
就是像空轨里面的替身木偶一样~死后复活!~然后物品挂掉{:nm_7:}求解答!先拜谢了!{:nm_2:}
作者: psychopiz    时间: 2011-1-9 11:56
同求死亡后自动复活的状态做法。。。
作者: 杜小飞    时间: 2011-1-9 13:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: cx441341651    时间: 2011-1-9 19:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2011-1-9 23:34
本帖最后由 雪流星 于 2011-1-9 21:53 编辑
  1. $revive_item_id = 21  # 復活物品ID
  2. $revive_equip_id = 31 # 復活裝備ID
  3. $revive_state_id = 17  # 復活狀態ID

  4. module Vocab
  5.   #=======================================================
  6.   # %1$s 會替代為物品/裝備/狀態名稱
  7.   # %2$s 會替代為角色名稱
  8.   # %3$s 會替代為數據庫中設定的 HP 名稱
  9.   #=======================================================
  10.   AutoRevive_Item  = "%1$s發生效用,%2$s復活並恢復一半%3$s"
  11.   AutoRevive_Equip = "%1$s發生效用,%2$s復活並恢復一半%3$s"
  12.   AutoRevive_State = "%1$s發生效用,%2$s復活並恢復一半%3$s"
  13. end
  14. class Game_Battler
  15.   def auto_revive?
  16.     # 檢查角色是否附有自動復活狀態
  17.     return 1 if $revive_state_id!=0 and state?($revive_state_id)
  18.     # 檢查角色是否裝備自動復活裝備
  19.     return 2 if $revive_equip_id!=0 and armor4_id == $revive_equip_id
  20.     # 檢查隊伍是否擁有自動復活物品
  21.     return 3 if $revive_item_id!=0 and $game_party.item_number($data_items[$revive_item_id])>0
  22.     # 無法自動復活
  23.     return false
  24.   end
  25.   def try_auto_revive
  26.     return 0 unless actor?
  27.     return 0 unless dead?
  28.     ar = auto_revive?
  29.     return 0 unless ar
  30.     @hp = maxhp/2 # 補充一半的HP
  31.     remove_state(1)
  32.     case ar
  33.     # 若復活方式是使用自動復活狀態
  34.     when 1
  35.       remove_state($revive_state_id)             # 移除自動復活狀態
  36.     # 若復活方式是使用自動復活裝備
  37.     when 2
  38.       lose_armor = $data_armors[$revive_equip_id]
  39.       discard_equip(lose_armor)                  # 損失復活裝備
  40.     # 若復活方式是使用隊伍中的自動復活物品
  41.     when 3
  42.       lose_item = $data_items[$revive_item_id]
  43.       $game_party.lose_item(lose_item, 1, false) # 損失復活物品
  44.     end
  45.     return ar
  46.   end
  47. end
  48. class Scene_Battle < Scene_Base
  49.   alias auto_revivie_display_state_changes display_state_changes
  50.   def display_state_changes(target, obj = nil)
  51.     auto_revivie_display_state_changes(target, obj) # 呼叫原有方法
  52.     do_auto_revive(target)
  53.   end
  54.   def do_auto_revive(target)
  55.     ar = target.try_auto_revive                     # 嘗試自動復活
  56.     return if ar==0                                 # 若復活失敗則離開本方法
  57.     case ar
  58.     when 1
  59.       ar_text = sprintf(Vocab::AutoRevive_State, $data_states[$revive_state_id].name, target.name, Vocab::hp)
  60.     when 2
  61.       ar_text = sprintf(Vocab::AutoRevive_Equip, $data_armors[$revive_equip_id].name, target.name, Vocab::hp)
  62.     when 3
  63.       ar_text = sprintf(Vocab::AutoRevive_Item, $data_items[$revive_item_id].name, target.name, Vocab::hp)
  64.     end
  65.     @message_window.add_instant_text(ar_text)       # 顯示復活文字
  66.   end
  67. end
复制代码
插入main 前面即可,注意最上面要設置好,數據庫裡面也要增加對應id 的物品、裝備或狀態。不想使用的設置為0 (例如你不想使用自動復活裝備,就把$revive_equip_id設為0)
作者: 凶兆の黑猫    时间: 2011-1-10 09:01
{:nm_2:}新人脚本看不懂!~大概要修改哪个位置{:nm_9:}麻烦稍微给讲下么!
作者: 雪流星    时间: 2011-1-10 09:15
回复 凶兆の黑猫 的帖子

就是改這一段
$revive_item_id = 21  # 復活物品ID
$revive_equip_id = 31 # 復活裝備ID
$revive_state_id = 17  # 復活狀態ID

把等號後面的數字改成數據庫裡面對應的 id

還有就是顯示訊息的設定
AutoRevive_Item  = "%1$s發生效用,%2$s復活並恢復一半%3$s"
AutoRevive_Equip = "%1$s發生效用,%2$s復活並恢復一半%3$s"
AutoRevive_State = "%1$s發生效用,%2$s復活並恢復一半%3$s"

改成你想要顯示的訊息

作者: 凶兆の黑猫    时间: 2011-1-10 09:27
回复 雪流星 的帖子

{:nm_4:}谢谢~~
作者: psychopiz    时间: 2011-1-10 11:15
同样感谢!
顺便问下 ,这个脚本能不能同时设置多个自动复活的装备?


psychopiz于2011-1-10 11:17补充以下内容:
想通了 ,多加几行when就行了 。。。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1