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 + -
显示快捷键?