leitai.c

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

C
451
字号
// Room: /city/leitai.c
// Date: Feb.27 1998 by Java
#include <ansi.h>
inherit ROOM;
string look_shelf();
string do_quit(string arg);
string look_gaoshi();
string look_pai();
string clear_title(string arg);
void add_title(object me,string arg);
void create()
{
	set("short", "擂台");
	set("long", @LONG
这是一个四丈见方的擂台。粗壮结实的木柱撑起一片平台,四角的支柱上
高挂着四副对联,四面的观众都能清楚地看到台上的手起脚落。擂台角上有个
兵器架(shelf) ,刀剑鞭棒样样俱全。主持人请看公吿版(pai)
LONG );
        set("outdoors", "city");
	set("item_desc", ([
		"shelf" : (: look_shelf :),
"pai"    : (: look_pai :),
	]));

	set("exits", ([
		"up"        : __DIR__"wudao",
		"eastdown"  : __DIR__"wudao1",
		"westdown"  : __DIR__"wudao2",
		"southdown" : __DIR__"wudao3",
		"northdown" : __DIR__"wudao4",
	]));
	set("objects", ([
                __DIR__"npc/referee": 1,
//                "/u/zmud/gongping": 1,
	]));
        set("no_npc",1);
	set("no_clean_up", 0);
	set("no_openshelf", 1);
	setup();
}
string look_pai()
{
	return 
"\n
"HIR"start                  "HIY"----  擂台上之玩家开始比武。
"HIR"allow    <player id>   "HIY"----  设定允许上擂台之玩家。
"HIR"deny     <player id>   "HIY"----  取消玩家上台资格。
"HIR"load     <player id>   "HIY"----  拉玩家上擂台。
"HIR"kick     <player id>   "HIY"----  踢玩家下擂台。
"HIR"heal     <player id>   "HIY"----  给擂台上玩家九花玉露丸。
"HIR"life     <player id>   "HIY"----  送被杀玩家上天堂恢复。

"HIG"titles  <player id> 01 "HIY"----  赠玩家幼年天下第一 (15以下)。
"HIG"titles  <player id> 02 "HIY"----  赠玩家幼年天下第二 (15以下)。
"HIG"titles  <player id> 11 "HIY"----  赠玩家少年天下第一 (20以下)。
"HIG"titles  <player id> 12 "HIY"----  赠玩家少年天下第二 (20以下)。
"HIG"titles  <player id> 21 "HIY"----  赠玩家天下第一侠少 (30以下)。
"HIG"titles  <player id> 22 "HIY"----  赠玩家天下第二侠少 (30以下)。
"HIG"titles  <player id> 31 "HIY"----  赠玩家天下第一侠客 (40以下)。
"HIG"titles  <player id> 32 "HIY"----  赠玩家天下第二侠客 (40以下)。
"HIG"titles  <player id> 41 "HIY"----  赠玩家天下第一大侠 (40以上)。
"HIG"titles  <player id> 42 "HIY"----  赠玩家天下第二大侠 (40以上)。

\n"NOR;
}
string look_shelf()
{
	return 
"\n
一个很有年头的兵器架,红漆都剥落得差不多了。
架上摆满了: 
                 钢刀(blade)    长剑(sword)
                 钢杖(staff)    长鞭(whip)
                 铁锤(hammer)   长棍(club)
                 暗器(throwing) 短兵(dagger)
                 钢甲(armor)

参加比武者可以按需要,随便拿取(take)使用。

                                侠客行擂台  敬启
\n";
}

void init()
{
//	add_action("do_yun","yun");
//	add_action("do_yun","exert");
//	add_action("do_quit","hit");
//	add_action("do_quit","fight");
//	add_action("do_quit","qiecuo");
//	add_action("do_quit","kill");
//	add_action("do_quit","quit");
	add_action("do_quit","exit");
	add_action("do_quit","dazuo");
	add_action("do_quit","exercise");
	add_action("do_quit","learn");
	add_action("do_quit","xue");
	add_action("do_quit","practice");
	add_action("do_quit","lian");
	add_action("do_quit","study");
	add_action("do_quit","du");
	add_action("do_take","take");
	add_action("do_open","open");
	add_action("do_close","close");

	add_action("do_start", "start");
	add_action("do_allow", "allow");
	add_action("do_deny", "deny");
	add_action("do_load", "load");
	add_action("do_kick", "kick");
	add_action("do_heal", "heal");
	add_action("do_life", "life");
	add_action("do_titles", "titles");
	
}
int valid_leave(object me, string dir)
{
        if( dir=="up" && !wizardp(me) && !userp(me))
                return notify_fail("裁判席只有被特邀才能进去。\n");
	me->set_temp("view_leitai",1);
        return ::valid_leave(me, dir);
}
int do_yun(string arg)
{
	if (arg=="roar")
	{
        write(this_player()->query("name")+",专心比武吧!\n");
	return 0;
	}
	return 1;
}

int do_open()
{
	if(wizardp(this_player()))
	{
		message_vision("$N把兵器架启封了。\n", this_player());
		this_object()->delete("no_openshelf");
		return 1;
	}
	else return 0;
}
int do_close()
{
	if(wizardp(this_player()))
	{
		message_vision("$N拿了条封条把兵器架给封了。\n", this_player());
		this_object()->set("no_openshelf", 1);
		return 1;
	}
	else return 0;
}
int do_take(string arg)
{
	object obj,ob;
	ob = this_player();
	if(this_object()->query("no_openshelf"))
	{
		message_vision("非大比武的时候,兵器架给封住了。\n", ob);
		return 1;
	}
	if( !arg || arg=="" )
	{
		message_vision("$N站在兵器架前,还没想好要什么兵器。\n", ob);
		return 1;
	}
	switch (arg)
	{
		case "sword":
			obj = new("/clone/weapon/changjian");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一口长剑。\n",ob);
			break;
		case "blade":
			obj = new("/clone/weapon/gangdao");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一口钢刀。\n",ob);
			break;
		case "staff":
			obj = new("/clone/weapon/gangzhang");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一杆钢杖。\n",ob);
			break;
		case "whip":
			obj = new("/clone/weapon/changbian");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一条长鞭。\n",ob);
			break;
		case "club":
			obj = new("/clone/weapon/qimeigun");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一条齐眉棍。\n",ob);
			break;
		case "hammer":
			obj = new("/clone/weapon/hammer");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一把铁锤。\n",ob);
			break;
		case "throwing":
			obj = new("/clone/weapon/lianzi");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一包铁莲子。\n",ob);
			break;
		case "dagger":
			obj = new("/clone/weapon/dagger");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一把匕首。\n",ob);
			break;
		case "armor":
			obj = new("/clone/weapon/tiejia");
			obj -> move(ob);
			message_vision("$N从兵器架上取下一副铁甲。\n",ob);
			break;
		default:
			message_vision("$N站在兵器架前,还没想好要什么兵器。\n", ob);
	}
	return 1;
}

int do_start()
{
        int i,j;
	object *allob, ob, me;
string wiz_status;
	me = this_player();
	wiz_status = SECURITY_D->get_status(me);

⌨️ 快捷键说明

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