npcmanager.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 146 行

CPP
146
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : NPCManager.cpp// Written By  : Reiot// Description : //////////////////////////////////////////////////////////////////////////////#include "NPCManager.h"#include "DB.h"#include "NPC.h"#include "Thread.h"#include "PCFinder.h"#include <stdio.h>//////////////////////////////////////////////////////////////////////////////// class NPCManager member methods//////////////////////////////////////////////////////////////////////////////NPCManager::NPCManager () 	throw (Error){	__BEGIN_TRY	__END_CATCH}NPCManager::~NPCManager () 	throw (){	__BEGIN_TRY	__END_CATCH}void NPCManager::load (ZoneID_t zoneID, int race) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Statement* pStmt   = NULL;	Result*    pResult = NULL;	bool bLoadAllRace = (race==0xFF);	BEGIN_DB	{		//StringStream sql;		pStmt   = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		if (bLoadAllRace)		{			pResult = pStmt->executeQuery( 				"SELECT Name, NPCID, SpriteType, Race, MainColor, SubColor, ClanType, ShowInMinimap FROM NPC WHERE ZoneID = %d", (int)zoneID);		}		else		{			pResult = pStmt->executeQuery( 				"SELECT Name, NPCID, SpriteType, Race, MainColor, SubColor, ClanType, ShowInMinimap FROM NPC WHERE ZoneID = %d AND Race = %d", (int)zoneID, (int)race);		}		while (pResult->next())		{			uint i = 0;			string Name( pResult->getString(++i) );			if (getCreature(Name)==NULL)			{				// create NPC object				NPC* pNPC = new NPC();				pNPC->setName( Name );				pNPC->setNPCID(pResult->getInt(++i));				pNPC->setSpriteType(pResult->getInt(++i));				pNPC->setRace(pResult->getInt(++i));				pNPC->setMainColor(pResult->getInt(++i));				pNPC->setSubColor(pResult->getInt(++i));				pNPC->setClanType(pResult->getInt(++i));				int ShowInMinimap = pResult->getInt(++i);				if (ShowInMinimap != 0) pNPC->setShowInMinimap(true);				else pNPC->setShowInMinimap(false);				printf("NPC[%s] loading begin >> ", pNPC->getName().c_str());				pNPC->init();				printf("loading end\n");				// NPC trace 甫 困秦 by DEW 2003. 04. 16				g_pPCFinder->addNPC(pNPC);				// NPC->init() 俊辑 NPC 狼 Trigger 甫 肺靛窍绊,				// CONDITION_AT_FIRST 甫 茫酒辑 角青窍绰单				// 捞锭 ACTION_SET_POSITION 捞 角青登搁辑 Zone俊 NPC 甫 眠啊茄促.				// 父老 NPC 狼 CONDITION_AT_FIRST 啊 ACTION_SET_POSITION 捞 酒聪扼搁 巩力啊 积辨淀				//addCreature(pNPC);			}		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt)		__END_DEBUG	__END_CATCH}	void NPCManager::processCreatures () 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Timeval currentTime;	getCurrentTime(currentTime);	try	{		hash_map<ObjectID_t, Creature*>::iterator itr = m_Creatures.begin();		for (; itr != m_Creatures.end() ; itr++)		{			itr->second->act(currentTime);		}	}	catch (Throwable & t)	{		filelog("NPCManagerBug.log", "ProcessCreatureBug : %s", t.toString().c_str());		//cerr << t.toString() << endl;	}	__END_DEBUG	__END_CATCH}string NPCManager::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "NPCManager("		<< CreatureManager::toString()		<< ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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