LPC语言精讲
2007/5/12 23:06:09
以下文章转自XO,特此声明:
嗯,下面是我给6666的新巫师们的一篇入门读物,大家可以看看。是我从清华BBS巫师版
弄来的,是台湾人写的,有些词语我改成大家比较熟悉的,很多地方加了注,可能更好
懂一些。
这篇说明是为了新上任的巫师所写的, 我假设读著这篇说明文件的新巫师已经读过 hel
p new_wiz 中的内容, 并对巫师专有的指令如 clone,update, cd, ls, cp... 等能熟练
地加以使用, 但对如何开始写作自己的区域感到茫然, 不知所措的新进巫师
[在开始制作之前]
让我们大略看一下在 LP MUD 中, 世界的构成方式 这个世界是由(目前大陆上玩的 mu
d ,包括 xkx,fy,es2 都是 lp mud
即所谓战斗 mud。---lnwm 注。)一个个的对象 (object) 所组成, 每个对象有一个对应
的程序来描(比如你在mud里见到的每个房间,每个npc,每个物品,甚至你自己,都是一
个 object,都是一段程序。----lnwm 注。)述它的特性 我们可以藉由写作一段程序来
创造出一个全新的对象, 可以利用update来更新对象所属的程序, 用 clone 来实际造出
一个可
(比如你敲 update here,就是将你现在所在的房间更新,这里需要强调的是,所谓更新
,就是将硬盘里这个文件编译后形成一段代码,这段代码是存在在内存中的。因此当你
修改了一个房间,那只表明你在硬盘上改动了这个文件,你必须做一下 update ,将它
编译放入内存,你的修改才正式生效。hehe,当然,编译有错误例外。----lnwm 注。)
用的对象 .(clone其实就是 update,只不过它update的是一个物品或npc,这个物品
或npc还需要有地方放,所以clone就是 update+move---lnwm注。)
在这里, 我们有各式各样的对象, 但是可以将之区分为三大类: 房间 (ROOM), 物品 (O
BJECT), 与生物 (LIVING) 在我们制作区域的惯(这个OBJECT不过是个名词以和ROOM
LIVING区分,和我们mud的object是两码事。---lnwm 注。)
例上, 我们习惯将房间的档案直接摆在区域的目录下, 生物与物品则摆(区域的习惯放置
位置是根目录下的 /d 目录。特别是大陆的,你可以在 /d下找到所有的房间和npc----
---lnwm注.)
在这个区域中名为 npc 及 obj (也有人喜欢用 object 或item为名, 看个人习惯 ) 的
子目录中 。
以下我将以这三大类对象来分别说明该如何实作出区域
[如何制作房间]
一个房间必定继承了 ROOM (inherit ROOM), 这是在(对,如果你要写一个房间,那么首
先要做的就是在这个程序的开头写上
inherit ROOM;在有些时候,比如在xkx里,你可能还要加上一句#include因为房间的门
是定义在那里的。---lnwm注。)
mudlib.h中被 #define 好的一个档案, 它表示一个特别的档案, 所有的房间都必须继承
它. 才能拥有属於房间的一切特性!
一个房间有三个非常重要的函数: create(), init(), 与 refresh()这三个函数会在某
些特定的时机被系统所呼叫, 并且可以由你自行改写,以达成千变万化的效果。
[create 函数]
create() 是房间在一被创造出来时必定要呼叫的一个函数, 通常我(如果你学过C语言,
那么在lpc中,void create()就相当于 void main(),即主函数。---lnwm注。)们都在
里面做一大堆设定初值的动作 随便找一个房间来看, 我们可以发现 create() 函数中
总是有一大堆的 set("something",somevalue);这些 set 的意义在此不详述, 你可以自
己猜, 也可以问问较资深的巫师.(在我们这个mud中,你可以敲help STD_ROOM来看看这
些设置是干什么的。---lnwm注。)
有时你的房间并不直接继承 ROOM 而是继承了一个有继承 ROOM 的特别房间, 像是商店
或是公会房间什麽的 这时候你所写的 create()(在我们的mud中,钱庄就是个典型的例
子,在钱庄的前面,你必须inherit SHOP;这个SHOP就是在ROOM的基础上加了钱庄的公用
功能。---lnwm注。)
[ini
下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms