底下是某個打算以 javascript 撰寫的網頁設計草圖
BGM
https://www.youtube.com/watch?v=9NxrQipUkwg
> ls
area.h
area_long.c
area_long.h
area_room.c
gmonster.c
map1
map1x
map2
map2x
mob
script_area
script_gmob
script_smob
smonster.c
> more area.h
// 房間最多生幾隻怪
#define MAX_MOBS_IN_ROOM 5
// 房間經過多久(秒)重生怪物
#define MOB_REBORN_TIMES 300
// 房間怪物資料
// "檔名",等級,({"id",..}),"名字",道德,金錢,隻數,({掉落物}),({額外設定})
#define MOBS_DATA ({\
({"mob1",137,({"ice lizard","lizard"}),HIC"冰"HIW"蜥魔"NOR,\
-26000,500,5,({}),({"data","anti/fire",-50}),}),\
({"mob2",142,({"ice gargoyle","gargoyle"}),HIC"冰"HIW"翼魔"NOR,\
-28000,500,5,({}),({"data","anti/fire",-50,"temp","flying",1}),}),\
({"mob3",164,({"ice elemental","elemental"}),HIC"冰"HIW"元素"NOR,\
-33000,500,3,({}),({"data","adv/str",5000,"data","anti/all",50,"data","anti/fire
",-50}),}),\
({"mob4",199,({"frost giant","giant"}),HIB"寒冰"HIW"巨人"NOR,\
-82000,500,1,({}),({"data","adv/con",5000,"data","adv/str",5000}),}),\
})
理論上,雖然整合於同一個網頁,但各個 part 要有獨立的執行按鈕。
有預設 D: 槽目錄但允許開發者在頭幾行找到可更改的地方。
跳過模擬階段,先求有再求好。
最上方設定一排快捷超連結
area_room mapx long.h area.h ....
搭配 <a href=#xx> 然後設定 <a id=xx> 去做跳動,以及 回最上面。
area_room 區可透過整合的方式產生,有數個 textarea 框並且都附上
範例,在實際的 area_room.c 檔內用特定的 // 做 explode 的分隔。
審慎考量 area_room 的所在位置,最好它的下方就是地圖區,這樣才會
方便看到房間號碼,滑鼠往下滾馬上就看到號碼,再往上滾做設定。
8/17 updated: 大概是這種感覺
https://i.imgur.com/kYpUUhc.jpg
1.實際上只需分為三個部份,其它都是寫死的不用動
2.按下存檔鍵時就儲存為 area_room.c
3.房間short設定區看起來需有 default 值,這樣就算這三格都空白的
情況下按下存檔鍵,產生的 area_room.c 也能 update 過並可執行
地圖後必定是三段敘述區,規劃三個 textarea 框,每個框高度不需要
很高。應支援自動加上 "",\ 才會省事。必須要能隨時按下就存檔以及
按下就讀取。
讀寫檔及 put 到 textarea,必須考量到 \n 的拆解。
8/17: updated 大概長這樣
https://i.imgur.com/JiEvSCT.jpg
1.左邊是 mapx 地圖,右邊是加上編號的 map 地圖
2.右邊的 map 地圖會自動判斷目前房間數
3.目前暫時用存檔左邊的 mapx,再透過重新載入整個網頁的方式
來更新右邊的 map,理論上寫一顆按鈕即時轉換也可以
4.存檔右邊 map 地圖的按鈕今天會寫好
目前離綜覽還很遠但已略具雛型,最近會再把麻煩的東西先弄好,簡單
的留到最後才做。
先求有再求好,寫完三段敘述區就可以先測試。測試結果滿意再繼續往
下寫。
D:\mud\long1.h [讀取] [存檔]
┌──────────────────────────────┐
│ │
│ │
│ │
│ │
└──────────────────────────────┘
D:\mud\long2.h [讀取] [存檔]
┌──────────────────────────────┐
│ │
│ │
│ │
│ │
└──────────────────────────────┘
D:\mud\long3.h [讀取] [存檔]
┌──────────────────────────────┐
│ │
│ │
│ │
│ │
└──────────────────────────────┘
橫的感覺比直的優點多一點,至少長敘述不會斷行,至於列數就維持目前
的設定,畢竟敘述多的區域不常見,字體則 16px 看起來可讀性最好。
重載鈕及存檔鈕都必須有 Y/N confirm。
存檔鈕要有自動備份機制,備份檔統一存到特定目錄。
網頁重新整理時就要自動讀取相關檔案並載入。
8/16 updated: 大概是這樣的感覺
https://i.imgur.com/0XpUTHg.jpg
1.網頁第一次開啟時,若沒有 d:\mud 目錄會自己建立
2.網頁重新整理時自動載入檔案內容,若檔案不存在就不載入
3.讀取及存檔都需要 confirm
4.已確認寫入的內容有正常換行,且內容也正確
5.三個 .h 檔上傳至伺服器後也能正常被 area_long.c 存取
[/u/l/laechan/area/sides/mine/001 ]
東稜礦坑1F
整座礦坑以高強度木材加固礦坑的洞壁,開採期間極少發生事故
,每一吋的洞壁都有昔日帶著鐵鍬和尖嘴鎬的礦工們辛苦開鑿的
痕跡,經常可在這裡聽到嘎吱嘎吱的回聲從礦坑的深處傳來呢!
明顯出口有: east 和 out.
<table>
<tr><td>D:\mud\long1.h 
<input type=button value='讀取' onclick='long_file_read(1)'> 
<input type=button value='存檔' onclick='long_file_save(1)'><BR>
<textarea id=long1 style="font-size:16px;background-color:#93ED93;"
cols=80 rows=13 id=long1></textarea><BR></td></tr>
<tr><td>D:\mud\long2.h 
<input type=button value='讀取' onclick='long_file_read(2)'> 
<input type=button value='存檔' onclick='long_file_save(2)'><BR>
<textarea id=long2 style="font-size:16px;background-color:#93ED93;"
cols=80 rows=13 id=long1></textarea><BR></td></tr>
<tr><td>D:\mud\long3.h 
<input type=button value='讀取' onclick='long_file_read(3)'> 
<input type=button value='存檔' onclick='long_file_save(3)'><BR>
<textarea id=long3 style="font-size:16px;background-color:#93ED93;"
cols=80 rows=13 id=long1></textarea><BR></td></tr>
</table>
部份 part 採全檔內容載入及存檔,例如 gmonster.c、smonster.c,
至少三個框同上,每個框均載入全檔內容,就可在網頁上直接修改。
以下這一部份最花時間,所以必須考量是否有必要寫進網頁,若有必要,
將這一區塊放在哪裡較好? 以及是否給全檔編輯就好?
D:\mud\area.h
房間最多生幾隻怪(ex: 5): TEXT輸入框 or select下拉框
房間經過多久(秒)重生怪物(ex: 300秒): TEXT輸入框 or select下拉框
房間怪物資料
怪物檔名: __ 等級: __ id: __ 中文名: __ 道德: __ 金錢: __ 隻數: __
(額外設定資料: 資料區: __ 欄位: __ 內容: __)
額外HP加成: __
額外屬性加成: fel:[] str:[] dex:[] ...
是否會飛:
掉落物設定
[下拉] [機率] +
[下拉] [機率] +
[下拉] [機率] ?
額外HP加成及屬性加成的部份,自動套用 ({"data","hp",xxx,"data","hp_src",xxx})
({"data","adv/con",xxx})
是否會飛的設定,自動套用 ({"temp","flying",1})
房間怪物資料的部份,在 sanc 跑一份總怪物列表後存成檔案,供這個
網頁下拉使用? 一開始當然不寫這個,先求有再求好。
虛擬物品列表的部份,在 sanc 跑一份總表後存成檔案,供這個網頁下
拉使用,這個必須要寫。
mob_drop 必須給一個框,跑出設定指令:
cd /d/break/zoon/mob
vobjs -mob_drop skipper set m033 = 500
vobjs -mob_drop antelope set m017 = 300
vobjs -mob_drop monkey set m093 = 300
vobjs -mob_drop locust set m055 = 500
vobjs -mob_drop sheep set m017 = 300
其中 cd 目錄的部份可以之後自己手動加,底下的指令全部程式產生。
以上最花時間。
map 的部份透過網頁產生的地圖,因為實際上會有幾層並不一定,初期
也不一定要做,但是假若 d:\mud 目錄下有讀到 map1x、map2x 這樣的
檔名,則預讀進來做顯示亦無不可。
產生地圖的網頁就放在這個整合網頁的上方以超連結的型式呈現在另一
個分頁即可,由那邊去跑出結果再存回這裡即可。
理論上 map1x、map2x 手動較好,程式可讀進來,有幾個就讀幾個,然
後再寫併列的全型地圖列於右側即可,這樣有幾層就顯示幾張。
script_area
script_gmob
script_smob
有幾個 script 檔也要在整合網頁寫幾個,其中 script_area 自己單獨
一列一個 textarea 框,mob 的 script 則可以併列。原則上可預設mob
共有三個 script 並自動產生預設檔,wiz 有需要自己改一改就好,有用
到的再改即可。
最終必須測試這些檔案 ftp 到 server 後,中文及換行部份是否可以正
常顯示,最後必須做的事:
1. 編寫 area_room (暫)
2. makearea -read map1x、map2x、..
3. trans map1(,map2,..) to here by script_area
未鑑定防具
[編輯中]