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

📄 characterinfo.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	else
		sprintf(buff, "");

	CMRButton* btn = (CMRButton*) GetDlgItem(nControlIdx);
	btn->SetWindowText(buff);
	btn->SetData(pAMugong->wIconIdx);
	btn->SetColorText(COLOR_BUTTON_CHANGED);
	////////////////////////////////////////////////////////////
}

void CCharacterInfo::OnCharacterBtnAddpyoguk() 
{
	// TODO: Add your control notification handler code here
	WORD wCount = m_cbPyoguk.GetCount();
	PHYOKUK_TOTALINFO* pyoguk = &m_pDocument->m_sPyoguk;
	char buff[256] = {0,};
	ITEM_INFO* pInfo;

	if( wCount < TAB_PYOGUK_NUM )
	{
		if( !m_cbPyoguk.IsWindowEnabled() )
		{
			EnablePyogukInfoControl();
			m_StatusEdit[eCharTemp_PYOGUKMONEY].SetWindowTextEx("0", 1);
		}

		sprintf(buff,"Tab%d", wCount+1);
		m_cbPyoguk.InsertString(wCount, buff);
		m_cbPyoguk.SetCurSel(wCount);

		int tab = wCount*TABCELL_PYOGUK_NUM;

		for(int i=0;i<TABCELL_PYOGUK_NUM;++i)
		{
			if( pyoguk->Pyokuk[tab+i].wIconIdx != 0)
			{
				pInfo = GAMERESRCMNGR->GetItemInfo(pyoguk->Pyokuk[tab+i].wIconIdx);
				if( pInfo )
					sprintf(buff, pInfo->ItemName);
				else
					sprintf(buff, "%d", pyoguk->Pyokuk[tab+i].wIconIdx);
			}
			else
				sprintf(buff, "");

			m_PyoGukItem[i].SetWindowText(buff);
			m_PyoGukItem[i].SetData(pyoguk->Pyokuk[tab+i].wIconIdx);
		}

		if( (wCount+1) == TAB_PYOGUK_NUM )
			m_btnPyogukAdd.EnableWindow(FALSE);

		m_pDocument->SetSaveFlag(eCF_PyogukInfo);
	}
	else
		return;

	pyoguk->PyokukCount = wCount;
	m_StatusEdit[eCharTemp_PYOGUKMONEY].SetMaxValue(1000000 + wCount*1000000);
}

void CCharacterInfo::OnCharacterBtnSave() 
{
	if( m_wPower != eOperPower_Master )
		return;

	m_pDocument->ProcessChangeManager();
}

HBRUSH CCharacterInfo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr;

	switch (nCtlColor) 
	{ 
	case CTLCOLOR_EDIT:
		{
			UINT nId = pWnd->GetDlgCtrlID();
			if( nId >= IDC_CHAR_NAME && nId < IDC_CHAR_ABILITYPOINT+1 )
			{
				if( ((CMREdit*)pWnd)->HasSaveData() )
					pDC->SetTextColor( ((CMREdit*)pWnd)->GetEditTextColor() );
			}
			else
				hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor); 
		}
		break;
	default:
			hbr = CDialog::OnCtlColor(pDC,pWnd,nCtlColor); 
		break;
	}

	return hbr;
}

void CCharacterInfo::MakeToolTip(BYTE type, POSTYPE pos, WORD idx, char* str)
{
	CString buff;
	BOOL bOption = FALSE;
	WORD OptionIdx = 0;

	if( idx == 0 ) return;

	switch(type)
	{
	case 0: // inven item
		{
			ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
			if( !pInfo ) break;

			buff.Format("\n");
			strcat(str, buff.GetBuffer(0));

			buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
			strcat(str, buff.GetBuffer(0));

			if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability) )
			{
				bOption = TRUE;
				OptionIdx = m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability;

				buff.Format("\nOption Num : %d", m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability);
				strcat(str, buff.GetBuffer(0));
			}
			else
			{
				if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
				{
					buff.Format("\nCount : %d", m_pDocument->m_sInven.Inventory[pos+m_nCurInvenTab].Durability);
					strcat(str, buff.GetBuffer(0));
				}
			}
		}
		break;
	case 1: // wear item
		{
			ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
			if( !pInfo ) break;

			buff.Format("\n");
			strcat(str, buff.GetBuffer(0));
			
			buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
			strcat(str, buff.GetBuffer(0));

			if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sInven.WearedItem[pos].Durability) )
			{
				bOption = TRUE;
				OptionIdx = m_pDocument->m_sInven.WearedItem[pos].Durability;

				buff.Format("\nOption Num : %d", m_pDocument->m_sInven.WearedItem[pos].Durability);
				strcat(str, buff.GetBuffer(0));
			}
			else
			{
				if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
				{
					buff.Format("\nCount : %d", m_pDocument->m_sInven.WearedItem[pos].Durability);
					strcat(str, buff.GetBuffer(0));
				}
			}
		}
		break;
	case 2: // pyoguk item
		{
			ITEM_INFO* pInfo = GAMERESRCMNGR->GetItemInfo(idx);
			if( !pInfo ) break;

			buff.Format("\n");
			strcat(str, buff.GetBuffer(0));

			buff.Format("Item : %s(%d)", pInfo->ItemName, pInfo->ItemIdx);
			strcat(str, buff.GetBuffer(0));

			if( GAMERESRCMNGR->IsOptionItem(pInfo->ItemIdx, m_pDocument->m_sPyoguk.Pyokuk[pos].Durability) )
			{
				bOption = TRUE;
				OptionIdx = m_pDocument->m_sPyoguk.Pyokuk[pos].Durability;

				buff.Format("\nOption Num : %d", m_pDocument->m_sPyoguk.Pyokuk[pos].Durability);
				strcat(str, buff.GetBuffer(0));
			}
			else
			{
				if( GAMERESRCMNGR->IsDupItem(pInfo->ItemIdx) )
				{
					buff.Format("\nCount : %d", m_pDocument->m_sPyoguk.Pyokuk[pos].Durability);
					strcat(str, buff.GetBuffer(0));
				}
			}
		}
		break;
	case 3: // 公傍
	case 4: // 柳过
		{
			SKILLINFO* pSkill = GAMERESRCMNGR->GetSkillInfo(idx);
			if(!pSkill) break;
			buff.Format("\n");
			strcat(str, buff.GetBuffer(0));

			buff.Format("Skill : %s(%d)", pSkill->SkillName , pSkill->SkillIdx);
			strcat(str, buff.GetBuffer(0));
			buff.Format("\n Skill Level : %d", m_pDocument->m_sMugong.mugong[pos].Sung);
			strcat(str, buff.GetBuffer(0));
			buff.Format("\nSkill Exp : %d", m_pDocument->m_sMugong.mugong[pos].ExpPoint);
			strcat(str, buff.GetBuffer(0));
		}
		break;
	case 5: // ability
		{
			CAbilityInfo* pAbility = GAMERESRCMNGR->GetAbilityInfo(idx);
			if(!pAbility) break;

			buff.Format("\n");
			strcat(str, buff.GetBuffer(0));

			buff.Format("Ability : %s(%d)", pAbility->GetInfo()->Ability_name , pAbility->GetInfo()->Ability_index);
			strcat(str, buff.GetBuffer(0));

		//	buff.Format("\nAbility Level : %d", m_pDocument->GetCharacterAbillityLevel(pAbility->GetKind(), pAbility->GetInfo()->Ability_index));
		//	strcat(str, buff.GetBuffer(0));
		}
		break;
	default:
		return;
	}

	if( bOption )
	{
		ITEM_OPTION_INFO* pOptionInfo = m_pDocument->GetItemOptionInfo(OptionIdx);
		if(pOptionInfo)
		{
			char OptionBuff[40] = {0,};

			if( pOptionInfo->GenGol != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Physique", pOptionInfo->GenGol);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->MinChub != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Agility", pOptionInfo->MinChub);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->CheRyuk != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Strength", pOptionInfo->CheRyuk);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->SimMek != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Heart", pOptionInfo->SimMek);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->Life != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Life", pOptionInfo->Life);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->NaeRyuk != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Mana", pOptionInfo->NaeRyuk);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->Shield != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Shield", pOptionInfo->Shield);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->PhyAttack != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Attack", pOptionInfo->PhyAttack);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->CriticalPercent != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Critical", pOptionInfo->CriticalPercent);
				strcat(str, OptionBuff);
			}

			if( pOptionInfo->PhyDefense != 0 )
			{
				sprintf(OptionBuff, "\n%s : +%d", "Defense", pOptionInfo->PhyDefense);
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Fire Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE));
//				sprintf(OptionBuff, "\n%s : %d%%", "Fire Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_FIRE)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER) != 0.00f )
			{

				sprintf(OptionBuff, "\n%s : %.2f%%", "Water Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER));
//				sprintf(OptionBuff, "\n%s : %d%%", "Water Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_WATER)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Tree Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE));
//				sprintf(OptionBuff, "\n%s : %d%%", "Tree Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_TREE)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Iron Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON));
//				sprintf(OptionBuff, "\n%s : %d%%", "Iron Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_IRON)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Earth Resist", pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH));
//				sprintf(OptionBuff, "\n%s : %d%%", "Earth Resist", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_EARTH)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "None", pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR));
//				sprintf(OptionBuff, "\n%s : %d%%", "None", (int)(pOptionInfo->AttrRegist.GetElement_Val(ATTR_NOATTR)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Fire Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE));
//				sprintf(OptionBuff, "\n%s : %d%%", "Fire Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_FIRE)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Water Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER));
//				sprintf(OptionBuff, "\n%s : %d%%", "Water Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_WATER)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Tree Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE));
//				sprintf(OptionBuff, "\n%s : %d%%", "Tree Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_TREE)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Iron Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON));
//				sprintf(OptionBuff, "\n%s : %d%%", "Iron Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_IRON)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "Earth Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH));
//				sprintf(OptionBuff, "\n%s : %d%%", "Earth Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_EARTH)*100));
				strcat(str, OptionBuff);
			}

			if(pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR) != 0.00f )
			{
				sprintf(OptionBuff, "\n%s : %.2f%%", "None Attack", pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR));
