Re: [閒聊] 巴爾BUG原因猜測

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間16年前 (2010/04/08 09:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
依據 #1B8wpom2 我猜各位提到的「巴爾」是指 /d/ppl/wide/virtue/mob/baal.c 一、void create () { set("level",235); ::create () ; set("id",({"baal"})); 通常我會建議 mob 在 ::create() 下面多一行 seteuid(getuid(this_object())); 這有時候可以解決一些沒心跳的問題,因為有些動作或函數   的呼叫,它會看 UID。 set(xxx,-3000000+(-100000*random(50))); 看到這一行我突然想到這應該可以用在幻影術的幻影攻擊力   折算上。 二、set_temp("selfshield2",({500000,1,this_object(),this_object()}));  有用到 temp data 的怪物最好 inherit SMONSTER; 其實 boss 類的若不是血牛型,最好都 inherit SMONSTER   會比較好一些。 三、在 special_fun 裡有幾個錯誤.. // foreach(ob in obs) call_other(....,ob,frog,....); 因為你把 foreach 給 // 了,所以 ob 這時是空物件。 把 ob 改成 ppl 應該就 ok 了(這應該是把 foreach 給 // 的原意) if(!present("BAGOL DAGOR",room)) { room=environment(frog); 在怪物消失的瞬間 frog 會變空物件。有時會變成 ppl   瞬間消失(如 quit),這個有時要做必要的判斷,特別是.. clone_object(VS"dagor_att") -> move(room); 這個最好寫成 if(room) clone_object(VS"dagor_att") -> move(room); 這是我自己的經驗。底下也是.. foreach(ob in obs) { if(!ob) continue; dex = (int)ob->query("stat/dex") / 100; 上面的可以改改看再測。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.161.132
文章代碼(AID): #1BlJSJkc (mud_sanc)
文章代碼(AID): #1BlJSJkc (mud_sanc)