找回密码
 注册
搜索
查看: 2301|回复: 0

LPC语言学习 1

[复制链接]
门派:不明
发表于 2008-6-24 15:11:44 | 显示全部楼层 |阅读模式
你必须了解, 在 LPC 中最重要的一个概念是物件(object) 当你想 做任何动作时,
都要考虑到这个动作是哪一个 object 所做的, 不然很 容易导致错误 
LPC 的语法并不严谨, 有些场合为了省事可以将函数是 由哪个物件所作的省略掉,
例如我们在 create() 函数中最常看到的 set(), 事实上最严谨的写法应为
this_object()->set() write() 则 为 this_player()->write() 

说这麽多只是为了强调一件事: 你能抓出一个物品的 object 变数
就能让他干一切他所能做的事 

[this_object() 与 this_player()]

这两个函数是系统所提供的函数, 也是最最好用的两个函数 
在你写作一个物件 (房间 物品...etc.)时, this_object() 表示自己这个 物件 

this_player() 则比较复杂, 它会传回一个属於玩家型别的物件 
这个玩家在 init 中就是触发 init 的那个玩家 this_player() 会跟
著函数呼叫一直传递给所有被 init 呼叫的函数, 包括 add_action 中
所定义出来的函数, 在这些函数中, this_player() 就是表示做动作的那个人。 

[present() 函数]

常常, 我们只知道一个物件的名字, 却不能用个 object 型别的变数指向它 
object present(string "id",object env) 函数在此时就 可以派上用场,
你给定你要找的物件的名字, 与它的所在地 (某个房间 或某个人),
函数就会传回他所找到的物件 

简单的想, present 函数其实就是在一个房间里找出某个名字的物 品的函数 
它是同类型找物品的函数中最有用的一个,
其余的函数还有 find_player(), find_living() 等等 

[environment(), first_inventory(), next_inventory(), all_inventory()]

这一组函数跟物件所处在的位置有关 
environment(object ob) 传回了物件 ob 所处在的地点, 例如 ob 是个玩家或生物,
那麽这个函数会传回 ob 所在的房间; 如果 ob 是个物品,
那麽传回的就是携带著 ob 的生物, 或是 ob 所在的房间 (如果没有任何人带著它)

first_inventory(object ob) 所传回的是 ob 中的第一个物件,如果 ob 是房间,
则传回第一个物品或是生物, 如果 ob 是生物, 则传 回他身上所带的第一个物品 

next_inventory(object ob) 通常跟著 first_inventory() 一起 使用 
它的功用是传回 ob 的下一个物品, 在同一个 environment 中 

all_inventory(object ob) 类似於 first_inventory(),
但是它所传回的是包含了所有物品的一整个阵列。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-5-1 14:37 , Processed in 0.031184 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表