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

📄 regennpc.cpp

📁 墨香最新私服
💻 CPP
字号:

/* 
	filename:	RegenNPC.cpp
	coder	:	Park Jung Hwan(ilil5@hanmail.net) 
	comp.	:	esofnet 
	compiler:	vc++ 6.0
	date	:	2002-11-12坷饶 3:58:18
	title	:	
*/
#include "stdafx.h"
#include "RegenNPC.h"
#include "Npc.h"

CRegenNPC::CRegenNPC()
{
	m_NpcObjectID = START_NPCID;
	m_MonsterObjectID = START_MONSTERID;
	m_dwCurTime = 0;
	m_dwTmpTime = 0;
	m_dwLastTime = 0;
	m_bFirstFlag = TRUE;

	memset(m_MonsterRegen, 0, sizeof(NPC_REGEN*)*MAX_MONSTER_GROUPNUM*MAX_MONSTER_REGEN_NUM);
	memset(m_NpcRegen, 0, sizeof(NPC_REGEN*)*MAX_MONSTER_GROUPNUM*MAX_NPC_REGEN_NUM);
}

CRegenNPC::~CRegenNPC()
{
	
}

void CRegenNPC::MonsterRegen(int GroupNum)
{
	// 各阑 府哩茄促
/*
	MONSTER_TOTALINFO Monsterinfo;
	BASEOBJECT_INFO Baseinfo;
	MONSTER_LIST *Monsterlist;

	for(int i = 0; i < MAX_MONSTER_REGEN_NUM; i++)
	{
		//NPC_REGEN * tmpNPC = GAMERESRCMNGR->m_MonsterRegen[GroupNum];
		//NPC_REGEN* pMonster = &tmpNPC[i];
		NPC_REGEN* pMonster = &m_MonsterRegen[GroupNum][i];
		if(pMonster->NpcKind == 0)
			continue;

		// 父距 面倒 鸥老救俊辑 积己 登搁...
		VECTOR3 temppos;
		if(g_pServerSystem->GetMap()->CollisionCheck(&pMonster->Pos,&pMonster->Pos,&temppos) == TRUE)
		{
#ifdef TAIWAN_LOCAL
			g_Console.LOG(4, "Regen Failed : %s", pMonster->Name);
#else
			g_Console.LOG(4, "Regen 角菩 : %s", pMonster->Name);
#endif
			continue;
		}
		//list
		Monsterlist = GAMERESRCMNGR->GetMonsterListInfo(pMonster->NpcKind);
		AddMonsterObjectID();
		Baseinfo.dwObjectID = GetMonsterObjectID();
		strcpy(Baseinfo.ObjectName, Monsterlist->Name);
		Monsterinfo.Life = Monsterlist->Life;
		Monsterinfo.MonsterKind = pMonster->NpcKind;
		Monsterinfo.Group = GroupNum;
		
		AddMonsterGroup(GroupNum);	// 弊缝硅凯俊 墨款磐甫 眠啊茄促
		g_pServerSystem->AddMonster(&Baseinfo, &Monsterinfo, &pMonster->Pos);
		g_Console.LOG(4, "Mop Regen: %s", Monsterlist->Name );


	}*/
}

void CRegenNPC::NpcRegen(int GroupNum)
{
	// 荤恩 npc甫 府哩茄促
	NPC_TOTALINFO Npcinfo;
	BASEOBJECT_INFO Baseinfo;
	NPC_LIST* Npclist;

	for(int i = 0; i < MAX_NPC_REGEN_NUM; i++)
	{
		NPC_REGEN* pNpc = &m_NpcRegen[GroupNum][i]; 
		if(pNpc->NpcKind == 0)
			continue;

		// 父距 面倒 鸥老救俊辑 积己 登搁...
		
		MAPTYPE MapNum = GAMERESRCMNGR->GetLoadMapNum();
		if(g_pServerSystem->GetMap()->CollisionTilePos(pNpc->Pos.x,pNpc->Pos.z,MapNum) == TRUE)
		{
			g_Console.LOG(4, "NPC Regen Failed... %s", pNpc->Name);
			continue;
		}

		Npclist = GAMERESRCMNGR->GetNpcInfo(pNpc->NpcKind);
		AddNpcObjectID();
		Baseinfo.dwObjectID = GetNpcObjectID();
		Npcinfo.MapNum = pNpc->MapNum;
		//strcpy(Baseinfo.ObjectName, Npclist->Name);
		SafeStrCpy(Baseinfo.ObjectName, Npclist->Name, MAX_NAME_LENGTH+1);
		Npcinfo.Group = GroupNum;
		Npcinfo.NpcKind = pNpc->NpcKind;
		Npcinfo.NpcJob = Npclist->JobKind;
		Npcinfo.NpcUniqueIdx = pNpc->NpcIndex;
		AddNpcGroup(GroupNum);	// 弊缝硅凯俊 墨款磐甫 眠啊茄促
		CNpc* pAddNpc = g_pServerSystem->AddNpc(&Baseinfo, &Npcinfo, &pNpc->Pos);
		pAddNpc->SetNpcAngle(pNpc->Angle);
		
	}

}

void CRegenNPC::MerchantRegen(int GroupNum)
{
	// 惑牢阑 府哩茄促
}

void CRegenNPC::ObjectNpcRegen()
{
/*	// 厘侥 npc甫 府哩茄促
	NPC_TOTALINFO Npcinfo;
	BASEOBJECT_INFO Baseinfo;
	NPC_LIST* Npclist;
	MAPCHANGE_INFO* pChangeMapInfo;
	for(int i = 0; i < MAX_NPC_REGEN_NUM; i++)
	{
		NPC_REGEN* pNpc = &m_ObjectRegen[i]; 
		if(pNpc->NpcKind == 0)
			continue;

		// 父距 面倒 鸥老救俊辑 积己 登搁...
		VECTOR3 temppos;
		if(g_pServerSystem->GetMap()->CollisionCheck(&pNpc->Pos,&pNpc->Pos,&temppos) == TRUE)
		{
			g_Console.LOG(4, "NPC Regen Failed... %s", pNpc->Name);
			continue;
		}

		Npclist = GAMERESRCMNGR->GetNpcInfo(pNpc->NpcKind);
		AddNpcObjectID();
		Baseinfo.dwObjectID = GetNpcObjectID();
		Npcinfo.MapNum = pNpc->MapNum;
		strcpy(Baseinfo.ObjectName, Npclist->Name);
		Npcinfo.Group = GroupNum;
		Npcinfo.NpcKind = pNpc->NpcKind;
		Npcinfo.NpcJob = Npclist->JobKind;		
		Npcinfo.NpcUniqueIdx = pNpc->NpcIndex;
		AddNpcGroup(GroupNum);	// 弊缝硅凯俊 墨款磐甫 眠啊茄促
		CNpc* pAddNpc = g_pServerSystem->AddNpc(&Baseinfo, &Npcinfo, &pNpc->Pos);
		pAddNpc->SetNpcAngle(pNpc->Angle);
		
	}
*/
}

void CRegenNPC::CheckProcess()
{
	// 老沥矫埃付促 甸绢客辑 角青登绰 窃荐
	if(m_bFirstFlag)
	{
		m_dwCurTime = m_dwTmpTime = m_dwLastTime = gCurTime;
		m_bFirstFlag = FALSE;
	//	CheckMonsterRegen();
		CheckNpcRegen();
	}
	else
	{
		m_dwCurTime = gCurTime;
		m_dwTmpTime = m_dwCurTime - m_dwLastTime;
		if(m_dwTmpTime > 1000 * 10)
		{
//			CheckMonsterRegen();
//			CheckNpcRegen();
			m_dwLastTime = m_dwCurTime;
		}
	}
}

BOOL CRegenNPC::CheckMonsterRegen()
{
	// Monseter狼 府哩 痹蘑俊 蝶扼 眉农饶 促矫 谎覆
	for(WORD i = 0; i < MAX_MONSTER_GROUPNUM; i++)
	{
		WORD MonsterCount = GetMonsterGroupCount(i);
		if(MonsterCount < 1)
		{
			// 弊缝俊辑 巢篮 阁胶磐啊 3捞窍捞搁 促矫谎赴促.
			MonsterRegen(i);
		}
	}
	return TRUE;
}

BOOL CRegenNPC::CheckNpcRegen()
{
	// 荤恩 NPC狼 府哩 痹蘑俊 蝶扼 眉农饶 促矫 谎覆
	for(WORD i = 0; i < MAX_NPC_GROUPNUM; i++)
	{
		// 弊缝俊辑 巢篮 NPC啊 3捞窍捞搁 促矫谎赴促.
		WORD NpcCount = GetNpcGroupCount(i);
		if(NpcCount < 1)
		{
			NpcRegen(i);
		}
		
	}

	return TRUE;
}

NPC_REGEN* CRegenNPC::GetNpcRegenInfo(WORD index)
{
	for(WORD i = 0; i < MAX_NPC_GROUPNUM; i++)
	{
		for(WORD j = 0; j < MAX_NPC_REGEN_NUM; j++)
		{
			if(m_NpcRegen[i][j].NpcIndex == index)
				return &m_NpcRegen[i][j];
		}
	}
	return NULL;
}

⌨️ 快捷键说明

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