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

📄 chrwarehouse.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ChrWareHouse.cpp : implementation file
//

#include "stdafx.h"
#include "rmtool.h"
#include "ChrWareHouse.h"
#include "CharacterView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChrWareHouse dialog


CChrWareHouse::CChrWareHouse(CWnd* pParent /*=NULL*/)
	: CDialog(CChrWareHouse::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChrWareHouse)
	m_nGuildNumber = 0;
	//}}AFX_DATA_INIT

	InitVariable();
}


void CChrWareHouse::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChrWareHouse)
	DDX_Control(pDX, IDC_GUILD_ITEM_LIST, m_listGuildItem);
	DDX_Text(pDX, IDC_GUILD_NUMBER, m_nGuildNumber);

	DDX_Text(pDX, IDC_UPDATE_HAN_NAME, m_UpdateHanName);
	DDX_Text(pDX, IDC_UPDATE_NO, m_UpdateNo);
	DDX_Text(pDX, IDC_UPDATE_TYPE, m_UpdateType);
	DDX_Text(pDX, IDC_MUCH_MAX, m_MuchMax);
	DDX_Text(pDX, IDC_MUCH_NOW, m_MuchNow);
	DDX_Text(pDX, IDC_MUCH_TYPE, m_MuchType);
	DDX_Text(pDX, IDC_MUTANT_GRADE, m_MutantGrade);
	DDV_MinMaxUInt(pDX, m_MutantGrade, 0, 15);
	DDX_Text(pDX, IDC_MUTANT_KIND1, m_MutantKind1);
	DDV_MinMaxUInt(pDX, m_MutantKind1, 0, 255);
	DDX_Text(pDX, IDC_MUTANT_KIND2, m_MutantKind2);
	DDV_MinMaxUInt(pDX, m_MutantKind2, 0, 255);
	DDX_Text(pDX, IDC_LIMIT, m_UpdateLimit);
	DDX_Text(pDX, IDC_MUTANT_KIND3, m_MutantKind3);
	DDV_MinMaxUInt(pDX, m_MutantKind3, 0, 255);
	DDX_Text(pDX, IDC_E_LIMITRESULT, m_LimitResult);
	DDX_Text(pDX, IDC_HIGH_LEVEL, m_iHighLevel);
	DDV_MinMaxInt(pDX, m_iHighLevel, 0, 8);
	DDX_Text(pDX, IDC_IS_DYNAMIC, m_bIsDynamic);
	DDV_MinMaxInt(pDX, m_bIsDynamic, 0, 1);

	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChrWareHouse, CDialog)
	//{{AFX_MSG_MAP(CChrWareHouse)
	ON_BN_CLICKED(IDC_SEARCH_GUILD, OnSearchGuild)
	ON_NOTIFY(NM_DBLCLK, IDC_GUILD_ITEM_LIST, OnDblclkGuildItemList)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_NOTIFY(NM_CLICK, IDC_GUILD_ITEM_LIST, OnClickGuildItemList)
	ON_BN_CLICKED(IDC_INSERT, OnInsert)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChrWareHouse message handlers

void CChrWareHouse::InitVariable()
{
	m_UpdateHanName.Empty();// = "";
	m_UpdateType.Empty();// = "";
	m_MuchType.Empty();// = "";
	m_LimitResult.Empty();//= "";

	//m_nGuildNumber = 0;
	m_UpdateNo = 0;
	m_MuchMax= 0;
	m_MuchNow=0;
	m_MutantGrade=0;
	m_MutantKind1=0;
	m_MutantKind2=0;
	m_UpdateLimit=0;
	m_MutantKind3=0;	
	m_iHighLevel=0;
	m_bIsDynamic=0;

}

void CChrWareHouse::RefreshData()						//拳搁俊 谎妨霖促.
{	
	InitVariable();

	//if( !IsBadReadPtr( m_listGuildItem, sizeof( m_listGuildItem) ))
		m_listGuildItem.DeleteAllItems();

	UpdateData( false );
}

