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

📄 control.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 4 页
字号:
		  LOGIN_D->enter_world(link_ob, obj, 1);		  obj->move(env);		  return 1;}int do_refresh(string arg){	object ob;	if(!arg)return notify_fail("你想要更新谁?\n");	ob = find_player(arg);	if( ob && objectp(ob) && userp(ob) && ob->query("sjsz") )		update_player(ob);	else return notify_fail("没有这个人在试剑山庄中。\n");}int update_room (string file){		  int i;		  object obj, *inv;		  string err;		  if ( (obj = find_object(file)) && objectp(obj) ) {								inv = all_inventory(obj);								i = sizeof(inv);								while(i--)								{										  if( inv[i] && objectp(inv[i]) && userp(inv[i]) )										  {											 call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/kantai_w1.c");											 if( !living(inv[i]) )inv[i]->revive(1);											 full_all(inv[i]);											 nude(inv[i]);										  }										  else										  {											if(inv[i] && objectp(inv[i]))											{												my_destruct(inv[i]);											}										  }								}					 my_destruct(obj);		  }}/*This will refresh a room however it won't destruct the room*/int refresh_room (string file){		  int i;		  object obj, *inv, me = this_player();		  string err;		  if (obj = find_object(file)) {					inv = all_inventory(obj);					i = sizeof(inv);					while(i--)					{										  if( inv[i] && objectp(inv[i]) && userp(inv[i]) )										  {											 if( !living(inv[i]) || inv[i]->query("qi") <= 0 )											 {												 if( inv[i]->query("sjsz/red") )												 {													call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/west_xiangfang.c");												 }												 else if( inv[i]->query("sjsz/white") )												 {													call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/east_xiangfang.c");												 }												 if( !living(inv[i]) )inv[i]->revive(1);												 full_all(inv[i]);												 nude(inv[i]);											 }										  }										  else										  {											if( inv[i] && objectp(inv[i]) && inv[i]->query("race") != "人类" && inv[i]->query("id") != "pao" 											  && inv[i]->query("id") != "dan tou" && inv[i]->query("id") != "huo yao" && inv[i]->query("id") != "box" )												my_destruct(inv[i]);										  }					}		  }}void make_weapon(object npc){	int j, n;	object weapon, owner;	if(!npc || !objectp(npc) ) return;	n = 0;	do{		j = random(sizeof(special_weapon));		weapon = find_object( special_weapon[j] );		if( weapon && objectp(weapon) )		{			owner = environment(weapon);			if(owner && objectp(owner) && !userp(owner) )				break;		}		weapon = new(special_weapon[j]);		n++;	}while(!weapon && n < 20);	if( weapon && objectp(weapon) )		weapon->move(npc);}void make_npc(object room){	 object *inv,npc,ob;	 int i,j,n,r;	 if( !room || !objectp(room) )return;	 n = random( 8 );	 if( n < 1)	 {		do{			j = random(sizeof(high_npc));			npc = new(high_npc[j]);		}		while( !npc || !objectp(npc) );	 }	 else if( n < 5)	 {		do{			j = random(sizeof(middle_npc));			npc = new(middle_npc[j]);		}		while( !npc || !objectp(npc) );	 }	 else if( n < 7)	 {		do{			j = random(sizeof(low_npc));			npc = new(low_npc[j]);		}		while( !npc || !objectp(npc) );	 }	 else	 {		do{			j = random(sizeof(misc_npc));			npc = new(misc_npc[j]);		}		while( !npc || !objectp(npc) );	 }	 if (random(2) == 1) {		 ob = new("/d/bwdh/sjsz/obj/renshen-guo");	 }	 else if (random(20) == 1) {		 ob = new("/d/bwdh/sjsz/obj/bomb");	 }	 else	 {		 ob = new("/clone/drug/jinchuang");		 ob->set_amount(random(20)+1);	 }	 if( ob && objectp(ob) )ob->move(npc);	 make_weapon(npc);	 npc->move(room);}void refresh_sjsz(){	 object room,*inv;	 int n, r ;	 string rm;	 refresh_room("/d/bwdh/sjsz/wgate.c");	 refresh_room("/d/bwdh/sjsz/wgarden.c");	 refresh_room("/d/bwdh/sjsz/wtang.c");	 refresh_room("/d/bwdh/sjsz/wting.c");	 refresh_room("/d/bwdh/sjsz/wzoulan.c");	 refresh_room("/d/bwdh/sjsz/egate.c");	 refresh_room("/d/bwdh/sjsz/egarden.c");	 refresh_room("/d/bwdh/sjsz/etang.c");	 refresh_room("/d/bwdh/sjsz/eting.c");	 refresh_room("/d/bwdh/sjsz/ezoulan.c");	 refresh_room("/d/bwdh/sjsz/etower1.c");	 refresh_room("/d/bwdh/sjsz/etower2.c");	 refresh_room("/d/bwdh/sjsz/etower3.c");	 refresh_room("/d/bwdh/sjsz/etower4.c");	 refresh_room("/d/bwdh/sjsz/etower5.c");	 refresh_room("/d/bwdh/sjsz/etower6.c");	 refresh_room("/d/bwdh/sjsz/etower7.c");	 refresh_room("/d/bwdh/sjsz/wtower1.c");	 refresh_room("/d/bwdh/sjsz/wtower2.c");	 refresh_room("/d/bwdh/sjsz/wtower3.c");	 refresh_room("/d/bwdh/sjsz/wtower4.c");	 refresh_room("/d/bwdh/sjsz/wtower5.c");	 refresh_room("/d/bwdh/sjsz/wtower6.c");	 refresh_room("/d/bwdh/sjsz/wtower7.c");	 for(r=1;r<=30;r++){		  if (r < 10)		  {				rm = "/d/bwdh/sjsz/room_0" + sprintf("%d", r);				room = find_object(rm);				if(!room) load_object(rm);			}		  else		  {				rm = "/d/bwdh/sjsz/room_" + sprintf("%d", r);				room = find_object(rm);				if( !room ) load_object(rm);		  }		  if(!room) continue;		  refresh_room(rm);		  inv = all_inventory(room);		  n = sizeof(inv);		  if ( n == 0 ) {				make_npc(room);		  }	 }	 return;}int auto_check(){	int nCounts;	object board;	 board =  find_object(BOARD);	 if (!objectp(board)) {			  board = load_object(BOARD);			  if (!objectp(board))					return 0;	 }	nCounts = board->query("counts");	if(nCounts <=0 )	{	 if( board->query("west") && board->query("east") )		{			call_out("auto_check", 10);			call_out("clean_sjsz",20);			do_judge("");			return 0;		}	 else return 1;	}	nCounts--;	board->set("counts",nCounts);	remove_call_out("auto_check");	call_out("auto_check",60*3);	refresh_sjsz();}int do_goon(){	object me = this_player();	auto_check();	return 1;}void clean_sjsz(){	int i;	object room;	for ( i = 1; i <= 30; i++) {			if (i < 10)			{			 update_room("/d/bwdh/sjsz/room_0" + sprintf("%d", i));			 room = find_object("/d/bwdh/sjsz/room_0" + sprintf("%d", i));			}			else			{			 update_room("/d/bwdh/sjsz/room_" + sprintf("%d", i));			 room = find_object("/d/bwdh/sjsz/room_" + sprintf("%d", i));			}			if( room && objectp(room) )					 destruct(room);	}	update_room("/d/bwdh/sjsz/wgate.c");	update_room("/d/bwdh/sjsz/wgarden.c");	update_room("/d/bwdh/sjsz/wtang.c");	update_room("/d/bwdh/sjsz/wting.c");	update_room("/d/bwdh/sjsz/wzoulan.c");	update_room("/d/bwdh/sjsz/egate.c");	update_room("/d/bwdh/sjsz/egarden.c");	update_room("/d/bwdh/sjsz/etang.c");	update_room("/d/bwdh/sjsz/eting.c");	update_room("/d/bwdh/sjsz/ezoulan.c");	update_room("/d/bwdh/sjsz/west_xiangfang.c");	update_room("/d/bwdh/sjsz/east_xiangfang.c");	 update_room("/d/bwdh/sjsz/etower1.c");	 update_room("/d/bwdh/sjsz/etower2.c");	 update_room("/d/bwdh/sjsz/etower3.c");	 update_room("/d/bwdh/sjsz/etower4.c");	 update_room("/d/bwdh/sjsz/etower5.c");	 update_room("/d/bwdh/sjsz/etower6.c");	 update_room("/d/bwdh/sjsz/etower7.c");	 update_room("/d/bwdh/sjsz/wtower1.c");	 update_room("/d/bwdh/sjsz/wtower2.c");	 update_room("/d/bwdh/sjsz/wtower3.c");	 update_room("/d/bwdh/sjsz/wtower4.c");	 update_room("/d/bwdh/sjsz/wtower5.c");	 update_room("/d/bwdh/sjsz/wtower6.c");	 update_room("/d/bwdh/sjsz/wtower7.c");}int do_duet(string arg){	 object me = this_player(), player;	 object room, ob, npc, env, *inv;	 string cmd;	 int n, total, i, j;	 object board;	 if( !arg || sscanf(arg, "%s", cmd) != 1)		  return notify_fail("指令错误!\n");	 board =  find_object(BOARD);	 if (!objectp(board)) {			  board = load_object(BOARD);			  if (!objectp(board))					return notify_fail("找不到团体赛成绩版。\n");	 }	 switch (cmd) {	 case "start" :						  if( !board->query("east") || !board->query("east") )							  return notify_fail("好象现在没有比赛。\n");						  call_out("auto_check",60*4);						  room = find_object("/d/bwdh/sjsz/wtang");						  if(!room)room = load_object("/d/bwdh/sjsz/wtang");						  room->set("flag",1);						  room->set("team_name",board->query("westname") );						  room = find_object("/d/bwdh/sjsz/etang");						  if(!room)room = load_object("/d/bwdh/sjsz/etang");						  room->set("flag",1);						  room->set("team_name", board->query("eastname") );						  if( wizardp(me) || me->query("judge") )						  {								message_vision("$N宣布比赛开始!\n", me);								CHANNEL_D->do_channel(me, "chat", board->query("westname")+"队现在开始与"+board->query("eastname")+"队决斗!\n" );						  }						  board->set("counts",5);						  break;	 case "clean" :						 clean_sjsz();						 board->delete("east");						 board->delete("west");						 board->delete("eastname");						 board->delete("westname");						 break;	 default : return notify_fail("指令错误!\n");				  break;	 }	 return 1;}int do_judge(string arg) {	 object ob = this_object(), rum_ob;	 string side,msg;	 int east, west, n;	 object board;	 mapping entryA, entryB;	 int i, scoreA, scoreB;	 board =  find_object(BOARD);	 if (!objectp(board)) {			  board = load_object(BOARD);			  if (!objectp(board))					return 1;//notify_fail("找不到团体赛成绩版。\n");	 }	 if( !board->query("east") || !board->query("east") )		  return 1;//notify_fail("好象现在没有比赛。\n");	 if( !arg || arg=="" )	 {		 entryA = board->query("team/" + board->query("east"));		 if ( !entryA )return notify_fail("找不到东队。\n");		 entryB = board->query("team/" + board->query("west"));		 if ( !entryB )return notify_fail("找不到西队。\n");		 scoreA = to_int(entryA["this_score"]);		 scoreB = to_int(entryB["this_score"]);		 if( scoreA > scoreB ) side = "east";		 else if( scoreA == scoreB ) side = "tie";		 else side = "west";	 }	 msg = "现在宣布比赛结束!";	 switch(side) {	 case "east" :   east = 2; west = 0;						  //if(objectp(me)) message_vision("$N判东队胜!\n", me);						  msg += board->query("eastname") + "胜" + board->query("westname");

⌨️ 快捷键说明

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