作者laechan (揮淚斬馬雲)
看板mud_sanc
標題Re: [閒聊] 近況 + JavaScript
時間Sun Nov 14 17:05:01 2021
tmi2_mudlib_v3_改 2014/06/30 版
https://drive.google.com/file/d/19GeXBEqi6uY_KR_K61Gb-giaq6d9dte_
最近有人寫信跟我要這個,就順手把它放在網路硬碟上,大家
有興趣的話可以下載。
修改日誌如下,順便在 mud_sanc 板留個文字紀錄。
// Laechan@Sanc built in 2014/05/26
201405 26 bin 目錄下建立啟動 mud 捷徑、以及建立方式的圖片說明
/cmds 目錄下所有檔案的換行符號更換
/include 目錄下所有檔案的換行符號更換
/include/mudlib.h 增加 include "ansi.h"
/include/ansi.h 增加 HIP 定義欄(=HIK)
===================初期取得 admin 權限的過程===================
(關鍵在一開始有 AUTO_WIZHOOD 時所增設的 wizard 參數)
/adm/etc/groups 換行符號更換、增加 "laechan" 為 admin
然後才創角色 "laechan", 登入後 save 然後 quit
mudos 關閉再重新啟動, login "laechan"
下指令 groups 確認 "laechan" 已屬於 admin 群組後 quit
編輯 /data/std/user/l/laechan.o,在 PATH 欄新增 /cmds/adm
login "laechan", 執行 /cmds/adm 目錄下的指令確認可使用
===================初期取得 admin 權限的方法===================
亦可參閱 如何取得admin權限.txt 檔
27 將 /include/config.h 裡的 AUTO_WIZHOOD abort 掉
(從這時起創的新角色就全部不帶 wizard 及巫師相關權限)
PS.要開放 mud 前務必移除這種暫行的做法,改以正規的做法去做
建立 /d/area 目錄,做為日後存放區域使用
└例如 /d/area/lodoss 代表 "lodoss" 這個區域
或是 /d/area/main 代表 "主大陸" (其子目錄為該大陸下的各區域)
或是 /d/area/laechan 代表 "laechan" 這個 wiz 的區域目錄
或是 /d/area/room/lodoss 代表 "lodoss" 這個區域的 "房間" 目錄
PS.開發初期就要規劃好要採取什麼樣的區域目錄樹狀配置
/d 目錄下所有檔案的換行符號更換
/adm 目錄下所有檔案的換行符號更換
/std 目錄下所有檔案的換行符號更換
/ftp 目錄下所有檔案的換行符號更換
/obj 目錄下所有檔案的換行符號更換
/www 目錄下所有檔案的換行符號更換
/student 目錄下所有檔案的換行符號更換
PS.剩下對 mudos 原始檔本身的換行符號更換
從死亡狀態(ghost)變回一般狀態的方法: 下指令 revive。
新增 /adm/daemons/chinesed.c,並加進 /adm/etc/preload 內
/adm/simul_efun/chinese.c,並加進 /adm/obj/simul_efun.c 內
/cmds/adm/_chinese.c,update 後做 rehash /cmds/adm
新增 /cmds/wiz/_running.c,update 後做 rehash /cmds/wiz
並新增 /open/tmp 目錄用來存放 running 的暫存檔
PS.有了 running 就可用來測試新增的 simul_efun
=================以 running 測試 chinese 相關=================
> running
To end message type ".". To abort, type ~q. To view help, type ~h.
__________________________________________________________________
write(chinese_number(123456789)+"\n"+
to_chinese("male")+"\n"+ (running code 區)
skill_name("barefist")+"\n");
. <= 編輯結束
========== 程式執行區 ==========
一億兩千三百四十五萬六千七百八十九
男性 (三個 simul_efun 皆正確執行)
空手搏鬥
========== 程式執行區 ==========
=================以 running 測試 chinese 相關=================
/adm/daemons/logind.c、/adm/daemons/newuserd.c 初步中文化
/include/login.h 初步中文化
/adm/news/welcome、/adm/news/nplayer_intro 初步中文化
/adm/news/nplayer_news、/adm/news/news 初步中文化
28 新增 sanc 的 /cmds/std/_gps.c
PS.補入後 update _gps.c 並下 rehash /cmds/std 指令,即可使用 gps
更動 /adm/etc/global_aliases 加進 map = gps
PS.更動後 update /adm/daemons/ga_server.c,即可使用 map
新增 sanc 的 /cmds/wiz/_runmap.c (尚有問題)
更動 /include/mudlib.h 增加 #define DOOR_NOT_EXIST 定義
更動 /cmds/std/_go.c 修正 mapping tmp 的宣告錯誤,並增加上述定義
的作用範圍
更動 /cmds/std/_look.c 增加上述定義的作用範圍、做初步中文化
新增 sanc 的 /std/npc.c,所有 npc 皆 clone 自這個檔案
新增 /adm/daemons/recordd.c,初期用以支援儲存 npc 資料
└修改 /adm/etc/preload 增加預載
└修改 /include/daemons.h 增加 #define RECORD_D 定義項
新增 /cmds/wiz/_npc.c,初期用來管理現有的 npc 資料
修改 /std/room.c 增加 set_npcs 函數,用來生成 npc
/d/area/wiz.c 有 npc 設定範例
新增 sanc 的 /d/area/wiz.c 房間(wiz 初始登入房間)
新增 sanc 的 /d/area/newbie/ 區域(新手村, 玩家初始登入房間)
修改 /include/daemons.h,改動 START 內容及新增 WIZ_START
修改 /std/user.c,區隔 wiz 與 ppl 的登入房間
修改 /adm/etc/global_aliases 增加 dep = deposit、wit = withdraw
新增 sanc 的 /d/area/shadow/1/ 區域(影子傳說區域, 暫不生怪)
新增 sanc 的 /d/area/sisdic/ 區域(西斯迪克港)
新增 sanc 的 /d/area/whitetile/ 區域(白瓦鎮)
PS.這個區域包含舊型態與新型態(132.c 起)兩部份
29 重寫該 mud 專屬的 /adm/daemons/chinesed.c 的 chinese_number 函數
修改 /adm/simul_efun/format_string.c 新增 substr 函數
PS.新增後 update /adm/simul_efun/format_string.c 再 update
/adm/obj/simul_efun.c 即可使用新的全域函數(或重啟 mud 亦可)
修改 /adm/etc/access,將 /d/area 設為 (all)[rw]
PS./d/area/adm/d_master.c 可對 /d/area 目錄做存取限制
/d/area/whitetile/adm/d_master.c 可對 /d/area/whitetile 做存
取限制
建立 /open/cmds 目錄及相關各子目錄
修改 /cmds/wiz/_running.c 使其存取 /open/cmds/running 目錄
修改 /cmds/wiz/_runmap.c 使其存取 /open/cmds/runmap 目錄
新增 /cmds/std/_note.c 指令並使其存取 /open/cmds/note 目錄,儲存
檔設定為 /data/note.o
PS.這樣就有公告指令可使用
新增 /cmds/std/_view.c 指令並採用 sanc style
修改 /include/commands.h 新增 CMD_VIEW = /cmds/std/_view 定義
PS.這樣就有物件資料觀看指令可使用
重寫 /std/shop.c、storeroom.c、eq_shop.c、wp_shop.c
修改 /include/mudlib.h 增加 SHOP、EQ_SHOP、WP_SHOP 等定義
PS.這樣就有基本的商店及指令 list/buy/sell/id 可使用
新增 /cmds/std/_run.c 指令
修改 /include/mudlib.h 新增 GMONSTER = /std/monster.c 定義、新增
SMONSTER = /std/monster.c 定義
PS.這只是暫時的,實際上它們在 sanc 並非都指向 monster.c
30 搜尋 lib/ 目錄下所有包含 hit_points、spell_points、max_hp、max_sp
這四個關鍵字的檔案,取代為 hp、sp、hp_src 及 sp_src。
修改 /adm/daemons/newuserd.c 將設定 hp_src 及 sp_src 的部份取消
MASTER_ONLY、LOCKED 的設定方式。
PS.上限值是可能變動的(比方被施以輔助法術後),基本上它們本身也是動
態數值,只是更動頻率沒有 hp、sp 那麼頻繁。
將 /data/std 下的所有使用者檔案除了 "laechan" 外其它均 abort 掉,
改為 .tmp 或是 .o~
修改 /adm/etc/groups 將 root 設定為 "laechan" 並取消其它帳號
PS.架站者可將 "laechan" 改為自己想使用的 id
新增 /cmds/std/_chat.c 及 /cmds/std/_chatlog.c 兩個指令
修改 /include/commands.h 新增 CMD_CHAT = /cmds/std/_chat 定義
PS.這樣至少就有基本的 chat 頻道可用
拷貝 /cmds/file/_cd.c、_ls.c、_more.c、_goto.c 到 /cmds/std 目錄
PS.這樣未正式開站前可讓不具 wiz 身份的玩家至少可下這四個指令
新增 /cmds/std/_recall.c,讓 wiz 及玩家能 recall 回登入點
修改 /adm/etc/global_aliases 檔,讓 / = recall (sanc style)
31 搜尋 lib/ 下所有的 ob_data 及 tmp_ob_data "變數",更改為 data 及
temp_data。函數 query_ob_data 及 query_temp_ob_data 則不變。
下載 sanc 的 /doc/emote 目錄到 tmi2_v3_改
修改 /cmds/std/_chat.c 讓它能簡易讀取 /doc/emote 下的 semote
修改 /adm/etc/global_aliases 新增 ch = chat 及 chat* = chat *$*
PS.這樣至少就能 chat *smile 及 chat* smile 了
修改 /cmds/std/_ls.c,讓它具有 sanc style。
└原始檔 /cmds/file/_ls.c 則不更動,wiz 會先執行到 /cmds/std 的
(依照 data me 所看到的 PATH 先後順序)
201406 01 修改 /std/attack.c 的 receive_damage 函數,暫時將扣 hp abort
└這樣就能持續測試戰鬥系統而不會死亡
修改 /cmds/std/_look.c,更多中文化及去掉複數的 "s"
└修改到這裡,基本的房間觀看就沒問題了
修改 /adm/etc/global_aliases,增加 k = kill $* 的定義
修改 /std/user.c、/std/body/attack.c、/cmds/std/_kill.c,更多戰
鬥訊息方面的中文化
└確認 TMI-2 的基本戰鬥流程是沒問題的,但是 kill_ob 會被呼叫三次
02 打薄 /tmi2_fluffos_v3_改 目錄下的一些圖檔讓它們檔案size小一點
修改 /adm/simul_efun/format_time.c 的 format_time 函數,中文化
並新增 Ctime 函數(sanc style)
重寫 /cmds/std/_who.c,採用 sanc style
PS.這樣至少幾十~一百出頭的玩家在線時一頁顯示沒問題了(也有做分頁)
修改 /cmds/std/_note.c 加入日期
修改 /cmds/std/_chat.c 將 emote 部份函數化
修改 /cmds/std/_who.c,修正部份 bug
05 新增 /include/myfarm.h
└下載自 sanc /u/l/laechan/skycastle/room/skyfarm.h
新增 /adm/daemons/myhomed.c,管理 myhome
修改 /include/daemons.h 新增 MYHOME_D = myhomed.c 的定義
修改 /cmds/std/_look.c,辨識 /x/x/xxx 與 /x/x/xx#編號 的不同
新增 /include/myhome.h、/cmds/std/_myhome.c 及 /std/myhome.c
└玩家的自宅系統
新增 /std/myfarm.c,附屬於 myhome 的小型仿開○農場系統
PS.這樣至少就有玩家住宅及附屬的農場系統可玩
新增 /std/boat.c、/d/area/times_check.c,下載自 sanc
└times_check.c 暫放 /d/area 目錄
修改 /include/mudlib.h,新增 BOAT、TIMES_CHECK_OB 等定義
修改 /adm/etc/preload,新增 /d/area/times_check 的 preload
修改 /adm/etc/global_aliases,新增 o = go out
新增 /d/area/test 目錄
新增 /d/area/test/boat.c、port1.c、port2.c,測試 boat 是否正常
boat 只需人工 start 過一次,之後就可靠 times_check 執行定期航線
PS.這樣至少就有定期航班型交通工具可以使用
指令初步中文化、部份訊息不顯示
/cmds/std/_go.c
06 搜尋 lib 目錄下所有包含 "wielded"、"equipped" 的字串,全部改成
"wear" 字串。
└/std/monster.c、/std/weapon.c、/cmds/std/_inventory.c、
/cmds/ghost/_look.c、/cmds/std/_look.c、/cmds/std/_steal.c、
/cmds/std/_unwield.c、/std/armor.c、/cmds/std/_unequip.c
修改 /std/armor.c、/std/weapon.c,新增 wear_ob 及 remove_ob 函數
新增 /cmds/std/_wear.c、/cmds/std/_remove.c
將 /cmds/std/_equip.c、/cmds/std/_wield.c、/cmds/std/_unequip.c
、/cmds/std/_unwield.c,四個指令去掉 .c 改為 .tmi2
修改 /adm/etc/global_aliases
└新增 equip = wear $*、新增 wield = wear $*
新增 unequip = remove $*、新增 unwield = remove $*
PS.這樣就能使用單一的 wear 指令穿脫防具,且舊指令格式依舊可使用
新增 /adm/daemons/channeld.c,拷貝自 /cmds/std/_chat.c 稍作修改
修改 /include/daemons.h,新增 CHANNEL_D 等於上述檔案的定義
修改 /std/user.c 將 chat、rumor、chatlog 指令加進 channeld.c 的
指令判斷範圍
搬移 /cmds/std/_chat.c 為 /cmds/std/chat.20140606
/cmds/std/_chatlog.c 為 /cmds/std/chatlog.20140606
PS.這樣公頻就正式納入 CHANNEL_D 的納管範圍並開放兩個基本的公頻
分別是 chat 及 rumor,未來還可加入國家、家族、職業等公頻
09 刪除 Win32 目錄下的 driver.exe (因為已拷貝一份至 bin 目錄下)
└若 driver.exe 不小心遺失,只需下載 tmi2_v3_改 壓縮檔即可取得
搜尋 lib 目錄下所有關於 "Dexterity"、"Strength"、"Intelligence"
、"Constitution" 等關鍵字,改為 "dex","str","int","con"。
修改 /include/stats.h 檔,定義共多少屬性、讀取名稱及顯示順序
└該讀取名稱並不一定是玩家實際資料欄位名稱, 例如 "dex" 並不一定
是指玩家資料欄位的 "stat/dex",但一定是屬性讀取函數所使用的名
稱如 ppl->query_stat("dex")
修改 /adm/daemons/newuserd.c,初始屬性的名稱設定變更及 agi、mag
的追加設定
└但日後應呼叫 complete_setup 做設定
mud 重新啟動。
搬移 /data/std/user/l/laechan.o 為 laechan.o~
搬移 /data/std/connection/l/laechan.o 為 laechan.o~
重創 laechan 角色,save quit 後修改 wiz 相關參數
1.PATH 修改為 laechan.o~ 的 PATH 資料
2.wizard 設定為 1
3.複製 laechan.o~ 的 alias 欄位的相關資訊到 laechan.o
3.connection 下的 laechan.o 增加 wizard 1 的設定
再重新登入 laechan, laechan 即具有原本的 admin 權限
PS.這樣就能讓 tmi2_v3_改 創新角色時即具有基本的六個屬性。
新增 /adm/simul_efun/attack.c,戰鬥相關的全域讀取函數集合區
修改 /adm/obj/simul_efun.c,新增 include attack.c
└修改重要系統檔案後最好重啟 mud 確認是可 work 的
修改 /std/body/attack.c,新增各種 query/set/add/del 函數
修改 /std/body/attack.c,重寫 kill_ob 函數
廢止 /std/user.c、/std/monster.c 的 continue_attack 函數
修改 /std/body/attack.c,重寫 int continue_attack() 函數
└宣告為 int 是因為有可能做物件的 remove 動作
mud 重新啟動,確認 user.c 的載入無問題
修改 /adm/simul_efun/attack.c,新增 normal_attack 函數、
新增 damage_str 函數
修改 /adm/simul_efun/tell_room.c,新增 show 函數
└各種 tell env 的相關函數都應寫在 tell_room.c 內
修改 /adm/obj/simul_efun.c,搬移 tell_room.c 的位置
└這樣 attack.c 才能呼叫寫在 tell_room.c 的 show 函數
mud 重新啟動,確認 user.c 的載入無問題
PS.這樣新寫的戰鬥系統就具有基本雛形
11 新增 /include/vobj.h,虛擬物品系統相關定義檔
新增 /adm/daemons/vobjd.c,虛擬物品及怪物掉落物資料管理檔
新增 /cmds/wiz/_vobj.c,虛擬物品及怪物掉落物設定及管理指令
修改 /adm/etc/preload,新增載入 /adm/daemons/vobjd.c
修改 /include/daemons.h,新增 VOBJ_D = vobjd.c 的定義
PS.這樣就有虛擬物品系統及怪物掉落物系統
新增 /cmds/std/_ob.c,直接下載 sanc 現用的並稍做修改
新增 /std/vobj.c,做為虛擬物品做 ob view 時的借殼物件
PS.這樣玩家就有 ob 指令及相關功能語法可使用
12 修改 /adm/simul_efun/format_string.c,新增兩個處理 ansi 顏
色的全域函數: get_ansi_color 及 no_ansi_color
PS.這樣就能針對有帶 $XXX$ 這類 ansi color 的字串做一些處理
新增 /include/simul_intermud.h,定義一些 intermud 的東西
將 /include/net/ 目錄替換為 sanc 現用的 /include/net 目錄
└舊目錄更名為 /include/net.tmi2
修改 /std/user.c,新增 tmi2 頻道指令
修改 /adm/daemons/channeld.c,新增 intermud channel 的一些
設定,使 tmi2 頻道指令可發送遠端訊息
修改 /adm/daemons/logind.c,新增 intermud channel 的一些設
定,使遠端的 tmi2 頻道訊息可被 mud 接收
PS.這樣就有基本的遠端通訊頻道 tmi2 可使用
註冊遠端通訊可 mail 給
[email protected] 提出申請
將 /cmds/file/_cd.c、_ls.c、_more.c 副檔名改為 .tmi2
將 /cmds/std/_cd.c、_ls.c、_more.c 搬移到 /cmds/file 目錄
新增 /cmds/std/_cd.c、_ls.c、_more.c,內容指向 /cmds/file
目錄下的這三個指令
└指令 goto 亦比照辦理(/cmds/wiz/_goto.c)
修改 /cmds/std/_wear.c,修正 cant_wear 函數的判斷錯誤段落
修改 /std/body/attack.c,修正當自己與戰鬥對象不在同一房間
時,戰鬥不會中止的問題
修改 /adm/daemons/newuserd.c,新增新玩家的等級與經驗值初始
化設定。
修改 /std/monster.c 的 die 函數,打死怪物時會觸發 vobjd.c
的 exec_mob_drop 函數。
PS.這樣就能設定及看到打死怪物時會得到哪些東西
修改 /cmds/std/_note.c,增加 mud_name 的判別
PS.這樣同一 lib 不同 port 的兩個 mud 就會看到不一樣的 mud
name。一般來說最好只有其中一個 mud 做更動公告內容的動作
,而不要兩區都做更動。
新增 /cmds/std/_attack2.c、_config2.c、_score2.c,做為日後
可參考的風格(正式指令是 attack、config、score)。
PS.類似的做法日後會持續採用,非正式指令後面都會有編號,並
且是可執行的,供使用者做為撰寫正式指令時的參考
13 備份 /std/user/autoload.c 為 autoload.20140613
重寫 /std/user/autoload.c 的兩個函數,load_autoload_obj 及
compute_autoload_array。
└想要設定哪些東西不應被儲存,就改這個檔案(目前全部會儲存)
修改 /std/user.c,修改 quit 函數對身上所帶物品所做的判斷
PS.這樣玩家 save 及 quit 時身上的東西應該被儲存的就會被儲存
,login 時也會正常載入物品,而且也能做額外 sdata 的設定
修改 /std/body/attack.c,增加更多 query/set/add/del 函數
└varargs object query_wps(int n);
└varargs string query_wp_types(int n);
當 n 給亂數 1~2 時,如果玩家只拿一把武器,有可能會傳回
"barefist"
└將 query_attack_msg() 函數搬到 user.c 並建立函數雛形
修改 /std/monster.c,另外建立 query_attack_msg 函數
修改 /adm/etc/global_aliases,新增 rem = remove $* 定義
14 在 tmi2_fluffos_v3_改 目錄下建立 說明文件document 目錄,並
建立 系統/ 與 指令/ 等目錄,做為日後存放相關說明文件之用。
增加[系統]目錄內 虛擬物品系統 的說明文件。
15 增加[系統]目錄內 怪物掉落物系統 的說明文件。
16 新增 /adm/daemons/runnumd.c,數字圖防機系統
新增 /include/runnum.h,數字圖防機系統相關定義檔
修改 /adm/etc/preload,增加 /adm/daemons/runnumd
修改 /include/daemons.h,增加 RUNNUM_D = runnumd.c 的定義
修改 /std/user.c,修改 cmd_hook 函數增加數字圖防機的模擬段
,該段落以 #ifdef ... #endif 包住
修改 /adm/daemons/logind.c,修改 get_name 函數增加數字圖防
機的模擬段,該段落亦以 #ifdef ... #endif 包住
PS.這樣就有基本的防機程式可使用
修改 /adm/daemons/channeld.c,增加 chat *xxx 目標1;目標2、
以及 chat *xxx 目標:要接的話 兩種公頻語法,以及髒話過濾
PS.這樣 semote 裡的 $T、$M 及 $W 以及 .mod 設定就有作用
修改 /std/user/tsh.c 的 process_input 函數,讓 alias 的指
令能被儲存在 history 裡頭(傳統是儲存完整指令而非 alias),
並讓 !指令 的語法同樣能適用在 alias 指令。
PS.這樣使用者在 !指令 時就不用給完整指令
修改 /std/user.c 的 cmd_hook 函數,增加呼叫 channeld.c 的
find_emote 函數判斷
修改 /adm/daemons/channeld.c,新增 find_emote 函數,並加入
幾個相關定義於檔頭
PS.這樣玩家下 semote 指令時就會有作用 (比 sanc 功能還強)
將 /cmds/std/_semote.c 更名為 /cmds/std/semote.tmi2
新增 /cmds/std/_semote.c
新增 /cmds/std/_semote_search.c,直接下載 sanc 使用的
修改 /adm/etc/global_aliases,新增 query_semote =
semote_search $* 的定義
PS.這樣就有基本的 semote 指令與相關查詢指令可使用
17 將 /cmds/std/_help.c 更名為 help.c
新增 /cmds/std/_help.c,當使用者使用該指令不接字串時,會執行新的
功能;有接字串時,就呼叫 /cmds/std/help.c 執行原先 help 的功能。
PS.這樣就有樹狀式 help 指令可使用
新增 /cmds/wiz/_drawmap.c 指令,讓使用者可畫 x-x 地圖。
新增 /cmds/wiz/_makearea.c 指令,讓使用者可產生及讀入 x-x 地圖,
並可將 x-x 地圖存成數字編號地圖。
新增 /cmds/wiz/_trans.c 指令,讓使用者可依數字地圖與腳本檔的內容
,依數字地圖的各房間檔名與路線配置產生出相對映的房間物件。
18 新增 /d/area/00 目錄,存放新型態區域所需的各範例檔,包含
area_room.c、area_room.h、map圖、script檔
新增 /d/area/01/01 目錄,做為示範區域
修改 /include/mudlib.h,新增幾個與區域相關的定義
新增 /cmds/wiz/_trans.c 指令,可將數字地圖轉成實際存在的房間
PS.這樣就能在 tmi2_v3_改 實作新型態區域
19 新增 /std/gmonster.c,群式怪物繼承檔,部份顯示與訊息 sanc style
修改 /std/body/attack.c,改良一些新增 function 的寫法
修改 /std/mudlib.h,新增 GMONSTER = /std/gmonster.c 的定義
PS.這樣至少就有群式怪物可用,而且 sanc 的群式怪物在 tmi2_v3_改
也能正常載入
修改 /std/user/history.c、/std/user/tsh.c,修正 數字 指令,以及
數字 !指令,以及 !指令 的使用 bug。
修改 /std/user.c 的 quit 函數,掉換 save_data 的位置
修改 /std/user.c 的 complete_setup 函數,建立數值初始化區
PS.這樣裝備武防的狀態不正常離線時,重新登入就會做部份數值初始化
修改 /adm/simul_efun/base_name.c,增加 explode_base_name 函數,
可將一 base_name 的檔名的最後一個 "/" 改成 "*"
PS.這樣就可用 strsrch 去找出 * 的位置, * 之前就是 path, * 之後就
是 file,explode(str,"*") 就得到 ({path,file})
20 修改 /adm/simul_efun/adminp.c,新增 int wiz_lv(string id) 函數
修改 /adm/daemons/logind.c,將 ppl 區與 wiz 分隔的判斷式 adminp
改成以 wiz_lv 去判斷並實測 ok
PS.這樣就有一個可用 使用者id 來做是否為 wiz 的判斷用函數 wiz_lv
修改 /cmds/std/_help.c,增加虛擬目錄的功能
21 修改 /cmds/wiz/_tran.c,簡化 SET_ROOM_FILE 整合到 ROOM_EXITS,
並追加 set "room_end" 欄位
修改 /cmds/object/_update.c,新增 -n 起始編號-結束編號 語法,及
-p 對目錄下全部 .c 檔 update 的語法
> update -n 001-100
> update -p
22 新增 /adm/daemons/mapd.c,地圖管理系統
修改 /adm/etc/preload,新增 mapd.c
修改 /include/daemons.h,新增 MAP_D = /adm/daemons/mapd.c 定義
新增 /cmds/std/_map.c,修改秀圖結果以及新增 wiz 指令區
└取消 map = gps $* 的 alias 指令,_gps.c 暫時保留
新增 /cmds/wiz/_name.c,區域取名指令
└其衍生為怪物命名指令,做法類似
修改 /cmds/wiz/_trans.c,進一步修正
修改 /std/user.c,增加 map_records 函數,用來讀取及紀錄玩家走過
的地圖
PS.這樣就有 x-x 地圖觀看指令以及區域命名指令可使用,並可依據玩
家地圖的紀錄狀況,決定要顯示地圖到什麼程度,並可做地圖 share
23 新增 /cmds/std/_betla.c,線上 betla
PS.這樣就能做 betla
新增 /cmds/std/_who2.c,仿卡○米亞的 who,做為使用者寫 who 的參
考。
新增 /cmds/std/_guild2.c,sanc 現用的 guild 指令,做為使用者撰寫
guild 列表指令的參考。
新增 /d/area/redant 目錄,下載 sanc 的新型態區域「炙蟻地獄」設定
PS.這個區域亦可做為新式區域的示範區域
變更 /d/area/00 目錄下的 area_room.c 的內容(參考 /d/area/01/01)
└將來還可能再變更,因為功能會越來越齊
修改 /adm/etc/groups 檔,將 mudadm 加入 (root) 群組
修改 /adm/etc/groups 檔,將 laechan 降為 (admin) 群組
└這裡即示範了如何新增與移除 admin,只要改這個檔再重開 mud 即可
修改 /adm/daemons/logind.c,將 mudadm 設為只允許 127.0.0.1 登入
修改 /include/config.h,將 #define AUTO_WIZHOOD abort 掉
新增 "mudadm" 使用者,密碼 "mudadm",新增完之後 save 存檔離開,
然後關掉 mud 再重新啟動 mud,再登入 mudadm,它就有管理者權限
PS.這樣使用者至少有 mudadm 這個有管理者權限的帳號可使用
24~29 新增 /cmds/std/_quest.c 指令,任務進行及管理指令
新增 /include/quest.h,任務系統相關定義檔
修改 /adm/daemons/recordd.c,新增儲存 record_data["quest_npc"]資料
以及 record_quest、query_record_quest、quest_check 三個函數。
新增 /d/quest 目錄,存放任務腳本
新增 /d/quest/quest_ob.c,任務腳本物件繼承檔
新增 /d/quest/data 目錄,存放玩家任務資料存取物件
新增 /d/quest/data/quest_data.c,玩家任務資料主存取檔
新增 /d/quest/data/sample.c,各字頭玩家任務資料共通繼承檔
在說明文件資料夾內新增任務系統的說明
PS.這樣就有基本的腳本式任務系統可使用
在 tmi2_v3_改 目錄下新增 sanc.rar 壓縮檔,裡面放了一些 sanc 可釋出
的資料,有興趣的使用者可解開該壓縮檔自行觀看瀏覽。尚有部份資料需要
花時間挑選才能釋出,所以這個資料夾內的內容也會再擴充。
待修改備忘:
/adm/daemons/systemd.c、/data/system.o、/adm/simul_efun/system.c、
/cmds/adm/_system.c 四位一體
newuserd.c 補上 complete_setup 相關
newuserd.c 把真實姓名的部份改為輸入中文暱稱及使用 chi_name
└即 set_name 函數
要確認 newuserd.c 是否呼叫 user.c 的 complete_setup, 以及
玩家每次 login 時是否也呼叫 complete_setup
補上 /adm/simul_efun/new_and_count.c
穿脫武防加上屬性、抗性等加扣設計
陸續充實 view 的內容
makewiz、dewiz 及 wiz 設定的正規化
定時公告處理系統
who -l
user.c 的 channel 判斷將來可改用 member_array
持續思考從 continue_attack 到實際攻擊應該將相關函數寫在哪
armor 及 weapon 的部份讀取函數化
新增 /adm/daemons/checkd.c 相關 check 都寫在這裡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud_sanc/M.1636880704.A.187.html
1F:推 Hsins : 不放到 GitHub 上嗎? 11/15 21:11
檔案太分散了,而且我只打算使用 gist,我比較有興趣寫單檔。
※ 編輯: laechan (114.33.66.104 臺灣), 11/16/2021 00:16:15