作者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/cn.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