北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: jizong

关于地图函数的请教!

[复制链接]
 楼主| 发表于 2011-9-5 13:20:03 | 显示全部楼层
关于地图数据库的查询,是这样的:
%mapquery(%concat("Name LIKE '", 荆西镖局, "'"))

这样,就会返回荆西镖局的房间ID,当然,如果你搜索土路、青石大道,会返回很多的房间ID
用list的形式返回来的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 13:21:07 | 显示全部楼层
原帖由 buffet 于 2011-9-5 01:17 PM 发表
第一段是关于这个指令怎么用于数据库的查询。我还没接触过数据库,没有上下文,我不敢乱翻译。(不过,这个很有趣,有空我会研究研究)

第二段是说如果执行#FIND指令的时候没有加上任何参数(就是只有#FIND,而不 ...



感谢了,你的第二段解释,让我很清楚了这个命令了!谢谢你,希望你继续帮助我!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 13:22:01 | 显示全部楼层
原帖由 mygame 于 2011-9-5 01:18 PM 发表
好像很多人,都自己写定位方式,用#find好像很少
zmud很多时候没有能自动正确捕捉到room的信息,需要额外的tiger来捕捉


额,如果是这样,就比较麻烦了
如果在单一的房间,还比较好说,但是,如果在几个类似迷宫的房间,就很老火了
比如:中原的青石大道、嘉兴的驿道
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-5 16:04:31 | 显示全部楼层
房间名+房间描述+房间出口
这些在画地图的时候就要每个房间做好了 用来定位的
房间名相同就比对描述
描述相同就比对出口数量
出口数量相同 就随机走一步 在定位
就能定位成功了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 16:40:39 | 显示全部楼层
请教,如何对出口数量,进行比较?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 16:41:57 | 显示全部楼层
  1. Cmud/Zmud地图定位方法

  2. 不讲废话,直入正题:
  3. 唯一地名:
  4. pattern:^> (*) - $
  5. coder:
  6. 复制内容到剪贴板
  7. 代码:
  8. room=%1
  9. room=@room
  10. #teleport %mapquery([NAME]='@Room')
  11. #teleport %mapquery("[Name]= '"%replace(@room, "'", "~'~'")"' AND [ZoneID]="%roomzone())
  12. roomvum=%mapquery("[Name]= '"%replace(@room, "'", "~'~'")"' AND [ZoneID]="%roomzone())
  13. #if %numitems(@roomvum)=1 {roomflags=1;#teleport @roomvum}
  14. 重名地名:
  15.      如果像推车路线周围的地点,可以用小地图或地名描述把他写出来,如汉水下面的一个"大驿道"
  16. pattern:
  17. 复制内容到剪贴板
  18. 代码:
  19. 大驿道%s$%s|%s $%s大驿道%s$ %s|%s$%s青石大道
  20. coder:
  21. 复制内容到剪贴板
  22. 代码:
  23. teleport 2287
  24. roomflags=1
  25. 如果你很懒,写个函数随机走几步,找到唯一点的时候再走,可以用如下写法:
  26.      Pattern:
  27. 复制内容到剪贴板
  28. 代码:
  29. 这里*的出口是(*)。
  30. coder:
  31. 复制内容到剪贴板
  32. 代码:
  33. chukou=%replace(%replace(%1,"和","、"),"、","|");
  34. chukou2=""
  35. #if (%numitems(@chukou)>1) {
  36. #loop 1,%numitems(@chukou)
  37. {
  38. #additem chukou2 %trimleft(%trimright(%item(@chukou,%i)))
  39. }
  40. #delitem chukou2 @fanxiang(@nextstep)
  41. } { chukou2=@chukou }
  42. roomvum=%mapquery("[Name]= '"%replace(@room, "'", "~'~'")"' AND [ZoneID]="%roomzone())
  43. #if (%numitems(@roomvum)=1) {#teleport @roomvum;#wa 500;set action walk} {set action relocation}
  44. 需要注明的是fanxiang这个function是把走过的方向删除,这样一直走到底,不会来回重复走。   
  45. 用在推车这里的话,如果迷路了,就是沿着一个路径推到底,但这样效率较低,如果磨时间倒不错,看个人取舍。

  46. [ 本帖最后由 killunix 于 2010-6-24 10:20 AM 编辑 ]
复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-5 16:51:44 | 显示全部楼层
在ZMUD里要少用%replace 会出现过多乱码。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 18:50:50 | 显示全部楼层
chukou=%replace(%replace(%1,"和","、"),"、","|");
chukou2=""
#if (%numitems(@chukou)>1)
{
    #loop 1,%numitems(@chukou)
    {
        #additem chukou2 %trimleft(%trimright(%item(@chukou,%i)))
    }
    #delitem chukou2 @fanxiang(@nextstep)
} { chukou2=@chukou }

roomvum=%mapquery("[Name]= '"%replace(@room, "'", "~'~'")"' AND [ZoneID]="%roomzone())

#if (%numitems(@roomvum)=1) {#teleport @roomvum;#wa 500;set action walk} {set action relocation}
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 18:53:43 | 显示全部楼层
经过研究,要用到
#show %replace(%replace(%replace("north、west、south、east 和 southeast","和","、"),"、","|")," ")


这样,是列表
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-5 18:54:33 | 显示全部楼层
#show %numitems(%replace(%replace(%replace("north、west、south、east 和 southeast","和","、"),"、","|")," "))

返回,共有多少个出口
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 04:48 AM , Processed in 0.012105 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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