BOOL CChrWareHouse::OnInitDialog() 
{
	CDialog::OnInitDialog();

	// 府胶飘 牧飘费 檬扁拳 -----
	LV_COLUMN lvcolumn;
	char list[][50] = { "index", "item_no", "guild_code", "name", "date" };
	int width[] = { 50, 70, 30, 120, 120 };

	m_listGuildItem.SetExtendedStyle(LVS_EX_FULLROWSELECT); //|LVS_EX_CHECKBOXES); 

	for( int i=0; i<5; i++ )
	{
		lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
		lvcolumn.fmt = LVCFMT_LEFT;
		lvcolumn.pszText = list[i];
		lvcolumn.iSubItem = i;
		lvcolumn.cx = width[i];

		m_listGuildItem.InsertColumn( i, &lvcolumn );
	}
	// ---------------------------


	m_pApp = (CRMToolApp*)AfxGetApp();

	UpdateData( 0 );	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

/////////////////////////////////////////////////////////////////////////////////////
WCHAR *KSCToUnicode( LPCTSTR str2, WCHAR *str1 )
{
	if( !g_pDb ) return 0;
	g_pDb->KSCToUnicode( (char *)str2, str1 );
	return str1;
}


void SetListCtrl( SQLItemAttr1 *pItem, int item_max, CListCtrl *list )
{
	list->DeleteAllItems();

	LV_ITEM	lvitem;
	lvitem.mask =	LVIF_TEXT;

	CString szData;
	for( int i=0; i<item_max; i++ )
	{
		lvitem.iItem = i;
			
		lvitem.iSubItem = 0;
		szData.Format( "%d", pItem[i].index );
		lvitem.pszText = (char *)(LPCTSTR)szData;
		list->InsertItem( &lvitem );

		lvitem.iSubItem = 1;
		szData.Format( "%d", pItem[i].item_no );
		lvitem.pszText = (char *)(LPCTSTR)szData;
		list->SetItem( &lvitem );

		lvitem.iSubItem = 2;
		szData.Format( "%d", pItem[i].guild_code );
		lvitem.pszText = (char *)(LPCTSTR)szData;
		list->SetItem( &lvitem );

		lvitem.iSubItem = 3;
		szData = pItem[i].name;
		lvitem.pszText = (char *)(LPCTSTR)szData;
		list->SetItem( &lvitem );

		lvitem.iSubItem = 4;
		CTime time( pItem[i].time.year, 
			pItem[i].time.month,
			pItem[i].time.day,
			pItem[i].time.hour,
			pItem[i].time.minute,
			pItem[i].time.second );
		szData = time.FormatGmt( "%Y-%m-%d %H:%M:%S" );
		lvitem.pszText = (char *)(LPCTSTR)szData;
		list->SetItem( &lvitem );
	}
}
/////////////////////////////////////////////////////////////////////////////////////

void CChrWareHouse::OnSearchGuild() 
{
	UpdateData(1);
	int guild_code = m_nGuildNumber;
	if( !guild_code ) return;

	CCharacterView *pView = (CCharacterView*)GetParent();


	int item_max = 0;
	CString szQuerry;
	WCHAR szwQuerry[512];
	szQuerry.Format( "SELECT count( cn ) FROM guild_item WHERE guild_code = %d", guild_code);

	int result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), &item_max, 1, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
	if(result < 0)
	{
		MessageBox( "Fail no. 1, get item count...",NULL,NULL);
		return;
	}

	if( !item_max ) return;

	SQLItemAttr1 *pItem;
	pItem = new SQLItemAttr1[item_max];

	szQuerry.Format( "SELECT cn, item_no, guild_code, name, date FROM guild_item WHERE guild_code = %d ORDER BY cn", guild_code );
	result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), pItem,item_max, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
	if(result < 0)
	{
		MessageBox( "Fail no. 2, get item index",NULL,NULL);
		delete [] pItem;
		return;
	}

	RefreshData();
	SetListCtrl( pItem, item_max, &m_listGuildItem );
	delete [] pItem;

	
	UpdateData( 0 );
}

void CChrWareHouse::OnDblclkGuildItemList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CCharacterView *pView = (CCharacterView*)GetParent();

	NM_LISTVIEW *pNMListView = (NM_LISTVIEW *)pNMHDR;
	int listdatanum = pNMListView->iItem;

	char temp[50];
	m_listGuildItem.GetItemText( listdatanum, 0, temp, 50 );
	int index = atoi( temp );
	if( !index ) return;

	SQLItemAttr2 item_data;
	CString szQuerry;
	WCHAR szwQuerry[512];

	szQuerry.Format( "SELECT item_no, attr1, attr2, attr3, attr4, attr5, attr6 FROM \
		guild_item WHERE cn = %d ", index );
	int result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), &item_data, 1, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
	if(result < 0)
	{
		MessageBox( "Fail no. 3, get item index",NULL,NULL);
		return;
	}
	if( !item_data.item_no ) return;

	ItemAttr item;
	item.item_no = (WORD) item_data.item_no;
	memcpy( item.attr, item_data.attr, sizeof( DWORD ) *6 );
	SetItemView( &item );
	UpdateData( 0 );	
	*pResult = 0;
}

void CChrWareHouse::OnDelete() 
{
	if( !RIGHT(MASK_25) )	return;
	if( m_UpdateNo<= 0 ) {AfxMessageBox("Selete Item~~");return;}
	if( MessageBox( "Do you want to Delete WareHouse Item?", "DELETE", MB_YESNO ) != IDYES) return;

	CCharacterView *pView = (CCharacterView*)GetParent();

	CString szQuerry;
	WCHAR szwQuerry[512];
	int nItem, index, result;

	int count = m_listGuildItem.GetItemCount();
	while(count > 0)
	{
		nItem = m_listGuildItem.GetNextItem( -1, LVNI_SELECTED );
		if( nItem < 0 ) break;

		//char temp[50];
		CString szCn, szItem, szGuild, szName, szDate;
		//m_listGuildItem.GetItemText( nItem, 0, temp, 50 );
		szCn	= m_listGuildItem.GetItemText( nItem, 0);//, szCn.GetBuffer(0), 50 );
		szItem	= m_listGuildItem.GetItemText( nItem, 1);//, szCn.GetBuffer(0), 50 );
		szGuild	= m_listGuildItem.GetItemText( nItem, 2);//, szCn.GetBuffer(0), 50 );
		szName	= m_listGuildItem.GetItemText( nItem, 3);//, szCn.GetBuffer(0), 50 );
		szDate	= m_listGuildItem.GetItemText( nItem, 4);//, szCn.GetBuffer(0), 50 );
		index = atoi( szCn.GetBuffer(0) );

		//for extensionlog
		WriteLog( szCn, szItem, szGuild, szName, szDate );

		m_listGuildItem.DeleteItem(nItem);

		if( !index ) continue;

⌨️ 快捷键说明

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