北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 7001|回复: 8

【不耻上问】之三:敲门、等待、走路busy等等怎么处理

[复制链接]
发表于 2010-7-19 20:43:48 | 显示全部楼层 |阅读模式
我现在的处理办法是:
#wa @wait_time
#sl .xxxx
正常wait_time=0,遇到特殊情况wait_time=xxxx,随后复位为0

有什么更好的处理办法么?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-19 21:06:41 | 显示全部楼层
同之一的处理方法?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-19 21:09:08 | 显示全部楼层
原帖由 stevenson 于 2010-7-19 09:06 PM 发表
同之一的处理方法?


有时候不行啊,比如杀手帮石阶,这样触发要写很多,敲个门有很多情况...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-19 21:27:07 | 显示全部楼层
一个大地图的遍历,分为几个stage,用一个list保存不同stage的开头(或者末尾)需要的wa数,然后用一个alias驱动整个遍历过程。具体请自己思考。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-19 21:30:56 | 显示全部楼层
我是用map遍历的,让map算出所有路径然后#slow模式走路,遇到拦路的就打死,重新定位走路(此时已走路径被删除了)。
所以不需要存alias,也不需要#wait,除非必须停留的地方

原帖由 bluse 于 2010-7-19 09:27 PM 发表
一个大地图的遍历,分为几个stage,用一个list保存不同stage的开头(或者末尾)需要的wa数,然后用一个alias驱动整个遍历过程。具体请自己思考。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-20 10:00:22 | 显示全部楼层
我是手动的,所以也不存在上述情况。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-20 22:28:07 | 显示全部楼层
原帖由 oolong 于 2010-7-19 09:30 PM 发表
我是用map遍历的,让map算出所有路径然后#slow模式走路,遇到拦路的就打死,重新定位走路(此时已走路径被删除了)。
所以不需要存alias,也不需要#wait,除非必须停留的地方

重新定位#sl就行了啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-3-8 11:31:44 | 显示全部楼层
请教oolong,画出区域地图后,怎么样生成遍历路径呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-3-8 19:26:21 | 显示全部楼层
详细见sg的cmud精华介绍。
主要流程:
1,首先要得到一个目标房间列表,比如“青石大道” job_room_list="100|101|102"
2,遍历范围,比如“周围三格” job_range="3"
然后计算,详见sg文章吧。主要code举例如下:
#CALL @rs.Close
#var rs ""
#VAR rs %comcreate( "ADODB.Recordset")
$connStr=""
$sql=""
$ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Mymud\Mymud.mdb"
$loopnum=""
#loop 1,$job_range {
$loopnum=1
#loop 1,%numitems($job_search_list) {
$Sql=%concat("SELECT ToID from ExitTbl where FromID = ",%item($job_search_list,$loopnum))
#CALL @rs.Open($Sql,$ConnStr)
#CALL @RS.MoveFirst
#WHILE (not @RS.eof) {
#if (%roomcost(@rs.fields(0).value)<10000 and %null(%pathfrom(%item($job_search_list,$loopnum),@rs.fields(0).value))=0) {
#additem $job_search_list @rs.fields(0).value}
#CALL @RS.MoveNext
}
$loopnum=$loopnum+1
#CALL @RS.close
}
}
$ConnStr=""
#var rs ""
$Sql=""
$job_search_list=%sort($job_search_list)
#var job.search_list $job_search_list
不过这个查询出来是广度优先,自己做优化吧。这个code只是cmud部分code,自己要修改的。。。

有了房间列表知道怎么遍历了?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 07:51 AM , Processed in 0.009567 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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