Re: [wizs]問題請教(三)

看板mud_sanc (Sanctuary - 聖殿)作者 (眼鏡男)時間18年前 (2007/03/08 07:23), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《amosdeus (幽素)》之銘言: : 請問招換小弟這個問題,目前我已經寫好技能與clone兩個各自測試都沒問題, : 但是放在一起就會出問題,加在一起之後clone 小弟,master就呆掉不會攻擊, : 再下kill它也不會攻擊,勞煩請幫我看一下是哪裡出錯? : 位置:/u/p/plain/wide/virtue/mob/cold.c : 謝謝 : Plain@Sanc 不會攻擊一般有兩種原因... 一、怪物沒心跳了。 二、你的 kill_ob 自定函數寫法有問題。 int kill_ob() { if(i==0) { clone_object(VM"welkin")->move(environment(this_object())); clone_object(VM"startl.c")->move(environment(this_object())); clone_object(VM"steadfast.c")->move(environment(this_object())); i = 1; } ::kill_ob(); } 正確的宣告方式是 int kill_ob(object tar),這個 tar 代表攻擊這個怪物的人,一定要有。 底下的 ::kill_ob() 也一樣要改成 ::kill_ob(tar) 再來,當你宣告 kill_ob 為 int 函數時,你就必須要讓 這個函數有整數的回傳值 int kill_ob(object tar) { bla bla ...... ::kill_ob(tar); return 1; } return 1 還是 return 0 呢, 上述的情況是都可以,甚 至 return 100 也可以,但是「不能沒有 return 值」。 (void 宣告的函數才可以,例如你把 int kill_ob 改宣 告為 void kill_ob 那就不需要 return ;) 最後... clone_object(VM"welkin")->move(environment(this_object())); clone_object(VM"startl.c")->move(environment(this_object())); clone_object(VM"steadfast.c")->move(environment(this_object())); 一、 .c 不需要寫。未來我希望統一格式。 二、上面三行你都會重覆使用到一個東西... environment(this_object()) 這個東西是可以使用變數去儲存的... object env; // 怪物已死或不存在的情況, 就不執行呼叫 if(!env=environment(this_object())) return 1; // 執行到這裡, 就確定怪物確實存在於某一個環境(environment)下 clone_object(VM"welkin")->move(env); clone_object(VM"startl.c")->move(env); clone_object(VM"steadfast.c")->move(env); 三、當你發現一個函數裡頭 this_player()、this_object() 一直使用到 時,記得,盡量宣告變數去儲存它們,如 object ppl, object mob,.. Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.18.81

03/08 15:47, , 1F
感謝 bow
03/08 15:47, 1F
文章代碼(AID): #15xqb-p_ (mud_sanc)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #15xqb-p_ (mud_sanc)