ronglu.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 204 行

C
204
字号
//Cracked by Roath// ronglu.c 熔炉// by zhangchi#include <ansi.h>inherit ITEM;int check_busy(object me);#define OBJ_PATH "/d/kunlun/obj"void create(){        set_name(HIR"熔炉"NOR, ({ "rong lu", "lu" }) );        set_weight(9000);        if( clonep() )                set_default_object(__FILE__);        else {                set("long", "这是座大熔炉,里面烈火燃烧,是用来打造火枪的。\n");                set("unit", "座");		set("value", 1);		set("no_get", 1);        }}void init(){	add_action("do_fang","fang");	add_action("do_fang","put");}int do_fang(string arg){        object me, ob, jingtie;        string item, target;         me = this_player();        ob = this_object();                if( me->is_busy() || me->query_temp("pending/job_busy") )                return notify_fail("你正忙着呢。\n");        if (!arg || sscanf(arg, "%s in %s", item, target) != 2 )            return notify_fail("你要将什么东西放进哪里?\n");	if (item != "精铁" || target != "熔炉")		return notify_fail("你要将什么东西放进哪里?\n");	if ( !jingtie=present("jing tie",me) )		return notify_fail("你身上并没有精铁。\n");	if (query_temp("in_use"))		return notify_fail("这个火炉已经有人在用了!\n");	message_vision("$N把一"+jingtie->query("unit")+jingtie->query("name")+"放进熔炉。\n",me);	destruct(jingtie);	message_vision(HIR"$N放进燃料,拉起风箱,顷刻间就生起一炉熊熊大火!\n"NOR,me);		set_temp("in_use",1);	me->set_temp("pending/job_busy",1);	me->set_temp("gun_making",1);	remove_call_out("burning");	call_out("burning",10+random(5),me,0);	me->start_busy((: check_busy :));	return 1;}void burning(object me, int stage){	string *burning_msg=({		HIC"炉火由红慢慢变青。\n"NOR,		HIW"炉火由青渐渐转白。\n"NOR,		HIW"精铁"+HIR"已经开始溶化了。\n"NOR,		HIW"精铁"+HIR"已经全部溶化了,可以倒进模子了。\n"NOR,	});	message_vision(burning_msg[stage],me);		if (stage != 3)	{		remove_call_out("burning");		call_out("burning",10+random(5),me,++stage);	}	else	{		add_action("do_pour","dao");		add_action("do_pour","pour");		me->delete_temp("pending/job_busy");		me->set_temp("pouring",1);	}}int do_pour(string arg){		string item, target;	int busy_time=0;	object me=this_player();        if( me->is_busy() || me->query_temp("pending/job_busy") )                return notify_fail("你正忙着呢。\n");        if (!arg || sscanf(arg, "%s in %s", item, target) != 2 )            return notify_fail("你要将什么东西倒进哪里?\n");	if (item != "铁水" || target != "火枪模子")		return notify_fail("你要将什么东西放进哪里?\n");	if (!present("huoqiang muzi",environment(this_object())) )		return notify_fail("这里没有火枪模子。\n");	if ( !me->query_temp("pouring") )		return notify_fail("好象还没轮到你吧。\n");	if (me->query("neili") < 50 || me->query("jingli") < 50)		return notify_fail(RED"你已经精疲力竭了!\n"NOR);	message_vision("$N用土勺把溶化的铁水小心翼翼的从炉子里盛出来,慢慢的倒进火枪模子里。\n",me);	if (random(10) > 3)	{		message_vision("糟糕!$N一不小心,几滴铁水溅到了脚上,痛得$N哇哇大叫!\n",me);		me->receive_wound("qi",100);		busy_time=3;	}	me->add("jingli",-100);	me->add("neili",-100);	busy_time=busy_time+1;	me->start_busy(busy_time);	remove_action("do_pour","pour");	remove_action("do_pour","dao");	add_action("add_xiaohuang","add");	return 1;}int add_xiaohuang(string arg){		string item, target;	object xiaohuang;	object me=this_player();        if( me->is_busy() || me->query_temp("pending/job_busy") )                return notify_fail("你正忙着呢。\n");        if (!arg || sscanf(arg, "%s in %s", item, target) != 2 )            return notify_fail("你要将什么东西放进哪里?\n");	if (item != "硝磺" || target != "火枪模子")		return notify_fail("你要将什么东西放进哪里?\n");	if (!(xiaohuang=present("xiaohuang shi",me)) )		return notify_fail("你身上并没有硝磺石。\n");	if (!present("huoqiang muzi",environment(this_object())) )		return notify_fail("这里没有火枪模子。\n");	if ( !me->query_temp("pouring") )		return notify_fail("好象还没轮到你吧。\n");	if (me->query("neili") < 50 || me->query("jingli") < 50)		return notify_fail(RED"你已经精疲力竭了!\n"NOR);	message_vision("$N往火枪模子里添了一些硝磺。\n",me);	destruct(xiaohuang);	me->add("neili",-50);	me->start_busy(1);	remove_action("add_xiaohuang","add");	remove_call_out("job_done");	call_out("job_done",5+random(10),me);	return 1;}void job_done(object me){	object huoqiang;	message_vision("$N揭开模子,看来铁水已经凝固。$N浇上一盆冷水,"+			"只听哧哧声响,一阵刺鼻的浓烟过后,火枪已经制成。\n",me);	huoqiang=new(OBJ_PATH"/huoqiang");	huoqiang->move(me);	remove_action("add_xiaohuang","add");	delete_temp("in_use");	me->delete_temp("gun_making");	me->start_busy(3);}int check_busy(object me){	if (me->query_temp("pending/job_busy"))		return 1;	return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?