Re: [wizs] 怪物掉落物系統

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2009/01/17 16:27), 編輯推噓0(000)
留言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
文章代碼(AID): #19SPQ1cL (mud_sanc)
文章代碼(AID): #19SPQ1cL (mud_sanc)