北大侠客行MUD论坛's Archiver

rockbt 发表于 2009-12-27 02:12 PM

推荐linux/windows跨平台客户端kildclient,支持perl脚本,附大量机器人

网站:[url=http://kildclient.sourceforge.net/phpwebsite/index.php]http://kildclient.sourceforge.net/phpwebsite/index.php[/url]
文档:[url=http://kildclient.sourceforge.net/manual/index.html]http://kildclient.sourceforge.net/manual/index.html[/url]
very good

安装:
  ubuntu 中只要:
      apt-get install kildclient
  windows 版本:
      最近仔细看了看其网站,发现也有windows版本了。
      [url=http://kildclient.sourceforge.net/phpwebsite/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=2]下载页面[/url]
      注意要先装 [url=http://www.activestate.com/Products/ActivePerl/?mp=1]ActivePerl 5.10.0[/url],下载页中有

注意:
1、使用我的程序前必须改以下设置,否则基本上这些程序都会报错,因为默认的命令分割符不是分号[[color=Red];[/color]]。
方法:[color=Red]world->edit->input[/color],把Command separator改成:[[color=Red];[/color]],[color=Red]不要方括号的![/color]
2、默认的编码是utf-8,国内的游戏都是gb,改成gb18030就全部都支持了。
方法:[color=Red]world->edit->advanced[/color],改Charactor Set

回复中的机器人列表:
1. 打坐
2. 吐纳
3. 朱熹
4. 战斗辅助(武当)
5. HYD辅助
6. 遍历
7. 领悟
8. 学习
9. 练功
10. 走路
11. 慢速走路
12. 跳楼
13. 红豆机器人

[[i] 本帖最后由 rockbt 于 2010-4-25 08:18 PM 编辑 [/i]]

rockbt 发表于 2009-12-30 02:04 PM

一个在发呆室打坐的插件(perl)

package zuogong;
#: Version: 1.0
#: Description: A dazuo tuna Plugin
#: Author: Fu Huizhong

our $flag1=0;
our @args=(300,160);

sub set{
    if(@_ != 2){
        $::world->echo("Usage:mlearn::set(dazuo_N,tuna_N)\n");
        return;
    }
    @args=@_;
    $::world->echo("dazuo ".$_[0]);
    $::world->echo("tuna ".$_[1]);
    $::world->echo("\n");
}

sub lian{
    if($flag1==0){
        $::world->send("dazuo ".$args[0]);
        $flag1++;
    } else {
        $::world->send("tuna ".$args[1]);
        $flag1=0;
    }
}

sub start{
    $::world->trigger('你发呆了一会儿,发现自己居然精神百倍!','/$world->timer({interval=>1,count =>1,temporary=>1,action=>"/zuogong::lian"})',{name=>"zuogong:lian"});
    $::world->trigger("你.*,深深吸了口气,站了起来。","fadai",{name=>"zuogong:fd1"});
    $::world->trigger('你吐纳完毕,睁开双眼,站了起来。','fadai',{name=>"zuogong:fd2"});
    $::world->send("fadai");
}

sub stop{
    $::world->deltrigger('zuogong:fd1');
    $::world->deltrigger('zuogong:fd2');
    $::world->deltrigger('zuogong:lian');
}

sub UNLOAD{
    $::world->deltrigger('zuogong:fd1');
    $::world->deltrigger('zuogong:fd2');
    $::world->deltrigger('zuogong:lian');
}

sub help {
  $::world->echonl("Usage in fadai room:",
                   "1. /zuogong::set(dazuo_N,tuna_N)",
                   "2. /zuogong::start",
                   "3. /zuogong::stop");
}

rockbt 发表于 2009-12-30 02:05 PM

在发呆室练功的插件

package mlian;
#: Version: 1.0
#: Description: A multi skills practise Plugin
#: Author: Fu Huizhong

our $flag1=0;
our @skills=("dodge","cuff");
sub set{
    @skills=@_;
    $::world->echo("lian skills ");
    foreach $s (@_){
        $::world->echo($s.' ');
    }
    $::world->echo("\n");
}

sub mymotions{
    if( $flag1>=@skills ){
        $flag1=0;
    }
    my $skill = $skills[$flag1];
    $flag1++;
    $::world->send("lian $skill 20");
}
sub start{
    $::world->trigger("你反复练习.*,获得了不少进步!","fadai",{name=>"mlian:t1"});
    $::world->trigger('你发呆了一会儿,发现自己居然精神百倍!','/$world->timer({interval=>1,count =>1,temporary=>1,action=>"/mlian::mymotions"})',{name=>"mlian:t2"});
    $::world->trigger("你的内力不够练.*。","dazuo 300",{name=>"mlian:t3"});
    $::world->trigger("你.*,深深吸了口气,站了起来。","fadai",{name=>"mlian:t4"});
    $::world->send("fadai");
}

sub stop{
    my $i=4;
    while($i>=1){
        $::world->deltrigger('mlian:t'.$i);
        $i--;
    }
}

sub UNLOAD {
    my $i=4;
    while($i>=1){
        $::world->deltrigger('mlian:t'.$i);
        $i--;
    }
}

sub help {
  $::world->echonl("Usage in fadai room:",
                   "1. /mlian::set(skill_1,skill_2 ...)",
                   "2. /mlian::start",
                   "3. /mlian::stop");
}

leftie 发表于 2009-12-30 02:21 PM

......

rockbt 发表于 2010-1-2 02:29 PM

朱熹机器人

用于kildclient的perl版朱熹机器人。
通常五次以内就能得到正确答案。

ddid 发表于 2010-1-2 04:37 PM

虽然看的不是太懂,不过这个程序给了我一个启示。

sure的javascript版朱熹机器人一直有个不是很完美的地方(sure的朱熹机器人本身已经很完美了,但要是能再完美一点就好了……),就是第一次猜数的时候总是"guess 1234",曾经想改一下可以随机生成4位不重复数字,但发现实现起来比较麻烦,楼上这个倒是提供了一个比较简单的方法。

rockbt 发表于 2010-1-3 10:33 AM

[quote]原帖由 [i]ddid[/i] 于 2010-1-2 04:37 PM 发表 [url=http://pkuxkx.net/forum/redirect.php?goto=findpost&pid=115643&ptid=10723][img]http://pkuxkx.net/forum/images/common/back.gif[/img][/url]
虽然看的不是太懂,不过这个程序给了我一个启示。

sure的javascript版朱熹机器人一直有个不是很完美的地方(sure的朱熹机器人本身已经很完美了,但要是能再完美一点就好了……),就是第一次猜数的时候总是"guess ... [/quote]

开始是什么数字没什么关系的。

rockbt 发表于 2010-1-21 01:51 PM

发一个练功机器人

用法:载入插件后打:/lian6::help
[color=Red]后面有新的,效率更高,别用这个了。[/color]
文件:lian.pl
package lian6;
#: Version: 1.0
#: Description: A multi skills practise Plugin
#: Author: Fu Huizhong

BEGIN {
  $::world->requireplugin('hp1');
}

our $flag1=0;
our $skill="cuff";
our $times = 25;
our $sleepn = 0;
sub set{
    if(@_!=2){
        $::world->echo("Usage:/lian6::set(skill,times)\n");
        return;
    }
    $skill = $_[0];
    $times = $_[1];
    $::world->echo("lian skill $skill for $times");
    $::world->echo("\n");
}

sub mymotions{
    $::world->send("hp","lian $skill $times");
    $sleepn = 0;
}

sub mydazuo{
    my $dzn = $times*10;
    $::world->send("dazuo $dzn");
}

sub mysleep{
    $flag1=0;
    if($sleepn<3){
        $::world->send("sleep");
        $sleepn += 1;
    }else{
        mymotions;
    }
}

sub recover{
    if($::hp1::nl1>$times*20){
        $::world->send("exert recover");
    }else{
        mymotions;
    }
}

sub start{
    my $ret=$::world->triggerenabled('lian');
    if( defined($ret) ){
        $::world->deltrigger('lian');
    }
    ::hp1::start;
    $::world->trigger("你.*练习.*,获得了.*进步!","/lian6::recover",{name=>"lian"});
    $::world->trigger('你深深吸了几口气,脸色看起来好多了','/$world->timer({interval=>1,count =>1,temporary=>1,action=>"/lian6::mymotions"})',{name=>"lian"});
    $::world->trigger('你现在气力充沛。','/$world->timer({interval=>1,count =>1,temporary=>1,action=>"/lian6::mymotions"})',{name=>"lian"});
    $::world->trigger("你的内力不够练.*。","/lian6::mydazuo",{name=>"lian"});
    $::world->trigger("你.*,深深吸了口气,站了起来。",'/$world->timer({interval=>1,count =>1,temporary=>1,action=>"/lian6::mymotions"})',{name=>"lian"});
    $::world->trigger('你的内力不够。','/lian6::mydazuo',{name=>'lian'});
    $::world->trigger("你现在的气太少了,无法产生内息运行全身经脉。",'/lian6::mysleep',{name=>"lian"});
    $::world->trigger("你的体力太低了。",'/lian6::mysleep',{name=>"lian"});
    $::world->trigger("你的体力不够练.*",'/lian6::mysleep',{name=>"lian"});
    $::world->trigger("你的体力太差了,不能练.*。",'/lian6::mysleep',{name=>"lian"});
    $::world->trigger('你一觉醒来,精神抖擞地活动了几下手脚。','eat liang;drink jiudai;/lian6::mymotions',{name=>'lian'});
    $::world->trigger('你刚在三分钟内睡过一觉, 多睡对身体有害无益! ',
            '/$world->timer({interval=>24,count =>1,temporary=>1,action=>"/lian6::mymotions"})',{name=>'lian'});
    mymotions;
}

sub stop{
    $::world->deltrigger('lian');
}

sub UNLOAD {
    $::world->deltrigger('lian');
}

sub help {
  $::world->echonl("Usage in fadai room:",
                   "1. /lian6::set(skill,times)",
                   "2. /lian6::start",
                   "3. /lian6::stop");
}

[[i] 本帖最后由 rockbt 于 2010-3-1 10:09 AM 编辑 [/i]]

rockbt 发表于 2010-1-21 01:56 PM

获取体力、精力等信息的插件,上面的机器人要用的

文件名:hp.pl
package hp1;
#: Version: 1.0
#: Description: A Plugin for hp information
#: Author: Fu Huizhong
        
our $js1 = 100;
our $qx1 = 100;
our $jl1 = 100;
our $nl1 = 100;
our $js2 = 100;
our $qx2 = 100;
our $jl2 = 100;
our $nl2 = 100;
our $sw1 = 200;
our $sw2 = 200;
our $ys1 = 200;
our $ys2 = 200;

sub getvar{
    ${$_[0]} = $_[1];
}

sub show{
    $::world->echonl("精神 = $js1 / $js2",
                    "气血 = $qx1 / $qx2",
                    "精力 = $jl1 / $jl2",
                    "内力 = $nl1 / $nl2",
                    "食物 = $sw1 / $sw2",
                    "饮水 = $ys1 / $ys2");
}

sub start{
    my $ret=$::world->triggerenabled('hp');
    if( defined($ret) ){
        $::world->deltrigger('hp');
    }
   
    $::world->trigger("【 精神 】 ([0-9]+)[\/ ]+([0-9]+).*【 精力 】 ([0-9]+)[\/ ]+([0-9]+)",
            '/hp1::getvar("js1",$_[1]);/hp1::getvar("js2",$_[2]);/hp1::getvar("jl1",$_[3]);/hp1::getvar("jl2",$_[4])',{name=>"hp"});
    $::world->trigger("【 气血 】 ([0-9]+)[\/ ]+([0-9]+).*【 内力 】 ([0-9]+)[\/ ]+([0-9]+)",
            '/hp1::getvar("qx1", $_[1] );/hp1::getvar("qx2", $_[2] );/hp1::getvar("nl1",$_[3]);/hp1::getvar("nl2",$_[4])',{name=>"hp"});
    $::world->trigger("【 食物 】 ([0-9]+)[\/ ]+([0-9]+)",
            '/hp1::getvar("sw1",$_[1]);/hp1::getvar("sw2",$_[2])',{name=>"hp"});
    $::world->trigger("【 饮水 】 ([0-9]+)[\/ ]+([0-9]+)",
            '/hp1::getvar("ys1",$_[1]);/hp1::getvar("ys2",$_[2])',{name=>"hp"});
    $::world->send('hp');
}

sub stop {
    $::world->deltrigger('hp');
}

sub UNLOAD {
    $::world->deltrigger('hp');
}

lzkd 发表于 2010-1-21 01:58 PM

楼主比我执着。。。。

rockbt 发表于 2010-1-23 12:07 PM

[quote]原帖由 [i]lzkd[/i] 于 2010-1-21 01:58 PM 发表 [url=http://pkuxkx.net/forum/redirect.php?goto=findpost&pid=120308&ptid=10723][img]http://pkuxkx.net/forum/images/common/back.gif[/img][/url]
楼主比我执着。。。。 [/quote]

因为我感觉这个客户端用着很爽,很方便编机器人

rockbt 发表于 2010-3-1 10:08 AM

一个学习机器人

用法:
1./$world->loadplugin("/your path/hp.pl")
  这个是额外的支持插件
2./$world->loadplugin("/your path/mlearn.pl")
3./mlearn1::set('师傅','技能',次数,最小气血,'休息室路径','休息室路返回径')
  最小气血:气血低于这个数就去睡觉。
  路径的格式:和内置函数/path('路径')一样
4./mlearn1::start
5.学完后别忘了打/mlearn1::stop,删除trigger

lzkd 发表于 2010-3-1 10:20 AM

有点意思,友情帮顶一下.....
非linux用户飘过...

rockbt 发表于 2010-3-1 10:23 AM

新练功机器人

要在能睡觉的地方用
用法:
1、/$world->loadplugin(/your path/hp.pl)
  这个插件上面的帖子里有
2、/$world->loadplugin(/your path/lian.pl)
3、/lian6::set('武功',次数,最小内力)
  最小内力:一方面,当内力小于最小内力是就睡觉;另一方面,练习消耗内力的武功时,如果内力小于这个值就打坐。

rockbt 发表于 2010-3-1 10:27 AM

打坐机器人

1、在休息室用,要睡觉的。
2、需要前面帖子中的 hp.pl 插件支持。
3、载入插件后打
  /dz2::start

rockbt 发表于 2010-3-1 10:29 AM

吐纳机器人

1、在休息室用,要睡觉的。
2、需要前面帖子中的 hp.pl 插件支持。
3、载入插件后打
  /tuna6::start

rockbt 发表于 2010-3-1 10:46 AM

一个执行命令脚本的程序

命令脚本实例:
从ct到北京
文件名:beijing
enter shudong;say 天堂有路你不走呀
d;3
/::path("2{ne}u{sw}e{sd}2e3{ne}6n")

注意:
  上面调用path函数时前面要加两个冒号(::),调用/$world->some也要写成/$::world->some
  汉字编码不用改成gb码,用utf-8

各种用法(怎么载入就不说了):
  1、/run::load("文件的完整路径")
  2、预先先设置默认路径 /run::set("完整默认路径"),然后打 /run::load("文件名"),注:预设路径是$HOME/xkx/path
我自己的用法是设置一个alias:
  /$world->alias('^f (.*)$','/run::load("$1")')
用的时候打:f 文件名

purbam 发表于 2010-3-1 11:25 AM

我喜欢perl啊,平时工作用的最多的就是perl了,lua,js都不熟
可惜公司的unix/linux workstation都不能连外网ttk_33

zgbl 发表于 2010-3-1 12:56 PM

好东西ttk_00
已转至wiki
[url]http://pkuxkx.net/wiki/robot/down#kildclient[/url]

rockbt 发表于 2010-3-7 07:15 PM

[quote]原帖由 [i]zgbl[/i] 于 2010-3-1 12:56 PM 发表 [url=http://pkuxkx.net/forum/redirect.php?goto=findpost&pid=127658&ptid=10723][img]http://pkuxkx.net/forum/images/common/back.gif[/img][/url]
好东西ttk_00
已转至wiki
http://pkuxkx.net/wiki/robot/down#kildclient [/quote]

深受鼓舞!

页: [1] 2 3 4 5

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.