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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? db.c

?? MUD服務器程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
    obj->cost		= number_fuzzy( 10 )
			* number_fuzzy( level ) * number_fuzzy( level );

    /*
     * Mess with object properties.
     */
    switch ( obj->item_type )
    {
    default:
	bug( "Read_object: vnum %d bad type.", pObjIndex->vnum );
	break;

    case ITEM_LIGHT:
    case ITEM_TREASURE:
    case ITEM_FURNITURE:
    case ITEM_TRASH:
    case ITEM_CONTAINER:
    case ITEM_DRINK_CON:
    case ITEM_KEY:
    case ITEM_FOOD:
    case ITEM_BOAT:
    case ITEM_CORPSE_NPC:
    case ITEM_CORPSE_PC:
    case ITEM_FOUNTAIN:
	break;

    case ITEM_SCROLL:
	obj->value[0]	= number_fuzzy( obj->value[0] );
	break;

    case ITEM_WAND:
    case ITEM_STAFF:
	obj->value[0]	= number_fuzzy( obj->value[0] );
	obj->value[1]	= number_fuzzy( obj->value[1] );
	obj->value[2]	= obj->value[1];
	break;

    case ITEM_WEAPON:
	obj->value[1]	= number_fuzzy( number_fuzzy( 1 * level / 4 + 2 ) );
	obj->value[2]	= number_fuzzy( number_fuzzy( 3 * level / 4 + 6 ) );
	break;

    case ITEM_ARMOR:
	obj->value[0]	= number_fuzzy( level / 4 + 2 );
	break;

    case ITEM_POTION:
    case ITEM_PILL:
	obj->value[0]	= number_fuzzy( number_fuzzy( obj->value[0] ) );
	break;

    case ITEM_MONEY:
	obj->value[0]	= obj->cost;
	break;
    }

    obj->next		= object_list;
    object_list		= obj;
    pObjIndex->count++;

    return obj;
}



/*
 * Clear a new character.
 */
void clear_char( CHAR_DATA *ch )
{
    static CHAR_DATA ch_zero;

    *ch				= ch_zero;
    ch->name			= &str_empty[0];
    ch->short_descr		= &str_empty[0];
    ch->long_descr		= &str_empty[0];
    ch->description		= &str_empty[0];
    ch->prompt                  = &str_empty[0];
    ch->last_note               = 0;
    ch->logon			= current_time;
    ch->armor			= 100;
    ch->position		= POS_STANDING;
    ch->practice		= 21;
    ch->hit			= 20;
    ch->max_hit			= 20;
    ch->mana			= 100;
    ch->max_mana		= 100;
    ch->move			= 100;
    ch->max_move		= 100;
    return;
}



/*
 * Free a character.
 */
void free_char( CHAR_DATA *ch )
{
    OBJ_DATA *obj;
    OBJ_DATA *obj_next;
    AFFECT_DATA *paf;
    AFFECT_DATA *paf_next;

    for ( obj = ch->carrying; obj != NULL; obj = obj_next )
    {
	obj_next = obj->next_content;
	extract_obj( obj );
    }

    for ( paf = ch->affected; paf != NULL; paf = paf_next )
    {
	paf_next = paf->next;
	affect_remove( ch, paf );
    }

    free_string( ch->name		);
    free_string( ch->short_descr	);
    free_string( ch->long_descr		);
    free_string( ch->description	);

    if ( ch->pcdata != NULL )
    {
	free_string( ch->pcdata->pwd		);
	free_string( ch->pcdata->bamfin		);
	free_string( ch->pcdata->bamfout	);
	free_string( ch->pcdata->title		);
	ch->pcdata->next = pcdata_free;
	pcdata_free      = ch->pcdata;
    }

    ch->next	     = char_free;
    char_free	     = ch;
    return;
}



/*
 * Get an extra description from a list.
 */
char *get_extra_descr( const char *name, EXTRA_DESCR_DATA *ed )
{
    for ( ; ed != NULL; ed = ed->next )
    {
	if ( is_name( name, ed->keyword ) )
	    return ed->description;
    }
    return NULL;
}



