亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? db.c

?? MUD服務(wù)器程序
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
		paf->next		= pObjIndex->affected;
		pObjIndex->affected	= paf;
		top_affect++;
	    }

	    else if ( letter == 'E' )
	    {
		EXTRA_DESCR_DATA *ed;

		ed			= alloc_perm( sizeof(*ed) );
		ed->keyword		= fread_string( fp );
		ed->description		= fread_string( fp );
		ed->next		= pObjIndex->extra_descr;
		pObjIndex->extra_descr	= ed;
		top_ed++;
	    }

	    else
	    {
		ungetc( letter, fp );
		break;
	    }
	}

	/*
	 * Translate spell "slot numbers" to internal "skill numbers."
	 */
	switch ( pObjIndex->item_type )
	{
	case ITEM_PILL:
	case ITEM_POTION:
	case ITEM_SCROLL:
	    pObjIndex->value[1] = slot_lookup( pObjIndex->value[1] );
	    pObjIndex->value[2] = slot_lookup( pObjIndex->value[2] );
	    pObjIndex->value[3] = slot_lookup( pObjIndex->value[3] );
	    break;

	case ITEM_STAFF:
	case ITEM_WAND:
	    pObjIndex->value[3] = slot_lookup( pObjIndex->value[3] );
	    break;
	}

	iHash			= vnum % MAX_KEY_HASH;
	pObjIndex->next		= obj_index_hash[iHash];
	obj_index_hash[iHash]	= pObjIndex;
	top_obj_index++;
    }

    return;
}



/*
 * Snarf a reset section.
 */
void load_resets( FILE *fp )
{
    RESET_DATA *pReset;

    if ( area_last == NULL )
    {
	bug( "Load_resets: no #AREA seen yet.", 0 );
	exit( 1 );
    }

    for ( ; ; )
    {
	ROOM_INDEX_DATA *pRoomIndex;
	EXIT_DATA *pexit;
	char letter;

	if ( ( letter = fread_letter( fp ) ) == 'S' )
	    break;

	if ( letter == '*' )
	{
	    fread_to_eol( fp );
	    continue;
	}

	pReset		= alloc_perm( sizeof(*pReset) );
	pReset->command	= letter;
	/* if_flag */	  fread_number( fp );
	pReset->arg1	= fread_number( fp );
	pReset->arg2	= fread_number( fp );
	pReset->arg3	= (letter == 'G' || letter == 'R' || letter == 'C' || letter == 'F')
			    ? 0 : fread_number( fp );
			  fread_to_eol( fp );

	/*
	 * Validate parameters.
	 * We're calling the index functions for the side effect.
	 */
	switch ( letter )
	{
	default:
	    bug( "Load_resets: bad command '%c'.", letter );
	    exit( 1 );
	    break;

	case 'M':
	    get_mob_index  ( pReset->arg1 );
	    get_room_index ( pReset->arg3 );
	    break;

	case 'O':
	    get_obj_index  ( pReset->arg1 );
	    get_room_index ( pReset->arg3 );
	    break;

	case 'P':
	    get_obj_index  ( pReset->arg1 );
	    get_obj_index  ( pReset->arg3 );
	    break;

	case 'G':
	case 'E':
	    get_obj_index  ( pReset->arg1 );
	    break;

	case 'D':
	    pRoomIndex = get_room_index( pReset->arg1 );

	    if ( pReset->arg2 < 0
	    ||   pReset->arg2 > 5
	    || ( pexit = pRoomIndex->exit[pReset->arg2] ) == NULL
	    || !IS_SET( pexit->exit_info, EX_ISDOOR ) )
	    {
		bug( "Load_resets: 'D': exit %d not door.", pReset->arg2 );
		exit( 1 );
	    }

	    if ( pReset->arg3 < 0 || pReset->arg3 > 2 )
	    {
		bug( "Load_resets: 'D': bad 'locks': %d.", pReset->arg3 );
		exit( 1 );
	    }

	    break;

	case 'R':
	    /*pRoomIndex		=*/ get_room_index( pReset->arg1 );

	    if ( pReset->arg2 < 0 || pReset->arg2 > 6 )
	    {
		bug( "Load_resets: 'R': bad exit %d.", pReset->arg2 );
		exit( 1 );
	    }

	    break;
   case 'C':
   case 'F':
      break;
	}

	if ( area_last->reset_first == NULL )
	    area_last->reset_first	= pReset;
	if ( area_last->reset_last  != NULL )
	    area_last->reset_last->next	= pReset;
	    
	area_last->reset_last	= pReset;
	pReset->next		= NULL;
	top_reset++;
    }

    return;
}



