亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? servermem.cpp

?? 韓國英雄王座倒閉后流出來部分源代碼
?? CPP
字號:
//	ServerMem.cpp: implementation of the ServerMem class.
//
//
//
//	Server俊輯 葷儈登綽	Memory甫 包府
////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ServerMem.h"

#include "npc.h"

////////////////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////////////////////////////////////////////////////
ServerMem::ServerMem()
{
	//	--------------------------------------------------------------------------------
	//	Map Server儈 Memory甫 積己矯糯 - MAX_SOCKET_CONTEXT俺 積己
	//	--------------------------------------------------------------------------------
	m_listZemiPacket.RemoveAll();
#ifdef DEF_NEWREGISTRY 
	for( int i=0; i < _Module.m_dwMaxUser / 2 ; i ++ )
#else
	for( int i=0; i < MAX_SOCKET_CONTEXT / 2 ; i ++ )
#endif
	{
		_LPZEMIPACKET pZemiPacket	=	 new _ZEMIPACKET  ;

		m_listZemiPacket.AddTail( pZemiPacket );
	}

	//	--------------------------------------------------------------------------------
	//	World Server儈 Memory甫 積己 矯糯
	//	--------------------------------------------------------------------------------
	m_listWorldPacket.RemoveAll();

	//	--------------------------------------------------------------------------------
	//	Active Quest儈 Memory甫 積己 矯糯 - MAX_SOCKET_CONTEXT * 5俺 積己
	//	--------------------------------------------------------------------------------
	m_listActiveQuest.RemoveAll();

#ifdef DEF_NEWREGISTRY 
	for(  i=0; i < (_Module.m_dwMaxUser / 10) ; i ++ )
#else
	for(  i=0; i < (MAX_SOCKET_CONTEXT / 10) ; i ++ )
#endif
	{
		CActiveQuest  *pAtiveQuest = new CActiveQuest;

		m_listActiveQuest.AddTail( pAtiveQuest );
	}


#ifdef DEF_CHECK_QUESTDONE
	m_listQuestDoneInfo.RemoveAll();

#ifdef DEF_NEWREGISTRY 
	for(  i=0; i < (_Module.m_dwMaxUser / 10) ; i ++ )
#else
	for(  i=0; i < (MAX_SOCKET_CONTEXT / 10) ; i ++ )
#endif
	{
		_QUEST_SUCCESS_INFO  *pQuestDone = new _QUEST_SUCCESS_INFO;

		m_listQuestDoneInfo.AddTail( pQuestDone );
	}
#endif

	
	//	--------------------------------------------------------------------------------
	//	概流/飯絹狼 何竅 棺 家券 Monster俊 葷儈瞪 POOL闌 積己 矯糯
	//	--------------------------------------------------------------------------------
	m_PoolMonster.Clear();

	for( i=0; i < MAX_MONSTERPOOL_NUM; i ++ )
	{
		NPC	*pNPC	=	new NPC;

		if( !pNPC )	return;

		m_PoolMonster.Insert( pNPC );
	}
	
#ifdef DEF_NEWREGISTRY 
	m_AIMsgPool = new CMemPool<CAIMsg>(_Module.m_dwMaxUser);
#else
	m_AIMsgPool = new CMemPool<CAIMsg>(MAX_SOCKET_CONTEXT);
#endif


#ifdef DEF_NEWREGISTRY 
	m_GuildSkillPool = new CMemPool<CGuildSkill>(_Module.m_dwMaxUser/50 + 2);
#else
	m_GuildSkillPool = new CMemPool<CGuildSkill>(MAX_SOCKET_CONTEXT/50  + 2);
#endif



}


ServerMem::~ServerMem()
{
	//	--------------------------------------------------------------------------------
	//	Map Server儈 Memory甫 昏力矯糯
	//	--------------------------------------------------------------------------------
	for(POSITION pos = m_listZemiPacket.GetHeadPosition(); pos != NULL;)
	{
		_LPZEMIPACKET pZemiPacket = (_LPZEMIPACKET) m_listZemiPacket.GetNext(pos);

		if( pZemiPacket)
		{
			delete pZemiPacket ;
			pZemiPacket	=	NULL;
		}	
	}
	m_listZemiPacket.RemoveAll();


	//	--------------------------------------------------------------------------------
	//	World Packet儈 Memory甫 昏力矯糯
	//	--------------------------------------------------------------------------------
	for( pos = m_listWorldPacket.GetHeadPosition(); pos != NULL;)
	{
		_LPDBPACKET	 pWorldPacket = (_LPDBPACKET ) m_listWorldPacket.GetNext(pos);

		if( pWorldPacket)
		{
			delete pWorldPacket ;
			pWorldPacket	=	NULL;
		}	
	}
	m_listWorldPacket.RemoveAll();


	//	--------------------------------------------------------------------------------
	//	Active Quest儈 Memory甫 昏力矯糯
	//	--------------------------------------------------------------------------------
	for(  pos = m_listActiveQuest.GetHeadPosition(); pos != NULL;)
	{

		// 夸扒 肋給登輯 絆魔 -- define鞏 昏力..
		CActiveQuest	*pAtiveQuest = (CActiveQuest *) m_listActiveQuest.GetNext(pos);
				
		if( pAtiveQuest )
		{
			delete pAtiveQuest;
			pAtiveQuest	=	NULL;
		}			
	}
	m_listActiveQuest.RemoveAll();

#ifdef DEF_CHECK_QUESTDONE
	for(  pos = m_listQuestDoneInfo.GetHeadPosition(); pos != NULL;)
	{
		_QUEST_SUCCESS_INFO	*pQuestDone = (_QUEST_SUCCESS_INFO *) m_listQuestDoneInfo.GetNext(pos);
		
		if( pQuestDone )
		{
			delete pQuestDone;
			pQuestDone	=	NULL;
		}			
	}
	m_listQuestDoneInfo.RemoveAll();
#endif


	//	--------------------------------------------------------------------------------
	//	Active Quest儈 Memory甫 昏力矯糯
	//	--------------------------------------------------------------------------------
	LIST_VOIDPTR::iterator	itEnd = m_PoolMonster.End() ;
	for (LIST_VOIDPTR::iterator it = m_PoolMonster.Begin(); it != itEnd; it++)
	{	
		NPC *pNPC = (NPC *)*it;			

		if( pNPC )
		{
			delete pNPC;
			pNPC = NULL;
		}
	}	
	
	m_PoolMonster.Clear();

	SAFE_DELETE< CMemPool<CAIMsg> > (&m_AIMsgPool) ;
	SAFE_DELETE<CMemPool<CGuildSkill> > (&m_GuildSkillPool) ;


}


////////////////////////////////////////////////////////////////////////////////////////
//	ZEMIPACKET Memory甫 掘瀾
////////////////////////////////////////////////////////////////////////////////////////
_LPZEMIPACKET ServerMem::ZemiPacket_Pop()
{	
	_LPZEMIPACKET pZemiPacket	= (_LPZEMIPACKET)m_listZemiPacket.RemoveHead();
	
	if( pZemiPacket )
	{
		memset( pZemiPacket, 0x00, sizeof(_ZEMIPACKET) );
	}
	else
	{
		pZemiPacket	= new  _ZEMIPACKET  ;
		memset( pZemiPacket, 0x00, sizeof(_ZEMIPACKET) );
	}
	
	return pZemiPacket;
}

////////////////////////////////////////////////////////////////////////////////////////
//	ZEMIPACKET Memory甫 館券
////////////////////////////////////////////////////////////////////////////////////////
void ServerMem::ZemiPacket_Push(_LPZEMIPACKET pZemiPacket)
{
	if( pZemiPacket )
		m_listZemiPacket.AddTail( pZemiPacket );
}

////////////////////////////////////////////////////////////////////////////////////////
//	Active Quest甫 掘瀾
//
//	
////////////////////////////////////////////////////////////////////////////////////////
CActiveQuest* ServerMem::ActiveQuest_Pop()
{	
	CActiveQuest *pActiveQuest = (CActiveQuest *)m_listActiveQuest.RemoveHead();
	
	if(!pActiveQuest)
	{
		pActiveQuest = new CActiveQuest;
	}

	//		
	pActiveQuest->SetPoolUse( true );

	return pActiveQuest;
}

////////////////////////////////////////////////////////////////////////////////////////
//	Active Quest甫 館券
////////////////////////////////////////////////////////////////////////////////////////
void ServerMem::ActiveQuest_Push(CActiveQuest *pActiveQuest)
{	
	if( !pActiveQuest )	return;

	//
	//	秦寸 Active Quest啊 館券等 版快 
	//	
	if( !pActiveQuest->GetPoolUse() )
	{
		//apLog("(X) (%d) Pool_Monster_Push Debug Code=(%d)", _Module.m_nMapSeq ) ;
		ErrorMsg( "(X) ServerMem : Active Quest Push Error" ) ;
		return;
	}

	m_listActiveQuest.AddTail( pActiveQuest );
	pActiveQuest->SetPoolUse( false );
}


#ifdef DEF_CHECK_QUESTDONE

_QUEST_SUCCESS_INFO* ServerMem::QuestSuccessInfo_Pop()
{	
	_QUEST_SUCCESS_INFO *pQuestDone = (_QUEST_SUCCESS_INFO *)m_listQuestDoneInfo.RemoveHead();
	
	if(!pQuestDone)
	{
		pQuestDone = new _QUEST_SUCCESS_INFO;
	}

	//		
	pQuestDone->SetPoolUse( true );

	return pQuestDone;
}


void ServerMem::QuestSuccessInfo_Push(_QUEST_SUCCESS_INFO *pQuestDone)
{	
	if( !pQuestDone )	return;

	//
	//	秦寸 Active Quest啊 館券等 版快 
	//	
	if( !pQuestDone->GetPoolUse() )
	{		
		ErrorMsg( "(X) ServerMem : QuestSuccessInfo Push Error" ) ;
		return;
	}

	m_listQuestDoneInfo.AddTail( pQuestDone );
	pQuestDone->SetPoolUse( false );
}


#endif

////////////////////////////////////////////////////////////////////////////////////////
//	DBPACKET Memory甫 掘瀾
////////////////////////////////////////////////////////////////////////////////////////
_LPDBPACKET ServerMem::WorldPacket_Pop()
{
	_LPDBPACKET	 pWorldPacket	= (_LPDBPACKET)m_listWorldPacket.RemoveHead();
	
	if( pWorldPacket )
	{
		memset( pWorldPacket, 0x00, sizeof(_DBPACKET) );
	}
	else
	{
		pWorldPacket	=	new   _DBPACKET ;
		memset( pWorldPacket, 0x00, sizeof(_DBPACKET) );
	}
	
	return pWorldPacket;
}

////////////////////////////////////////////////////////////////////////////////////////
//	DBPACKET Memory甫 館券
////////////////////////////////////////////////////////////////////////////////////////
void ServerMem::WorldPacket_Push(_LPDBPACKET pWorldPacket)
{
	if( pWorldPacket )
		m_listWorldPacket.AddTail( pWorldPacket );
}

////////////////////////////////////////////////////////////////////////////////////////
//	NPC Mempry POP
////////////////////////////////////////////////////////////////////////////////////////
NPC* ServerMem::Pool_Monster_Pop()
{
	NPC *pNPC = (NPC *)m_PoolMonster.RemoveHead();

	if( NULL == pNPC )
	{
		pNPC = new NPC ;
	}

	//	Item Pool	葷儈
	pNPC->m_bPoolUse	=	true;		

	return pNPC;
}

