mud 板


LINE

看板 mud  RSS
※ 引述《tenyfish (何时才有发言权?)》之铭言: : 就我看了一下档案内容及说明文,几点回馈: : (以一个入门者的观点来讲) : 1. 说明档 : 十分详细,函数及变数都有标出来, : 我个人会建议,把"特别系统"的说明分成一个文件 : ->相关档案 : ->修改会影响的其他系统 : ->游戏内相关指令 : 而.h里面直接注解说明宣告(我发现你vobj.h有做了) : .o里面范例注解每个栏位 如果确定会写系统的说明文件,那麽 .h 档的注解就不会写得 太详细。一般会先写完系统才写说明文件,若在写系统的过程 中耗费太多时间在注解上,会影响系统的撰写。 注解一般是我写给自己以及 more 的人加减参考用的,因为如 果系统没有一气呵成完成,隔几天後我可能会忘记一些重要的 段落,注解的用意就是避免我忘记那些段落,或是我认为那是 很重要的段落这样,例如 vobjd.c 里面有一段.. void set_ob_data(string keyname,string tmp) { mixed tmps=explode(tmp,";"); int i,j=sizeof(tmps); string tmp2; mapping ob_data=([]),keydata=([]); // ({"名称","编号","单位","种类","叙述",价格,携带量,能否交易,能否贩售}) if(j>0) ob_data["name"]=tmps[0]; 标亮绿色那一段就是很容易忘记其顺序与代表的意义,才会注 解在那边。 至於 .o 档要注解....很困难,但我会在说明文件里面补上栏 位说明,并请使用者与系统档对照。 我也会在同一说明文件里面加上「系统的建立、使用及移除」 一项,说明建立系统的过程,以及哪些东西会使用到这个系统 ,以及怎麽使它无效化。但以 chinesed.c 来说其实我就不可 能建议使用者「移除」它,因为太多东西都跟 chinesed.c 有 关,在这情况下在「建立」与「使用」上我会讲得比较详细, 而这其实就是建议使用者「顶多修改它就好而不要移除它」, 「如果真的要移除它,那乾脆连 tmi2_v3_改 也一起移除」。 : 2. 关於LPC入门者 : 以DS的方法是,他Q&A建议你以非wiz身份完成一些范例任务 : 并在中间观察相对应档案的内容,了解room的设定 : 然後自己设计自己的一个区域和任务,它的文件有一些lpc教学 : 像是ob->的用法之类的 Spock@FF 以前有写了一系列的 LPC 使用教学,写那些是很累 的,而且看完後能不能懂、懂了是否就因此会了,都是因人而 异。 LPC 教学也不是 tmi2_v3_改 应该包含的东西,从「改」这个 字就可以知道,如果说 tmi2_v3 原生就有 LPC 教学相关,那 麽 tmi2_v3_改 就会有,反之,tmi2_v3 本来就没有这东西的 话,tmi2_v3_改 要有就得花时间新增。 我也不建议完全没 LPC 基础的人架 tmi2_v3_改,那太花时间 ,而且违背我释出 tmi2_v3_改 的本意─我不希望拿它架站的 人必须花很多时间才能架出一个站。对於一个完全没基础的人 来说,tmi2_v3_改 跟 tmi2_v3 事实上是一样的东西。 所以我还是比较建议有 LPC 底子并实际当过 wiz 的人,才较 适合使用 tmi2_v3_改 来架站。花时间写 LPC 教学文件是 ok 的,但以重要性及优先度来说它并非我现阶段的优先选项,而 且我以前也写过,根据我自己对自身的了解,我常常写到一半 就突然不写了。(那真的很烦..) : 3. 关於一些较常见的系统 : 可以以"参见XXX mud 某系统使用" : 例:一开始先建议使用者体验Sanc并且使用哪些功能 : 毕竟说明文件是开发工作上很花心力的部份 我之所以没说出「如果对当 wiz 有兴趣,sanc 也欢迎大家来 当 wiz」这样的话,是因为有前车之监,我曾收过一个 wiz, 结果他一来就自己四处 more 导致「不该看的也看了」,然後 就产生误解,例如他看了某个房间: #include "mudlib.h" inherit ROOM; . . 根据 #include 规则当使用 " " 时,它会先找物件所在目录 下有没有 "mudlib.h",没有的话才去 /include 目录下找, 所以这房间是可 update 的,但是它的 #include 写法是错误 的,对一个来之後想自己 more 的 wiz 来说就会令他产生误 解,认为房间就是要 #include "mudlib.h"。或是: void init() { add_action("push_xxx","push"); } int push_xxx(string str) { if(!str || str=="") { write("你要 push 什麽?\n"); return 1; } 正确应该是要 return notify_fail("你要 push 什麽?\n"); 诸如此类的东西非常多。 sanc 存在太久规模也太大了,导致 sanc 并没有真正适合新 手 wiz 的教学环境(最大的原因是因为我自己很懒)。 但是 tmi2_v3_改 就不一样了,如果我以後用 tmi2_v3_改 架 站的话,我就欢迎完全没基础的人来当 wiz,因为我不必担心 他四处 more 会看错什麽、误会什麽,所有的 code 也都会公 开,并欢迎已架站的人引用。 : 4. 以我自己开发的需求来说,这版有map或wizmap的功能吗 如果是指指令 map 的话,tmi2_v3_改 有塞一个我在 2001 年 写的 /cmds/std/_gps.c 指令: > map <= 透过 global_aliases 的设定 map = gps $* GPS 卫星定位系统 目前所在位置: [水池广场] | 口─口 | 口─口 | 口 口 口 | | | 口──口─口─口─口─口 | | | 口 口 口 | 口 | 口─口 | 只要是超过 10 年的东西,很容易看到一个「特色」就是我很 少用宣告 mapping 的方式去储存资料,而多半是把 mapping 资料 "set" 到物件本身,例如: if(mark==1) set("pos/"+x+"#"+y+"#",HIC"⊕"NOR); else if(mark!=1 && env_name==base_name(home_env)) { set("pos/"+x+"#"+y+"#",HIC"⊕"NOR); return 1; } else if(query("pos/"+x+"#"+y+"#")) set("pos/"+x+"#"+y+"#",HIC"口"NOR); 所以 /cmds/std/_gps.c 基本上也算是会造成误解的存在,但 因为我在改 tmi2_v3 的过程中需要它,所以才暂时放上去。 (所以那个档才没有 // laechan@sanc ... for tmi2_v3_改, 相同的情况还有 /cmds/std/_note.c,都是很早以前写的,但 note 在 2005 有经过改版,情况就比 gps 好一点) 如果要重写一个新的...老实说我看过别的 mud 也有这东西, 它们指令的执行结果,比我写的好多了,因为我没受过程式的 正规训练,有受过正规训练的人对「递回」的使用会更得心应 手,没受过训练如我「反正写出来能用就好了管它那麽多」。 (包括 findmob 也是,justinj@sanc 写的也比我写的好) 不过如果你就是指 map 这个指令的话,我可以花点时间重写 一个新的,但有一点必须说明的是,map 的最大弱点就是无法 正确显示「exits 设定为传统迷宫类型的区域」,例如: 往002←001-002→往001 回圈式出口设计 所以实际上 tmi2_v3_改 的 map 是与其它 mud 不同的,它是 一种新的 map,在目前的 sanc 也已实装,底下是 demo: http://imgur.com/QBaTwVG.jpg
这个才是我理想中的 map,也是 tmi2_v3_改 会内建的东西, 但即便如此它还是有包含传统的显示方式,这个 _gps.c 指令 里面就有: if(!map_d) if(catch(map_d=find_object_or_load("/adm/daemons/map_d"))); if(map_d) if(tmps=map_d->get_path_and_num(base_name(home_env))) { map_d->show_maps(tmps[0],tmps[1]); return 1; } map_d 就是用来管理类似上面那种地图的,如果所在位置符合 map_d 所管理的那种新型态区域,它就做 show_maps 的动作, 不符合时就显示传统的 map 型式。 现阶段 tmi2_v3_改 是没有 /adm/daemons/map_d.c 的因为还 没实装到那里。 LAechan --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.26.184.223
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud/M.1402793807.A.E41.html
1F:推 tenyfish :2不用写,给个学习方向就好,资源很多 114.37.55.240 06/15 10:06
2F:推 tenyfish :3我指的是做一个玩家体验一些功能 114.37.55.240 06/15 10:12
那 4 指的是就是上面说的 map 吗? 对於 LPC 学习的部份我举 annihilator 大大以前曾提过的事情, 他以前曾提到他在写 es2 mudlib 时,曾考虑要拿掉 set, query, add, delete 等等「没效率」的做法,这跟我曾举例的「为什麽我 有时不选择走高速公路,而选择走快速道路」的例子类似。 因为有诸多考量。 考量之一就是监於当时的 wiz 大多熟悉 set/query/add/delete的 方式,而且是已经很熟悉了,考量到这些人希望他们可以比较容易 入门 es2 mudlib,所以 annihilator 才保留了这些呼叫方式。 那所谓 LPC 的入门学习,究竟是要从「写物件开始」还是「从正 规的程式语法开始学起」?这没有定论。从前者学起就是会看到一 堆 create()、init()、set、add_action、....,我自己就是从这 些开始学起,却导致不爱看说明文件的我花费了异常多的时间才开 始用到 mapping、mixed 等变数,以及 sscanf、member_array 等 函数,而在我使用到这些变数之前我已经写了超多的物件,造成了 超多难以挽回的情况。 那从正规的程式语法学起呢?那也不适合我,因为我既不爱看说明 文件,也没有受过正规的程式语言训练,但是从正规学起有个好处 ,就是有程式概念的人写出来的物件,会比较具逻辑性,运作效率 也较好,底下的差异就是例子 set("exits/north",__DIR__+"002"); set("exits/south",__DIR__+"003"); vs set("exits",([ "north":__DIR__+"002", "south":__DIR__+"003", ])); (後者的执行效率较好) 所以其实我也不想(也不能)建议一个初学者应该从什麽角度进入到 LPC 的世界,根据历史经验,通常是会建议从写物件开始,就如同 你上面也提过的(大家的想法其实差不多),建议使用者一边观察程 式的执行结果,一边 more 与物件内的程式段落对照,这也是我一 开始的学习方式,它的效果很好,而且也容易参考仿照。 但是它对於「学习 LPC」帮助不大,除非是像西域奇人番僧一样, 一直修练外功的他居然可以另辟蹊径,由外而内,内功居然也因此 练到异常强的境界,但是这种人是很少的,至少我没看过光是只写 区域、怪物、武防等物件,就能写到能改 mudlib 的人。 http://webptt.com/cn.aspx?n=bbs/JinYong/M.1381937085.A.630.html 至於玩家体验,也就是 demo 的部份,则确定是会有的。我的想法 比较简单,就是实际拿 tmi2_v3_改 架一个 mud,再开放 cd、ls 、more 等指令给「一般玩家」,然後做出足具示范性质的区域, 则有兴趣的玩家自然就可藉着 more 与实际执行後的结果,了解一 些基本的东西它是怎麽 work 的,关键在於一些细节的做法。 (以前好像也有人架过类似的,好像叫大神小站) 而现阶段则是透过逐步释出的方式,让有程式底子、也有兴趣的人 可以先看看里面有什麽新东西。 总之还是要谢谢你,这类的反馈对 tmi2_v3_改 的释出非常重要, 这也是我一直强调的,我很需要反馈的意见的原因。
3F:推 tenyfish :然後这mapd满像重生的世界 114.37.55.240 06/15 10:19
大家的想法都差不多。 ※ 编辑: laechan (114.26.184.223), 06/15/2014 10:40:52
4F:推 tenyfish :那我最近改来研究Tmi2好了111.241.184.171 06/15 20:19
5F:→ tenyfish :问一下tmi2原来的runmud没用了吗 114.37.55.240 06/15 21:37
6F:→ tenyfish :成功以admib登入 建议移除原文说明 114.37.55.240 06/15 21:46
可以先看一下 mud 目录内的修改日志.txt,先参考最初修改的 前三天左右大概改了什麽。我一般没必要不会删除 tmi2 原本有 的东西,用新的东西覆盖时也多半都会於修改日志里注明。 因为这是 tmi2_v3_改,不是完全我原创的,我也打算在释出时 使用含有 "tmi2_v3" 的名称,但是在释出前我一定会尽量把这 个版本用不到的东西,都集中到一个目录内分类存放,让使用者 在主要目录尽可能不会看到过时的、没必要存在的东西。 (至於拿到释出版本的使用者要怎麽做,我就不干涉了) ※ 编辑: laechan (1.165.194.160), 06/15/2014 22:58:58
7F:推 tenyfish :我照原生的runmud.bat跑後来才发现.. 1.162.184.31 06/15 23:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP