efun游戏java,Efun基本分类

Efun基本分类

说明:这个帖子只是粗略的将MudOS的常用Efun按照它的用途做了一个分类,并不全面,也不见得合理。

正好Find要做新的MudOS,我帮不上什么忙,就算抛砖引玉吧。用/**/注释的表示目前MudOS并没有实现的功能。

一.

对象管理

1.每个Lpc中的.c都可以通过efun实例化为一个对象,MudOS提供返回对象本身,根据文件名查找,载入对象,销毁对

象,查询游戏中各种对象的接口。

new(),load_object(),find_object(),destruct(),this_object(),objects(),master(),clone_object(),

2.所有对象需要有唯一的标志符,并且以某种数据结构,比如hash的表的方式保存起来。

3.对象之间存在相互"包含"的关系,每个

对象都要有一个指向其环境的指针和一个指向其内容物的指针。更多内容物的组织方式可以是树型的,也可以是链表形式的。MudOS应该提供改变这种关系和查

询这种关系的相关接口。

move_object(),environment(),all_inventory(),deep_inventory(),first_inventory(),present(),

4.对象之间可以互相调用其public方法,/*可以引用其public变量*/。

5.MudOS提供自动的内存管理功能,长期不

使用的对象会被自动回收或者交换到硬盘。clean_up()

6.

MudOS提供自动的定时运行的程序接口,类似timer,以供对象实现某些仿真需求。Heart_beat(),set_heart_beat(),

query_heart_beat(),heart_beats(),reset()。这样的接口应该有数个,各自的时间间隔不同,从/*毫秒*/量级到

15分钟左右,满足不同的要求。

7./*对象的数据可以被序列化而进行网络传输,存储等操作,并且可以在Lpc的语法上指定该变量是否被序列

化,比如加上static。MudOS应当提供相应接口如serialize_object(),save_object(),

restore_object()。*/

8.如果使用Java写新的MudOS,Lpc将难以支持多重继承,为了使用方便,MudOS应该能

够支持"阻隔"(shadow)。从而能够将对象ob的方法改到对象ob2的同名方法执行,如果ob2中不存在同名方法,再执行ob中的方法。新的Lpc

支持对变量名的直接访问以后,对变量名的访问也遵循这个原则,那么在一定程度上可以代替多重继承的功能。只是在安全上需要作更多的考虑。MudOS相应方

法:shadow(),query_shadowed(),query_shadowing()

9.对象之间能够互相通信,MudOS提供如下

方法:tell_object(),tell_room(),say()。

10.需要一套uid和euid的机制来在游戏中实现权限的配置。相

关方法:export_uid,seteuid(),getuid(),geteuid(),eteuid(),getuid(),geteuid()

11.

可以查询对象拥有的方法和变量,如function_exists(),variales()

二.互动物件管理

1.

MudOS应该提供一套方便的切换和查询玩家控制权的接口。如enable_command(),disable_command(),exec(),

userp(),interactive(),this_player(),this_interactive()

2.MudOS内部区分管理

者物件,相应接口:

enable_wizard(),disable_wizard(),wizardp()

3.向玩家物件发送网络

信息:wirte(),shout(),message(),receive()

4.可以切换和查询不同的输入响应模式,如

input_to(),in_input(),get_char(),in_getchar()

5.查询连线玩家的网络信息,

如:query_ip_name(),query_ip_number(),query_ip_port(),query_host_name(),.resolve()

三.调用管理函数

1.支持延迟执行函数的功能,相应方法:

call_out(),remove_call_out(),call_out_info(),find_call_out()

2.可以调用其他对象实例中的方法,call_other()

3.变量和方法都可以加上不同的修饰词以区分不同的引用权限,如

private,nomask,public,protected,

4.MudOS应该有能力找出函数运行的错

误,catch(),throw()

5.可以查询调用某方法的对象实例,如

all_previous_object(),previous_object(),或者查询目前方法是如何被调用的,origin()

6.

支持物件内定义局部的命令动词。相关方法:add_action(),remove_action()/*add_action必须可以指定添加局部命令

动词的对象,remove_action也是如此,即add_action(object dest,"func_name","verb");*/。

7.LPC支持函数指针,能够将一个函数以指针的形式引用,执行。相关方法:

bind(),evaluate(),function_owner()

四.数据类型相关函数

1.字符串处理函数,如

lower_case(),upper_case(),explode(),implode(),strsrch(),strcmp(),sprintf(),sscanf(),strlen(),crypt(),capitalize(),replace_string(),…

2.数组处理函数,包括分配内存,过滤数组,数组排序,查找数组元素等如

allocate(),filter_array(),map_array(),sort_array(),member_array()

3.映射(mapping)处理函数,包括分配内存,过滤映射,提取关键字数组,提取值数组,删除映射的一个元素,查找映射中的路径如

allocate_mapping(),filter_mapping(),keys(),values(),map_delete(),match_mapping()

4.浮点类型和整数类型相关函数,如

sin(),cos(),pow(),to_int(),to_float(),random()

五.系统相关函数

系统相关函数要求能够查询和控制系统的各种运行状态和参数。

1.时间,得到各种格式的当前时间

和游戏运行时间等

time(),ctime(),localtime(),uptime()

2.内存管理,能够查询整个游戏或者某个物

件的内存占用情况,也能够手工的清除残留的对象,如

memory_info(),memory_summary(),reclaim_objects(),swap()

3.关闭游

戏,shutdown()

4.查询游戏启动的一些设置,get_config()

5.其他设置。

六.I/O相关函

包括文件读写,网络编程

1.文件相关函数,包括复制,移动,删除,建立目录,读写文件,获取目录信息,获取文件信息等等。

cp(),mv(),rm(),mkdir(),read_file(),write_file(),stat(),file_size(),get_dir(),rm

2.网络套接字相关函数

socket的一套东西,包括server和client

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值