mushclient入门教程
最近在mud里面很多玩家问及mushclient的问题,特针对性的回答一些。Q1.如何使得mushclient保留上一次输入的命令?用esc删除命令?[跟zmud一样]
A:右键->world configration(或者art+enter键启动)
1.command->auto-repeat command(勾上)[如果是穿梭,把ignore echo off message也勾上]
2.command->keyboard preferences->deleting->把"escape deletes *"和"save delete command"都勾上,把arrow keys的四个都勾上。
Q2.如何改变字体?
A:右键->world configration(或者art+enter键启动)->output->font Q3.如何启动脚本功能?
A:shift+ctrl+6->scripting->选择jscript->Enable(勾上)->确定。(跟后面的一些讲座有关) Q4.如何设置各种路径?例如从ct到泰山?
A:使用alias功能+speedwork高哦能
1.启用speedwalk:
world configration->command->enable speekwalking(勾上)->后面的符号是#号,你可以可以改成!啊,.啊随便你。把delay改成50。
2.建立alias
shift+ctrl+9->add->在alias出输入:taishan->在send里面输入:6e (ne) n n 3(nu) (eu) 7(nu) ->把下面send的下拉框中的world改成speedwalk.
输入taishan就可以去泰山了。这个集成的功能core以前发过帖子的,在mush下载区自带这个插件。 Q5.如何做一个抓取聊天的trigger?类似于zmud的#CAP。
A:shift+ctrl+8(启动trigger)->add->trigger中输入:*【闲聊】*->send里面写:world.AppendToNotepad("chat", "%0\\r\\n"); send中的world改成script。 先占个位子,以后慢慢加 非常感谢无欢大师,受益匪浅啊!
再问个有难度点问题,怎么实现#wa 1000这样的功能,
谢谢!
利用mushclient的DoAfter和mud的tell指令实现延时功能 by boost@pkuxkx
利用mushclient的DoAfter和mud的tell指令实现延时功能不懂lua,所以只好自己想法写个延时功能
说明一下,这个功能并不是为了实现在一串指令中插入n个延时,而是实现在服务器端的真正延时,主要思想是延时之前tell 自己一个特定字符串,收到tell的消息后开始延时,延时结束再tell自己一个特定字符串,然后开始延时后的工作,这样能确保lag的时候延时是正常的
如果想在一串指令中插入n个延时,需要自己实现speedwalk,mushclient自带的不好用
首先要求在game中保存一个变量myid,代表自己的id
以下是trigger部分,用于捕捉tell消息
<triggers>
<trigger
enabled="y"
keep_evaluating="y"
match="^(?:> )?([^\(]+)\(([^\)]+)\)告诉你:(.*)$"
regexp="y"
send_to="12"
sequence="1"
>
<send>chatLog("%1","%2","%3")</send>
</trigger>
</triggers>
可以匹配如下模式
> 中文名(id)告诉你:消息内容
例如
> 双核(doublecore)告诉你:test
脚本部分
var robot_chat_prefix = world.CreateGUID();//每次加载脚本生成一个guid,作为消息头,防止误触发
robot_chat_prefix = robot_chat_prefix.replace(/\-/g,"");
robot_chat_prefix = robot_chat_prefix.substr(0,23);
function chatLog(cname,ename,msg)
{
if(ename == GetPluginVariable("","myid")) //判断是否为自己tell自己
{
if(msg.substr(0,23) == robot_chat_prefix) //判断消息头是否为guid,只有以guid开头的消息才会触发相应的函数
{ //函数名为robot_+消息名,自己实现,通过fire_robot发出
return do_robot_action(msg.substr(23));
}
//其它判断
}
}
function do_robot_action(msg)
{
return eval("robot_"+msg)(); //由于做了guid保护,因此该函数一定存在
}
function fire_robot(msg)
{
send("tell "+GetPluginVariable("","myid")+ " "+robot_chat_prefix+msg);//添加GUID消息头
}
function fire_robot_after(time,msg)
{
DoAfter(time,"tell "+GetPluginVariable("","myid")+ " "+robot_chat_prefix+msg); //同上,增加延时
}
这些函数只能提供给脚本内部使用,不能插入命令行中,例如要暂停5秒后调用函数robot_other_thing()
可以这么写 fire_robot_after(5,"other_thing");
如果这么写DoAfterSpecial(5,"robot_other_thing()",12)也能延时,但是只是客户端延时
稍微扩充一下可以写出任意条件延时,当然这个任意条件需要自己实现
下面举例说明,例如在快速行走中会遇到挡路npc,当然是自己实现的快速行走,mush自带的不是很好用
假设快速行走路径为 n, kill liu mang, e
这里的任意条件为 “liu mang被杀死”
可以这么写
send("n");
fire_robot("check_kill_start");
上面这一行会触发函数robot_check_kill_start()
function robot_check_kill_start()
{
EnableTrigger("check_kill_trigger",1); //打开检查是否有叫杀的trigger,叫杀时将某个变量赋值
kill_flag = false; //假设该变量为kill_flag,注意设成全局,初始设成false,有叫杀后在叫杀trigger中设为true
send("kill liu mang"); //想办法获取到要杀的对象-liu mang,或者指令-kill liu mang
fire_robot("check_kill_stop"); //立即触发函数robot_check_kill_stop()
}
function robot_check_kill_stop()
{
EnableTrigger("check_kill_trigger",0); //关闭检查是否有叫杀的trigger
if(kill_flag) //有叫杀,表示该npc没有被杀死,2s后继续杀
{
fire_robot_after(2,"check_kill_start"); //2s后重新检查
}
else
{
//该npc已被杀死,可以继续行走
}
}
欢迎交流:) 双核的办法有点复杂,而我呢,通常是这样的(比较傻一点)
假设我的speed walk的字符是!,我的delay是50ms,那么我想延迟3秒,怎么办呢
例如cross river之后有可能有3秒的延迟:!9n (cross river) 60() 3n,这里输入60个空白,能实现但是有点不爽。
在trigger中通常用DoAfter来实现。 哇,五体投地! Mush Client入门教程
http://bbs.mudbuilder.com/read.php?tid=1654
MUSHclient爱好者网站
http://mc.chinaido.com/index.php
多向我们的whuan大佬请教,呵呵