/*
 * Translates mob virtual number to its mob index struct.
 * Hash table lookup.
 */
MOB_INDEX_DATA *get_mob_index( int vnum )
{
    MOB_INDEX_DATA *pMobIndex;

    for ( pMobIndex  = mob_index_hash[vnum % MAX_KEY_HASH];
	  pMobIndex != NULL;
	  pMobIndex  = pMobIndex->next )
    {
	if ( pMobIndex->vnum == vnum )
	    return pMobIndex;
    }

    if ( fBootDb )
    {
	bug( "Get_mob_index: bad vnum %d.", vnum );
	exit( 1 );
    }

    return NULL;
}



/*
 * Translates mob virtual number to its obj index struct.
 * Hash table lookup.
 */
OBJ_INDEX_DATA *get_obj_index( int vnum )
{
    OBJ_INDEX_DATA *pObjIndex;

    for ( pObjIndex  = obj_index_hash[vnum % MAX_KEY_HASH];
	  pObjIndex != NULL;
	  pObjIndex  = pObjIndex->next )
    {
	if ( pObjIndex->vnum == vnum )
	    return pObjIndex;
    }

    if ( fBootDb )
    {
	bug( "Get_obj_index: bad vnum %d.", vnum );
	exit( 1 );
    }

    return NULL;
}



/*
 * Translates mob virtual number to its room index struct.
 * Hash table lookup.
 */
ROOM_INDEX_DATA *get_room_index( int vnum )
{
    ROOM_INDEX_DATA *pRoomIndex;

    for ( pRoomIndex  = room_index_hash[vnum % MAX_KEY_HASH];
	  pRoomIndex != NULL;
	  pRoomIndex  = pRoomIndex->next )
    {
	if ( pRoomIndex->vnum == vnum )
	    return pRoomIndex;
    }

    if ( fBootDb && !fIgnoreUnconnected)
    {
	bug( "Get_room_index: bad vnum %d.", vnum );
	exit( 1 );
    }

    return NULL;
}



/*
 * Read a letter from a file.
 */
char fread_letter( FILE *fp )
{
    char c;

    do
    {
	c = getc( fp );
    }
    while ( isspace(c) );

    return c;
}



/*
 * Read a number from a file.
 */
int fread_number( FILE *fp )
{
    int number;
    bool sign;
    char c;

    do
    {
	c = getc( fp );
    }
    while ( isspace(c) );

    number = 0;

    sign   = FALSE;
    if ( c == '+' )
    {
	c = getc( fp );
    }
    else if ( c == '-' )
    {
	sign = TRUE;
	c = getc( fp );
    }

    if ( !isdigit(c) )
    {
	bug( "Fread_number: bad format.", 0 );
	exit( 1 );
    }

    while ( isdigit(c) )
    {
	number = number * 10 + c - '0';
	c      = getc( fp );
    }

    if ( sign )
	number = 0 - number;

    if ( c == '|' )
	number += fread_number( fp );
    else if ( c != ' ' )
	ungetc( c, fp );

    return number;
}



/*
 * Read and allocate space for a string from a file.
 * These strings are read-only and shared.
 * Strings are hashed:
 *   each string prepended with hash pointer to prev string,
 *   hash code is simply the string length.
 * This function takes 40% to 50% of boot-up time.
 */
