コード例 #1
0
ファイル: CItem.cpp プロジェクト: SendMeAnything/drserver
ItemAttr GenerateItem( const int item_no, DWORD dur)
{
	ItemAttr item = {0, };
	CItem *t = ItemUnit( item_no );
	if( !t ) {return item;}
	if(!t->GetItemImage() || !t->GetObjectNumber()){return item;}//오브젝트 이미지 넘버 없으면 지워짐

	item.item_no = item_no;
	
	if( !dur ) 
	{
		item.attr[IATTR_DURATION] = CreateItemDuration( item_no/1000 , item_no%1000 );
	}
	else
	{
		if( t->GetRbutton() == DIVIDE_ITEM ) 
		{
			item.attr[IATTR_DURATION] = dur;
		}
		else 
		{
			item.attr[IATTR_DURATION] = MAKELONG( dur, dur );
		}
	}
	item.attr[IATTR_LIMIT] = g_curr_time;

	return item;
}
コード例 #2
0
void CheckItem( short int cn ) // 잘못된 아이템을 가지고 있는지 
{
	bool fResendItem = false;
	CHARLIST *ch = &connections[cn].chrlst;
	if( !ch ) return;

	int a, b, c;
	for( a=0; a<3; a++ )
		for( b=0; b<3; b++ )
			for( c=0; c<8; c++ )
				if( ch->inv[a][b][c].item_no )
				{
					ItemAttr *item = &ch->inv[a][b][c];
					CheckAutoDivideMoney( item, cn ) ;

					int type, num;
					getItemIndex( item->item_no, type, num );
					CItem *t = ItemUnit(type, num);
					if( !t ) 
					{
						memset( item, 0, sizeof( ItemAttr ) );
						continue;
					}
					if( !t->GetItemImage() || !t->GetObjectNumber() ) 
					{
						memset( item, 0, sizeof( ItemAttr ) );
						continue;
					}
				}

	for( c=0; c<8; c++ )
		if( ch->equip[c].item_no )
		{
			ItemAttr *item = &ch->equip[c];
			int type, num;
			getItemIndex( item->item_no, type, num );
			CItem *t = ItemUnit(type, num);
			if( !t ) 
			{
				memset( item, 0, sizeof( ItemAttr ) );
				continue;
			}
			if( !t->GetItemImage() || !t->GetObjectNumber() ) 
			{
				memset( item, 0, sizeof( ItemAttr ) );
				continue;
			}
		}

	for( c=0; c<7; c++ )
		if( ch->quick[c].item_no )
		{
			if(c >= 5)continue;//soto-030514 심볼 아이템은 체크 하지 않는다.

			ItemAttr *item = &ch->quick[c];
			int type, num;
			getItemIndex( item->item_no, type, num );
			CItem *t = ItemUnit(type, num);
			if( !t ) 
			{
				memset( item, 0, sizeof( ItemAttr ) );
				continue;
			}
			if( !t->GetItemImage() || !t->GetObjectNumber() ) 
			{
				memset( item, 0, sizeof( ItemAttr ) );
				continue;
			}
		}
		
	return;
}