?? 怪物掉物品規(guī)則設(shè)計(jì).txt
字號(hào):
//
// 怪物掉寶規(guī)則設(shè)計(jì)
// 冷紫龍
// 2004-02-18
////////////////////////////////////////////////////////////////////
一、相關(guān)數(shù)據(jù)庫表
1、cq_monstertype表部分字段說明:
=======================
drop_money_min //所掉金錢的下限
drop_money_max //所掉金錢的上限
drop_money_chance //掉錢的概率
drop_item_chance //掉物品的概率 掉1個(gè)物品
explode_item_chance1 //小爆的概率 掉2 - 5個(gè)物品
explode_item_chance2 //中爆的概率 掉6 - 9個(gè)物品
explode_item_chance3 //大爆的概率 掉10 - ?個(gè)物品
drop_item_rule //掉物品的規(guī)則組id
2、掉物品規(guī)則表
===============
CREATE TABLE cq_dropitemrule(
id int unsigned NOT NULL,
RuleId int unsigned NOT NULL default '0',
Chance int unsigned NOT NULL default '0',
Item0 int unsigned NOT NULL default '0',
Item1 int unsigned NOT NULL default '0',
Item2 int unsigned NOT NULL default '0',
Item3 int unsigned NOT NULL default '0',
Item4 int unsigned NOT NULL default '0',
Item5 int unsigned NOT NULL default '0',
Item6 int unsigned NOT NULL default '0',
Item7 int unsigned NOT NULL default '0',
Item8 int unsigned NOT NULL default '0',
Item9 int unsigned NOT NULL default '0',
Item10 int unsigned NOT NULL default '0',
Item11 int unsigned NOT NULL default '0',
Item12 int unsigned NOT NULL default '0',
Item13 int unsigned NOT NULL default '0',
Item14 int unsigned NOT NULL default '0',
PRIMARY KEY (id, RuleId)
) TYPE=MyISAM;
簡(jiǎn)要說明:
=======================================
id 規(guī)則組id
RuleId 規(guī)則id
Chance 掉寶概率
Item0 ~ Item14 可能掉的物品typeid
★★id和RuleId兩個(gè)字段共同組成主鍵
該表中記錄了若干組掉物品的規(guī)則,
cq_monstertype表中每個(gè)記錄可以對(duì)應(yīng)最多一個(gè)規(guī)則,每組規(guī)則由若干條規(guī)則(記錄)組成
每條記錄包括這條規(guī)則掉寶的概率以及最多15個(gè)ItemType(若同一種掉寶幾率對(duì)應(yīng)的不止15種物品,
可以分多條記錄保存,只要Chance相同即可,處理的時(shí)候統(tǒng)一處理)。
★★可以有一個(gè)默認(rèn)的規(guī)則組:規(guī)則組id=0,不掉任何物品
一個(gè)規(guī)則組包含多條規(guī)則的目的:可以實(shí)現(xiàn)不同的寶掉的概率不同。
一個(gè)掉寶規(guī)則組中包含多條規(guī)則(所有Chance相同的規(guī)則在讀入內(nèi)存以后會(huì)被合并成一條,這樣合并
以后就可以有超過15種物品同一種掉寶規(guī)則)
二、算法設(shè)計(jì)
掉物品概率計(jì)算:
1、根據(jù)monstertype表的drop_item_chance、explode_item_chance1、explode_item_chance2、explode_item_chance3
字段值計(jì)算是否掉物品、掉幾個(gè)物品,如果計(jì)算結(jié)果不掉,或者drop_item_rule不存在,則退出;
2、根據(jù)dropitemrule表的Chance字段,按照概率從低到高計(jì)算是否掉物品,如果計(jì)算出來掉落某條規(guī)則的物品,
則從該規(guī)則的物品列表中隨機(jī)選擇一個(gè),重復(fù)以上步驟直到找到足夠數(shù)量的物品(爆的時(shí)候物品數(shù)大于1)。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -