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

📄 basedata.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
////////////////////////////////////////////////////////////////////////////////////////
//	DBData.cpp : implementation file
//
//
//
//
////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "BaseData.h"
#include "MapDBAccess.h"		// DATA BASE 
#include "Map.h"
#include "QuestEngine.h"		//	Quest
#include "Param_MapServer.h"



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

////////////////////////////////////////////////////////////////////////////////////////
//	Global 函荐
////////////////////////////////////////////////////////////////////////////////////////
extern	CQuestEngine		*g_pQuestEngine;	//	Quest Engine
extern	CDBConnection		g_AccountDB;		//	AccountDB
extern	Map					*g_pMap;			//	MAP	沥焊

////////////////////////////////////////////////////////////////////////////////////////
//	DB Data
////////////////////////////////////////////////////////////////////////////////////////
BaseData::BaseData()
{
	memset( _RARE_ENCAHTS, 0, sizeof( _RARE_ENCAHTS ) );		// 2004-10-26 by kuma
}


////////////////////////////////////////////////////////////////////////////////////////
//	Load等 葛电 沥焊甫 Remove矫糯 
////////////////////////////////////////////////////////////////////////////////////////
BaseData::~BaseData()
{
	Clean_MapInfor();			//  檬扁 甘沥焊 昏力 
	Clean_InitStat();			//	檬扁 荐摹 蔼阑 昏力
	Clean_LevelUP();			//	Level UP Data甫 昏力
	Clean_BaseItem();			//	Delete Base Item阑 昏力 矫糯 

	Clean_Setitem();			//  SETTIME		

	Clean_LareEnchantChart();	//	Lare Enchant Chart 单捞鸥甫 秦力
	Clean_BaseSkill();			//	Delete DB俊辑 Skill沥焊
	Clean_BaseNPC();			//	Delete BASE NPC	
	Clean_SellItem();			//	Delete NPC	魄概 ITEM沥焊
	Clean_LinkMap();			//	Delete Link Map
	Clean_UpgradeChart();
	Clean_UpgradePercent();		//  Upgrade PecentChart 
	Clean_QuestChart();			//	QUEST CHART

#ifdef DEF_TITLESYSTEM
	Clean_TitleChart();			//	Jason 2004-05-08
#endif

#ifdef DEF_QUESTITEM			
	Clean_QuestItemChart();		//	Jason 2004-06-08
#endif

	Clean_PKChaoChart();		//	Duke	2004-06-18


#ifdef DEF_SKILLDROP
	Clean_SkillDropChart();
#endif


	Clean_GuildSkillChart();			//Jason 2004-06-21	


#if defined(DEF_SPEEDHACK) || defined(DEF_KORSPEEDHACK)
	Clean_HackingChart();				//Jason 2004-09-20-china
#endif

#ifdef DEF_PRODUCTION_DECOMPOSITON
	Clean_HalconChart();				//Jason 2004-10-13
#endif

#if defined(DEF_PRODUCTION_DECOMPOSITON) || defined(DEF_KUMA_GAMBLE)
	Clean_ProductionChart();
#endif

#ifdef DEF_KUMA_GAMBLE
	Clean_GambleNormalItemChart();
	Clean_GambleItemChart();
#endif
}


////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::bConnectDB()
{
#ifdef CHINESE_VERSION

#ifdef DEF_NEWREGISTRY
	if(!g_AccountDB.DirectConnect(_T(_Module.m_szDBIP), _Module.m_szDBID,  _Module.m_szDBPWD) )		
	{
		return false;
	}
#else
	if(!g_AccountDB.DirectConnect(_T(_Module.m_szDBIP), _T("sa"), _T("!234?werDsdfVxcv")) )		
	{
		return false;
	}
#endif //DEF_NEWREGISTRY
	
#else //CHINESE_VERSION

#ifdef DEF_NEWREGISTRY
	if(!g_AccountDB.DirectConnect(_T(_Module.m_szDBIP), _Module.m_szDBID,  _Module.m_szDBPWD) )		
	{
		return false;
	}
#else
	if(!g_AccountDB.DirectConnect(_T(_Module.m_szDBIP), _T("MapServer"), _T("1234567+-*/")) )			
	{
		return false;
	}
#endif //DEF_NEWREGISTRY

#endif //CHINESE_VERSION

	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	DB俊辑 檬扁沥焊甫 佬绢咳 
//	
//	-	Item扁夯 沥焊甫 佬澜
//	-	胶懦 沥焊甫 佬澜
//	-	NPC 魄概 沥焊甫 佬澜 
//	-	NPC/MONSTER狼 扁夯 沥焊甫 佬澜
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadDBData()
{	
	if( !Load_MapServerInfo()	)	return false;		//	MAP	SERVER INFO LOAD

	if( !Load_MapServerNetInfo())	return false;		//	MAP	SERVER Net INFO LOAD

	if( !LoadInitStat()			)	return false;		//	某腐 扁檬 单捞鸥 Load
	
	if( !LoadLevelUP()			)	return false;		//	LEVEL UP CHART	

	if( !LoadQuestChart()		)	return	false;		//	QUEST CHART	(BASE ITEM焊促 刚历 LAOD)

	if( !LoadBaseNPC()			)	return false;		//	BASE MONSTER

	if( !LoadBaseItem()			)	return false;		//	BASE ITEM

	if( !LoadSetItem()	)			return false ;		//	SETITEM	
	
	if( !LoadRareEnchant()		)	return false;		//	RARE ENCHANT ITEM
		
	if( !LoadSkill()			)	return false;		//	SKILL
		
	if( !LoadLinkMap()			)	return false;		//	LINK MAP
	
	if( !LoadUpgradeChart()		)	return false;		//	UPGRADE CHART

	if( !LoadUpgradePercent()	)	return false ;		//	UPGRADE PERCENT

#ifdef DEF_TITLESYSTEM
	//Jason 2004-05-08
	if( !LoadTitleChart()	)		return false ;		//	TITLE CHART	
#endif

#ifdef DEF_QUESTITEM
	//Jason 2004-06-08
	if( !LoadQuestItemChart()	)	return false ;		//	QUEST ITEM CHART	
#endif


#ifdef DEF_SKILLDROP
	if(!LoadSkillDropChart()		)	return false ;	//	SKILL DROP CHART
#endif

	//	NPC啊 魄概且 沥焊甫 免仿矫糯
	Clean_SellItem();								

	for( int i=0; i <  g_pMap->m_nMaxLayer; i ++  )
	{
		if( !LoadNPCSellItem( i, g_pMap->GetMapID( i ) ) )	return false;	
	}
	
	if( !Load_Quest()			)	return	false;		//	QUEST SCRIPT LOAD

	if( !LoadPKChaoChart()		)	return false;		//	PK CHAO CHART LOAD	

	//Jason 2004-06-21
	if( !LoadGuildSkillChart()		)	return false;	//	GUILD SKILL CHART LOAD	

	LoadQuestLinkChart();								//	颇萍 涅胶飘 沥焊 LOAD


#if defined(DEF_SPEEDHACK) || defined(DEF_KORSPEEDHACK)
	//Jason 2004-09-20-china
	if(!LoadHackingChart()) return false;
#endif

#ifdef DEF_PRODUCTION_DECOMPOSITON
	//Jason 2004-10-13
	if(!LoadHalconChart()) return false;
#endif

#if defined(DEF_PRODUCTION_DECOMPOSITON) || defined(DEF_KUMA_GAMBLE)
	if(!LoadProductionChart()) return false;
#endif

#ifdef DEF_KUMA_GAMBLE
	if(!LoadGambleNormalItemChart()) return false;
#endif

	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 WORLD狼 MAP SERVER沥焊甫 掘澜 
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::Load_MapServerInfo()
{

	Table_MapServerInfo	tbMapServerInfo;


	if( tbMapServerInfo.Open( &g_AccountDB ) )
	{
		while( tbMapServerInfo.Fetch() )
		{	
			_MAPSERVERINFO_ *pMapServerInfo = new  _MAPSERVERINFO_;
					
			memcpy( pMapServerInfo, &tbMapServerInfo.MAPSERVERINFO, sizeof( _MAPSERVERINFO_ ));			
			m_MapServerInfo.Insert(	pMapServerInfo->dwMapSeq, pMapServerInfo );
		}
	}

	return true;
}




////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 WORLD狼 MAP SERVER Net 沥焊甫 掘澜 
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::Load_MapServerNetInfo()
{
	int nTempCount = 0;

	Table_MapNetInfo tbMapServerNetInfo;


	if( tbMapServerNetInfo.Open( &g_AccountDB ) )
	{
		while( tbMapServerNetInfo.Fetch() )
		{	
			//	弥檬 1雀 IP/PORT沥焊甫 掘澜
			if( nTempCount == 0 )
			{
				memcpy(_Module.m_szWorldIP	, tbMapServerNetInfo.m_strWorldIP,	20);	//	WORLD SERVER IP
				_Module.m_nWorldPORT		= tbMapServerNetInfo.m_nWorldPort;			//	WORLD SERVER PORT

				memcpy(_Module.m_szMapIP	, tbMapServerNetInfo.m_cServerIp,20) ;		//	MAP SERVER PUBLIC  IP
				memcpy(_Module.m_szUdpIP	, tbMapServerNetInfo.m_cPrivateIp,20) ;		//	MAP	SERVER PRIVATE IP

				_Module.m_nMapPORT			= tbMapServerNetInfo.m_wPort ;				//	MAP	SERVER PORT					
				_Module.m_nPKMode			= tbMapServerNetInfo.m_nPKMode;				//	PK Mode

				memcpy(_Module.m_szLogIP	, tbMapServerNetInfo.m_strLogIP,	20);	//	LOG SERVER IP
				_Module.m_nLogPORT		= tbMapServerNetInfo.m_nLogPort;			//	LOG SERVER PORT

			}

			
#ifdef DEF_AZITSIMULATION
			g_pMap->SetMapConfig(nTempCount ,	tbMapServerNetInfo.m_nMapSeq, 
												tbMapServerNetInfo.m_wMapID , 
												tbMapServerNetInfo.m_nPKMode,tbMapServerNetInfo.m_strMapFile,tbMapServerNetInfo.m_i64Tax );
#else // DEF_AZITSIMULATION
			g_pMap->SetMapConfig(nTempCount ,	tbMapServerNetInfo.m_nMapSeq, 
				tbMapServerNetInfo.m_wMapID , 
				tbMapServerNetInfo.m_nPKMode,tbMapServerNetInfo.m_strMapFile	);

#endif // DEF_AZITSIMULATION

			if(	_Module.m_strMapFile[ nTempCount ][0] == NULL )
			{
				sprintf( _Module.m_strMapFile[ nTempCount ],"%s/%s/Map/%s",	_Module.m_szDrv		,
															_Module.m_szPath	,
															tbMapServerNetInfo.m_strMapFile	);

			}
#ifdef CHINESE_VERSION // 甘捞抚阑 DB俊辑
			if(	_Module.m_strMapName[ nTempCount ][0] == NULL )
			{
				sprintf( _Module.m_strMapName[ nTempCount ],"%s", tbMapServerNetInfo.m_strMapName	);
			}
#endif
			nTempCount	++;
		}			
	}

	g_pMap->m_nMaxLayer = 	nTempCount;

	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 WORLD狼 MAP SERVER Map 沥焊甫 掘澜 
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::Load_MapServerMapInfo()
{
	int nTempCount = 0;

	Table_MapNetInfo tbMapServerNetInfo;


	if( tbMapServerNetInfo.Open( &g_AccountDB ) )
	{
		while( tbMapServerNetInfo.Fetch() )
		{	
			nTempCount	++;
		}			
	}


	_Module.m_iMaxMapLayer = nTempCount ;

	return true;
}

////////////////////////////////////////////////////////////////////////////////////////
//	Base Item沥焊甫 掘澜 
//
//	-	Item Loot 沥焊甫 Array涝仿 矫糯 
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadBaseItem()
{
	//	--------------------------------------------------------------------------------
	//	Delete Base Item阑 昏力 矫糯 
	//	--------------------------------------------------------------------------------
	Clean_BaseItem();


#ifdef DEF_KUMA_GAMBLE

	Clean_GambleItemChart();

#endif

	//	--------------------------------------------------------------------------------
	//	Item Loot俊 荤侩瞪 蔼甸阑 涝仿 矫糯 
	//	--------------------------------------------------------------------------------
	ZeroMemory( _ITEM_LOOTS, sizeof( _ITEM_LOOTS ) );


	//	--------------------------------------------------------------------------------
	//	QUEST DROP ITEM阑 狼窍咯 固府 秦寸 ITEM阑 涝仿矫糯 
	//
	//	-	眠饶 包访 肺流阑 荐沥窃
	//	--------------------------------------------------------------------------------

	
	//	--------------------------------------------------------------------------------
	//	Base Item阑 DB俊辑 Load矫糯 
	//
	//	-	MONSTER俊辑 LOOT瞪 ITEM阑 涝仿矫糯
	//	--------------------------------------------------------------------------------
	Table_BaseItem	tbBaseItem;	

	_BASE_NPC_*pBaseNPC = NULL ;  

	_BASE_ITEM_ *baseitem  = NULL ;

	if(tbBaseItem.Open( &g_AccountDB ))
	{
		while(tbBaseItem.Fetch())
		{	
			//	------------------------------------------------------------------------
			//	Data Base俊辑 秦寸 亲格阑 掘澜
			//	------------------------------------------------------------------------
			baseitem = new  _BASE_ITEM_;

			DWORD	dwItemIndex	= tbBaseItem.BASE_ITEM.dwIndex;
			memcpy( baseitem, &tbBaseItem.BASE_ITEM, sizeof( _BASE_ITEM_ ));			
						
			m_BaseItem.Insert( dwItemIndex, baseitem );

			if (tbBaseItem.BASE_ITEM.nVISUAL	== 0	||		//  Visual 0 积己登瘤 臼绰 酒捞袍 
				tbBaseItem.BASE_ITEM.nSLOTTYPE	== 0	||		//	家葛前 
				tbBaseItem.BASE_ITEM.nTYPE		== ITEMTYPE_SCROLL_RETURN  ||		//	蓖券 胶农费 
				tbBaseItem.BASE_ITEM.nTYPE		== ITEMTYPE_SCROLL_SKILL   ||		//	胶懦 胶农费 
				tbBaseItem.BASE_ITEM.nTYPE		== ITEMTYPE_SCROLL_UPGRADE ||		//	诀弊饭捞靛 胶农费 
				tbBaseItem.BASE_ITEM.nTYPE		== ITEMTYPE_SCROLL_LOST    ||		//	噶阿狼 胶农费 
				tbBaseItem.BASE_ITEM.nTYPE		== ITEMTYPE_EVENT       //	捞亥飘 埔带飘
			) continue ;

#ifdef DEF_KUMA_GAMBLE

			if( baseitem )
			{		
				if ( ( baseitem->nTYPE == ITEMTYPE_WEAPON_ONEHANDSWORD ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_TWOHANDSWORD ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_ONEHANDAXE ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_SPEAR ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_WAND ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_STAFF ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_BOW ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_CROSSBOW ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_MACE ) ||
					 ( baseitem->nTYPE == ITEMTYPE_WEAPON_MAUL ) ||

					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_SHIELD ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_HELM ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_ARMOR ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_PANTS ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_GLOVE ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_BOOTS ) ||

					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_RING ) ||
					 ( baseitem->nTYPE == ITEMTYPE_DEFENSE_AMULET ) )
				{
					if ( baseitem->nVISUAL != 0 )
						m_GambleItemChart.Insert( baseitem );
				}
			}

			
#endif

		

			//	------------------------------------------------------------------------	
			//	Item Loot俊 荤侩瞪 函荐甫 涝仿 矫糯
			//
			//	-	Level喊肺 秦寸 积己 Item阑 涝仿 矫糯
			//	------------------------------------------------------------------------
//			if( tbBaseItem.nSEQ >= ITEM_TEMPLATE_START )
			if( dwItemIndex >= ITEM_TEMPLATE_START )
			{
				/*
					200俺牢 版快 眠饶 #define巩栏肺 荐沥 矫糯
				*/	


				if(tbBaseItem.BASE_ITEM.nMonsterLoot != 0 || tbBaseItem.BASE_ITEM.nMonsterLoot2 != 0 || tbBaseItem.BASE_ITEM.nMonsterLoot3 != 0)
				{
					int iMonsterSeq = tbBaseItem.BASE_ITEM.nMonsterLoot ;

					if (iMonsterSeq != 0)
					{
						for( int i=0; i < MAX_ITEMLEVEL; ++i )
						{
							if(	tbBaseItem.BASE_ITEM.nLEVELNEED <= i)			//	Level 3 捞惑 积己 矫糯
							{
								_ITEM_LOOTS[iMonsterSeq][ i ].nItemIndex[ _ITEM_LOOTS[iMonsterSeq][ i ].nItemCount ] = dwItemIndex;
								_ITEM_LOOTS[iMonsterSeq][ i ].nItemCount ++;
							}
						}
					}

					int iMonsterSeq2 = tbBaseItem.BASE_ITEM.nMonsterLoot2 ;

					if (iMonsterSeq2 != 0)
					{
						for( int i=0; i < MAX_ITEMLEVEL; ++i )
						{
							if(	tbBaseItem.BASE_ITEM.nLEVELNEED <= i)			//	Level 3 捞惑 积己 矫糯
							{
								_ITEM_LOOTS[iMonsterSeq2][ i ].nItemIndex[ _ITEM_LOOTS[iMonsterSeq2][ i ].nItemCount ] = dwItemIndex;
								_ITEM_LOOTS[iMonsterSeq2][ i ].nItemCount ++;
							}
						}
					}
					int iMonsterSeq3 = tbBaseItem.BASE_ITEM.nMonsterLoot3 ;

					if (iMonsterSeq3 != 0)
					{
						for( int i=0; i < MAX_ITEMLEVEL; ++i )
						{
							if(	tbBaseItem.BASE_ITEM.nLEVELNEED <= i)			//	Level 3 捞惑 积己 矫糯
							{
								_ITEM_LOOTS[iMonsterSeq3][ i ].nItemIndex[ _ITEM_LOOTS[iMonsterSeq3][ i ].nItemCount ] = dwItemIndex;
								_ITEM_LOOTS[iMonsterSeq3][ i ].nItemCount ++;
							}
						}
					}

				}
				else // if(tbBaseItem.BASE_ITEM.nMonsterLoot != 0 || tbBaseItem.BASE_ITEM.nMonsterLoot2 != 0 )
				{
					for(int iMonsterSeq=0; iMonsterSeq <= m_iMaxNpc; ++iMonsterSeq )
					{
						// 粮犁窍瘤 臼绰 阁胶磐搁 扒呈 囤促.
						if( NULL == (pBaseNPC = (_BASE_NPC_ *)m_BaseNPC.Find( iMonsterSeq )) )	continue;

						// 阁胶磐啊 酒囱 NPC搁 公矫茄促.

⌨️ 快捷键说明

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