/*
 * Snarf a room section.
 */
void load_rooms( FILE *fp )
{
    ROOM_INDEX_DATA *pRoomIndex;

    if ( area_last == NULL )
    {
	bug( "Load_resets: no #AREA seen yet.", 0 );
	exit( 1 );
    }

    for ( ; ; )
    {
	sh_int vnum;
	char letter;
	int door;
	int iHash;

	letter				= fread_letter( fp );
	if ( letter != '#' )
	{
	    bug( "Load_rooms: # not found.", 0 );
	    exit( 1 );
	}

	vnum				= fread_number( fp );
	if ( vnum == 0 )
	    break;

	fBootDb = FALSE;
	if ( get_room_index( vnum ) != NULL )
	{
	    bug( "Load_rooms: vnum %d duplicated.", vnum );
	    exit( 1 );
	}
	fBootDb = TRUE;

	pRoomIndex			= alloc_perm( sizeof(*pRoomIndex) );
	pRoomIndex->people		= NULL;
	pRoomIndex->contents		= NULL;
	pRoomIndex->extra_descr		= NULL;
	pRoomIndex->area		= area_last;
	pRoomIndex->vnum		= vnum;
	pRoomIndex->name		= fread_string( fp );
	pRoomIndex->description		= fread_string( fp );
	/* Area number */		  fread_number( fp );
	pRoomIndex->room_flags		= fread_number( fp );
	pRoomIndex->sector_type		= fread_number( fp );
	pRoomIndex->light		= 0;
	for ( door = 0; door <= 5; door++ )
	    pRoomIndex->exit[door] = NULL;

	for ( ; ; )
	{
	    letter = fread_letter( fp );

	    if ( letter == 'S' )
		break;

	    if ( letter == 'D' )
	    {
		EXIT_DATA *pexit;
		int locks;

		door = fread_number( fp );
		if ( door < 0 || door > 5 )
		{
		    bug( "Fread_rooms: vnum %d has bad door number.", vnum );
		    exit( 1 );
		}

		pexit			= alloc_perm( sizeof(*pexit) );
		pexit->description	= fread_string( fp );
		pexit->keyword		= fread_string( fp );
		pexit->exit_info	= 0;
		locks			= fread_number( fp );
		pexit->key		= fread_number( fp );
		pexit->vnum		= fread_number( fp );

		switch ( locks )
		{
		case 1: pexit->exit_info = EX_ISDOOR;                break;
		case 2: pexit->exit_info = EX_ISDOOR | EX_PICKPROOF; break;
		}

		pRoomIndex->exit[door]	= pexit;
		top_exit++;
	    }
	    else if ( letter == 'E' )
	    {
		EXTRA_DESCR_DATA *ed;

		ed			= alloc_perm( sizeof(*ed) );
		ed->keyword		= fread_string( fp );
		ed->description		= fread_string( fp );
		ed->next		= pRoomIndex->extra_descr;
		pRoomIndex->extra_descr	= ed;
		top_ed++;
	    }
	    else
	    {
		bug( "Load_rooms: vnum %d has flag not 'DES'.", vnum );
		exit( 1 );
	    }
	}

	iHash			= vnum % MAX_KEY_HASH;
	pRoomIndex->next	= room_index_hash[iHash];
	room_index_hash[iHash]	= pRoomIndex;
	top_room++;
    }

    return;
}



/*
 * Snarf a shop section.
 */
void load_shops( FILE *fp )
{
    SHOP_DATA *pShop;

    for ( ; ; )
    {
	MOB_INDEX_DATA *pMobIndex;
	int iTrade;

	pShop			= alloc_perm( sizeof(*pShop) );
	pShop->keeper		= fread_number( fp );
	if ( pShop->keeper == 0 )
	    break;
	for ( iTrade = 0; iTrade < MAX_TRADE; iTrade++ )
	    pShop->buy_type[iTrade]	= fread_number( fp );
	pShop->profit_buy	= fread_number( fp );
	pShop->profit_sell	= fread_number( fp );
	pShop->open_hour	= fread_number( fp );
	pShop->close_hour	= fread_number( fp );
				  fread_to_eol( fp );
	pMobIndex		= get_mob_index( pShop->keeper );
	pMobIndex->pShop	= pShop;

	if ( shop_first == NULL )
	    shop_first = pShop;
	if ( shop_last  != NULL )
	    shop_last->next = pShop;

	shop_last	= pShop;
	pShop->next	= NULL;
	top_shop++;
    }

    return;
}



