[wizs] 以 questing 呼叫來設定延遲訊息

看板mud_sanc作者 (揮淚斬馬雲)時間4年前 (2019/06/24 13:32), 4年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
好像以前有提過,不過再提一次也沒差。 /open/cmds/quest/quest_data/quest_data.c 裡面有一個變數: mapping msg_buf=([]); 宣告為 mapping 代表 key_name 通常是 time() 的字串型態。它 還有一個函數 void add_msg_buf(object ppl,object env,mixed msgs) { int i,j,t=time(); j=sizeof(msgs); while(i<j) { undefinedp(msg_buf[""+t]) ? msg_buf[""+t]=({ ({ppl,env,msgs[i]}) }) : msg_buf[""+t]+=({ ({ppl,env,msgs[i]}) }); t=t+2; i++; } } 也就是說呼叫時不用去在意 time 字串要給多少,它會自己取得, 然後 msg_buf 每一個 time 字串的資料結構是 msg_buf=([time字串 : ({ ({哪個玩家,在哪個地方,會看到什麼訊息}) , ({哪個玩家,在哪個地方,會看到什麼訊息}) , ({哪個玩家,在哪個地方,會看到什麼訊息}) , }), ]); 這意思就是說同一個時間,可能存在複數個玩家、於各自所在的地點, 各會看到什麼訊息。 我剛剛新增了一個 questing 呼叫語法: questing("msg_buf","add",玩家id,({訊息})); questing("msg_buf","add",玩家id,({訊息1,訊息2,...})); 以 running code 來跑: ============================== questing("msg_buf","add","laechan",({"測試1","測試2","測試3"})); ============================== 100% 111% 100% > 測試1 1秒後 測試2 2秒後 測試3 3秒後 不使用 questing 的話也可以使用以下的呼叫語法 > cd /open/cmds/quest/quest_data > call quest_data;add_msg_buf;me;here;({"測試1","測試2","測試3"}) 其執行結果是相同的。 wiz 們若有 msg_buf 的需求時可多加利用,我最近對這個就有很重 的依賴需求,它原本只是給任務系統使用,但這樣有點浪費,能拿來 支援其它東西是最好的。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1561354377.A.A1A.html ※ 編輯: laechan (114.33.66.104 臺灣), 06/24/2019 13:33:08 ※ 編輯: laechan (114.33.66.104 臺灣), 06/25/2019 09:39:53
文章代碼(AID): #1T4629eQ (mud_sanc)