赞 | 0 |
VIP | 385 |
好人卡 | 115 |
积分 | 1 |
经验 | 96276 |
最后登录 | 2017-6-4 |
在线时间 | 2188 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 2188 小时
- 注册时间
- 2011-6-23
- 帖子
- 1044
|
本帖最后由 lsu666666 于 2012-5-20 22:36 编辑
戰鬥物品掉落擴充要掉落多少物品 , 自行定義就可以了!複製以下代碼 貼在 腳本編輯器裡面的 MAIN 上方就可以...
腳本來源:魔劍腳本鋪
- module Sword
- #=======================================
- #★魔劍工舖 - 怪物掉落道具擴充 1.01 (XP)
- # http://blog.yam.com/a870053jjkj/
- #=======================================
- Sword72_Enemy = Hash.new{|a, b| a[b] = {}}
- #=======================================
- #● 使用者自定設置
- Sword72_Probabilit = false # 機率判定方式是否從左至右判定改成全體直接判定
- Sword72_Max = [5, true] # 設定掉落道具 [最多獲得數, 是否包含相同道具數]
- #--------------------------------------------------------------
- #○ 敵人掉落道具資料表
- #【1】Sword72_Enemy[敵人編號][[種類, 編號]] = [機率表]
- #【2】Sword72_Enemy[敵人編號][[種類, 編號]] = 最低取得量..最高取得量
- #【3】Sword72_Enemy[敵人編號][[種類, 編號]] = 數量
- # 編號:0為物品;1為武器;2為防具
- # 機率表:可設定多個機率,設的機率數量為一次最多掉落多少個,由左至右開始算
- Sword72_Enemy[1][[0, 1]] = [100, 90, 80]
- Sword72_Enemy[2][[0, 2]] = 0..3
- Sword72_Enemy[2][[1, 1]] = 1
- #=======================================
- $Sword ? $Sword[72] = true : $Sword = {72=>true} # 腳本使用標誌
- end
- #=======================================
- # ■ 戰鬥結束視口
- class Window_BattleResult < Window_Base
- include Sword # 連接自定設置
- #-------------------------------------------------------------
- #● 初始化物件(經驗值, 金錢, 掉落道具表)
- def initialize(exp, gold, treasures)
- @exp, @gold, nn = exp, gold, 0 # 經驗, 金錢, 獲得紀錄
- @treasures = {} ; @treasures.default = 0 # 掉落物表,默認值為0
- #○ 獲取可掉落的道具
- $game_troop.enemies.each do |enemy|
- unless enemy.hidden ; if Sword72_Enemy[enemy.id] # 有設定並有現身的怪的情況
- Sword72_Enemy[enemy.id].each do |key, value| n = 0
- if value.is_a?(Array) # 機率式連續判斷(設定數組)
- value.each do |prov| if prov > rand(100) # 開始循環計算每個機率,假如機率成功
- treasures += [sword72_equipment(key[0], key[1])]
- end ; end
- else # 隨機獲得數量或固定獲得的情況(設定範圍或數值)
- n = value.is_a?(Range) ? rand(value.last - value.first + 1) + value.first : value
- treasures += [sword72_equipment(key[0], key[1])] * n
- end
- end
- end ; end
- end
- #○ 開始計算可獲得的道具
- while treasures.size > 0
- i = rand(treasures.size) # 隨機獲得道具索引
- (treasures.delete_at(i) ; next) unless @treasures.key?(treasures[i]) if
- ! Sword72_Max[1] and @treasures.size >= Sword72_Max[0] # 限制獲得種類
- @treasures[treasures[i]] += 1
- case treasures[i] # 道具種類分歧
- when RPG::Item ; $game_party.gain_item(treasures[i].id, 1) # 物品
- when RPG::Weapon ; $game_party.gain_weapon(treasures[i].id, 1) # 武器
- when RPG::Armor ; $game_party.gain_armor(treasures[i].id, 1) # 防具
- end
- treasures.delete_at(i) ; nn += 1
- break if nn >= Sword72_Max[0] and Sword72_Max[1] # 限制獲得數
- end
- #○ 開始產生窗口
- super(160, 0, 320, @treasures.size * 32 + 64)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.y, self.back_opacity, self.visible = 160 - height / 2, 160, false
- refresh
- end
- #-------------------------------------------------------------
- #● 更新內容
- def refresh
- self.contents.clear
- x = 4
- self.contents.font.color = normal_color
- cx = contents.text_size(@exp.to_s).width
- self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
- x += cx + 4
- self.contents.font.color = system_color
- cx = contents.text_size("EXP").width
- self.contents.draw_text(x, 0, 64, 32, "EXP")
- x += cx + 16
- self.contents.font.color = normal_color
- cx = contents.text_size(@gold.to_s).width
- self.contents.draw_text(x, 0, cx, 32, @gold.to_s)
- x += cx + 4
- self.contents.font.color = system_color
- self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)
- y, nn = 32, 0
- @treasures.each do |item, n|
- draw_item_name(item, 4, y)
- self.contents.draw_text(-4, y, self.width - 32, 32, 'x ', 2)
- self.contents.draw_text(-4, y, self.width - 32, 32, n.to_s, 2)
- y += 32
- end
- end
- #-------------------------------------------------------------
- #● 獲取道具數據(道具種類, 道具編號)
- def sword72_equipment(kind, id)
- case kind # 道具種類分歧
- when 0 ; $data_items[id] # 物品
- when 1 ; $data_weapons[id] # 武器
- when 2 ; $data_armors[id] # 防具
- end
- end
- end
复制代码 使用者自定設置說明
Sword72_Probabilit = true
設定掉落複數個相同道具時的機率計算方式
原則上是用Sword72_Enemy設置中的機率表來做計算
設false的場合,從機率表最左邊的機率開始計算
假設機率成功,則該道具獲得1個,並開始執行下個機率
如果機率再次成功,該道具將在獲得1個,就這樣不斷一個一個慢慢增加
(有點像是裝備強化的原理,機率成功越多就得到越多這樣~)
直到沒有下一個機率或是機率失敗時才會中斷
設true的場合,則是所有的機率都計算一次,機率成功多少就獲得多少個
Sword72_Max = [上限, 是否含同道具] UP!
設定最多可以拿取的道具,並還有計算上限的方式
(原則上來說預設的跟此設定設成『[5, true]』是相同的,只是顯示上有差別而已)
是否含同道具:設false的話,則只能獲得此指定上限不同種類的道具
設true的話,則所獲得的道具總數量不會超過此設定的上限
【1】Sword72_Enemy[敵人編號][[種類, 編號]] = [機率表] UP!
【2】Sword72_Enemy[敵人編號][[種類, 編號]] = 最低取得量..最高取得量
【3】Sword72_Enemy[敵人編號][[種類, 編號]] = 數量
設定怪物掉落的資料,除了掉落資料庫中設定的敵人掉落物品外
可以利用此設定來設置更多的掉落道具,並可以指定掉落更多相同道具的數量
可自行添加多個Sword72_Enemy設置,同個 敵人編號 可以重複指定
種類:設掉落道具的道具種類,0為物品;1為武器;2為防具
機率表:設定掉落該道具的機率,同時也是掉落相同道具數量的設定
機率可以設定1~100,設0以下或101以上都是沒有意義的舉動...
可以在框中設定多個機率,每個機率都必須用小逗號進行分開
你設幾個機率,則最多就掉幾個相同的道具,數量也是慢慢增加的
詳細的機率計算方式可以參考Sword72_Probabilit設置的內容
最低取得量、最高取得量:
設定可以獲得數量的範圍,假設設定為『1..3』
則就隨機式的獲得該物品1個或2個或是3個
使用此設置法2時,此設定不受Sword72_Probabilit設置的影響
如果說這個設定的數值兩個都一樣的話,其結果和設定 數量 是一樣的
數量:不考慮機率以及獲得範圍,一率掉落該道具指定的數量
!XP的顯示方式為一次顯示在窗口上,依照獲得數增加窗口高度,獲得太多可能會佔據道畫面
���
���
|
|