[wizs] 關於 justin 你以前要的東西

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2013/08/13 14:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
> grep -n msg_buf * [/std/user/body.c] 94: add_temp("msg_buf",msg); 95: if(strlen(query_temp("msg_buf")) > 1900) 97: string t = query_temp("msg_buf"); 98: set_temp("msg_buf",t[(strlen(t)-1900)..strlen(t)]); void receive_message(string cla, string msg) { if( in_edit(me) || in_input(me) || data["int_ed"] || data["edit"] ) { add_temp("msg_buf",msg); . . receive(msg); } void receive(string msg) { efun:: receive(msg); } 基本上會吐給該玩家的訊息,大多會先經過 receive_message, 然後才會到 receive,所以所謂的「玩家看到某一行訊息」,可 能大多都是 ppl->receive(msg) 或 ppl->receive_message(msg) 的結果。 因此「理論上」,依照分光器的原理,可以將這個 msg 分流出去 ,不過個人是反對的,從上面 receive 函數可看出它非常簡潔, 這是為了使它具有最高的運作效率。 所以頂多只能動 receive_message,但是它將無法接收所有訊息, 比方你要寫內部觸發,那通常做法是 void receive_message(string cla, string msg) { . . receive(msg); foreach(觸發 in keys(要下的指令)) { if(strsrch(msg,觸發)) me->force_me(要下的指令[觸發]); } return ; } 所以這其實也是不切實際的做法,換言之,透過外部軟體去實作 這樣的訊息觸發,比在 mud 本身裡面做來的好。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.157.53
文章代碼(AID): #1I2SpZW_ (mud_sanc)
文章代碼(AID): #1I2SpZW_ (mud_sanc)