char *fread_string( FILE *fp )
{
    char *plast;
    char c;

    plast = top_string + sizeof(char *);
    if ( plast > &string_space[MAX_STRING - MAX_STRING_LENGTH] )
    {
	bug( "Fread_string: MAX_STRING %d exceeded.", MAX_STRING );
	exit( 1 );
	 }

	 /*
	  * Skip blanks.
	  * Read first char.
	  */
	 do
	 {
	c = getc( fp );
	 }
	 while ( isspace(c) );

	 if ( ( *plast++ = c ) == '~' )
	return &str_empty[0];

	 for ( ;; )
	 {
	/*
	 * Back off the char type lookup,
	 *   it was too dirty for portability.
	 *   -- Furey
	 */
	switch ( *plast = getc( fp ) )
	{
	default:
		 plast++;
		 break;

	case EOF:
		 bug( "Fread_string: EOF", 0 );
		 exit( 1 );
		 break;

	case '\n':
		 plast++;
		 *plast++ = '\r';
		 break;

	case '\r':
		 break;

	case '~':
		 plast++;
		 {
		union
		{
			 char *	pc;
			 char	rgc[sizeof(char *)];
		} u1;
		int ic;
		int iHash;
		char *pHash;
		char *pHashPrev;
		char *pString;

		plast[-1] = '\0';
		iHash     = UMIN( MAX_KEY_HASH - 1, plast - 1 - top_string );
		for ( pHash = string_hash[iHash]; pHash; pHash = pHashPrev )
		{
			 for ( ic = 0; ic < sizeof(char *); ic++ )
			u1.rgc[ic] = pHash[ic];
			 pHashPrev = u1.pc;
			 pHash    += sizeof(char *);

			 if ( top_string[sizeof(char *)] == pHash[0]
			 &&   !strcmp( top_string+sizeof(char *)+1, pHash+1 ) )
			return pHash;
		}

		if ( fBootDb )
		{
			 pString		= top_string;
			 top_string		= plast;
			 u1.pc		= string_hash[iHash];
			 for ( ic = 0; ic < sizeof(char *); ic++ )
			pString[ic] = u1.rgc[ic];
			 string_hash[iHash]	= pString;

			 nAllocString += 1;
			 sAllocString += top_string - pString;
			 return pString + sizeof(char *);
		}
		else
		{
			 return str_dup( top_string + sizeof(char *) );
		}
		 }
	}
	 }
}



/*
 * Read to end of line (for comments).
 */
void fread_to_eol( FILE *fp )
{
    char c;

    do
    {
	c = getc( fp );
    }
    while ( c != '\n' && c != '\r' );

    do
    {
	c = getc( fp );
    }
    while ( c == '\n' || c == '\r' );

    ungetc( c, fp );
    return;
}



/*
 * Read one word (into static buffer).
 */
char *fread_word( FILE *fp )
{
    static char word[MAX_INPUT_LENGTH];
    char *pword;
    char cEnd;

    do
    {
	cEnd = getc( fp );
    }
    while ( isspace( cEnd ) );

    if ( cEnd == '\'' || cEnd == '"' )
    {
	pword   = word;
    }
    else
    {
	word[0] = cEnd;
	pword   = word+1;
	cEnd    = ' ';
    }

    for ( ; pword < word + MAX_INPUT_LENGTH; pword++ )
    {
	*pword = getc( fp );
	if ( cEnd == ' ' ? isspace(*pword) : *pword == cEnd )
	{
	    if ( cEnd == ' ' )
		ungetc( *pword, fp );
	    *pword = '\0';
	    return word;
	}
    }

    bug( "Fread_word: word too long.", 0 );
    exit( 1 );
    return NULL;
}



/*
 * Allocate some ordinary memory,
 *   with the expectation of freeing it someday.
 */
void *alloc_mem( int sMem )
{
#if 0 // %%%
    return malloc(sMem);
#else
    void *pMem;
    int iList;

    sMem += 2 * sizeof (int); // @@@

    for ( iList = 0; iList < MAX_MEM_LIST; iList++ )
    {
	if ( sMem <= rgSizeList[iList] )
	    break;
    }

    if ( iList == MAX_MEM_LIST )
    {
#if 1 // @@@
	bug( "Alloc_mem: size %d too large.", sMem );
	exit( 1 );
#else
   char szBuffer[256];
   wsprintf(szBuffer, "alloc_mem(%d) to large.  Continue?", sMem);
   if (MessageBox(0, szBuffer, "Merc22", MB_ICONQUESTION|MB_YESNO) == IDYES)
      return 0;
   else
      {
      DebugBreak();
      exit( 1 );
      }
#endif
    }

    if ( rgFreeList[iList] == NULL )
    {
	pMem		  = alloc_perm( rgSizeList[iList] );
    }
    else
    {
	pMem              = rgFreeList[iList];
	rgFreeList[iList] = * ((void **) rgFreeList[iList]);
    }

    ((int *) pMem)[0] = 0x55555555; // @@@
    ((int *) pMem)[1] = sMem; // @@@
    return ((int *) pMem) + 2; // @@@
//    return pMem; // @@@
#endif
}



