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

📄 logitemmoneypage.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	UpdateLCItemMoneyLog( eLog_Max );

	m_cbViewerHow.EnableWindow( TRUE );
	m_btnViewerOption.EnableWindow( TRUE );
}


void CLogItemMoneyPage::ReleaseLogTable()
{
	LOGITEMMONEY* pData = NULL;
	m_LogTable.SetPositionHead();
	while( pData = m_LogTable.GetData() )
		delete pData;
	m_LogTable.RemoveAll();
}

void CLogItemMoneyPage::InitLCItemMoneyLog()
{
	m_lcItemMoneyLog.DeleteAllItems();

	// Delete all of the columns.
	int i = 0;
	int nColumnCount = m_lcItemMoneyLog.GetHeaderCtrl()->GetItemCount();
	for( i = 0; i < nColumnCount; ++i )
		m_lcItemMoneyLog.DeleteColumn( 0 );

	char* tcolumn[14] = { "ItemDBIdx", "ItemName", "ItemDur", "How", "CurrentOwner", "CharIdx", "Money",
						 "BeforeOwner", "CharIdx", "Money", "ChangeValue", "LogDate", "FromPos", "ToPos" };
	int tcolumnsize[14] = { 80, 80, 80, 50, 80, 60, 40, 80, 60, 40, 40, 100, 40, 40 };
	
	// listctrl column 汲沥
	LV_COLUMN lvcolumn;
	lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
	lvcolumn.fmt = LVCFMT_CENTER;
	int index = 0;
	for( i = 0; i < 14; ++i )
	{
		if( m_bVOption[i] )
		{
			lvcolumn.iSubItem = index;
			lvcolumn.cx = tcolumnsize[i];
			lvcolumn.pszText = tcolumn[i];
			m_lcItemMoneyLog.InsertColumn( index, &lvcolumn );
			++index;
		}
	}
	// style
	DWORD dwExStyle = m_lcItemMoneyLog.GetExtendedStyle();
	dwExStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
	m_lcItemMoneyLog.SetExtendedStyle( dwExStyle );
}

void CLogItemMoneyPage::UpdateLCItemMoneyLog( DWORD dwHow )
{
	m_lcItemMoneyLog.DeleteAllItems();

	char temp[256];	
	LV_ITEM lvitem;
	LOGITEMMONEY* pData = NULL;
	m_LogTable.SetPositionHead();
	while( pData = m_LogTable.GetData() )
	{
		int i = 0;
		int index = 0;
		if( pData->dwLogType == dwHow || dwHow == eLog_Max )
		{
			lvitem.iItem = m_lcItemMoneyLog.GetItemCount();	// 青

			lvitem.mask = LVIF_TEXT;
			lvitem.stateMask = LVIS_SELECTED;
			lvitem.state = INDEXTOSTATEIMAGEMASK(1);
			lvitem.iSubItem = i;
			
			for( i = 0; i < 14; ++i )
			{
				if( m_bVOption[i] )
					break;
			}
			lvitem.pszText = GetLCData( pData, i, temp );
			m_lcItemMoneyLog.InsertItem( &lvitem );
	
			for( int j = i+1; j < 14; ++j )
			{
				if( m_bVOption[j] )
					m_lcItemMoneyLog.SetItemText( lvitem.iItem, ++index, GetLCData( pData, j, temp ) );
			}
		}
	}
}

char* CLogItemMoneyPage::GetLCData( LOGITEMMONEY* pData, DWORD dwIndex, char* temp )
{
	switch( dwIndex )
	{
	case 0:		return itoa( pData->dwItemDBIdx, temp, 10 );
	case 1:		return GetItemName( pData->dwItemIdx, temp );
	case 2:		return itoa( pData->dwItemDur, temp, 10 );
	case 3:		return GetLogType( pData->dwLogType, temp );
	case 4:		return GetName( pData->dwLogType, pData->dwToChrIdx, pData->sToChrName );
	case 5:		return itoa( pData->dwToChrIdx, temp, 10 );
	case 6:		return itoa( pData->dwToTotalMoney, temp, 10 );
	case 7:		return GetName( pData->dwLogType, pData->dwFromChrIdx, pData->sFromChrName );
	case 8:		return itoa( pData->dwFromChrIdx, temp, 10 );
	case 9:		return itoa( pData->dwFromTotalMoney, temp, 10 );
	case 10:	return itoa( pData->dwChangeMoney, temp, 10 );
	case 11:	return pData->sRegDate;
	case 12:	return itoa( pData->dwItemFromPosition, temp, 10 );
	case 13:	return itoa( pData->dwItemToPosition, temp, 10 );
	default:	sprintf( temp, "");	return temp;
	}	
}

char* CLogItemMoneyPage::GetItemName( DWORD dwItemIdx, char* temp )
{
	if( dwItemIdx == 0 )
	{
		sprintf( temp, "Money" );
		return temp;
	}
	ITEM_INFO* pItem = GAMERESRCMNGR->GetItemInfo( dwItemIdx );

	if( pItem == NULL )
		sprintf( temp, "???" );
	else
		sprintf( temp, "%s", pItem->ItemName );

	return temp;
}

char* CLogItemMoneyPage::GetLogType( DWORD dwLogType, char* temp )
{
	switch( dwLogType )
	{
	case eLog_ItemDiscard:	sprintf( temp, "Remove" );	break;

	//item move
	case eLog_ItemMoveInvenToPyoguk:	sprintf( temp, "I ->> W" );	break;
	case eLog_ItemMovePyogukToInven:	sprintf( temp, "W ->> I" );	break;
	case eLog_ItemMoveInvenToMunpa:		sprintf( temp, "I ->> G" );	break;
	case eLog_ItemMoveMunpaToInven:		sprintf( temp, "G ->> I" );	break;
	case eLog_ItemMoveMunpaToMunpa:		sprintf( temp, "G ->> G" );	break;
	//item obtain
	case eLog_ItemObtainBuy:			sprintf( temp, "Buy" );	break;
	case eLog_ItemObtainDivide:			sprintf( temp, "Divide" );	break;
	case eLog_ItemObtainCheat:			sprintf( temp, "GMTool" );	break;
	case eLog_ItemObtainMonster:		sprintf( temp, "Hunt" );	break;
	case eLog_ItemObtainQuest:			sprintf( temp, "Quest" );	break;
	case eLog_ItemObtainPK:				sprintf( temp, "ItemObtainPK" );	break;
		
	case eLog_ItemSell:					sprintf( temp, "Sell" );		break;
	case eLog_ItemUse:					sprintf( temp, "Use" );			break;
	case eLog_StreetStallBuyAll:		sprintf( temp, "StreetStall" );	break;
	case eLog_StreetStallBuyDivide:		sprintf( temp, "StreetStall" );	break;
	case eLog_StreetStallSellDivide:	sprintf( temp, "StreetStall" );	break;

	case eLog_Exchange:					sprintf( temp, "Exchange" );	break;

	case eLog_ItemReinforceSuccess:		sprintf( temp, "ItemReinforceSuccess" );	break;
	case eLog_ItemReinforceFail:		sprintf( temp, "ItemReinforceFail" );	break;

	case eLog_ItemMixSuccess:			sprintf( temp, "ItemMixSuccess" );	break;
	case eLog_ItemMixFail:				sprintf( temp, "ItemMixFail" );	break;
	case eLog_ItemMixBigFail:			sprintf( temp, "ItemMixBigFail" );	break;

	case eLog_ItemDestroyMix:			sprintf( temp, "ItemDestroyMix" );	break;
	case eLog_ItemDestroyReinforce:		sprintf( temp, "ItemDestroyReinforce" );	break;
	case eLog_ItemDestroyUpgrade:		sprintf( temp, "ItemDestroyUpgrade" );	break;
	case eLog_ItemDestroyByWanted:		sprintf( temp, "ItemDestroyByWanted" );	break;
	case eLog_ItemDestroyByBadFame:		sprintf( temp, "ItemDestroyByBadFame" );	break;

	case eLog_MoneyObtainPK:			sprintf( temp, "MoneyObtainPK" );	break;
	//exp obtain
	case eLog_ExpObtainPK:				sprintf( temp, "ExpObtainPK" );	break;
		
	case 1100:							sprintf( temp, "ChangeMoney" );	break;

	// RMTool
	case eLog_RMTool:					sprintf( temp, "RMTool" );	break;
	case 53:							sprintf( temp, "Hunt" );	break;
	case 50:							sprintf( temp, "Buy" );	break;
	case 51:							sprintf( temp, "Divide" );	break;
	case 10:							sprintf( temp, "I ->> W" );	break;
	
	default:							itoa( dwLogType, temp, 10 );		break;
	}
	
	return temp;
}

char* CLogItemMoneyPage::GetName( DWORD dwLogType, DWORD dwIdx, char* temp )
{
	if( strcmp( temp, "(null)" ) == 0 )
		sprintf( temp, "-" );
	if( strcmp( temp, "" ) != 0 )
		return temp;
	

	switch( dwLogType )
	{
	case eLog_ItemDiscard:				return temp;
//	case eLog_ItemMoveInvenToPyoguk:	sprintf( temp, "I ->> W" );	break;
//	case eLog_ItemMovePyogukToInven:	sprintf( temp, "W ->> I" );	break;
//	case eLog_ItemMoveInvenToMunpa:		sprintf( temp, "I ->> G" );	break;
//	case eLog_ItemMoveMunpaToInven:		sprintf( temp, "G ->> I" );	break;
//	case eLog_ItemMoveMunpaToMunpa:		sprintf( temp, "G ->> G" );	break;
	//item obtain
	case eLog_ItemSell:
	case eLog_ItemObtainBuy:
		{
			NPC_LIST* pNpc = GAMERESRCMNGR->GetNpcList( dwIdx );
			if( pNpc == NULL )
				sprintf( temp, "???" );
			else
				sprintf( temp, "%s", pNpc->Name );
		}
		break;
	case eLog_ItemObtainDivide:			return temp;
			
	case eLog_ItemObtainCheat:			sprintf( temp, "-" );	break;
	case eLog_ItemObtainMonster:
		{
			MONSTEREX_LIST* pMonster = GAMERESRCMNGR->GetMonsterInfo( dwIdx );
			if( pMonster == NULL )
				sprintf( temp, "???" );
			else
				sprintf( temp, "%s", pMonster->Name );
		}
		break;
//	case eLog_ItemObtainQuest:			sprintf( temp, "Quest" );	break;
//	case eLog_ItemObtainPK:				sprintf( temp, "PK" );	break;
		
//	case eLog_ItemSell:					sprintf( temp, "Sell" );		break;
//	case eLog_ItemUse:					sprintf( temp, "Use" );			break;
//	case eLog_StreetStall:				sprintf( temp, "StreetStall" );	break;
//	case eLog_Exchange:					sprintf( temp, "Exchange" );	break;
	//die panelty with bad fame.
//	case eLog_ItemDestroyByBadFame:		sprintf( temp, "BadFame" );	break;
//	case eLog_MoneyObtainPK:			sprintf( temp, "PK" );	break;
	//exp obtain
//	case eLog_ExpObtainPK:				sprintf( temp, "PK" );	break;
	case 1100:				sprintf( temp, "-" );	break;
	case eLog_RMTool:					sprintf( temp, "-" );	break;
	default:							sprintf( temp, "???" );		break;
	}

	return temp;
}

