square.c

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

C
186
字号
//Cracked by Kafei// sjsz/square.c 试剑山庄// Apache for Group BWDH 09/98#include <ansi.h>inherit ROOM;#include "kantai.h"#define BOARD "/clone/board/bwboard"string long_desc();void create() {	 set("short", HIC"试剑山庄"NOR);	 set("long", (: long_desc :));	 set("exits", ([		  "south" : __DIR__"kantai_s",		  "north" : __DIR__"kantai_n",		  "east"  : __DIR__"gamble_room",		  "up"    : __DIR__"wizroom",		  "out"   : __DIR__"gate",	 ]));	 set("no_fight", 1);	 set("no_steal", 1);	 set("no_practice", 1);	 set("valid_startroom", 1);    set("objects", ([		  __DIR__"obj/control"     : 1,
	 ]));
	 setup();}init(){	init_kantai();}string long_desc() {	 string desc, desc_temp;	 object board,  player;	 mapping entry;	 int scoreA, scoreB, winA, winB, tieA, tieB, loseA, loseB;	 int i, exchange, j;	 string id, sTeam;	 desc = "这里就是闻名天下的试剑山庄。\n";	 board =  find_object(BOARD);	 if (!objectp(board)) {		  board = load_object(BOARD);		  if (!objectp(board))				//return notify_fail("找不到团体赛成绩版。\n");				return desc;	 }	 desc = desc + HIG"※※※※※※※※※※※※※※※※【武林大会团体赛】※※※※※※※※※※※※※※※----------------------------------------队别  队名     积分  胜  平  负 成员                                      \n";	 desc_temp = "";	 for(i = 0; i < sizeof(board->query("team")); i++) {		  sTeam = "team/" + sprintf("%d", i + 1);		  entry = board->query(sTeam);		  if( !entry ) break;		  desc_temp += sprintf("%4d  %12s  %4d  %2d  %2d  %2d ",					 i+1,					 (string)entry["title"],					 (int)entry["score"],					 (int)entry["win"],					 (int)entry["tie"],					 (int)entry["lose"]					 );		  for( j = 0; j< sizeof( board->query(sTeam + "/names" ) );j++)		  {				id = board->query( sTeam+"/ids/"+sprintf("%d",j+1) );				if(!id)continue;				player = find_player(id);				if( (j-1)%3==2 )				{					desc_temp += "\n                               ";				}				if( objectp(player) && userp(player) )				{					desc_temp += sprintf("%8s(%5d)",board->query(sTeam + "/names/"+sprintf("%d",j+1)),player->query("sjsz/bw_score") );				}				else					desc_temp += sprintf("%8s(不 在)",board->query(sTeam + "/names/"+sprintf("%d",j+1)));		  }		  desc_temp += "\n";	 }	 desc = desc + desc_temp + "________________________________________________________________________________\n"NOR;	//write(desc);	 desc += HIY"※※※※※※※※※※※※※※※※【当前比赛成绩】※※※※※※※※※※※※※※※※________________________________________________________________________________队别  队名     积分  成员                                                \n";		  sTeam ="team/" + board->query("west");		  entry = board->query(sTeam);		  desc_temp = "";		  if( entry )		  {			  desc_temp = desc_temp + sprintf("%4d  %12s  %4d  ",						 to_int(board->query("west")), entry["title"], entry["this_score"] );			  for( i = 0; i< sizeof(keys(entry["names"]));i++)			  {				id = board->query(sTeam+"/ids/"+sprintf("%d",i+1) );            if(!id)continue;				player = find_player(id);				if( (i-1)%4==3 )				{					desc_temp += "\n                    ";				}				if( objectp(player) && userp(player) )				{					desc_temp += sprintf("%8s(%5d)",board->query(sTeam+"/names/"+sprintf("%d",i+1) ),player->query("sjsz/this_score") );				}				else					desc_temp += sprintf("%8s(不 在)",board->query(sTeam+"/names/"+sprintf("%d",i+1) ));			  }		  }		  desc_temp += "\n";		  desc += desc_temp;		  desc_temp = "";		  sTeam ="team/" + board->query("east");		  entry = board->query(sTeam);		  if( entry )		  {			desc_temp = desc_temp + sprintf("%4d  %12s  %4d  ",					 to_int(board->query("east")), entry["title"], entry["this_score"] );			for( i = 0; i< sizeof(keys(entry["names"]));i++)			{				id = board->query(sTeam+"/ids/"+sprintf("%d",i+1) );            if(!id)continue;				player = find_player(id);				if( (i-1) % 4 ==3 )				{					desc_temp += "\n                    ";				}				if( objectp(player) && userp(player) )				{					desc_temp += sprintf("%8s(%5d)",board->query(sTeam+"/names/"+sprintf("%d",i+1) ),player->query("sjsz/this_score") );				}				else					desc_temp += sprintf("%8s(不 在)",board->query(sTeam+"/names/"+sprintf("%d",i+1) ));			}		  }		  desc_temp += "\n";	 desc += desc_temp + "________________________________________________________________________________\n"NOR;	 return desc;}int valid_leave(object player, string dir) {        object *inv;
        int i;
        inv = all_inventory(player);

		if (!wizardp(player) && dir == "up")			  return notify_fail("此间主人并没有邀请你去那里!\n");

		if ( dir == "out" ) {
                for (i=0; i<sizeof(inv); i++) {
                        if (inv[i]->is_character())
                        return notify_fail("你不能带着其他玩家离开。\n");
                }
        }
		player->delete("sjsz/entrance");		return ::valid_leave(player, dir);}

⌨️ 快捷键说明

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