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

📄 zone.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					getObjectRegistry().registerObject(pNormalPortal);					m_pTiles[x][y].addPortal(pNormalPortal);					portalType = PORTAL_SLAYER;					if (bOutput)					{						cout << "Slayer(" << (int)x << "," << (int)y << "," << (int)targetZoneID << "," << (int)targetX << "," << (int)targetY << ")" << endl;					}				}				else if (type == PORTAL_VAMPIRE)				{					SMP.read(&targetZoneID, szZoneID);					SMP.read(&targetX,      szBYTE);					SMP.read(&targetY,      szBYTE);					// 器呕阑 积己秦 霖促.					NormalPortal* pNormalPortal = new NormalPortal();					pNormalPortal->setObjectType(PORTAL_VAMPIRE);					pNormalPortal->setZoneID(targetZoneID);					pNormalPortal->setX(targetX);					pNormalPortal->setY(targetY);					getObjectRegistry().registerObject(pNormalPortal);					m_pTiles[x][y].addPortal(pNormalPortal);					portalType = PORTAL_VAMPIRE;					if (bOutput)					{						cout << "Vampire(" << (int)x << "," << (int)y << "," << (int)targetZoneID << "," << (int)targetX << "," << (int)targetY << ")" << endl;					}				}				else if (type == PORTAL_MULTI_TARGET)				{					BYTE size;					SMP.read(&size, szBYTE);					// 器呕阑 积己秦 霖促.					MultiPortal* pMultiPortal = new MultiPortal();					for(int i = 0; i < size; i++) 					{						SMP.read(&targetZoneID, szZoneID);						SMP.read(&targetX,      szBYTE);						SMP.read(&targetY,      szBYTE);						pMultiPortal->setObjectType(PORTAL_SLAYER);						// 鸥百 牢器甫 备己茄促.						PortalTargetInfo* pPortalTargetInfo = new PortalTargetInfo();						pPortalTargetInfo->setZoneID(targetZoneID);						pPortalTargetInfo->setX(targetX);						pPortalTargetInfo->setY(targetY);						pMultiPortal->setPortalTargetInfo(pPortalTargetInfo);					}					getObjectRegistry().registerObject(pMultiPortal);					m_pTiles[x][y].addPortal(pMultiPortal);					portalType = PORTAL_SLAYER;					if (bOutput)					{						cout << "Multi(" << (int)x << "," << (int)y << "," << (int)targetZoneID << "," << (int)targetX << "," << (int)targetY << ")" << endl;					}				}				else if ( type == PORTAL_GUILD )				{					SMP.read(&targetZoneID, szZoneID);					SMP.read(&targetX,      szBYTE);					SMP.read(&targetY,      szBYTE);					// 器呕阑 积己秦 霖促.					GuildPortal* pGuildPortal = new GuildPortal();					pGuildPortal->setObjectType( PORTAL_GUILD );					pGuildPortal->setZoneID( targetZoneID );					pGuildPortal->setX( targetX );					pGuildPortal->setY( targetY );					getObjectRegistry().registerObject(pGuildPortal);					m_pTiles[x][y].addPortal(pGuildPortal);					if (bOutput)					{						cout << "Guild(" << (int)x << "," << (int)y << "," << (int)targetZoneID << "," << (int)targetX << "," << (int)targetY << ")" << endl;					}				}				else if ( type == PORTAL_BATTLE )				{					SMP.read(&targetZoneID, szZoneID);					SMP.read(&targetX,      szBYTE);					SMP.read(&targetY,      szBYTE);					// 器呕阑 积己秦 霖促.					NormalPortal* pNormalPortal = new NormalPortal();					pNormalPortal->setObjectType(PORTAL_NORMAL);					pNormalPortal->setZoneID(targetZoneID);					pNormalPortal->setX(targetX);					pNormalPortal->setY(targetY);					getObjectRegistry().registerObject(pNormalPortal);					m_pTiles[x][y].addPortal(pNormalPortal);					if (bOutput)					{						cout << "Slayer(" << (int)x << "," << (int)y << "," << (int)targetZoneID << "," << (int)targetX << "," << (int)targetY << ")" << endl;					}				}				else				{					bAddPortal = false;				}				// 器呕捞 眠啊等 版快俊				// 格利瘤 粮捞 蜡丰粮捞扼搁 				// TriggeredPortal阑 汲沥秦具 茄促.				if (bAddPortal)				{					ZoneInfo* pTargetZoneInfo = NULL;					try {						pTargetZoneInfo = g_pZoneInfoManager->getZoneInfo(targetZoneID);					} catch (NoSuchElementException& t) {						throw Error("弊繁 粮捞 绝促匙");					}					Assert(pTargetZoneInfo!=NULL);					// 扁粮狼 Portal阑 瘤匡鳖?					bool bDeleteOldPortal = false;					if (pTargetZoneInfo->isPayPlay()						|| pTargetZoneInfo->isMasterLair())					{						bDeleteOldPortal = true;					}					Tile& rTile = m_pTiles[x][y];										// 扁粮狼 Portal阑 瘤快绰 版快					if (bDeleteOldPortal)					{						// 扁粮俊 乐带 portal阑 力芭茄促.						if (rTile.hasPortal())						{							Portal* pOldPortal = rTile.getPortal();							rTile.deletePortal();							delete pOldPortal;						}					}					// 器呕阑 积己窍绊, 殿废茄促.					//----------------------------------------					// 付胶磐 饭绢牢 版快					// by sigi. 2002.9.2					//----------------------------------------					if (pTargetZoneInfo->isMasterLair())					{						TriggeredPortal* pPortal = new TriggeredPortal();						getObjectRegistry().registerObject(pPortal);						// 器呕 郴侩阑 肺靛茄促.						pPortal->setObjectType(portalType);						//pPortal->load(m_ZoneID, left, top, right, bottom);						TriggerManager& tm = pPortal->getTriggerManager();						Trigger* pTrigger = new Trigger();						pTrigger->setTriggerID( 0 );	// 狼固绝促.						pTrigger->setTriggerType("QUEST");						sprintf(str, "ConditionType : EnterMasterLair\n\t TargetZoneID : %d\n\t", (int)pTargetZoneInfo->getZoneID());						pTrigger->setConditions( str );						sprintf(str, "ActionType : ActivatePortal\n\t ZoneID : %d\n\t X : %d\n\t Y : %d\n\t", targetZoneID, targetX, targetY);						pTrigger->setActions(str);//                        sprintf( str2, "ActionType : SystemMessage\n\t Content : %s", //                                       g_pStringPool->c_str( STRID_CANNOT_ENTER ) );                        sprintf( str2, "ActionType : SystemMessage\n\t Content : %d", STRID_CANNOT_ENTER );                        pTrigger->setCounterActions( str2 );//						pTrigger->setCounterActions("ActionType : SystemMessage\n\t Content : 瘤陛篮 甸绢哎 荐 绝嚼聪促.");						tm.addTrigger(pTrigger);												// 鸥老俊促 器呕阑 嘿牢促.						rTile.addPortal(pPortal);						//cout << "[" << (int)pTargetZoneInfo->getZoneID() << "] is MasterLair"						//	 << endl;					}					//----------------------------------------					// 橇府固决 粮牢 版快					//----------------------------------------					else if (pTargetZoneInfo->isPayPlay())					{						TriggeredPortal* pPortal = new TriggeredPortal();						getObjectRegistry().registerObject(pPortal);						// 器呕 郴侩阑 肺靛茄促.						pPortal->setObjectType(portalType);						//pPortal->load(m_ZoneID, left, top, right, bottom);						TriggerManager& tm = pPortal->getTriggerManager();						Trigger* pTrigger = new Trigger();						pTrigger->setTriggerID( 0 );	// 狼固绝促.						pTrigger->setTriggerType("QUEST");						pTrigger->setConditions("ConditionType : PayPlay\n\t");						sprintf(str, "ActionType : ActivatePortal\n\t ZoneID : %d\n\t X : %d\n\t Y : %d\n\t", targetZoneID, targetX, targetY);						pTrigger->setActions(str);//                        sprintf( str2, "ActionType : SystemMessage\n\t Content : %s",//                                        g_pStringPool->c_str( STRID_CANNOT_ENTER_PAY_ZONE ) );                        sprintf( str2, "ActionType : SystemMessage\n\t Content : %d", STRID_CANNOT_ENTER_PAY_ZONE );                        pTrigger->setCounterActions( str2 );//						pTrigger->setCounterActions("ActionType : SystemMessage\n\t Content : 蜡丰粮捞扼辑 甸绢哎 荐 绝嚼聪促.");						tm.addTrigger(pTrigger);												// 鸥老俊促 器呕阑 嘿牢促.						rTile.addPortal(pPortal);					}				}			} //if (flag & 0x80)		} // for 	} // for	SMP.close();	///*	if (m_MonsterRegenPositions.size()==0)	{		cout << "MonsterRegenPosition not exist" << endl;		cout << "Width = " << m_Width << endl;		cout << "Height = " << m_Height << endl;		//Assert(m_MonsterRegenPositions.size()!=0);		ZoneCoord_t outerMinX = m_Width/7;		ZoneCoord_t outerMinY = m_Height/7;		ZoneCoord_t outerMaxX = m_Width-outerMinX;		ZoneCoord_t outerMaxY = m_Width-outerMinY;		for (ZoneCoord_t y=outerMinY; y<outerMaxY; y++)		{			for (ZoneCoord_t x=outerMinX; x<outerMaxX; x++)			{				Tile& rTile = m_pTiles[x][y];				if (!rTile.hasPortal() 					&& !rTile.isGroundBlocked()					&& !rTile.isAirBlocked()					&& !rTile.isUndergroundBlocked())				{					m_MonsterRegenPositions.push_back( BPOINT( (BYTE)x, (BYTE)y ) );				}			}		}		Assert(m_MonsterRegenPositions.size()!=0);	}	if ((isMasterLair() || m_ZoneID == 3002) && m_EmptyTilePositions.size()==0)	{		cout << "MasterLair has No EmptyTilePosition" << endl;		Assert(m_EmptyTilePositions.size()!=0);	}	// */	// Zone 沥焊甫 技泼茄促.	m_ZoneType  = pZoneInfo->getZoneType();	m_ZoneLevel = pZoneInfo->getZoneLevel();	// m_ppLevel 力芭	for (i = 0; i < m_Width; i++)	{		SAFE_DELETE_ARRAY( m_ppLevel[i] );	}	SAFE_DELETE_ARRAY( m_ppLevel );	// 皋葛府 且寸秦林绊...	m_ppLevel = new (ZoneLevel_t*) [ m_Width ];	for (uint i = 0; i < m_Width; i++)		m_ppLevel[i] = new ZoneLevel_t[m_Height];	// 粮 饭骇阑 叼弃飘 蔼栏肺 檬扁拳矫挪促.	for (ZoneCoord_t x = 0; x < m_Width; x++)		for (ZoneCoord_t y = 0; y < m_Height; y++)			m_ppLevel[x][y] = m_ZoneLevel;	// SSI 沥焊 颇老阑 楷促.	string SSIFilename = g_pConfig->getProperty("HomePath") + "/data/" + pZoneInfo->getSSIFilename();	ifstream SSI(SSIFilename.c_str(), ios::in | ios::binary | ios::nocreate);	if (!SSI)	{		strcpy( lwrFilename, SSIFilename.c_str());		strlwr( lwrFilename );		SSI.open(lwrFilename, ios::in | ios::binary | ios::nocreate);		//cout << "second chk : " << lwrFilename << endl;		if (!SSI)		{			StringStream msg;			msg << SSIFilename << " not exist or cannot open it";			throw FileNotExistException(msg.toString());		}	}	int size = 0;	SSI.read(&size, szint);	BYTE left, top, right, bottom, level;	for (int i=0; i<size; i++)	{		SSI.read(&level, szBYTE);		SSI.read(&left, szBYTE);		SSI.read(&top, szBYTE);		SSI.read(&right, szBYTE);		SSI.read(&bottom, szBYTE);		if (bOutput)		{			cout << "LEVEL:" << (int)level << ",(" << (int)left << "," << (int)top << "," << (int)right << "," << (int)bottom << ")" << endl;		}		Assert(left <= right);		Assert(top  <= bottom);		for (int bx=left; bx<=right; bx++)			for (int by=top; by<=bottom; by++)				m_ppLevel[bx][by] = level;	}	SSI.close();	// 飘府芭靛 器呕阑 肺靛茄促.	// reload俊辑绰 公矫	//loadTriggeredPortal();	// 阁胶磐 肺靛窍绊....	m_pMonsterManager->load();// eventMonsterManager绰 reload俊辑绰 公矫茄促.//#ifdef __XMAS_EVENT_CODE__//	cout << "Begin Event Monster Loading..." << endl;//	m_pEventMonsterManager->load();//	cout << "Event Monster Loading Completed..." << endl;//#endif	// 付胶磐 饭绢牢 版快	// by sigi. 2002.9.2	if (pZoneInfo->isMasterLair())	{		if (m_pMasterLairManager!=NULL			&& m_pMasterLairManager->getCurrentEvent()==MasterLairManager::EVENT_WAITING_REGEN)		{			SAFE_DELETE(m_pMasterLairManager);			m_pMasterLairManager = new MasterLairManager(this);		}	}	// 己牢 版快	// by sigi. 2003.1.24	if (pZoneInfo->isCastle())	{		if (m_pWarScheduler!=NULL)			//&& m_pWarScheduler->getCurrentEvent()==WarScheduler::EVENT_WAITING_REGEN)		{			SAFE_DELETE(m_pWarScheduler);			m_pWarScheduler = new WarScheduler(this);		}	}	// reload且 锭绰 公矫茄促.	// 酒捞袍 肺靛茄促.	//loadItem();	// NPC 甫 肺爹茄促.	//m_pNPCManager->load(m_ZoneID);	// 胶橇扼捞飘 肮荐甫 檬扁拳茄促.	initSpriteCount();} catch ( Throwable& t ){ cout << t.toString() << endl; Assert(false);}	__END_DEBUG	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// load items from database// * NOTE *// 泅犁 官蹿俊 冻绢柳 酒捞袍篮 辑滚啊 犁矫累登绢档 肺爹窍瘤 臼绰促.//////////////////////////////////////////////////////////////////////////////void Zone::loadItem () 	throw(Error){	__BEGIN_TRY	/*	// 酒捞袍 肺爹...........	g_pItemLoaderManager->load(this);	// 酒捞袍篮 促 朝妨滚啡瘤父...弊贰滴...	// 酒捞袍 坷宏璃飘 酒捞叼甫 犁 且寸 罐绊 促矫 历厘茄促.	for (int j = 0; j < m_Height; j++) 	{		for (int i = 0; i < m_Width; i++) 		{			if (m_pTiles[i][j].hasItem()) 			{				Item* pItem = m_pTiles[i][j].getItem();				m_ObjectRegistry.registerObject(pItem);				pItem->save("", STORAGE_ZONE, m_ZoneID, i, j);				addToItemList(pItem);				if (pItem->getItemClass() == Item::ITEM_CLASS_MOTORCYCLE) 				{					Motorcycle* pMotorcycle = dynamic_cast<Motorcycle*>(pItem);					MotorcycleBox* pMotorcycleBox = new MotorcycleBox(pMotorcycle, this, i, j);					g_pParkingCenter->addMotorcycleBox(pMotorcycleBox);				}			}		}	}	*/	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 泅犁 粮俊 飘府芭靛 器呕阑 肺靛茄促.////////////////////////

⌨️ 快捷键说明

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