void CLogItemMoneyPage::InitComboViewerHow()
{
	m_cbViewerHow.ResetContent();

	char temp[256];

	m_cbViewerHow.AddString( "All Data" );
	m_cbViewerHow.SetItemData( 0, eLog_Max );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemDiscard, temp ) );
	m_cbViewerHow.SetItemData( 1, eLog_ItemDiscard );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemMoveInvenToPyoguk, temp ) );
	m_cbViewerHow.SetItemData( 2, eLog_ItemMoveInvenToPyoguk );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemMovePyogukToInven, temp ) );
	m_cbViewerHow.SetItemData( 3, eLog_ItemMovePyogukToInven );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemMoveInvenToMunpa, temp ) );
	m_cbViewerHow.SetItemData( 4, eLog_ItemMoveInvenToMunpa );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemMoveMunpaToInven, temp ) );
	m_cbViewerHow.SetItemData( 5, eLog_ItemMoveMunpaToInven );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemMoveMunpaToMunpa, temp ) );
	m_cbViewerHow.SetItemData( 6, eLog_ItemMoveMunpaToMunpa );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainBuy, temp ) );
	m_cbViewerHow.SetItemData( 7, eLog_ItemObtainBuy );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainDivide, temp ) );
	m_cbViewerHow.SetItemData( 8, eLog_ItemObtainDivide );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainCheat, temp ) );
	m_cbViewerHow.SetItemData( 9, eLog_ItemObtainCheat );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainMonster, temp ) );
	m_cbViewerHow.SetItemData( 10, eLog_ItemObtainMonster );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainQuest, temp ) );
	m_cbViewerHow.SetItemData( 11, eLog_ItemObtainQuest );
	
	m_cbViewerHow.AddString( GetLogType( eLog_ItemObtainPK, temp ) );
	m_cbViewerHow.SetItemData( 12, eLog_ItemObtainPK );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemSell, temp ) );
	m_cbViewerHow.SetItemData( 13, eLog_ItemSell );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemUse, temp ) );
	m_cbViewerHow.SetItemData( 14, eLog_ItemUse );

	m_cbViewerHow.AddString( GetLogType( eLog_StreetStallBuyAll, temp ) );
	m_cbViewerHow.SetItemData( 15, eLog_StreetStallBuyAll );

	m_cbViewerHow.AddString( GetLogType( eLog_Exchange, temp ) );
	m_cbViewerHow.SetItemData( 16, eLog_Exchange );

	m_cbViewerHow.AddString( GetLogType( eLog_ItemDestroyByBadFame, temp ) );
	m_cbViewerHow.SetItemData( 17, eLog_ItemDestroyByBadFame );

	m_cbViewerHow.AddString( GetLogType( eLog_MoneyObtainPK, temp ) );
	m_cbViewerHow.SetItemData( 18, eLog_MoneyObtainPK );

	m_cbViewerHow.AddString( GetLogType( eLog_ExpObtainPK, temp ) );
	m_cbViewerHow.SetItemData( 19, eLog_ExpObtainPK );

	m_cbViewerHow.AddString( GetLogType( eLog_RMTool, temp ) );
	m_cbViewerHow.SetItemData( 20, eLog_RMTool );

	m_cbViewerHow.SetCurSel( 0 );

	m_cbViewerHow.EnableWindow( FALSE );
}

void CLogItemMoneyPage::OnSelchangeComboViewerHow() 
{
	DWORD dwType = m_cbViewerHow.GetItemData( m_cbViewerHow.GetCurSel() );

	UpdateLCItemMoneyLog( dwType );
}

void CLogItemMoneyPage::OnButtonVieweroption() 
{
	m_ViewerOptionDlg.SetPage( this );
	m_ViewerOptionDlg.DoModal();

	InitLCItemMoneyLog();
	DWORD dwType = m_cbViewerHow.GetItemData( m_cbViewerHow.GetCurSel() );
	UpdateLCItemMoneyLog( dwType );
}

void CLogItemMoneyPage::CommandMessage( UINT nID, int nCode )
{
}

void CLogItemMoneyPage::OnBtnSavetofile() 
{
	DeleteFile( "ItemMoneyLog.txt" );

	FILE* fp = fopen( "ItemMoneyLog.txt", "a+" );
	if( !fp )
		return;

	char* tcolumn[12] = { "ItemDBIdx", "ItemName", "ItemDur", "How", "CurrentOwner", "Money",
						 "BeforeOwner", "Money", "ChangeValue", "LogDate", "FromPos", "ToPos" };

	fprintf( fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", tcolumn[0], tcolumn[1], tcolumn[2],
		tcolumn[3], tcolumn[4], tcolumn[5], tcolumn[6], tcolumn[7], tcolumn[8], tcolumn[9], tcolumn[10], tcolumn[11] );

	char temp1[128] = {0, };
	char temp2[128] = {0, };
	char temp3[128] = {0, };
	char temp4[128] = {0, };
	LOGITEMMONEY* pData = NULL;
	m_LogTable.SetPositionHead();
	while( pData = m_LogTable.GetData() )
	{
		fprintf( fp, "%d\t%s\t%d\t%s\t%s\t%d\t%s\t%d\t%d\t%s\t%d\t%d\n", pData->dwItemDBIdx, GetItemName( pData->dwItemIdx, temp1 ), pData->dwItemDur,
			GetLogType( pData->dwLogType, temp2 ), GetName( pData->dwLogType, pData->dwToChrIdx, pData->sToChrName ), pData->dwToTotalMoney,
			GetName( pData->dwLogType, pData->dwFromChrIdx, pData->sFromChrName ), pData->dwFromTotalMoney,
			pData->dwChangeMoney, pData->sRegDate, pData->dwItemFromPosition, pData->dwItemToPosition );
	}

	fclose( fp );
}

void CLogItemMoneyPage::ChangeFont()
{
	m_Font.CreatePointFont(100, "Arial");
	m_lcItemMoneyLog.SetFont( &m_Font );
}

⌨️ 快捷键说明

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