/*
 * Snarf spec proc declarations.
 */
void load_specials( FILE *fp )
{
    for ( ; ; )
    {
	MOB_INDEX_DATA *pMobIndex;
	char letter;

	switch ( letter = fread_letter( fp ) )
	{
	default:
	    bug( "Load_specials: letter '%c' not *MS.", letter );
	    exit( 1 );

	case 'S':
	    return;

	case '*':
	    break;

	case 'M':
	    pMobIndex		= get_mob_index	( fread_number ( fp ) );
	    pMobIndex->spec_fun	= spec_lookup	( fread_word   ( fp ) );
	    if ( pMobIndex->spec_fun == 0 )
	    {
		bug( "Load_specials: 'M': vnum %d.", pMobIndex->vnum );
		exit( 1 );
	    }
	    break;
	}

	fread_to_eol( fp );
    }
}



/*
 * Snarf notes file.
 */
void load_notes( void )
{
    FILE *fp;
    NOTE_DATA *pnotelast;

    if ( ( fp = fopen( NOTE_FILE, "r" ) ) == NULL )
	return;

    pnotelast = NULL;
    for ( ; ; )
    {
	NOTE_DATA *pnote;
	char letter;

	do
	{
	    letter = getc( fp );
	    if ( feof(fp) )
	    {
		fclose( fp );
		return;
	    }
	}
	while ( isspace(letter) );
	ungetc( letter, fp );

	pnote		  = alloc_perm( sizeof(*pnote) );

	if ( str_cmp( fread_word( fp ), "sender" ) )
	    break;
	pnote->sender	  = fread_string( fp );

	if ( str_cmp( fread_word( fp ), "date" ) )
	    break;
	pnote->date	  = fread_string( fp );

	if ( str_cmp( fread_word( fp ), "stamp" ) )
	    break;
	pnote->date_stamp = fread_number( fp );

	if ( str_cmp( fread_word( fp ), "to" ) )
	    break;
	pnote->to_list	  = fread_string( fp );

	if ( str_cmp( fread_word( fp ), "subject" ) )
	    break;
	pnote->subject	  = fread_string( fp );

	if ( str_cmp( fread_word( fp ), "text" ) )
	    break;
	pnote->text	  = fread_string( fp );

	if ( note_list == NULL )
	    note_list		= pnote;
	else
	    pnotelast->next	= pnote;

	pnotelast	  = pnote;
    }

    strcpy( strArea, NOTE_FILE );
    fpArea = fp;
    bug( "Load_notes: bad key word.", 0 );
    exit( 1 );
    return;
}



/*
 * Translate all room exits from virtual to real.
 * Has to be done after all rooms are read in.
 * Check for bad reverse exits.
 */
void fix_exits( void )
{
    extern const sh_int rev_dir [];
    char buf[MAX_STRING_LENGTH];
    ROOM_INDEX_DATA *pRoomIndex;
    ROOM_INDEX_DATA *to_room;
    EXIT_DATA *pexit;
    EXIT_DATA *pexit_rev;
    int iHash;
    int door;

    for ( iHash = 0; iHash < MAX_KEY_HASH; iHash++ )
    {
	for ( pRoomIndex  = room_index_hash[iHash];
	      pRoomIndex != NULL;
	      pRoomIndex  = pRoomIndex->next )
	{
	    bool fexit;

	    fexit = FALSE;
	    for ( door = 0; door <= 5; door++ )
	    {
		if ( ( pexit = pRoomIndex->exit[door] ) != NULL )
		{
		    fexit = TRUE;
		    if ( pexit->vnum <= 0 )
			pexit->to_room = NULL;
		    else
			pexit->to_room = get_room_index( pexit->vnum );
		}
	    }

	    if ( !fexit )
		SET_BIT( pRoomIndex->room_flags, ROOM_NO_MOB );
	}
    }
#if 0
    for ( iHash = 0; iHash < MAX_KEY_HASH; iHash++ )
    {
	for ( pRoomIndex  = room_index_hash[iHash];
	      pRoomIndex != NULL;
	      pRoomIndex  = pRoomIndex->next )
	{
	    for ( door = 0; door <= 5; door++ )
	    {
		if ( ( pexit     = pRoomIndex->exit[door]       ) != NULL
		&&   ( to_room   = pexit->to_room               ) != NULL
		&&   ( pexit_rev = to_room->exit[rev_dir[door]] ) != NULL
		&&   pexit_rev->to_room != pRoomIndex )
		{
		    sprintf( buf, "Fix_exits: %d:%d -> %d:%d -> %d.",
			pRoomIndex->vnum, door,
			to_room->vnum,    rev_dir[door],
			(pexit_rev->to_room == NULL)
			    ? 0 : pexit_rev->to_room->vnum );
		    bug( buf, 0 );
		}
	    }
	}
    }
#endif
    return;
}



