cldeletepchandler.cpp

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

CPP
300
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CLDeletePCHandler.cpp// Written By  :// Description ://////////////////////////////////////////////////////////////////////////////#include "CLDeletePC.h"#ifdef __LOGIN_SERVER__	#include "LoginPlayer.h"	#include "Assert.h"	#include "DB.h"	#include "ItemDestroyer.h"	#include "Properties.h"	#include "Lpackets/LCDeletePCOK.h"	#include "Lpackets/LCDeletePCError.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CLDeletePCHandler::execute (CLDeletePC* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __LOGIN_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	LoginPlayer*    pLoginPlayer = dynamic_cast<LoginPlayer*>(pPlayer);	Statement*      pStmt        = NULL;	Statement*      pLoginStmt   = NULL;	Result*         pResult      = NULL;	LCDeletePCError lcDeletePCError;	WorldID_t		WorldID		 = pLoginPlayer->getWorldID();	try 	{		pLoginStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt = g_pDatabaseManager->getConnection( WorldID )->createStatement();		////////////////////////////////////////////////////////////		// 老窜 弊繁 浇饭捞绢啊 粮犁窍绰瘤 眉农茄促.		////////////////////////////////////////////////////////////		pResult = pStmt->executeQuery("SELECT Active FROM Slayer WHERE Name = '%s'", pPacket->getName().c_str());		if (pResult->getRowCount() != 1) 		{			lcDeletePCError.setErrorID(NOT_FOUND_PLAYER);			throw InvalidProtocolException("no such slayer exist.");		}		////////////////////////////////////////////////////////////		// 林刮殿废锅龋甫 犬牢茄促.		////////////////////////////////////////////////////////////#ifndef __CHINA_SERVER__		if (pLoginPlayer->isFreePass() 			|| g_pConfig->getPropertyInt("IsNetMarble")==1)		{			// 公炼扒 瘤匡 荐 乐促.			pResult = pLoginStmt->executeQuery("SELECT length(Password) FROM Player Where PlayerID = '%s'", pPlayer->getID().c_str());			if(!pResult->next())			{				lcDeletePCError.setErrorID(NOT_FOUND_PLAYER);				throw InvalidProtocolException("no such slayer exist.");			}			int    PasswordLength = pResult->getInt(1);			if (PasswordLength != 12) 			{				lcDeletePCError.setErrorID(INVALID_SSN);				throw InvalidProtocolException("invalid SSN");			}		}		else		{			pResult = pLoginStmt->executeQuery("SELECT SSN FROM Player Where PlayerID = '%s'", pPlayer->getID().c_str());			if(!pResult->next())			{				lcDeletePCError.setErrorID(NOT_FOUND_PLAYER);				throw InvalidProtocolException("no such slayer exist.");			}			string SSN = pResult->getString(1);			if (SSN != pPacket->getSSN())			{				lcDeletePCError.setErrorID(INVALID_SSN);				throw InvalidProtocolException("invalid SSN");			}		}#endif		////////////////////////////////////////////////////////////		// 老窜 浇饭捞绢 抛捞喉俊绰 犬角洒 粮犁茄促.		////////////////////////////////////////////////////////////		pResult = pStmt->executeQuery("DELETE FROM Slayer WHERE Name = '%s' AND Slot = '%s'", pPacket->getName().c_str(), Slot2String[pPacket->getSlot()].c_str());		if (pStmt->getAffectedRowCount() != 1) 		{			lcDeletePCError.setErrorID(NOT_FOUND_ID);			throw InvalidProtocolException("no such slayer exist.");		}		////////////////////////////////////////////////////////////		// 轨颇捞绢 抛捞喉阑 瘤款促.		////////////////////////////////////////////////////////////		pResult = pStmt->executeQuery("DELETE FROM Vampire WHERE Name = '%s' AND Slot = '%s'", pPacket->getName().c_str(), Slot2String[pPacket->getSlot()].c_str());		//if (pStmt->getAffectedRowCount() == 1) //cout << "Vampire(" << pPacket->getName() << ") deleted successfully...." << endl;		////////////////////////////////////////////////////////////		// 酒快胶磐胶 抛捞喉阑 瘤款促.		////////////////////////////////////////////////////////////		pResult = pStmt->executeQuery("DELETE FROM Ousters WHERE Name = '%s' AND Slot = '%s'", pPacket->getName().c_str(), Slot2String[pPacket->getSlot()].c_str());		////////////////////////////////////////////////////////////		// 浇饭捞绢 胶懦阑 瘤款促.		////////////////////////////////////////////////////////////		pStmt->executeQuery("DELETE FROM SkillSave WHERE OwnerID = '%s'", pPacket->getName().c_str());		//cout << "Slayer(" << pPacket->getName() << ") deleted successfully...." << endl;		////////////////////////////////////////////////////////////		// 轨颇捞绢 胶懦阑 瘤况霖促.		////////////////////////////////////////////////////////////		pStmt->executeQuery("DELETE FROM VampireSkillSave WHERE OwnerID = '%s'", pPacket->getName().c_str());		////////////////////////////////////////////////////////////		// 酒快胶磐令 胶懦阑 瘤况霖促.		////////////////////////////////////////////////////////////		pStmt->executeQuery("DELETE FROM OustersSkillSave WHERE OwnerID = '%s'", pPacket->getName().c_str());		////////////////////////////////////////////////////////////		// 拌鞭 焊呈胶甫 瘤况霖促.		////////////////////////////////////////////////////////////		pStmt->executeQuery("DELETE FROM RankBonusData WHERE OwnerID = '%s'", pPacket->getName().c_str() );		////////////////////////////////////////////////////////////		// 酒捞袍阑 兵弊府 瘤款促.		//////////////////////////////////////////////////////////////		g_pItemDestroyer->destroyAll(pPacket->getName());		string ownerID = pPacket->getName();		pStmt->executeQuery("DELETE FROM ARObject WHERE OwnerID = '" + ownerID + "'");		pStmt->executeQuery("DELETE FROM BeltObject WHERE OwnerID = '" + ownerID + "'");		pStmt->executeQuery("DELETE FROM BladeObject WHERE OwnerID = '" + ownerID + "'");		pStmt->executeQuery("DELETE FROM BloodBibleObject WHERE OwnerID = '" + ownerID + "'");

⌨️ 快捷键说明

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