[wizs] _go.c 的修改

看板mud_sanc作者 (揮淚斬馬雲)時間4年前 (2019/06/21 12:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
上一篇刪除,是因為這一篇可能才是我真正想做的東西。 以 /d/wiz/room/disc.c 巨型高塔來說,玩家往 down 離開時, 它會跑到 /d/map/lodoos/room/wiz_tower.c 這個房間。 那能不能在往 down 離開時動一點手腳呢? 例如在 /open/area 目錄建立 /open/area/d/map/lodoos/room 的相對目錄(若沒有這些子目錄就新增),當玩家往 down 離開: // 讀取 wiz_tower 房間檔 files=here->query("exits/"+directs); htm_files="/open/area"+files+".htm"; if(!file_exists(htm_files)) { if(ob=find_object_or_load(files)) { // 這裡只是簡單寫一下,實際上要對讀出來的東西做處理 str=sprintf("<html>\n%s<room_short/>\n%s<room_long/><p>\n<t><t>明顯出口:\n", ob->query("short"),ob->query("long")); tmps=ob->query("exits"); foreach(tmp in tmps) str+="<a href=\"/open/area"+ob->query("exits/"+tmp)+".htm\">"+ tmp+"</a>,\n"; write_file(htm_files,str[0..strlen(str)-4]+"</html>\n"); } } 這樣產生出的 htm 檔,其內容類似如下 /open/area/d/map/lodoos/room/wiz_tower.htm =========================================================== <html> 巨型高塔下<room_short/> 眼前是一座純白色大理石建構成的高塔,塔似劍般刺向天空,石 牆映照著日光,令人無法直視。西邊則有一間神秘的房子,你看 到有許多人在那裡進進出出的。<room_long/><p> <t><t>明顯出口: <a href="/open/area/d/map/lodoos/room/sq-w1.htm">south</a>, <a href="/open/area/d/wiz/room/race.htm">west</a>, <a href="/open/area/d/wiz/room/disc.htm">up</a> </html> =========================================================== 這個檔若以瀏覽器開啟的話,會類似底下這樣: https://i.imgur.com/HjILx6z.jpg
也就是說,只要靠 _go.c 這個指令,就能自動建立與房間 .c 檔 相對映的 .htm 檔,這時只要用瀏覽器任意點開一個 .htm 檔,就 能靠著點超連結去「瀏覽」與其相鄰的其它房間的內容。 因為它是自動產生的,而且實際上只要 .htm 檔存在,它每次只多 做一個 file_exists 的判斷而已,耗費不了多少資源。 當 /open/area 裡面的 .htm 檔達一定量時,就能將它單獨下載到 「本機」,然後在本機以瀏覽器開啟,就能在本機走房間了。 它有幾個注意事項: 一、寫進 .htm 的實際字串內容,需經過適當的處理。例如 linux 環境下目錄是像 /open/area/.. 這樣的格式,可是在 windows 下,它是讀 d:\open\area\.. 這樣的格式。 也就是說,要預設玩家會把 release 出的東西預設放在 win 的電腦下的 d:\ 目錄,才能順利點開各個 .htm 檔。 但如果是開放 mud server 端的 http 瀏覽時,就要照 linux 下的路徑格式。 二、當一個 mud 的玩家數夠多時,理論上 .htm 檔的產生會很順 利,而且要是產生的不對,只要 rm 掉整個 /open/area 下的 目錄,就可以讓 _go.c 自己重新產生。 三、原則上可對 .htm 檔做後製,例如說次元鏡所在的房間,我們 可以額外增加下拉式選單,把次元鏡所有出口放在選單內,玩 家選擇了某一出口,就自動開啟對映的 .htm 檔即可。 最後,這麼做有什麼目的呢?就是不需釋出房間的 .c 原始檔,也 可以釋出 sanc 的區域資料,線上玩家走過的區域越多,可釋出的 資料也越多。 然後才是 javascript 可發揮的部份,當我一個目錄下有 .htm 檔 時,如果我預設它們都會 import 某個我寫好的 .js 檔的話,那麼 就可以讓每個 .htm 可擁有特殊的功能,例如: 1.進行即時統計(房間數多少、..) 2.甚至進行即時周邊地圖繪製呈現(抓超連結來分析就行了) └呈現出來的地圖有格子,點格子即跳到那一格 3.方便進行各種搜尋(比方找房間的特定敘述) 最後是這個 project 的最大優點,就是由使用者在自己[本機]上 操作,耗費的是本機的資源,對處於伺服器端的 sanc 來說不會有 任何影響。當然缺點是它沒有辦法即時更新,但通常一個已發展成 熟的 mud,已存在的區域,其資料通常也不會有啥變動。 這項計劃會在今年找一天開始做,實際上的做法不會跟上面完全一 樣,會有所變化,但方向是一致的,而且將不會只侷限在區域上。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1561089952.A.635.html
文章代碼(AID): #1T35UWOr (mud_sanc)