////////////////////////////////////////////////////////////////////////////////////////
//	NPC memory Push
////////////////////////////////////////////////////////////////////////////////////////
void ServerMem::Pool_Monster_Push(void *pNPC, int pDebugCode )
{	
	if( !((NPC *)pNPC)->m_bPoolUse	)
	{
		MapLog("(X) (%d) Pool_Monster_Push Debug Code=(%d)", _Module.m_nMapSeq, pDebugCode ) ;
		return;
	}

	//	Item Pool	館券
	((NPC *)pNPC)->m_bPoolUse =	false;

	m_PoolMonster.Insert( pNPC );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区免费视频| 91久久精品网| 久久综合999| 国内精品视频666| 日韩一区二区三区在线观看| 日本女人一区二区三区| 日韩欧美激情一区| 国产福利不卡视频| 国产精品人成在线观看免费| 99re成人在线| 亚洲国产成人精品视频| 欧美一区二区成人| 国产毛片精品一区| 国产精品久久一卡二卡| 欧日韩精品视频| 奇米四色…亚洲| 久久久99久久| 91行情网站电视在线观看高清版| 天堂午夜影视日韩欧美一区二区| 日本美女一区二区| 精品国产免费人成在线观看| 国产又粗又猛又爽又黄91精品| a在线欧美一区| 亚洲国产成人porn| 欧美一区二区三区人| 美女视频黄a大片欧美| 中文字幕国产一区二区| 精品视频免费看| 欧美精品777| 看电影不卡的网站| 国产精品蜜臀av| 欧美日韩一二三区| 国产精品123| 亚洲v中文字幕| 中文字幕欧美国产| 欧美日本在线看| www.日韩av| 美女一区二区三区| 亚洲女同ⅹxx女同tv| 日韩欧美高清一区| 色综合欧美在线视频区| 韩国欧美一区二区| 亚洲精品精品亚洲| 久久九九影视网| 欧美欧美欧美欧美| 99国产精品国产精品毛片| 蜜桃视频一区二区| 亚洲在线中文字幕| 国产精品免费人成网站| 日韩女优av电影| 欧美又粗又大又爽| 成人av集中营| 国模大尺度一区二区三区| 亚洲一二三四区| 国产精品久久午夜| 2024国产精品| 日韩欧美国产wwwww| 欧美午夜不卡在线观看免费| 白白色 亚洲乱淫| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲精品菠萝久久久久久久| 国产亲近乱来精品视频| 91精品在线免费观看| 91黄色免费看| 99国产精品久| 成人app在线| 国产成人h网站| 国产精品一线二线三线精华| 久久成人羞羞网站| 人人狠狠综合久久亚洲| 亚洲18女电影在线观看| 亚洲动漫第一页| 艳妇臀荡乳欲伦亚洲一区| 亚洲欧美日韩国产手机在线| 中文字幕一区二| 中文字幕制服丝袜一区二区三区| 99精品黄色片免费大全| 成人精品一区二区三区四区 | 中文字幕一区二| 精品欧美一区二区久久| 91精品国产综合久久福利软件| 国产一区二区久久| 美女视频一区二区三区| 蜜桃免费网站一区二区三区| 午夜伊人狠狠久久| 日韩精彩视频在线观看| 图片区小说区国产精品视频| 三级一区在线视频先锋 | 亚洲精品第一国产综合野| 国产精品精品国产色婷婷| 国产精品久久久久久久久快鸭| 一本大道久久精品懂色aⅴ| 91香蕉国产在线观看软件| 91日韩一区二区三区| 色就色 综合激情| 在线亚洲精品福利网址导航| 欧美日韩精品系列| 欧美高清hd18日本| 欧美一级二级三级乱码| 日韩精品一区二区三区中文精品 | 极品少妇xxxx精品少妇| 国内久久精品视频| 高清免费成人av| 色一情一乱一乱一91av| 欧洲精品中文字幕| 日韩一区二区三区免费观看| 日韩欧美一区中文| 久久久久国产精品人| 日韩伦理电影网| 日韩国产欧美一区二区三区| 蜜桃一区二区三区四区| 成人性视频免费网站| 欧美亚洲自拍偷拍| 欧美sm美女调教| 国产精品亲子伦对白| 婷婷成人综合网| 久久成人麻豆午夜电影| www.欧美.com| 91精品国产综合久久久蜜臀粉嫩| 日本韩国欧美国产| 欧美精品粉嫩高潮一区二区| 欧美精品一区在线观看| 成人欧美一区二区三区1314| 日韩avvvv在线播放| 国产成人8x视频一区二区| 欧美亚洲图片小说| 国产欧美日本一区视频| 亚洲一区二区在线免费看| 国产一区二区三区蝌蚪| 欧美亚洲国产一区二区三区va| 91在线视频播放地址| 精品欧美黑人一区二区三区| 亚洲人一二三区| 狠狠色狠狠色综合系列| 欧美日韩亚洲不卡| 国产精品丝袜久久久久久app| 久久久无码精品亚洲日韩按摩| 欧美一区二区三区精品| 国产精品日韩成人| 麻豆免费看一区二区三区| 91电影在线观看| 国产欧美一区二区精品秋霞影院| 国产欧美精品一区二区色综合| 久久尤物电影视频在线观看| 亚洲精品久久久久久国产精华液| 综合自拍亚洲综合图不卡区| 成人av免费观看| 亚洲777理论| 91亚洲精品乱码久久久久久蜜桃| 国产一区二区0| 国产成人在线电影| 国产视频一区不卡| 久久99九九99精品| 欧美tickling网站挠脚心| 久久精品久久99精品久久| 国产mv日韩mv欧美| 久久久精品蜜桃| 欧美日韩一级视频| 午夜精品久久久久久| 成人黄色在线视频| 久久久久久**毛片大全| 日韩1区2区日韩1区2区| 91精品91久久久中77777| 亚洲三级免费观看| 99久精品国产| 国产精品高潮呻吟| 成人高清视频免费观看| 欧美国产日本韩| 粉嫩av一区二区三区粉嫩| 久久精品夜夜夜夜久久| 91麻豆精品国产91久久久| 亚洲超碰97人人做人人爱| 欧美三级电影在线观看| 亚洲一二三四区| 欧美人与禽zozo性伦| 日韩影院在线观看| 91精品国产乱| 麻豆精品新av中文字幕| 精品处破学生在线二十三| 国产精品1024| 中文字幕在线一区免费| 色94色欧美sute亚洲13| 久久夜色精品国产欧美乱极品| 久久久久久电影| 国产乱色国产精品免费视频| 久久午夜老司机| 国产成人小视频| 亚洲视频 欧洲视频| 欧美体内she精高潮| 日韩vs国产vs欧美| 久久久久久久久久久电影| av一区二区三区在线| 有码一区二区三区| 欧美日韩精品一区二区三区四区 | 日韩一区二区三区视频| 在线观看免费一区| 日日骚欧美日韩| 久久嫩草精品久久久精品一| 国产精品一区不卡| 亚洲欧美另类图片小说|