babybak.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 530 行 · 第 1/2 页
C
530 行
// baby.c
inherit NPC;
void try_move();
void create()
{
set_name("宝宝", ({"xiao baobao","baby"}) );
if (random(10)>5)
{
set("gender", "女性");
}
else {
set("gender", "男性");
}
set("age", 1);
set_temp("no_kill",1);
set("attitude", "friendly");
set("long","乖宝宝。你可以用nie,shua命令来和他玩\n");
set("combat_exp", 1);
set("str",3);
set("parents",({"dad","mom"}));
/* set("chat_chance", 2);
set("chat_msg", ({
(: random_move :)
}));*/
set("is_baby",1);
// to allow the identification of baby. by mon.
setup();
carry_object(__DIR__"candy");
carry_object(__DIR__"candy2");
carry_object(__DIR__"candy3");
}
void init()
{
add_action("do_kill",({"kill","fight","hit","steal"}));
add_action ("do_setid", "setid");
add_action ("do_setname", "setname");
add_action ("do_nie", "nie");
add_action ("do_shua", "shua");
add_action("do_get","get");
add_action("do_drop","drop");
/* follow is very costly to execute. 5/6/98 mon.
if(member_array(this_player()->query("id"),
this_object()->query("parents"))>-1)
{
this_object()->set_leader(this_player());
}
*/
// remove_call_out("try_move");
// call_out("try_move",1);
}
/*void try_move()
{
if(random(20)==0)
{
remove_call_out("random_move");
call_out("random_move",5);
}
}*/
int do_drop(string arg)
{
object me=this_object(),who=this_player(),env;
if(!arg) return 0;
env = environment(who);
if(present(arg,who)!=me) return 0;
if(me->move(env))
{
message_vision("$N把$n从怀里放了下来。\n",who,me);
return 1;
}
return 0;
}
int do_get(string arg)
{
object me=this_object(),who=this_player(),env;
if(!arg) return 0;
env = environment(who);
if(present(arg,env)!=me) return 0;
if(member_array(who->query("id"),
me->query("parents"))>-1)
{
if(me->move(who))
{
message_vision("$N弯下腰把$n抱了起来,搂在怀里。\n",who,me);
}
else
{
message_vision("$N弯下腰一抱却没把$n抱起来,小家伙好沉哪!\n",who,me);
}
}
else
{
message_vision("$N蹲下身朝$n伸开双手,$n却一下子闪开了...\n",who,me);
}
return 1;
}
int do_kill(string arg)
{
object me,who;
string name,verb,what,obj;
if (!arg) return 0;
verb=query_verb();
me=this_player();
if(verb=="steal")
{
if(sscanf(arg, "%s from %s", what, obj)!=2 )
return 0;
}
else obj=arg;
if(!objectp(who=present(obj,environment(me)))
|| !living(who)) return 0;
// if(who->query("is_baby")) {
if(who==this_object())
{
switch(verb)
{
case "kill":
// command("chat* "+
tell_object(environment(this_object()),
who->query("name")+"拼命地哭了起来:爹~~,娘~~,"+
me->query("name")+"要杀我...快回来呀!\n");
break;
case "hit":
// command("chat* "+
tell_object(environment(this_object()),
who->query("name")+"大哭了起来:爹~~,娘~~,"+
me->query("name")+"欺负我...快回来呀!\n");
break;
case "fight":
// command("chat* "+
tell_object(environment(this_object()),
who->query("name")+"哭了起来:爹~~,娘~~,"+
me->query("name")+"要抢我的糖吃...快回来呀!\n");
break;
case "steal":
// command("chat* "+
tell_object(environment(this_object()),
who->query("name")+"哭了起来:爹~~,娘~~,"+
me->query("name")+"要偷吃我的糖!\n");
break;
case "beg":
// command("chat* "+
tell_object(environment(this_object()),
who->query("name")+"小嘴一歪哭了起来:爹~~,娘~~,"+
me->query("name")+"要骗我的糖吃!\n");
break;
}
}
command(verb);
return 0;
}
void relay_emote(object ob, string verb)
{
if( !userp(ob) ) return;
switch(verb)
{
case "kick":
command("say 爹~~,娘~~," + ob->query("name") + "踢我耶!");
command("kick " + ob->query("id"));
break;
case "slap":
command("say 爹~~,娘~~," + ob->query("name") +
"打我耶,好痛啊~~~~");
command("slap " + ob->query("id"));
break;
case "hit":
command("pain " + ob->query("id"));
break;
case "bite":
command("face " + ob->query("id"));
break;
case "papaya":
command("angry");
break;
}
}
void relay_whisper(object me, string msg)
{
if (member_array(me->query("id"),query("parents"))==-1)
{
message_vision((string)this_object()->query("name")
+ "疑惑地看着$N。\n", me);
return;
}
//note, do not allow the order contain "chat", "tell"...
//may need disable more later...
if( strsrch(msg, "chat") != -1 ||
strsrch(msg, "tell") != -1 ||
strsrch(msg, "follow") != -1 ||
strsrch(msg, "apprentice") != -1 ||
strsrch(msg, "recruit") != -1 )
return;
if (msg)
{
remove_call_out ("relaying");
call_out ("relaying", 1+random(3), msg);
}
}
void relaying (string msg)
{
//execute the order.
command (msg);
}
int do_setid (string arg)
{
object me = this_player();
string name = this_object()->query("name");
if (!wizardp(me))
return 0;
this_object()->set_name(name, ({ arg }) );
return 1;
}
int do_setname (string arg)
{
object me = this_player();
if (!wizardp(me))
return 0;
this_object()->set("name",arg);
this_object()->set("long","一"+this_object()->query("unit")+arg+"。\n");
return 1;
}
int do_setunit (string arg)
{
object me = this_player();
if (!wizardp(me))
return 0;
this_object()->set("unit",arg);
this_object()->set("long","一"+arg+this_object()->query("name")+"。\n");
return 1;
}
string rdm(string *strs)
{
return strs[random(sizeof(strs))];
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?