/*
 * Free some memory.
 * Recycle it back onto the free list for blocks of that size.
 */
void free_mem( void *pMem, int sMem )
{
#if 0 // %%%
    free(pMem);
#else
    int iList;

#if 1 // @@@
    ((int *)pMem) -= 2;
    sMem += 2 * sizeof (int);
    if (((int *) pMem)[0] == 0xaaaaaaaa)
    {
	bug( "Free_mem: this block was already freed.", 0 );
	exit( 1 );
    }
    if (((int *) pMem)[0] != 0x55555555)
    {
	bug( "Free_mem: invalid key.", 0 );
	exit( 1 );
    }
    if (((int *) pMem)[1] != sMem)
    {
	bug( "Free_mem: invalid size.", 0 );
	exit( 1 );
    }
    ((int *) pMem)[0] = 0xaaaaaaaa;
#endif

    for ( iList = 0; iList < MAX_MEM_LIST; iList++ )
    {
	if ( sMem <= rgSizeList[iList] )
	    break;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆视频一区二区| 激情伊人五月天久久综合| 欧美四级电影网| 日韩福利电影在线| 欧美va亚洲va国产综合| 99麻豆久久久国产精品免费| 亚洲电影你懂得| 日韩精品一区二区三区四区| 99在线精品观看| 美女视频一区二区| 亚洲自拍偷拍av| 亚洲欧美成人一区二区三区| 亚洲欧洲日产国码二区| 国产精品网站在线| 国产精品美女久久久久久2018| 久久爱另类一区二区小说| 丝袜诱惑亚洲看片| 亚洲成人av资源| 舔着乳尖日韩一区| 亚洲国产一区二区视频| 亚洲一区二区三区中文字幕| 国产精品毛片久久久久久| 国产亚洲欧美激情| 中文字幕欧美日本乱码一线二线| proumb性欧美在线观看| 成人午夜视频网站| 91看片淫黄大片一级在线观看| 亚洲国产成人av| 丝袜诱惑亚洲看片| 视频一区中文字幕国产| 日本不卡免费在线视频| 毛片一区二区三区| 国产乱人伦偷精品视频免下载| 一区二区三区免费看视频| 亚洲成人动漫一区| 经典三级视频一区| 国产成人a级片| 97se亚洲国产综合自在线不卡| 免费观看久久久4p| 国产成人aaa| 色婷婷国产精品综合在线观看| 久久国内精品自在自线400部| 亚洲免费观看高清完整| 亚洲成人手机在线| 久久福利视频一区二区| 成人av资源站| 欧美精品视频www在线观看| 日韩精品最新网址| 国产精品网站一区| 丝袜美腿成人在线| 国产成人综合亚洲91猫咪| 99久久免费视频.com| 欧美撒尿777hd撒尿| 337p日本欧洲亚洲大胆精品| 国产精品国产三级国产三级人妇 | 久久久不卡网国产精品二区| 国产欧美久久久精品影院| 亚洲一区在线视频| 狠狠狠色丁香婷婷综合激情| av电影天堂一区二区在线| 欧美精品99久久久**| 国产片一区二区| 五月激情六月综合| 成人午夜在线播放| 3d动漫精品啪啪一区二区竹菊| 欧美日本在线观看| 国产精品毛片高清在线完整版| 国产天堂亚洲国产碰碰| 亚洲一区二区三区爽爽爽爽爽| 亚洲欧美日韩中文字幕一区二区三区| 国产丝袜美腿一区二区三区| 午夜精品一区二区三区电影天堂 | 在线观看免费一区| 精品国产乱码久久久久久1区2区| 日韩一区二区三区高清免费看看| 欧美一区二区精品| 亚洲自拍偷拍欧美| av日韩在线网站| 久久久久久免费| 蜜桃视频在线观看一区| 在线观看国产日韩| 亚洲欧美视频在线观看| 国产成人午夜视频| 欧美一区永久视频免费观看| 亚洲一区二区三区在线播放| 99久久婷婷国产| 久久久不卡影院| 国产一区二区三区av电影| 欧美人狂配大交3d怪物一区 | 亚洲成人激情av| 99国产精品国产精品毛片| 精品日本一线二线三线不卡| 一区二区三区不卡在线观看| 91丝袜美女网| 中文字幕中文字幕一区| 国产成人亚洲精品狼色在线 | 欧美天天综合网| 一区二区欧美视频| 一本色道久久综合精品竹菊| 国产三区在线成人av| 精品一区二区三区av| 亚洲精品在线观看视频| 精品亚洲成a人| 精品播放一区二区| 国产剧情一区二区| 国产欧美一区二区三区在线看蜜臀 | 制服视频三区第一页精品| 亚洲国产另类精品专区| 欧美伊人久久久久久久久影院| 日韩三级高清在线| 紧缚奴在线一区二区三区| 精品久久人人做人人爱| 国产一区 二区| 久久婷婷一区二区三区| 国产在线国偷精品免费看| 国产三级欧美三级日产三级99| 天堂va蜜桃一区二区三区| 欧美一区二区在线观看| 美女网站色91| 久久日韩精品一区二区五区| 成人avav在线| 亚洲无人区一区| 日韩一区二区精品在线观看| 国内精品视频666| 国产精品久久影院| 欧美丝袜自拍制服另类| 麻豆精品久久精品色综合| 国产精品人妖ts系列视频| 色94色欧美sute亚洲线路一ni| 久久这里只有精品6| 99精品视频免费在线观看| 日韩一区精品视频| 国产精品沙发午睡系列990531| 免费成人av在线播放| 国产精品无人区| 制服丝袜激情欧洲亚洲| 国产精品小仙女| 亚洲高清视频在线| 欧美精品一区二区高清在线观看| 三级成人在线视频| 精品久久一二三区| 99精品一区二区三区| 久久精品久久久精品美女| 成人欧美一区二区三区在线播放| 丁香亚洲综合激情啪啪综合| 亚洲激情自拍偷拍| 精品处破学生在线二十三| 97久久精品人人做人人爽50路| 亚洲欧洲成人精品av97| 在线成人免费视频| 91麻豆免费观看| 国产成人在线视频播放| 日韩激情一区二区| 尤物视频一区二区| 国产欧美一区二区精品性色超碰| 国产91精品一区二区麻豆亚洲| 久久久91精品国产一区二区三区| 久久国产麻豆精品| 亚洲一区二区高清| 一区二区中文字幕在线| 久久蜜桃一区二区| 制服.丝袜.亚洲.中文.综合| 色8久久精品久久久久久蜜| 国产另类ts人妖一区二区| 日韩av在线发布| 亚洲一二三四在线| 亚洲欧美视频在线观看视频| 国产日韩三级在线| 精品91自产拍在线观看一区| 欧美高清视频不卡网| 91国偷自产一区二区三区成为亚洲经典 | 中文av一区特黄| 久久精品亚洲麻豆av一区二区 | 国产在线播放一区三区四| 香蕉av福利精品导航| 亚洲激情五月婷婷| 亚洲日本在线视频观看| 中文一区在线播放| 国产精品久久久久久久裸模| 国产亚洲成aⅴ人片在线观看 | 国产精品三级在线观看| 国产视频视频一区| 国产网站一区二区| 欧美激情综合五月色丁香| 久久久国产午夜精品| 久久久久国产成人精品亚洲午夜| 色婷婷综合视频在线观看| 色激情天天射综合网| 色8久久人人97超碰香蕉987| 在线视频观看一区| 欧美日韩国产另类一区| 欧美日韩国产综合视频在线观看| 风间由美一区二区三区在线观看| 亚洲一区二区3| 日韩精品国产精品| 久久91精品国产91久久小草| 蜜臀av亚洲一区中文字幕| 麻豆国产91在线播放| 国产一区二区三区综合| 粉嫩蜜臀av国产精品网站|