/*
 * Repopulate areas periodically.
 */
void area_update( void )
{
    AREA_DATA *pArea;

    for ( pArea = area_first; pArea != NULL; pArea = pArea->next )
    {
	CHAR_DATA *pch;

	if ( ++pArea->age < 3 )
	    continue;

	/*
	 * Check for PC's.
	 */
	if ( pArea->nplayer > 0 && pArea->age == 15 - 1 )
	{
	    for ( pch = char_list; pch != NULL; pch = pch->next )
	    {
		if ( !IS_NPC(pch)
		&&   IS_AWAKE(pch)
		&&   pch->in_room != NULL
		&&   pch->in_room->area == pArea )
		{
		    send_to_char( "You hear the patter of little feet.\n\r",
			pch );
		}
	    }
	}

	/*
	 * Check age and reset.
	 * Note: Mud School resets every 3 minutes (not 15).
	 */
	if ( pArea->nplayer == 0 || pArea->age >= 15 )
	{
	    ROOM_INDEX_DATA *pRoomIndex;

	    reset_area( pArea );
	    pArea->age = number_range( 0, 3 );
	    pRoomIndex = get_room_index( ROOM_VNUM_SCHOOL );
	    if ( pRoomIndex != NULL && pArea == pRoomIndex->area )
		pArea->age = 15 - 3;
	}
    }

    return;
}



/*
 * Reset one area.
 */
