找回密码
 注册
搜索
查看: 4115|回复: 5

这个ask如何?

[复制链接]
门派:不明
发表于 2010-2-2 18:33:20 | 显示全部楼层 |阅读模式
#include <ansi.h>
string query_inquiry(object ob);
inherit F_CLEAN_UP;

string *msg_dunno = ({
        "$n摇摇头,说道:没听说过。\n",
        "$n疑惑地看着$N,摇了摇头。\n",
        "$n睁大眼睛望着$N,显然不知道$P在说什么。\n",
        "$n耸了耸肩,很抱歉地说:无可奉告。\n",
        "$n说道:嗯....这我可不清楚,你最好问问别人吧。\n",
        "$n想了一会儿,说道:对不起,你问的事我实在没有印象。\n",
});

int main(object me, string arg)
{
        string dest, topic, msg;
        object ob;
        mapping inquiry;
        string str;


        seteuid(getuid());
                        str=read_file("/log/NEWS");

        if( me->is_busy() )
                return notify_fail("您先歇口气再说话吧。\n");

        if( !arg || sscanf(arg, "%s about %s", dest, topic)!=2 )
                return notify_fail("你要问谁什么事?\n");

        if( !objectp(ob = present(dest, environment(me))) )
                return notify_fail("这里没有这个人。\n");

        if( !ob->is_character() ) {
                message_vision("$N对着$n自言自语....\n", me, ob);
                return 1;
        }

        if( !ob->query("can_speak") ) {
//增加ask内容颜色醒目reikou 20071015
                message_vision("$N向$n打听有关『" + HIG +topic + NOR + "』的消息,但是$p显然听不懂人话。\n", me, ob);
                return 1;
        }

        if( !INQUIRY_D->parse_inquiry(me, ob, topic) )
                message_vision("$N向$n打听有关『" + HIG +topic + NOR + "』的消息。\n", me, ob);

        if( userp(ob) ) return 1;
        if( !living(ob) ) {
                message_vision("但是很显然的,$n现在的状况没有办法给$N任何答覆。\n",
                        me, ob);
                return 1;
        }
        if(msg = ob->accept_ask(me, topic))
           {
                  if (stringp(msg))
                  {
                          message_vision(CYN "$N" CYN "说道:" + msg + "\n" NOR, ob);
                          return 1;
                  }
          }

        if( msg = ob->query("inquiry/" + topic) ) {
                if( stringp(msg) ) {
                        message_vision( CYN "$N说道:" + msg + "\n" NOR, ob);
                        return 1;
                }
        } else {
                if(ob->query("race")=="野兽") {
                        message_vision("但是很可惜,$N不会说话。\n", ob);
                        return 1;
                }
                switch(topic) {
                        case "name":
                        message_vision( CYN "$N说道:我的名字就是$N," + RANK_D->query_respect(me)+ "有什么事?\n" NOR, ob);
                                break;
                        case "here":
                                message_vision(CYN "$n对$N说道:这里是" + environment(ob)->query("short") + ",其它情况" + RANK_D->query_self(ob) + "也不太清楚。\n" NOR, me, ob);
                                break;
                        default:
                if(topic=="news")
                        {
                        if (!str)
                        {
                        message_vision( CYN "$N对你说到,最近没什么新闻可说.." NOR, ob);
                        }
else {
                        message_vision( CYN "$N对你说到,最近听有人说过:"+str+"" NOR, ob);
}
                        return 1;
                }      
                if(topic=="all")
                        {
                        message_vision( CYN "$N对你悄声说道:"+query_inquiry(ob)+"!\n" NOR, ob);
                        return 1;
                }
                                if (topic == ob->query("name") || ob->id(topic))
                                message_vision(CYN "$n说道:那就是" + RANK_D->query_self_rude(ob) + "呀。\n" NOR, me, ob);
                                else if (topic == me->query("name") || me->id(topic))
                                message_vision(CYN "$n说道:那就是" + RANK_D->query_rude(me) + "你呀。\n" NOR, me, ob);
                                else if (topic == ob->query("name") || ob->id(topic))
                                EMOTE_D->do_emote(ob, "name1");
else
                                        message_vision(msg_dunno[random(sizeof(msg_dunno))], me, ob);
                }
        }
        return 1;
}

string query_inquiry(object ob)
{
        int i=0;
        mapping inq;
        string str="", *indexs;
        
        if(mapp(inq=ob->query("inquiry")))
                {
                indexs=keys(inq);
                for(i=0;i<sizeof(indexs);i++)
                        {
                                str=indexs+" "+str;
                                }
                str="有关于 "HIB+str+NOR CYN"的事情,我很高兴告诉你!";
                return str;
                }
        return "实在是对不起,我什么也不知道呀!";
        }

int help(object me)
{
   write( @HELP
指令格式: ask <someone> about <something>

这个指令在解谜时很重要, 通常必须藉由此一指令才能
获得进一步的资讯。
预设的询问主题:
        here
        name
        news
        all
HELP
   );
   return 1;
}
门派:不明
 楼主| 发表于 2010-2-2 18:36:04 | 显示全部楼层
这样是不是能更好的与NPC沟通???
这样是不是能更好的与NPC沟通???
门派:不明
发表于 2010-2-13 08:33:34 | 显示全部楼层
还行吧。。。我支持。。。请有关方面尽快落实。。。
门派:不明
发表于 2010-2-13 13:40:09 | 显示全部楼层
还可以加一个,把论坛id的一些公众可见信息,提供出来。
比如:
ask xxx about eason
你向xxx打听eason的情况。
xxx回答:他是管理员的宝宝你不知道么?
门派:不明
 楼主| 发表于 2010-2-18 16:23:22 | 显示全部楼层
半个月过去了,master估计连看都没有看过。非常打击积极性吖。

[ 本帖最后由 oahz@ts 于 2010-2-18 16:28 编辑 ]
门派:不明
发表于 2010-4-23 07:10:21 | 显示全部楼层
强烈建议用这个ask,能给新玩家提供点便利嘛!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2024-5-17 17:43 , Processed in 0.048375 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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