看板 mud_sanc 關於我們 聯絡資訊
今天在 instance_ob.c 新增了三個函數如下 int instance_set(object room,mixed tmps) 它的格式如下 instance_set(room,({ "exits/out","/d/wiz/room/disc", "instance_flags",2,"already_ended",1 }) ); 也就是把要設定的目標 room 及要設定的東西放進 tmps 裡頭, 這函數就會把 tmps 裡面的東西設定進去。 int instance_del(object room,mixed tmps) 它的格式如下 instance_del(room,({"cant_go","long2"})); 也就是說把目標 room 及欲刪除的欄位放進 tmps 裡頭,這函數 就會把 room 的這些欄位刪掉。 int find_npc(object room,mixed exits) 它的格式如下 if(ob=find_npc(room,({"north","north","west","west","west"})) ob->move(room); 它的意思是說,如果玩家目前所在格的 2n 3w 的地方有一隻npc ,我們希望把它直接 move 過來,就可以使用上面段落的格式, 它會去找 2n 3w 的那隻 npc,有找到就可以 npc->move(room); (或是 npc->remove(),由 wiz 自行決定)。 另外修改了一個原先的函數 varargs int birth_npcs(object room,string npc_files,string tmp) 這個今天有略做修改,主要是把最後面的參數 mixed tmps 改成 string tmp,並新增 static mapping instance_npcs=([]); 而 instance_npcs 的宣告方式如下 instance_npcs=([ "sealker":({ "short","不幸的魔法師─西爾克(Sealker)", "chi_name","不幸的魔法師─西爾克" }), ]); 這樣比方我們要在 room 新增 sealker 時就可以這樣做 birth_npcs(room,INSTANCE_NPCS,"sealker"); ^^^^^^^^^^^^^一般 npc 樣本檔 = /std/new_ob/instance/npc.c 那因為是 varargs 宣告,所以,假設沒有接 tmp,它就直接使 用玩家所接的 npc_files,比方你可以這樣做 birth_npcs(room,"/d/wiz/mob/lodao"); 它就會把小滷蛋叫到 room 裡頭,而且幾乎不變動其參數設定。 (instance_npcs["sealker"] 裡面所宣告的就是要變動的資料) 做這些修改主要是 1.簡化腳本物件的設定程式碼複雜度 2.將部份設定公用化,方便以後統一修改。比方以後如果決定旗  標一律使用 instance_flags 及 instance_next_times,那就  可以更簡化為 instance_set(room, 2, 12,({...})); ^^ ^^ 旗標 next_times 然後 -1 -1 時就代表不更動。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.157.53 ※ 文章網址: http://www.ptt.cc/bbs/mud_sanc/M.1398650959.A.2DC.html ※ 編輯: laechan (210.61.157.53), 04/28/2014 10:09:41