Re: [wizs] 怪物掉落物系統
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/01/17 16:27)推噓0(0推 0噓 0→)留言0則, 0人參與討論串4/5 (看更多)
現在來看 /d/obj/mob_drop/laechan/crazy1.c
:::::::::::::: /d/obj/mob_drop/laechan/crazy1.c ::::::::::::::
// 七域第一層的怪物掉寶設定
#include "../mob_drop.h"
#define ORIGIN_MOB_PATH "/d/crazy/1/mob/"
object mob_drop_d;
mapping mob_drop=([
ORIGIN_MOB_PATH+"tree1": // 毒刺棘
({
"laechan_crazy1_treeroot", "45", // treeroot 掉落機率 45%
"laechan_crazy1_treetentacle", "35", // treetentacle 掉落機率 30%
}),
]);
void mob_drop_check(object ppl,string files,string check)
{
if(!ppl || !mob_drop[files]) return ;
if(!mob_drop_d)
mob_drop_d=find_object_or_load(MOB_DROP_D);
mob_drop_d->mob_drop_check(ppl,mob_drop[files],check);
}
我只設定了七域的 /d/crazy/1/mob/tree1.c 會掉東西,它會
掉兩種東西,機率分別是 45% 跟 35%,設法就同上。
tree1 死掉時 → mob_d.c->die() → mob_drop.c->mob_drop()
→ crazy1.c->mob_drop_check() → MOB_DROP_D->mob_drop_check()
ppl : 就是殺死怪物的玩家
mob_drop[files] : 就是 mixed drop_chance
check : 節慶判斷
分成四五個流程,就是為了中間每個流程都能得到控管。
而 MOB_DROP_D 就是指 /d/obj/mob_drop/mob_drop_d.c
:::::::::::::: /d/obj/mob_drop/mob_drop_d.c ::::::::::::::
// Laechan@Sanc chaned in 2009/01/17
// 實際執行掉落物判斷的主檔
#include "mob_drop.h"
void mob_drop_check(object ppl,mixed drop_chance,string check)
{
string vobjs_name;
int i,j,k,total;
// 玩家不見了, 或者該怪物沒做掉寶設定,就略過
if(!ppl) return ;
j=sizeof(drop_chance);
total=1000;
// 逐一判斷
for(i=0;i<j;i=i+2)
{
vobjs_name=drop_chance[i];
k=DROP_CHANCE[ drop_chance[i+1] ];
if(random(1000)<k)
{
add_user_vobjs(ppl,vobjs_name,1);
add_vobjs_msg(ppl,vobjs_name,1); // 這兩行可併為一行
break;
}
total=total-k;
}
return ;
}
就降子而已。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.225.67
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19