⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhs.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
	if(sizeof(player)<2)		return notify_fail("至少要两个人才能玩。\n");	if(!arg||sscanf(arg,"%d",i)!=1)		i = 0;	else	{		if(i<1||i>MAX_SE)			return notify_fail(sprintf("start [色子数目]  *注意* 色子数目必须>1并且<=%d\n",MAX_SE));	}	start_game(i);	return 1;}int do_view(string arg){	object me;	object ob;	me = this_player();		if(!is_playing(me))	{		if(arg&&(ob = get_player(arg)))			if(!is_visitor(me,arg))				ob = 0;		if(!ob)			return notify_fail("你都不玩啊!\n");	}	else		ob = me;		view_se(ob,me);	return 1;}int do_join(string arg){	object me;	me = this_player();	if(has_start)		return notify_fail("游戏已经开始,不能加入了,请使用(reset)命令重置。\n");	if(is_playing(me))		return notify_fail("你已经参加了。\n");	player[me->query("id")]=allocate(se_num);	toss(me);	msg(me,0,"$N加入游戏了。\n");	return 1;}int do_next(string arg){	object ob;	object me;		me = this_player();	if(!is_playing(me))		return notify_fail("你都不玩啊!\n");	if(!has_guess)		return notify_fail("还没有开始猜色子了。\n");	if(!cur_player)		return notify_fail("现在是谁猜啊?\n");	ob = get_cur_player();		if(ob==0)		return msg(0,0,"有玩家缺场了,请重新开始游戏(start)。\n");	if(me!=ob)		msg(me,ob,"$N对$n说道:到你了。\n");	else		msg(me,0,"对自己说道:到我啦!\n");	tell_object(ob,for_guess_msg());	return 1;}int do_guess(string arg){	int n,p,ok;	object ob;	object me;	string nextone;		me = this_player();	if(!is_playing(me))		return notify_fail("你都不玩啊!\n");	if(!has_guess)		return notify_fail("还没有开始猜色子了。\n");	ob = get_cur_player();	if(ob!=me)		return notify_fail("还没有到你猜了。\n");	if(!arg||sscanf(arg,"%d %d",n,p)!=2)		return notify_fail("guess 色子数目 色子点数\n");	if(n<sizeof(player)||p>6||p<=0)		return notify_fail(sprintf("色子数目必须>=%d,色子点数必须>0并且<=6\n",sizeof(player)));	ok = 1;	if(last_player)	{		if(n>cur_amount)			ok = 1;		else		{			if(n==cur_amount)			{				if(p>cur_point)					ok = 1;				else					ok = 0;			}			else				ok = 0;		}	}	if(!ok)		return notify_fail("色子数目或者色子点数必须比前一位玩家大。\n");	last_player = me->query("id");	cur_amount = n;	cur_point = p;	if(p==1)has_guess_one = 1;	cur_player = player_follow[last_player];	msg(me,0,sprintf("$N(%s)说道:%d个%d\n",me->query("id"),n,p));	if(history)		history = history + ({ sprintf("%-20s:%d个%d",me->query("name")+"("+me->query("id")+")",n,p) });	else		history = ({ sprintf("%-20s:%d个%d",me->query("name")+"("+me->query("id")+")",n,p) });	do_next("");	return 1;}void add_counter(string who,int number){	counter[who] = counter[who]+number;}int show_all_se(object who){	string* idx;	mixed* s;	int i,j,p,sc,pt;	object ob;	int c;	string m,o;	if(!last_player)return 0;	ob = get_player(last_player);	if(!ob||!who)return 0;	has_guess = 0;		idx = keys(player);	c = 0;	m = "";	for(i=0;i<sizeof(idx);i++)	{		if(get_player(idx[i]))		{			s = player[idx[i]];			m = sprintf("%s%12s:",m,idx[i]);			o = "";			sc = 0;			for(j=0;j<se_num;j++)			{				m = sprintf("%s%d",m,s[j]);				p = s[j];				if(p==1&&!has_guess_one)p = cur_point;				if(p==cur_point)				{					c ++;					sc ++;					o = sprintf("%s%d",o,s[j]);				}			}			if(sc==se_num)			{				o = o + " 围色+1";				c++;			}			m = m + "||"+o+"\n";		}	}	m = sprintf("%s%s猜有"HIC"%d"NOR"个%d,",m,ob->query("name"),cur_amount,cur_point);	m = sprintf("%s现在有"HIC"%d"NOR"个%d\n\n",m,c,cur_point);	msg(0,0,m);	if(who->query("id")==cur_player)		pt = 1;	else		pt = 2;	if(c<cur_amount)	{		add_counter(who->query("id"), pt);		add_counter(ob->query("id"), -pt);		msg(ob,who,BLINK HIY "$N被$n拆穿了大话!!!\n\n" NOR);		who_lost = last_player;	}	else	{		add_counter(who->query("id"), -pt);		add_counter(ob->query("id"), pt);		msg(who,0,BLINK HIY "$N判断错误了!!!\n\n" NOR);		who_lost = who->query("id");	}	start_game(0);}int do_dahua(string arg){	object ob;	object me;		me = this_player();	if(!arg)	{		msg(me,0,"$N一扁嘴嘟囔道:“大话精,大话精...”\n");		return 1;	}	if(!is_playing(me))		return notify_fail("你都不玩啊!\n");	if(!has_guess||!last_player)		return notify_fail("还没有开始猜色子了。\n");		ob = get_player(last_player);	if(ob==me)		return notify_fail("自己不相信自己。\n");	if(last_player!=arg)		return notify_fail("不是他最后猜色子了。\n");	msg(me,ob,HIC "\n$N对$n说道:我不相信!!!\n" NOR);	show_all_se(me);	return 1;}int do_finish(string arg){	object me,ob;	me = this_player();	if(!is_playing(me))		return notify_fail("你都不玩啊!\n");	if(!has_start)		return notify_fail("游戏还没有开始了。\n");	if(has_guess)		return notify_fail("已经开始猜色子了。\n");	player_deal[me->query("id")] = 1;	msg(me,0,"$N准备好了。\n");	if(sizeof(player_deal)==sizeof(player))	{		// all is finish		has_guess = 1;		msg(0,0,"\n猜色子开始\n");		if(who_lost)cur_player = who_lost;		who_lost = 0;		if(!cur_player)cur_player = me->query("id");		if(ob = get_cur_player())		{			msg(ob,0,"$N说道:由我先猜!!!\n");			tell_object(ob,for_guess_msg());		}		else			msg(0,0,"缺少了"+cur_player+",不能进行游戏,请重新开始(start)\n");	}		return 1;}int do_history(string arg){	if(!history)		tell_object(this_player(),"没有历史资料。\n");	else		tell_object(this_player(),implode(history,"\n")+"\n");	return 1;}int do_showc(string arg){	string r;	string* idx;	int i;             if(!counter) return 0; 	idx = keys(player);		r = "计数表(Scoreboard)\n-----------------\nID        分数\n-----------------\n";	for(i=0;i<sizeof(idx);i++)	{		if(get_player(idx[i]))			r = sprintf("%s%-14s%10d\n", r,idx[i],counter[idx[i]]);	}	r += "-----------------\n";	msg(0,0,r);	return 1;}int do_visitor(string arg){	string key;	object me,ob;	int del;	if(!arg)		return notify_fail("visit [-d] 玩家ID\n");	if(sscanf(arg, "-d %s", key)==1 )		del = 1;	else	{		del = 0;		key = arg;	}			me = this_player();	if(is_playing(me))	{		ob = present(key,environment(this_object()));		if(!ob)			return notify_fail("这里没有这个玩家啊?\n");		if(del)		{			if(!is_visitor(ob,me->query("id")))				return notify_fail("不是你的观战者。\n");			msg(me,ob,"$N不再允许$n观看$N的战况。\n");			visitor[me->query("id")] = visitor[me->query("id")] - ({ob->query("id")});		}		else		{			if(is_visitor(ob,me->query("id")))				return notify_fail("已经是你的观战者了。\n");			msg(me,ob,"$N让$n观看$N的战况。\n");			if(!visitor[me->query("id")])				visitor[me->query("id")] = ({ ob->query("id") });			else				visitor[me->query("id")] += ob->query("id");		}	}	else	{		if(del)			return notify_fail("????\n");		ob = get_player(key);		if(!ob)			return notify_fail("没有这个玩家在玩啊?\n");		msg(me,ob,"$N希望成为$n的观战者。\n");		tell_object(ob,"接受使用[visit "+me->query("id")+"]。\n");	}	return 1;}int do_help(string arg){	this_player()->start_more( @HELP大话色使用方法:——[开始游戏]———————————————帮助命令:helpse加入命令:join     加入游戏开始命令:start     开始游戏重置命令:reset se		结束游戏——[游戏前命令]——————————————— 摇色子:toss查看色子:view [玩家ID]准备结束:finish 或者 deal——[游戏命令]———————————————拆穿大话:dahua 玩家ID猜测色子:guess 色子数量 色子点数     或者 g 色子数量 色子点数催促玩家:next——[其它命令]——————————————— 计数器:showc猜测日志:history——[旁观命令]———————————————观战命令:visit [-d] 玩家ID		邀请其它玩家观看你的游戏。		加参数 -d 表示删除该玩家的观看资格。——[游戏规则]———————————————建设中...——————————————————————			make by 猫部猫(Catyboy) v1.0HELP	);        return 1;}

⌨️ 快捷键说明

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