作者laechan (打死不投馬冏,李系咩安抓)
看板mud_sanc
標題Re: □ [wizs]問題請教(十六)
時間Tue Jul 31 10:37:26 2007
※ 引述《amosdeus (幽素)》之銘言:
: 請問以下程式有節省記憶體或是好一點的寫法嗎?
: 檔案位置:/u/p/plain/wide/virtue/room2/test.c
只要房間有自訂 init, 都要有一個概念, 就是任何生物(含怪物),
只要進入該房間, 就一定會呼叫一次 init 函數.
所以你可以先行剔除掉一些你覺得不必要的. 我舉例, 例如只有玩
家進入該房間觸發的 init 才有效, 如底下...
: void init()
: {
if(!userp(this_player())) return ; // 可以先做的一種判斷
: int r;
: r=random(2);
: switch(r)
: {
: case 1:
: set("long",@PLAIN
: ...
: PLAIN
: );
: set("exits",([
: ...
: ...
: ]));
: set("pre_exit_func",(["....":"hi"]));
: break;
: default:
: set("long",@PLAIN
: ...
: PLAIN
: );
: set("exits",([
: ...
: ...
: ]));
: set("pre_exit_func",(["....":"hi"]));
: break;
: }
: }
底下的函數是, 只要玩家往特定方向走, 就會呼叫.
基本上底下應該就是最精簡了.
: int hi()
: {
: object ppl = this_player();
: if(ppl->query_temp("xxxx"))
: {
: ppl->delete_temp("xxxxx");
: ppl->set_temp("yyyy",1);
: return 0;
: }
: if(ppl->query_temp("yyyy"))
: {
: ppl->delete_temp("yyyyy");
: ppl->set_temp("zzzz",1);
: return 0;
: }
: if(ppl->query_temp("zzzz"))
: {
: ppl->delete_temp("zzzz");
: ppl->move_player(VR2"ccc","SNEAK");
: return 0;
: }
: return 1;
: }
: 以上
: 謝謝
: Plain@Sanc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.126.91