[wizs] _go.c 的修改

作者: laechan (揮淚斬馬雲)   2019-06-21 12:05:49
上一篇刪除,是因為這一篇可能才是我真正想做的東西。
以 /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

Links booklink

Contact Us: admin [ a t ] ucptt.com