📄 playerinfo.cpp
字号:
else // 2005-2-15 badajoa 噶配啊 酒囱 促弗 酒捞袍档 利侩登霸 窍扁困秦辑
{
if ( ( pItem->m_dwOwnHandle != m_dwHandle ) &&
( pItem->m_nWHERE == WHERE_EQUIPMENT ) )
{
pItem->m_nWHERE = WHERE_INVENTORY;
pItem->m_wX = 0;
pItem->m_wY = 0;
}
}
}
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
if(pItem->m_nWHERE >= WHERE_INVENTORY && pItem->m_nWHERE < WHERE_MAX)
{
m_sItemCount[pItem->m_nWHERE] += pItem->m_nSLOTWIDTH * pItem->m_nSLOTHEIGHT ;
#ifdef DEF_ITEMCOUNT_DEL
if ( pItem->m_nWHERE == WHERE_WAREHOUSE )
{
#ifdef DEF_CHINES_FREEUSER
if ( IsFreeUser() )
{
if ( pItem->m_nTabNum > 1 )
{
g_pMap->Pool_Item_Push( pItem, 3 );
return false;
}
}
#endif
}
else if ( pItem->m_nWHERE == WHERE_INVENTORY )
{
if ( m_sItemCount[pItem->m_nWHERE] > ( 10*8 + CHINESE_ALLOW_OVERLAPITEM ) )
{
g_pMap->Pool_Item_Push( pItem, 3 );
return false;
}
}
if ( ( (int)(pItem->m_wX) < 0 ) || ( (int)(pItem->m_wY) < 0 ) )
{
pItem->m_wX = 0;
pItem->m_wY = 0;
}
if ( pItem->m_nWHERE == WHERE_INVENTORY )
{
if ( ( (pItem->m_wX + pItem->m_nSLOTWIDTH) > 8 ) || ( (pItem->m_wY + pItem->m_nSLOTHEIGHT) > 10 ) )
{
pItem->m_wX = 0;
pItem->m_wY = 0;
}
}
#endif
}
#endif
pItem->m_ItemLocation = SERVER_WORLD; // World Server俊辑 涝仿 罐澜 单捞鸥牢 版快
pItem->m_ItemOpration = WORLD_NOTHING;
bool bOK = m_MapInventory.Insert( pItem->m_dwItemHandle, pItem ); // Map 秦寸 郴开阑 楷搬
if( bOK )
{
Init_PutOnUpdate( pItem ); // Player 馒侩 沥焊甫 Update矫糯
}
else
{
// Player Inventory 吝汗等 版快 Error Msg贸府
ErrorMsg( "(X) initialize Inventory Error:(%s) Handle=(%d)(%d)", m_strPlayerID, pItem->m_dwItemHandle,pInventory->dwSEQ );
g_pMap->Pool_Item_Push( pItem, 3 );
return false;
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// 檬扁 SKILL单捞鸥甫 涝仿 矫糯
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_PlayerSkill(_LPZW_PLAYERSKILL_REP pSkill )
{
CEnchant *pEnchant = (CEnchant*)g_pMap->Pool_Skill_Pop();
pEnchant->SetPlayerSkill( pSkill );
m_MapSkill.Insert( pEnchant->m_dwSkillHandle, pEnchant );
#ifdef DEF_SKILLCHECK_BADAJOA20050504
m_MapSkillIdx.Insert( pEnchant->m_wSkillIndex , pEnchant );
#endif
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// 檬扁 Guild SKILL单捞鸥甫 涝仿 矫糯
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_GuildSkill(_LPZW_GUILDSKILL_REP pGuildEnchant )
{
CGuildSkill *pGuildSkill = (CGuildSkill *)g_pServerMem->m_GuildSkillPool->Alloc() ;
pGuildSkill->SetGuildSkill( pGuildEnchant );
m_MapGuildSkill.Insert( pGuildSkill->m_wSkillIndex , pGuildSkill );
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// 霸烙 矫累 单捞鸥 傈价
//
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::Init_Game()
{
Set_CalcAllStat(); // 秦寸 荐摹甫 促矫 拌魂窍咯 馆康 矫糯
g_pServer->PacketSend_PlayerList( m_pSocketFD ); // Player 立加 沥焊甫 傈价 矫糯
#ifdef DEF_NOSENDSELLITEMLIST
#else
g_pServer->PacketSend_SellList( m_pSocketFD ); // NPC啊 魄概窍绰 ITEM沥焊甫 Client俊 傈价
#endif
// --------------------------------------------------------------------------------
// 泅犁 困摹 茄 Map ID沥焊甫 逞辫
// --------------------------------------------------------------------------------
m_LinkPoint.x = 0;
m_LinkPoint.y = 0;
ChangeStatus( STATUS_STAY) ;
// --------------------------------------------------------------------------------
// ZP_PLAYERSTART_REP 沥焊甫 Client俊 傈价 矫糯
// --------------------------------------------------------------------------------
g_pServer->PacketSend_PlayerStart( m_pSocketFD );
ErrorMsg( "LOGIN - Init Game [%s]", m_strPlayerID );
// --------------------------------------------------------------------------------
// QUEST狼 Timer沥焊甫 Client俊 傈价矫糯
// --------------------------------------------------------------------------------
CActiveQuest *pActiveQuest ;
void* TempQuest[100] = {0, };
int nCountQuest = 0;
// --------------------------------------------------------------------------------
// Active Quest List
// --------------------------------------------------------------------------------
nCountQuest = m_ActiveQuest.CopyTmpList( TempQuest );
for( int i=0; i < nCountQuest ; i ++ )
{
pActiveQuest = (CActiveQuest *)TempQuest[i];
pActiveQuest->SendInitTimer();
}
// --------------------------------------------------------------------------------
// 纳腐 弥檬 立加 矫 付阑俊辑绰 HP/MP甫 盲况淋
// --------------------------------------------------------------------------------
if( !m_nStart )
{
m_Tile.x = (WORD)_PLAYERINFO.wX / 100;
m_Tile.y = (WORD)_PLAYERINFO.wY / 100;
#ifdef CHINESE_VERSION
//Jason 2004-08-23-china no charge for hp in china.
#else
if (g_pMap->IsSafeZone( m_nMapLayer, m_Tile) )
Recharge();
else
RechargeHP(300);
#endif
}
#ifdef DEF_LOG_MAPINOUT
g_lpLog->OnFunc[DEF_LOG_MAPIN].proc(DEF_LOG_MAPIN, this, NULL, NULL, m_nMapID) ;
#endif
// --------------------------------------------------------------------------------
// 霸烙 立加阑 DB俊 扁废 矫糯
// --------------------------------------------------------------------------------
DB_PlayerGameIn();
//
// 弥檬 立加矫 捞亥飘 甘俊 立加茄 版快 惯葛绢肺 困摹甫 捞悼矫糯
//
if( !m_nStart && GetLocationMapType() == MAP_EVENT )
{
//
// 包访 风凭俊 措茄 弥利拳 累诀捞 鞘夸
//
// 捞悼瞪 POINT甫 掘澜
//
BYTE nTempMapID = g_pMap->GetMapID( m_nMapLayer );
_MOVEMAP_ *pMoveMap = ( _MOVEMAP_ *)g_Base.m_LinkMap.Find( nTempMapID );
bool bMoveMap = false;
if( pMoveMap )
{
if( pMoveMap->dwMapID != nTempMapID )
bMoveMap = true;
}
//
// 悼老 MAP栏肺 捞悼矫
//
// - Link Point甫 劝侩窍档废 荐沥
//
if( !bMoveMap )
{
m_LinkPoint = g_pMap->MapConfig[ m_nMapLayer ].StartPoint ;
}
//
// 促弗 MAP栏肺 捞悼 矫
//
else
{
m_nMapID = pMoveMap->dwMapID;
m_LinkPoint.x = pMoveMap->wX;
m_LinkPoint.y = pMoveMap->wY;
}
g_pServer->PlayerLogOut(m_pSocketFD );
}
#ifdef DEF_AZIT
//
// 酒瘤飘 甘俊 立加窍绰 版快
//
// - 秦寸 辨靛啊 酒瘤飘客 包拌 绝绰 版快 贸府 (包访 风凭阑 犬厘 矫糯)
//
if( !m_nStart && GetLocationMapType() == MAP_AZIT )
{
Azit *pAzit = _Module.m_pAzitManager->FindAzit(GetChannel());
if( pAzit )
{
//
// 档己栏肺 捞悼 矫糯
//
m_nMapID = 19;
m_LinkPoint.x = 21750;
m_LinkPoint.y = 18150;
g_pServer->PlayerLogOut(m_pSocketFD );
}
}
#endif
}
////////////////////////////////////////////////////////////////////////////////////////
// Item捞 Inventory肺 眠啊登绰 版快
//
// - 鞘靛俊辑 酒捞袍阑 林款 版快
// - 磊扁啊 滚赴巴 凛扁
// - ITEM阑 荤绰 版快
//
// pX / pY蔼捞 肋给等 蔼捞 坷绰 版快 坷幅 贸府
//
// * 吝夸 Item牢 版快 历厘 矫糯
//
// 酒贰 肺流吝 历厘 肺流狼 痢八捞 鞘夸窃
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Inventory_Add(CItem *pItem, WORD pX, WORD pY )
{
// 青扯狼 X,Y蔼阑 涝仿矫糯
pItem->m_nWHERE = WHERE_INVENTORY; // 呕馒 矫糯
pItem->m_wX = pX;
pItem->m_wY = pY;
pItem->m_nAliveTime = 0;
if( pItem->IsWorld() )
{
pItem->m_ItemOpration = WORLD_UPDATE;
// 吝夸 Item牢 版快 DB楷魂
if( pItem->IsValuable() )
{
World_InvItemUpdate( pItem );
}
}
else
{
pItem->m_ItemOpration = WORLD_INSERT;
// 吝夸 Item牢 版快 DB楷魂
if( pItem->IsValuable() )
{
World_InvItemInsert( pItem );
}
}
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
_AddItem(pItem) ;
#endif
m_MapInventory.Insert( pItem->m_dwItemHandle, pItem ); // Map 秦寸 郴开阑 楷搬
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Inventory_Add(CItem *pItem, BYTE pWhere, WORD pX, WORD pY)
{
// 青扯狼 X,Y蔼阑 涝仿矫糯
pItem->m_nWHERE = pWhere; // 呕馒 矫糯
pItem->m_wX = pX;
pItem->m_wY = pY;
pItem->m_nAliveTime = 0;
if( pItem->IsWorld() )
{
pItem->m_ItemOpration = WORLD_UPDATE;
// 吝夸 Item牢 版快 DB楷魂
if( pItem->IsValuable() )
{
World_InvItemUpdate( pItem );
}
}
else
{
pItem->m_ItemOpration = WORLD_INSERT;
// 吝夸 Item牢 版快 DB楷魂
if( pItem->IsValuable() )
{
World_InvItemInsert( pItem );
}
}
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
_AddItem(pItem) ;
#endif
m_MapInventory.Insert( pItem->m_dwItemHandle, pItem ); // Map 秦寸 郴开阑 楷搬
return true;
}
////////////////////////////////////////////////////////////////////////////////////////
// Item馒侩矫 Player狼 沥焊甫 Update矫糯
// ------------------------------------------------------------------------------------
// 1. Client俊 傈价且 Item沥焊甫 Setting矫糯
// 2. 郴何 单捞鸥甫 Setting矫糯
// ------------------------------------------------------------------------------------
//
// Return Value Explain
// ------------------------------------------------------------------------------------
// -1 : Error 惯积
// 0 : 厘馒 臼蹬绰 版快
// 1 : 厘馒 矫 荐摹父 函版
// 2 : 厘馒 矫 荐摹 棺 葛嚼 函版
//
//
// - 技飘 酒捞袍 厘馒 咯何 魄沥
//
////////////////////////////////////////////////////////////////////////////////////////
int PlayerInfo::Inventory_PutOnUpdate( CItem *pItem )
{
// --------------------------------------------------------------------------------
// 酒捞袍 犬牢
// - SLOT TYPE捞 啊瘤绊 乐绰 SLOT焊促 奴 版快
// --------------------------------------------------------------------------------
if( !pItem ) return -1;
if( pItem->m_nSlotType > DEF_EQUIPMENTSLOTTYPE ) return -1;
// --------------------------------------------------------------------------------
// 酒捞袍阑 厘馒窍瘤 臼篮 版快
// --------------------------------------------------------------------------------
if( pItem->m_nWHERE != WHERE_EQUIPMENT ) return 0;
////////////////////////////////////////////////////////////////////////////////////
// 剧颊 公扁牢 版快 捞傈 公扁甫 呕馒 矫糯
////////////////////////////////////////////////////////////////////////////////////
if ( pItem->m_nSlotType == SLOT_TOWHAND )
{
// ----------------------------------------------------------------------------
// 坷弗颊 公扁 檬扁拳
// ----------------------------------------------------------------------------
if( m_pEquipments[ SLOT_RIGHT ] )
{
// 厘馒 郴何 沥焊 檬扁拳
m_pEquipments[ SLOT_RIGHT ]->m_nWHERE = WHERE_INVENTORY;
m_pEquipments[ SLOT_RIGHT ] = NULL;
// Visual 沥焊 檬扁拳
_PLAYERINFO.wRightWeapon = 0;
_PLAYERINFO.nRightOption = 0;
}
// ----------------------------------------------------------------------------
// 哭颊 公扁 檬扁拳
// ----------------------------------------------------------------------------
if( m_pEquipments[ SLOT_LEFT ] )
{
// 厘馒 郴何 沥焊 檬扁拳
m_pEquipments[ SLOT_LEFT ]->m_nWHERE = WHERE_INVENTORY;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -