📄 azit.cpp
字号:
////////////////////////////////////////////////////////////////////////////////////////
// Azit.cpp: implementation of the Azit class.
//
//
//
////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Azit.h"
#include "AzitManager.h"
#include "Map.h"
#include "MapServerSocket.h"
#include "DBSocket.h"
#include "CUdpSocket.h"
#include "CGuild.h"
#include "CLog.h"
////////////////////////////////////////////////////////////////////////////////////////
// Global 函荐
////////////////////////////////////////////////////////////////////////////////////////
extern Map *g_pMap; // MAP 包府 (User捞悼)
extern MapServerSocket *g_pServer; // Map Server Pointer
extern _LPDBSOCK g_lpDBSock; // DB Socket
extern _LPUDPSOCKET g_lpUdpSock; // UDP Socket
extern _LPCLOGMANAGER g_lpLog ;
#ifdef DEF_AZIT
////////////////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////////////////////////////////////////////////////
Azit::Azit( bool bIsHaveAzitMap)
{
m_bIsHaveAzitMap = bIsHaveAzitMap;
#ifdef DEF_AZITTAXBIGMONEY_BADAJOA20050622
m_i64AzitTex = 0;
#else
m_nAzitTex = 0;
#endif
m_nDefenseCount = DEF_AZITSYMBOLDEFENSE_DEFAULTCOUNT;
m_nAttackerCount = DEF_AZITSYMBOLATTACKER_DEFAULTCOUNT;
}
Azit::Azit(_LPZW_AZITSTATUSLIST_REP pAzitList)
{
m_bIsHaveAzitMap = false;
#ifdef DEF_AZITTAXBIGMONEY_BADAJOA20050622
m_i64AzitTex = 0;
#else
m_nAzitTex = 0;
#endif
memcpy( &m_AzitInfo, pAzitList, sizeof(m_AzitInfo));
m_nDefenseCount = DEF_AZITSYMBOLDEFENSE_DEFAULTCOUNT;
m_nAttackerCount = DEF_AZITSYMBOLATTACKER_DEFAULTCOUNT;
}
Azit::~Azit()
{
}
////////////////////////////////////////////////////////////////////////////////////////
// 酒瘤飘 备炼眉 沥焊甫 掘澜
////////////////////////////////////////////////////////////////////////////////////////
_LPZW_AZITSTATUSLIST_REP Azit::GetAzit()
{
return &m_AzitInfo;
}
////////////////////////////////////////////////////////////////////////////////////////
// 泅犁狼 技陛阑 穿利 矫糯
//
// - 穿利等 技陛捞 漂沥 陛咀 捞惑老 版快 World Server肺 傈价窃
////////////////////////////////////////////////////////////////////////////////////////
#define DEF_AZITTEX_MAX 100
void Azit::SetTax(int pTax)
{
#ifdef DEF_AZITMAXTAX
// 技啦 * 10父 飘扼啊 弥措 甸绢棵 荐 乐绰 技陛捞促.
// 技啦捞 5 捞搁 50父 飘扼啊 弥措 技陛捞促.
pTax = MIN( GetAzitTaxRate() * 100000 , pTax) /2 ;
#endif
m_nAzitTex = m_nAzitTex + pTax;
//
// 漂沥 陛咀 捞惑牢 版快 World Server肺 傈价窃
//
if( m_nAzitTex > DEF_AZITTEX_MAX )
{
g_lpDBSock->WorldSend_AzitTex( GetAzitSeq(), m_nAzitTex );
m_nAzitTex = 0;
}
}
////////////////////////////////////////////////////////////////////////////////////////
// 秦寸 甘俊 酒瘤飘 家蜡 咯何 馆券
//
////////////////////////////////////////////////////////////////////////////////////////
bool Azit::GetHaveAzitMap()
{
return m_bIsHaveAzitMap;
}
////////////////////////////////////////////////////////////////////////////////////////
// 酒瘤飘 沥焊甫 涝仿矫糯
//
// - 酒瘤飘 惑怕 函版俊 蝶弗 饶加 累诀
////////////////////////////////////////////////////////////////////////////////////////
void Azit::SetAzitInfo(_LPZW_AZITSTATUSLIST_REP pAzitInfo)
{
int nOldStatus = GetAzitStatus();
int nOldTaxRate = m_AzitInfo.nTaxRate;
//
// 鞘夸 沥焊甫 汗荤矫糯
//
memcpy( &m_AzitInfo, pAzitInfo, sizeof( _ZW_AZITSTATUSLIST_REP ) );
//
// 酒瘤飘 技啦捞 函版等 版快 贸府
//
// - 函版等 酒瘤飘 沥焊甫 努扼捞攫飘俊 傈价窃
//
if( nOldTaxRate != pAzitInfo->nTaxRate )
{
//
// 立加磊 沥焊
//
#ifdef DEF_NEWREGISTRY
void* TempPlayer[MAX_USER_LIMIT] = {0, };
#else
void* TempPlayer[MAX_SOCKET_CONTEXT] = {0, };
#endif
int nCountPlayer = g_pMap->m_MapPlayerHandle.CopyTmpList( TempPlayer );
for( int i=0; i < nCountPlayer ; i ++ )
{
_SOCKET_FD *pSocketFD = ( _SOCKET_FD *)TempPlayer[i];
if( !IsSocketValidity( pSocketFD ) ) continue;
//
// 酒瘤飘 殿废 沥焊俊辑 掘澜
//
Azit *pAzit = _Module.m_pAzitManager->GetAzitTaxMap( pSocketFD->pPlayer->GetMapID() );
if( pAzit && pAzit->GetAzitSeq() == GetAzitSeq() )
g_pServer->PacketSend_AzitStatus( pSocketFD, pAzit->GetAzit() );
}
}
//
// 酒瘤飘 惑怕啊 函版等 版快贸府
//
if( GetHaveAzitMap() && nOldStatus != pAzitInfo->nStatus )
{
switch( pAzitInfo->nStatus )
{
//
// 酒瘤飘傈 霖厚 惑怕
//
// - 酒瘤飘 惑痢阑 Off矫糯
// - 秦寸 甘俊 立加 蜡历俊霸 包访 涅胶飘 傈价
// - 酒瘤飘 郴狼 捞侩磊甫 困摹 捞悼 矫糯
//
case AZITSTATUS_WARREADY :
{
#ifdef DEF_NEWREGISTRY
void* TempPlayer[MAX_USER_LIMIT] = {0, };
#else
void* TempPlayer[MAX_SOCKET_CONTEXT] = {0, };
#endif
int nCountPlayer = g_pMap->m_MapPlayerHandle.CopyTmpList( TempPlayer );
for( int i=0; i < nCountPlayer ; i ++ )
{
_SOCKET_FD *pSocketFD = ( _SOCKET_FD *)TempPlayer[i];
if( !IsSocketValidity( pSocketFD ) ) continue;
if( MAP_AZIT != pSocketFD->pPlayer->GetLocationMapType() ) continue;// AZIT MAP立加磊
// 酒瘤飘 家蜡 辨靛牢 版快
if( GetOwnerHandle() && GetOwnerHandle() == pSocketFD->pPlayer->Guild_GetHandle() )
{
g_pServer->PacketSend_QuestGate ( pSocketFD , 1, 1 ); // Gate甫 Lock矫糯
pSocketFD->pPlayer->Quest_Teleport( 8, 41, 10 ); // 规绢磊 困摹肺 捞悼 矫糯
pSocketFD->pPlayer->QuestRequest( DEF_AZITDEFENSEQUEST ); // 酒瘤飘 规滚 涅胶飘 惯悼
g_pServer->PacketSend_AzitStatus( pSocketFD, &m_AzitInfo ); // 酒瘤飘 惑怕 傈价
}
// 酒瘤飘 档傈 辨靛牢 版快
else if( GetWarProposeHandle() && GetWarProposeHandle()== pSocketFD->pPlayer->Guild_GetHandle() )
{
g_pServer->PacketSend_QuestGate ( pSocketFD , 1, 1 ); // Gate甫 Lock矫糯
pSocketFD->pPlayer->Quest_Teleport( 8, 40, 100 ); // 傍拜磊 困摹肺 捞悼 矫糯
pSocketFD->pPlayer->QuestRequest( DEF_AZITATTACKQUEST ); // 酒瘤飘 档傈 涅胶飘 惯悼
g_pServer->PacketSend_AzitStatus( pSocketFD, &m_AzitInfo ); // 酒瘤飘 惑怕 傈价
}
}
//
// Azit Symbol俊 秦寸 辨靛拳 矫糯
//
void* ListNPC[10000] = {0, };
int nCountNPC;
for(int iLayer = 0 ; iLayer < g_pMap->m_nMaxLayer; ++iLayer)
{
if( MAP_AZIT != g_pMap->MapConfig[iLayer].nMapType ) continue;
nCountNPC = g_pMap->m_MapNPC[iLayer]->CopyTmpList( ListNPC );
for( int i=0; i< nCountNPC; ++i )
{
NPC *pNPC = (NPC *)ListNPC[i];
if( !pNPC) continue;
if( pNPC->GetChannel() == GetAzitSeq() )
{
pNPC->m_dwGuildHandle = GetOwnerHandle();
}
}
}
}
break;
//
// 酒瘤飘傈 傈里 惑怕
//
// - 立加 荤侩磊甸俊霸 涅胶飘 惯悼 矫埃阑 傈价窃
// - 秦寸 惑怕 沥焊甫 傈价窃
//
case AZITSTATUS_WAR :
{
//
// 酒瘤飘 惑怕甫 檬扁拳 矫糯
//
m_nDefenseCount = DEF_AZITSYMBOLDEFENSE_DEFAULTCOUNT;
m_nAttackerCount = DEF_AZITSYMBOLATTACKER_DEFAULTCOUNT;
#ifdef DEF_NEWREGISTRY
void* TempPlayer[MAX_USER_LIMIT] = {0, };
#else
void* TempPlayer[MAX_SOCKET_CONTEXT] = {0, };
#endif
int nCountPlayer = g_pMap->m_MapPlayerHandle.CopyTmpList( TempPlayer );
for( int i=0; i < nCountPlayer ; i ++ )
{
_SOCKET_FD *pSocketFD = ( _SOCKET_FD *)TempPlayer[i];
if( !IsSocketValidity( pSocketFD ) ) continue;
if( MAP_AZIT != pSocketFD->pPlayer->GetLocationMapType() ) continue; // AZIT MAP立加磊
//
// 酒瘤飘 家蜡 辨靛牢 版快
if( GetOwnerHandle() && GetOwnerHandle() == pSocketFD->pPlayer->Guild_GetHandle() )
{
g_pServer->PacketSend_QuestSetTimer( pSocketFD, DEF_AZITDEFENSEQUEST, 1, GetAzitWarTime() );
pSocketFD->pPlayer->Quest_Teleport( 8, 41, 10 ); // 规绢 困摹肺 捞悼
g_pServer->PacketSend_QuestGate (pSocketFD, 1, 1 ); // Gate甫 Lock矫糯
g_pServer->PacketSend_AzitStatus (pSocketFD, &m_AzitInfo ); // 酒瘤飘 惑怕 傈价
g_pServer->PacketSend_PVPStart (pSocketFD ); // 酒瘤飘 傈 矫累
g_pServer->PacketSend_AzitWarPoint (pSocketFD, this ); // 酒瘤飘 惑隆拱 惑怕 傈价
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG1 ); // 酒瘤飘 矫累 包访 皋矫瘤 #1
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG2 ); // 酒瘤飘 矫累 包访 皋矫瘤 #2
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG3 ); // 酒瘤飘 矫累 包访 皋矫瘤 #3
}
//
// 酒瘤飘 档傈 辨靛牢 版快
//
else if( GetWarProposeHandle() && GetWarProposeHandle()== pSocketFD->pPlayer->Guild_GetHandle() )
{
g_pServer->PacketSend_QuestSetTimer( pSocketFD, DEF_AZITATTACKQUEST, 1, GetAzitWarTime() );
pSocketFD->pPlayer->Quest_Teleport( 8, 40, 100 ); // 傍拜 困摹肺 捞悼
g_pServer->PacketSend_QuestGate (pSocketFD, 1, 1 ); // Gate甫 Lock矫糯
g_pServer->PacketSend_AzitStatus (pSocketFD, &m_AzitInfo ); // 酒瘤飘 惑怕 傈价
g_pServer->PacketSend_PVPStart (pSocketFD ); // 酒瘤飘 傈 矫累
g_pServer->PacketSend_AzitWarPoint (pSocketFD, this ); // 酒瘤飘 惑隆拱 惑怕 傈价
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG1 ); // 酒瘤飘 矫累 包访 皋矫瘤 #1
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG2 ); // 酒瘤飘 矫累 包访 皋矫瘤 #2
g_pServer->PacketSend_WarningMsg (pSocketFD, MSG_AZITSTART_MSG3 ); // 酒瘤飘 矫累 包访 皋矫瘤 #3
}
}
}
break;
//
// 酒瘤飘傈 肯丰 惑怕
//
// - 酒瘤飘 傈 搬苞 魄沥
// -> 酒瘤飘 惑隆拱 箭磊肺 魄沥窃
// -> World Server俊 包访
//
// - 酒瘤飘 惑隆拱 檬扁拳 累诀
// - 秦寸 酒瘤飘 立加磊 -> 档己栏肺 捞悼矫糯
//
case AZITSTATUS_WAREND :
{
//
// 酒瘤飘傈 搬苞 魄窜
//
// - 秦寸 酒瘤飘狼 辨靛 惑隆拱 箭磊肺 魄窜窃
//
void* ListNPC[10000] = {0, };
int nCountNPC;
for(int iLayer = 0 ; iLayer < g_pMap->m_nMaxLayer; ++iLayer)
{
if( MAP_AZIT != g_pMap->MapConfig[iLayer].nMapType ) continue;
nCountNPC = g_pMap->m_MapNPC[iLayer]->CopyTmpList( ListNPC );
for( int i=0; i< nCountNPC; ++i )
{
NPC *pNPC = (NPC *)ListNPC[i];
if( !pNPC) continue;
if( ( pNPC->GetChannel() == GetAzitSeq() ) &&
( pNPC->GetClassType() == MONSTER_AZITSYMBOL ) )
{
switch( pNPC->m_dwDBSEQ )
{
//
// 规绢螟 Azit Symbol
//
// - 眠饶 包访 荐摹 涝仿 (眠饶 Function栏肺 盒府矫糯)
//
case 336 :
{
pNPC->m_nHP = pNPC->m_nMaxHP;
}
break;
//
// 傍拜螟 Azit Symbol
//
case 335 :
{
//
// 秦寸 Azit Symbol阑 磷篮 惑怕肺 父惦
//
//
pNPC->m_nStatus = STATUS_DEAD; // DEAD惑怕 函版
pNPC->EnchantAllStop(); // 牢忙飘甫 葛滴 辆丰 矫糯
g_pMap->AOI_PlayerDelete( pNPC ); // NPC甫 AOI MAP俊辑 昏力 矫糯
}
break;
default : break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -