📄 basedata.cpp
字号:
if( pBaseNPC->wTYPE >= 100 ) continue ;
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 ++;
}
}
}
} // if(tbBaseItem.BASE_ITEM.nMonsterLoot != 0 || tbBaseItem.BASE_ITEM.nMonsterLoot2 != 0)
}
}
}
#ifdef DEF_KUMA_GAMBLE
// 白喉捞 叼颇牢 登绢 乐绰单 白喉 瞒飘啊 绝栏搁 辑滚啊 角青捞 臼等促.
if ( m_GambleItemChart.IsEmpty() )
{
ErrorMsg("(X) GamebleItemChart is NULL") ;
return false ;
}
#endif
// --------------------------------------------------------------------------------
// 葛电 酒捞袍阑 促 笼绢 持篮 版快
// 促矫 痢八 秦辑 酒捞袍 备埃捞 140 逞瘤 臼档废 茄促.
// --------------------------------------------------------------------------------
// 格钎摹 70
#ifdef CHINESE_VERSION
// 亮篮 酒捞袍捞 唱棵 犬伏阑 临牢促.
int iMaxItemCount = 80 ;
#else
int iMaxItemCount = 70 ;
#endif
for( int iMonsterSeq=0; iMonsterSeq <= m_iMaxNpc; ++iMonsterSeq )
{
// 粮犁窍瘤 臼绰 阁胶磐搁 扒呈 囤促.
if(NULL == (pBaseNPC =(_BASE_NPC_ *) m_BaseNPC.Find( iMonsterSeq ))) continue;
// 阁胶磐啊 酒囱 NPC搁 公矫茄促.
if( pBaseNPC->wTYPE >= 100 ) continue ;
for(int i=0 ; i < MAX_ITEMLEVEL ; i++)
{
if (_ITEM_LOOTS[iMonsterSeq][ i ].nItemCount > iMaxItemCount)
{
int iSpace = _ITEM_LOOTS[iMonsterSeq][ i ].nItemCount - iMaxItemCount ;
for(int j = 0 ; j < iMaxItemCount ; j++)
{
_ITEM_LOOTS [iMonsterSeq][ i ].nItemIndex[j] = _ITEM_LOOTS[iMonsterSeq][ i ].nItemIndex[j+iSpace] ;
}
_ITEM_LOOTS[iMonsterSeq][ i ].nItemCount = iMaxItemCount ;
}
}
}
#ifdef DEF_MONSTERDROPITEM
Table_MonsterDropChart tbMonsterDrop ;
if(tbMonsterDrop.Open( &g_AccountDB) )
{
while(tbMonsterDrop.Fetch())
{
pBaseNPC = (_BASE_NPC_ *)m_BaseNPC.Find( tbMonsterDrop.MONSTERDROPCHART.dwMonsterSEQ );
if(!baseitem)
{
ErrorMsg( "(X) ItemDropchart : NPC (%d) (%d)",tbMonsterDrop.MONSTERDROPCHART.dwMonsterSEQ, tbMonsterDrop.MONSTERDROPCHART.wITEMIDX); ;
continue ;
}
for(int i= 0 ; i < tbMonsterDrop.MONSTERDROPCHART.wITEMDROPPECENT ; ++i )
{
if(pBaseNPC->lpMonsterItemDrop->nItemCount+i >= 10000)
{
ErrorMsg( "(X) ItemDropchart : NPC (%d) (%d)",tbMonsterDrop.MONSTERDROPCHART.dwMonsterSEQ, tbMonsterDrop.MONSTERDROPCHART.wITEMIDX); ;
break;
}
pBaseNPC->lpMonsterItemDrop->nItemIndex[pBaseNPC->lpMonsterItemDrop->nItemCount+i] = tbMonsterDrop.MONSTERDROPCHART.wITEMIDX ;
}
if(tbMonsterDrop.MONSTERDROPCHART.wITEMCONSUME)
pBaseNPC->lpMonsterItemDrop->nConSumItemCount += tbMonsterDrop.MONSTERDROPCHART.wITEMDROPPECENT ;
pBaseNPC->lpMonsterItemDrop->nItemCount += tbMonsterDrop.MONSTERDROPCHART.wITEMDROPPECENT ;
}
}
#endif
// for( iMonsterSeq=0; iMonsterSeq <= m_iMaxNpc; ++iMonsterSeq )
// {
// // 粮犁窍瘤 臼绰 阁胶磐搁 扒呈 囤促.
// if(NULL == (pBaseNPC =(_BASE_NPC_ *) m_BaseNPC.Find( iMonsterSeq ))) continue;
//
// // NPC搁 公矫茄促.
// if( pBaseNPC->wTYPE >= 100 ) continue ;
//
// for(int i=0 ; i < _ITEM_LOOTS[iMonsterSeq][ pBaseNPC->nLVL ].nItemCount ; ++i)
// {
// int iSelect = _ITEM_LOOTS[iMonsterSeq][ pBaseNPC->nLVL ].nItemIndex[i] ;
//
// _BASE_ITEM_ *pBaseItem = (_BASE_ITEM_ *) m_BaseItem.Find( iSelect );
//
// TRACE ( "%d,%s,%d,%d,%s\n",iMonsterSeq, pBaseNPC->strNAME,pBaseNPC->nLVL , iSelect, pBaseItem->strITEMNAME ) ;
// }
// }
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// Set Item沥焊甫 掘澜
//
// - SetItem 沥焊甫 Array涝仿 矫糯
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadSetItem()
{
// --------------------------------------------------------------------------------
// SET ITME阑 Load矫糯
// --------------------------------------------------------------------------------
Table_SetItemChart tbSetitem;
memset(&tbSetitem.SETITEMCHART, 0x0, sizeof(_SETITEMCHART_));
if(tbSetitem.Open( &g_AccountDB ))
{
while(tbSetitem.Fetch())
{
// ------------------------------------------------------------------------
// SETIMTE阑 Memory俊 涝仿矫糯
// ------------------------------------------------------------------------
_SETITEMCHART_* pSetItem = new _SETITEMCHART_;
memset(pSetItem, 0x0, sizeof(_SETITEMCHART_));
memcpy( pSetItem, &tbSetitem.SETITEMCHART, sizeof( _SETITEMCHART_ ) );
m_SetItem.Insert(pSetItem->dwSET_SEQ, pSetItem );
memset(&tbSetitem.SETITEMCHART, 0x0, sizeof(_SETITEMCHART_));
// ------------------------------------------------------------------------
// SETITEM狼 FULL SET沥焊绰 力寇矫糯
// ------------------------------------------------------------------------
if( pSetItem->iSET_SLOTTYPE == 99 )
{
continue;
}
m_LootSetItem.SetBaseSetItem( pSetItem->wSET_CLASS, pSetItem->iSET_LEVELNEED, pSetItem );
}
}
// --------------------------------------------------------------------------------
// 99锅 Slot Type狼 酒捞袍 沥焊甫 茫酒 Setting矫糯
//
// --------------------------------------------------------------------------------
void* ListSetItem[10000] = {0, };
int nCount = m_SetItem.CopyTmpList( ListSetItem );
for( int i=0; i< nCount; i ++ )
{
_SETITEMCHART_* pSetItemChart = (_SETITEMCHART_*)ListSetItem[i];
if( !pSetItemChart ) continue;
if( pSetItemChart->iSET_SLOTTYPE != 99 ) continue;
// ----------------------------------------------------------------------------
// 秦寸 浇吩俊 沥焊甫 涝仿矫糯
// ----------------------------------------------------------------------------
for( int j=0; j < nCount; j ++ )
{
_SETITEMCHART_* pSlotSetItemChart = (_SETITEMCHART_*)ListSetItem[j];
if( !pSlotSetItemChart ) continue;
if( pSlotSetItemChart->iSET_SLOTTYPE == 99 ) continue;
if( pSetItemChart->dwSET_SEQ != pSlotSetItemChart->wSET_FULLOPTSEQ ) continue;
// 馆瘤啊 酒囱 版快 贸府
if( pSlotSetItemChart->iSET_SLOTTYPE != 11 )
{
pSetItemChart->SlotType[pSlotSetItemChart->iSET_SLOTTYPE ] = pSlotSetItemChart->dwSET_SEQ;
}
// 馆瘤牢 版快 2俺啊 吝汗 瞪荐 乐澜
else
{
if( pSetItemChart->SlotType[pSlotSetItemChart->iSET_SLOTTYPE ] == 0 )
{
pSetItemChart->SlotType[pSlotSetItemChart->iSET_SLOTTYPE ] = pSlotSetItemChart->dwSET_SEQ;
}
else
{
pSetItemChart->SlotType[12] = pSlotSetItemChart->dwSET_SEQ;
}
}
}
}
// --------------------------------------------------------------------------------
// BASE ITEM阑 Class
// --------------------------------------------------------------------------------
for ( MAP_VOIDPTR::iterator it = m_BaseItem.Begin(); it != m_BaseItem.End(); it++)
{
_BASE_ITEM_ *pBaseItem = (_BASE_ITEM_ *)it->second;
if( !pBaseItem ) continue;
if (pBaseItem->nVISUAL == 0 || // Visual 0 积己登瘤 臼绰 酒捞袍
pBaseItem->nSLOTTYPE == 0 || // 家葛前
pBaseItem->nTYPE == ITEMTYPE_SCROLL_RETURN || // 蓖券 胶农费
pBaseItem->nTYPE == ITEMTYPE_SCROLL_SKILL || // 胶懦 胶农费
pBaseItem->nTYPE == ITEMTYPE_SCROLL_UPGRADE || // 诀弊饭捞靛 胶农费
pBaseItem->nTYPE == ITEMTYPE_SCROLL_LOST || // 噶阿狼 胶农费
pBaseItem->nTYPE == ITEMTYPE_EVENT // 捞亥飘 埔带飘
) continue ;
// ----------------------------------------------------------------------------
// 秦寸 ITEM狼 加己阑 涝仿矫糯
// ----------------------------------------------------------------------------
m_LootSetItem.SetBaseSubSetItem( pBaseItem->nCHARTYPE, pBaseItem->nSLOTTYPE, pBaseItem->dwIndex );
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// Title Chart沥焊甫 掘澜
//
// -> Title 沥焊甫 Array涝仿 矫糯
// Jason 2004-05-08
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadTitleChart()
{
Table_TitleChart tbTitle;
memset(&tbTitle.TITLECHART, 0x0, sizeof(_TITLECHART_));
if(tbTitle.Open( &g_AccountDB ))
{
while(tbTitle.Fetch())
{
_TITLECHART_* pTitle = new _TITLECHART_;
memset(pTitle, 0x0, sizeof(_TITLECHART_));
memcpy( pTitle, &tbTitle.TITLECHART, sizeof( _TITLECHART_ ) );
m_TitleChart.Insert(pTitle->dwTC_SEQ, pTitle );
memset(&tbTitle.TITLECHART, 0x0, sizeof(_TITLECHART_));
}
return true;
}
return false;
}
////////////////////////////////////////////////////////////////////////////////////////
// Quest Item Chart沥焊甫 掘澜
//
// Jason 2004-06-08
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadQuestItemChart()
{
Table_QuestItemChart tbQuestItem;
memset(&tbQuestItem.QUESTITEMCHART, 0x0, sizeof(_QUESTITEMCHART_));
if(tbQuestItem.Open( &g_AccountDB ))
{
while(tbQuestItem.Fetch())
{
_QUESTITEMCHART_* pItem = new _QUESTITEMCHART_;
memset(pItem, 0x0, sizeof(_QUESTITEMCHART_));
memcpy( pItem, &tbQuestItem.QUESTITEMCHART, sizeof( _QUESTITEMCHART_ ) );
m_QuestItemChart.Insert(pItem->wSeq, pItem );
memset(&tbQuestItem.QUESTITEMCHART, 0x0, sizeof(_QUESTITEMCHART_));
}
return true;
}
return false;
}
////////////////////////////////////////////////////////////////////////////////////////
// NPC 魄概 ITEM沥焊甫 掘澜
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadNPCSellItem( int pMapLayer, int pMapID )
{
Table_NPCSellItem tbNPCSellItem; // NPC Sell Item
tbNPCSellItem.m_nMapNum = pMapID; // Map 锅龋 涝仿
memset(&tbNPCSellItem.SELLITEM,0x0,sizeof(_SELLITEM_));
if(tbNPCSellItem.Open( &g_AccountDB ))
{
while(tbNPCSellItem.Fetch())
{
_SELLITEM_ *sellitem = new _SELLITEM_;
memcpy( sellitem, &tbNPCSellItem.SELLITEM, sizeof( _SELLITEM_ ) );
m_SellItem[pMapLayer].Insert( sellitem->_INVENTORY.dwSEQ, sellitem );
memset(&tbNPCSellItem.SELLITEM,0x0,sizeof(_SELLITEM_));
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// DB俊辑 Skill沥焊甫 Load
//
// - Skill Table狼 Field函版栏肺 荐沥 累诀 鞘夸
// - DB Script 厚背饶 荐沥 累诀
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadSkill()
{
Clean_BaseSkill(); // Delete DB俊辑 Skill沥焊
Table_BaseSkill tbSkill; // Skill DB
if(tbSkill.Open( &g_AccountDB ))
{
while(tbSkill.Fetch())
{
_SKILL_ *baseskill = new _SKILL_;
memcpy( baseskill, &tbSkill.SKILL, sizeof( _SKILL_ ));
// ------------------------------------------------------------------------
// Enchant System
//
// 2003.12.04 Duke Kim 眠啊
// Enchant Bit 1何磐 矫累 登骨肺 包访 Bit甫 荐沥窃
// ------------------------------------------------------------------------
baseskill->dwMagicValue = 0;
if( baseskill->dwMagicBit > 0 )
{
baseskill->dwMagicBit --;
baseskill->dwMagicValue = pow( 2, baseskill->dwMagicBit );
}
m_BaseSkill.Insert( tbSkill.SKILL.wSEQ, baseskill );
}
}
else
{
ErrorMsg( "(X) Skill Chart Open Error" );
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// Load BASE NPC
//
//
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadBaseNPC()
{
Clean_BaseNPC(); // Delete BASE NPC
Table_BaseMonster tbMonster; // NPC DB
m_iMaxNpc = 0 ;
_BASE_NPC_ *basenpc = NULL ;
if(tbMonster.Open( &g_AccountDB) )
{
while(tbMonster.Fetch())
{
basenpc = new _BASE_NPC_;
memcpy( basenpc, &tbMonster.BASE_MONSTER, sizeof( _BASE_NPC_ ));
#ifdef DEF_MONSTERDROPITEM
basenpc->lpMonsterItemDrop = new _MONSTER_LOOTS ;
memset(basenpc->lpMonsterItemDrop,0x0,sizeof(_MONSTER_LOOTS) ) ;
#endif
m_BaseNPC.Insert( tbMonster.nSEQ, basenpc );
if ( m_iMaxNpc < tbMonster.nSEQ)
m_iMaxNpc = tbMonster.nSEQ ;
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// 纳腐狼 扁檬 Data甫 Load矫糯
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadInitStat()
{
Clean_InitStat(); // 檬扁 荐摹 蔼阑 昏力
Table_InitStat tbInitStat; // 纳腐 檬扁 STAT
if(tbInitStat.Open( &g_AccountDB ))
{
while(tbInitStat.Fetch())
{
_INIT_STAT_ *pInitStat = new _INIT_STAT_;
memcpy( pInitStat, &tbInitStat.INIT_STAT , sizeof( _INIT_STAT_ ));
m_InitStat.Insert( tbInitStat.INIT_STAT.wSEQ, pInitStat );
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// 纳腐 Level Up俊 包拌等 Data甫 Load矫糯
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadLevelUP()
{
Clean_LevelUP(); // Level UP Data甫 昏力
Table_LevelUp tbLevelUp; // 纳腐 Level Up
if(tbLevelUp.Open( &g_AccountDB ))
{
while(tbLevelUp.Fetch())
{
_LEVEL_UP_ *pLeveUp = new _LEVEL_UP_;
memcpy( pLeveUp, &tbLevelUp.LEVEL_UP , sizeof( _LEVEL_UP_ ));
m_LevelUp.Insert( tbLevelUp.LEVEL_UP.wSEQ, pLeveUp );
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// Lare Enchant Chart 单捞鸥甫 Load
////////////////////////////////////////////////////////////////////////////////////////
bool BaseData::LoadRareEnchant()
{
Clean_LareEnchantChart(); // Lare Enchant Chart 单捞鸥甫 秦力
Table_LareEnchant tbLareEnchant;
int iTmpSlot = 0 ;
if( tbLareEnchant.Open( &g_AccountDB ) )
{
while( tbLareEnchant.Fetch() )
{
_RARE_ENCHANT_ *pRareEnchant = new _RARE_ENCHANT_;
memcpy( pRareEnchant, &tbLareEnchant.RARE_ENCHANT, sizeof( _RARE_ENCHANT_ ));
m_RareEnchant.Insert( pRareEnchant->dwSEQ, pRareEnchant );
iTmpSlot = pRareEnchant->wSLOTTYPE - 1 ;
////////////////////////////////////////////////////////////////////
// NOTENOTE: 浇吩喊肺 饭绢甫 沥纺 窍看促.
//
////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -