北大侠客行MUD论坛

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

最后一次提出解决zmud 721乱码问题

[复制链接]
发表于 2010-1-19 01:30:06 | 显示全部楼层 |阅读模式
以后再也不提了,天天看你们说乱码头大,拿推车举个例子:

你需要把镖车运给王武通的伙计(%x),他会在王府井大街接应你!
huoji=%1

^    ~「店铺伙计~」(%x)~(*~)
#if %ismember(%1,@huoji) {该干嘛干嘛}
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-1-12 09:19:21 | 显示全部楼层
回复 1# oolong


    如果这个要匹配的变量在一行的开头怎么办,

比如说

“左全死了”

如果@shashou_id=左全

那么#tri {^??(@shashou_id死了}和{^(@shashou_id)死了}

输入"#show 左全死了"

都可以触发。

#tri {^??(%x)死了}和{^(%x)死了}

#show %1

一个显示%1是"全"一个是"左全"

那么类似"左全死了"这样的,要做触发的话,pattern要怎么写?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-12 16:15:29 | 显示全部楼层
zmud721用@shashou_id死了触发是不行的。
那么解决办法有几个,先介绍一个:
已知杀手名字,比如“坎坷”

你可以用正则触发如下:
#REGEX "npc_die" {[>]*[\s]*(\S+)死了} {#sh %1;#if %ismember(%1,“坎坷”) {kill @id}}
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-12 16:24:06 | 显示全部楼层
方法二、主要针对喜欢用@shashou_id死了触发的主

做一个alias (vbs的),set_trigger
Dim RetString,Mchar,Mchar_array
Mchar=getvar("job_npc_name","").value
Mchar_array=Split(Mchar, "|", -1, 1)
ProcessCommand "#REGEX "&%1&" {[>]*[\s]*"&Mchar_array(0)&"死了。$} {"&%2&"} "&%3
你一定要定义了一个job_npc_name,比如job_npc_name=左权

得到以后输入set_trigger "npc_die" "get all from corpse;#sh xxxx" "xiaofeng|kill_npc"

你就能在xiaofeng class下面kill_npc class下面找到这个触发,npc_die是自定义的trigger id
这个方法适用BT玩家就是要用@name死了来触发的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-1-13 22:08:58 | 显示全部楼层
谢谢oolong和静电的热心指点,还是学学正则好了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-1-14 14:29:12 | 显示全部楼层
回复 1# oolong


    谢谢你oolong,你的帖子对我这样的新人很有用,那么我想再多问一个问题,房间的描述我可以拿到,但是因为是逐行取的,然后#add到一个变量,这和地图数据库中的描述很多时候差异比较大,你是如何处理的呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-14 20:51:22 | 显示全部楼层
本帖最后由 oolong 于 2014-1-14 08:53 PM 编辑

我理解的是描述不变,但是add变量出现乱码,是这个意思么?
解决办法有几个,最简单的如下。
#tr (%x)
#noop %arrset(roomdesc,n)
n可以是0-1000
那么你最后会得到一个数组 roomdesc
@roomdesc.0 @roomdesc.1 @roomdesc.2 ...
就是么每一行的描述,你可以用来%mapquery
当然你也可以将所有描述整到一个数组数值里面,举例
aa=坎坷;bb=慷慨;#var info %array();#noop %arrset(info,2,@aa@bb)
你会发现 @info.2 就是"坎坷慷慨"
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-14 20:52:53 | 显示全部楼层
本帖最后由 oolong 于 2014-1-14 08:59 PM 编辑

用这个方法要注意,地图里面两行描述之间是否有空格,如果有你也要加上空格,不然不好匹配吧
我基本就是将所有个人信息,臂力师傅气血全部设置到一个数组里面,直接@info.1 @info.2,简单整洁。
为了省事我触发写的更简单

【 精神 】 3751  / 3751   [100%]  【 精力 】 4375  / 4375  (+   0)

#tr 【 精神 】%s(%d)
#noop %arrset(info,1)

可以写成
#tr 【 精神 】%s(&info.1)

触发都不要写了,非常简洁,强力推荐啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-1-15 09:23:26 | 显示全部楼层
回复 9# oolong


    多谢前辈,受益匪浅
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-16 14:02:11 | 显示全部楼层
前辈太不敢当了
一起讨论而已
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 07:31 AM , Processed in 0.011412 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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