//				sprintf(OptionBuff, "\n%s : %d%%", "None Attack", (int)(pOptionInfo->AttrAttack.GetElement_Val(ATTR_NOATTR)*100));
				strcat(str, OptionBuff);
			}
		}
	}

	buff.Format("\n");
	strcat(str, buff.GetBuffer(0));
}

void CCharacterInfo::ResetTooltip()
{
	m_TTctrl.Activate(FALSE);
}

//
void CCharacterInfo::OnQuestinfo() 
{
	m_QuestInfoDlg.SetInitData( m_pDocument->GetDocumentIdx(), m_pDocument->m_sBaseInfo.dwObjectID, m_pDocument->m_sBaseInfo.ObjectName );
	m_QuestInfoDlg.DoModal();
}

void CCharacterInfo::UpdateMainQuestData( TMSG_MAINQUESTINFO* pMsg )
{
	if( m_QuestInfoDlg.m_bInit )
		m_QuestInfoDlg.UpdateQuestListCtrl( pMsg );
}

void CCharacterInfo::UpdateSubQuestData( TMSG_SUBQUESTINFO* pMsg )
{
	if( m_QuestInfoDlg.m_bInit )
		m_QuestInfoDlg.UpdateSubQuestData( pMsg );
}

void CCharacterInfo::OnButtonChangeLoginpoint() 
{
	int index = m_cbLoginPoint.GetCurSel();
	if( index > -1 )
	{
		if( MessageBox( "Are You Really Change User LoginPoint?", "Confirm", MB_OKCANCEL ) == IDOK )
		{
			char mapname[128] = {0,};
			m_cbLoginPoint.GetLBText( index, mapname );

			DWORD mapnum = GAMERESRCMNGR->GetMapNum( mapname );
			if( mapnum > 0 )
				m_pDocument->ChangeLoginPoint( mapnum );
		}
	}	
}

void CCharacterInfo::ChangeLoginPoint( DWORD dwMapNum )
{
	if( dwMapNum > 0 )
	{
		CString str;
		str.Format( "%s", GAMERESRCMNGR->GetMapName( dwMapNum ) );
		m_StatusEdit[eCharTemp_LoginPoint].SetWindowTextEx( (char*)(LPCTSTR)str, 0 );
	}
}

BOOL CCharacterInfo::CheckItemPosition( DWORD dwKind, DWORD Pos )
{
	switch( dwKind )
	{
	case 0:		// inven
		{
			if( m_InvenItem[Pos].GetData() != 0 )
				return FALSE;
			else
				return TRUE;
		}
		break;
	}

	return FALSE;
}

⌨️ 快捷键说明

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