Re: [問題] 幾個狀態問題和設定修改

看板RPGMaker (RPG製作大師 - RPG Maker)作者 (小風)時間16年前 (2008/12/15 18:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/6 (看更多)
關於我問的第一個問題,我在66rpg找到解決法了(不過還沒試=v=) 分享給大家,以後如果有人要做類似效果也能用了。 原文網址:http://www.66rpg.com/htm/news84.htm 簡單來說就是在我上一篇提到的連續傷害定義中再多加幾個判斷式, 雖然概念很簡單,但是不懂RGSS就做不出來(沒錯,就是我),所以 那篇文章就把範例寫出來了。 內容: 一般來說,在數據庫設置"連續傷害"這個狀態只是為了表現中毒發作 減HP的效果,可能很少有人想到用它來做一些其他的事情。 「連續傷害」這個狀態的屬性是在角色每一次行動之前檢查毒發作用 ,它在戰鬥中在角色準備開始執行動作時觸發一次。即使是在RTAB戰 鬥中也不例外。(當然,通過修改腳本判定位置,可以使它挪動到每 個角色行動後,或每個回合開始前等等,此話與本文無關,不表) 「連續傷害」這個功能調用雖然是在戰鬥中,但它的定義是在Game_Battler 3 里面,接近結束的位置(考慮到這一段可能已被很多人修改的面目全 非,我就不說是第幾行了) def slip_damage_effect # 設置傷害 self.damage = self.maxhp / 10 # 分散 if self.damage.abs > 0 amp = [self.damage.abs * 15 / 100, 1].max self.damage += rand(amp+1) + rand(amp+1) - amp end # HP 的傷害減法運算 self.hp -= self.damage # 過程結束 return true end 那麼這個可以拿來做什麼"妙用"呢? 利用它每回合檢查一次的特性,可以做出很多以回合數為基礎的特殊狀態效果: 舉個兩個例子: 1."再生"狀態: 戰鬥中每回合固定恢復角色最大HP的5%,最大SP的5%, 效果持續十六回合後結束 2."老化"狀態: 戰鬥中每回合角色的各項能力(除HP和SP以外)降為前 一回合的70%,降到1為止 首先在數據庫裡設定好這兩個狀態,都勾上「連續傷害」的選項,這裡 假設它們的編號為28和29 其中"再生"狀態可設為:16回合後100%的概率解除 而"老化"狀態,則把所有需要下降的能力值都設成70 (注意迴避力要設成-30) 最重要的是,這些戰鬥中臨時用的狀態一定要勾上戰鬥後自動解除的選 項,否則影響到地圖連續傷害的檢查 然後修改腳本裡「連續傷害」這部分的定義 原本的定義是關於毒的,查到毒狀態的編號為3,那麼就在外面包一個條件 def slip_damage_effect if self.state?(3) # 設置傷害 self.damage = self.maxhp / 10 # 分散 if self.damage.abs > 0 amp = [self.damage.abs * 15 / 100, 1].max self.damage += rand(amp+1) + rand(amp+1) - amp end # HP 的傷害減法運算 self.hp -= self.damage end # 過程結束 return true end 然後再加上"再生"和"老化"的定義 def slip_damage_effect # 毒 if self.state?(3) # 設置傷害 self.damage = self.maxhp / 10 # 分散 if self.damage.abs > 0 amp = [self.damage.abs * 15 / 100, 1].max self.damage += rand(amp+1) + rand(amp+1) - amp end # HP 的傷害減法運算 self.hp -= self.damage # 再生 elsif self.state?(28) # 設置傷害 self.damage = -self.maxhp / 20 recover_sp = self.maxsp / 20 # HP 的傷害減法運算 self.hp -= self.damage self.sp += recover_sp # 老化 elsif self.state?(29) # 設置傷害 self.damage = "Being aged!" # 能力值下降 $data_states[29].hit_rate *= 0.7 $data_states[29].pdef_rate *= 0.7 $data_states[29].mdef_rate *= 0.7 $data_states[29].atk_rate *= 0.7 $data_states[29].str_rate *= 0.7 $data_states[29].dex_rate *= 0.7 $data_states[29].int_rate *= 0.7 $data_states[29].agi_rate *= 0.7 $data_states[29].eva -= 30 $data_states[29].eva = [$data_states[29].eva, -100].max end # 過程結束 return true end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.235.77
文章代碼(AID): #19HYmzhR (RPGMaker)
文章代碼(AID): #19HYmzhR (RPGMaker)