void reset_area( AREA_DATA *pArea )
{
    RESET_DATA *pReset;
    CHAR_DATA *mob;
    bool last;
    int level;

    mob 	= NULL;
    last	= TRUE;
    level	= 0;
    for ( pReset = pArea->reset_first; pReset != NULL; pReset = pReset->next )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜亚洲精品中文字幕一区| 亚洲欧美激情小说另类| 成人99免费视频| 亚洲国产日产av| 亚洲精品一区二区三区蜜桃下载| 成人福利视频在线看| 日韩精品国产精品| 亚洲欧洲精品天堂一级| 欧美xxxxx裸体时装秀| 一道本成人在线| 国产精品一区久久久久| 天天色天天爱天天射综合| 亚洲国产精华液网站w| 欧美videos中文字幕| 欧美性欧美巨大黑白大战| 成人性生交大片免费看在线播放 | 日韩精品国产精品| 亚洲摸摸操操av| 国产欧美日本一区二区三区| 这里只有精品视频在线观看| 色妹子一区二区| 成人在线视频一区| 国产专区欧美精品| 麻豆精品国产传媒mv男同| 亚洲自拍偷拍图区| 亚洲欧美视频在线观看视频| 国产喷白浆一区二区三区| 日韩欧美一区电影| 7777精品伊人久久久大香线蕉超级流畅 | 久国产精品韩国三级视频| 亚洲国产婷婷综合在线精品| 亚洲欧美日本在线| 亚洲欧美一区二区久久| 国产精品理论片| 国产精品伦一区| 国产欧美日韩在线| 久久精品欧美一区二区三区麻豆| 欧美成人艳星乳罩| 精品黑人一区二区三区久久 | 777a∨成人精品桃花网| 欧美高清视频不卡网| 欧美日韩视频专区在线播放| 欧美在线短视频| 欧美三区在线视频| 欧美日韩一区小说| 欧美精品 日韩| 日韩女优毛片在线| 欧美成人性福生活免费看| 精品国产免费人成在线观看| 日韩欧美成人一区| 久久精品夜色噜噜亚洲a∨| 久久久激情视频| 国产精品传媒入口麻豆| 中文字幕亚洲在| 亚洲一区二区视频在线| 一区二区三区四区国产精品| 亚洲一区国产视频| 日本在线观看不卡视频| 麻豆91精品视频| 精品亚洲porn| 国产福利一区二区三区在线视频| 不卡在线视频中文字幕| 日本精品视频一区二区| 欧美理论电影在线| 欧美va在线播放| 中文av一区二区| 亚洲精品欧美专区| 日韩精品三区四区| 久久99九九99精品| hitomi一区二区三区精品| 色综合久久久网| 欧美一区三区二区| 久久这里只有精品视频网| 国产精品福利影院| 亚洲国产精品人人做人人爽| 蜜桃视频第一区免费观看| 国产精品一区二区不卡| 色综合天天综合在线视频| 欧美精品在线观看播放| 久久综合九色综合97婷婷女人 | 亚洲精品一区二区三区蜜桃下载| 国产人成亚洲第一网站在线播放| 亚洲欧美日韩中文字幕一区二区三区| 婷婷亚洲久悠悠色悠在线播放 | 日本aⅴ免费视频一区二区三区| 精品综合免费视频观看| 成人av电影在线播放| 69p69国产精品| 欧美国产日韩在线观看| 亚洲1区2区3区4区| 成人国产一区二区三区精品| 欧美三级乱人伦电影| 久久先锋资源网| 亚洲国产人成综合网站| 国产精品亚洲视频| 欧美精品在线一区二区| 国产精品色婷婷久久58| 日本女优在线视频一区二区| www.爱久久.com| 欧美一区二区福利在线| 亚洲黄色片在线观看| 国产一区二区三区不卡在线观看| 欧洲精品中文字幕| 国产视频不卡一区| 日日夜夜精品视频免费| 99久久婷婷国产综合精品| 日韩免费性生活视频播放| 亚洲男人天堂av网| 粉嫩av一区二区三区在线播放 | 国产精品久久久久天堂| 免费欧美在线视频| 日本道免费精品一区二区三区| xnxx国产精品| 蜜臀va亚洲va欧美va天堂| 欧美私模裸体表演在线观看| 久久久99免费| 美国毛片一区二区三区| 欧美日韩综合不卡| 一区二区三区久久久| 成人黄动漫网站免费app| 久久久久久黄色| 极品瑜伽女神91| 欧美一区二区三区不卡| 亚洲综合av网| 色www精品视频在线观看| 日本一区二区三区高清不卡| 激情五月激情综合网| 91.成人天堂一区| 日韩黄色免费网站| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 精品亚洲成a人在线观看| 91麻豆精品国产综合久久久久久| 一区二区三区在线高清| 色综合天天综合色综合av| 国产精品久久久久久户外露出 | av中文字幕在线不卡| 欧美激情在线一区二区三区| 国产一区二区免费在线| 欧美精品一区二区三区视频| 麻豆成人91精品二区三区| 欧美一区二区网站| 麻豆91在线播放免费| 亚洲精品在线免费播放| 国产一区二区福利视频| 精品精品国产高清a毛片牛牛| 久久国产视频网| 欧美精品一区二区三区在线| 韩国成人福利片在线播放| 久久综合丝袜日本网| 国产老肥熟一区二区三区| 国产三级三级三级精品8ⅰ区| 国产成人啪午夜精品网站男同| 久久久久久久免费视频了| 国产精品亚洲视频| 中文字幕制服丝袜成人av| 99久久精品情趣| 一区二区三区国产豹纹内裤在线 | 国产午夜亚洲精品羞羞网站| 国产成人午夜精品影院观看视频| 中文字幕巨乱亚洲| 91免费观看视频| 亚洲成a人在线观看| 欧美大胆人体bbbb| 国产 日韩 欧美大片| 自拍偷在线精品自拍偷无码专区| 91福利视频网站| 日韩激情视频网站| 国产亚洲午夜高清国产拍精品| 国产91色综合久久免费分享| 中文字幕中文字幕一区二区| 欧美三级日韩三级国产三级| 久久99精品国产麻豆婷婷洗澡| 欧美韩日一区二区三区| 色综合久久中文字幕综合网| 日本女人一区二区三区| 国产亚洲欧美日韩俺去了| 99国产精品视频免费观看| 视频一区视频二区在线观看| 久久这里只有精品6| 91亚洲精华国产精华精华液| 五月天亚洲精品| 国产精品视频一二| 91精品午夜视频| 成年人网站91| 蜜桃在线一区二区三区| 国产精品欧美经典| 欧美一区日韩一区| 成人app软件下载大全免费| 五月婷婷综合在线| 国产精品无人区| 欧美精品亚洲一区二区在线播放| 国产成人综合在线观看| 亚洲午夜久久久久久久久电影网 | 福利一区在线观看| 亚洲主播在线播放| 久久久精品蜜桃| 欧美精品日日鲁夜夜添| 成人av网站在线| 蜜臀av性久久久久av蜜臀妖精| 亚洲人成网站精品片在线观看|