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

📄 pcmanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 4 页
字号:
						// 见绢乐菌阑 版快 磷阑锭 脾绢唱柯促.						// 2003. 1. 17. Sequoia, DEW						if( pVampire->isFlag( Effect::EFFECT_CLASS_HIDE ) )						{							if( canUnburrow( pZone, pVampire->getX(), pVampire->getY() ) )							{								addUnburrowCreature( pZone, pVampire, pVampire->getX(), pVampire->getY(), pVampire->getDir() );							}						}						// 冠零唱 戳措 惑怕牢 轨颇捞绢绰 磷阑 锭 盔贰措肺 倒酒埃促.						if ( pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_BAT ) ||							 pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF ) ||							 pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_WERWOLF ) )						{							Zone* pZone = pVampire->getZone();							Assert(pZone != NULL);							addUntransformCreature(pZone, pVampire, true);						}						// 包 救俊 乐带 轨颇捞绢绰 磷阑 锭 包捞 绝绢柳促./*						if ( pVampire->isFlag( Effect::EFFECT_CLASS_CASKET ) )						{							EffectSummonCasket* pEffect = dynamic_cast<EffectSummonCasket*>( pVampire->findEffect( Effect::EFFECT_CLASS_CASKET ) );							Assert( pEffect != NULL );							pEffect->setDeadline(0);						}*/						// 己氢俊 蝶扼辑 捣苞 酒捞袍阑 冻绢飘赴促.						if (pVampire->getLevel() > 10 && pVampire->getCompetence() == 3) 						{							Alignment_t alignment   = pVampire->getAlignment();							ItemNum_t   DropItemNum = g_pAlignmentManager->getDropItemNum(alignment, pVampire->isPK());							// DropItemNum俺鳖瘤父 							// 馒侩茄 蜡聪农 酒捞袍阑 冻绢哆赴促.							for(int i = 0; DropItemNum>0 && i<Vampire::VAMPIRE_WEAR_MAX; i++) 							{								Item* pItem = pVampire->getWearItem( (Vampire::WearPart)i );								if (pItem != NULL									&& pItem->isUnique()									&& !pItem->isTimeLimitItem()								)								{									// by sigi. 2002.11.7									pVampire->removeShape( pItem->getItemClass(), true );									/*									GCRemoveFromGear gcRemoveFromGear;									gcRemoveFromGear.setSlotID(i);									gcRemoveFromGear.setDestroy(false);									pVampire->getPlayer()->sendPacket(&gcRemoveFromGear);									*/																		if (isTwohandWeapon(pItem)) 									{										pVampire->deleteWearItem(Vampire::WEAR_LEFTHAND);										pVampire->deleteWearItem(Vampire::WEAR_RIGHTHAND);									} 									else 									{										pVampire->deleteWearItem((Vampire::WearPart)i);									}									// 粮栏肺 谎赴促.									TPOINT pt = pZone->addItem(pItem, pVampire->getX(), pVampire->getY());									if (pt.x != -1)									{										filelog("uniqueItem.txt", "DropByKilled: %s %s", pVampire->getName().c_str(), pItem->toString().c_str());										pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y);										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											char zoneName[15];											sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y);											remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP);										}									}									else									{										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP);										}										pItem->destroy();										SAFE_DELETE(pItem);									}									log(LOG_DROP_ITEM_DIE, pVampire->getName(), "");									// 冻绢哆副 俺荐甫 临咯霖促.									DropItemNum--;									// 蜡聪农绰 公炼扒 茄俺父 冻绢哆赴促.									break;								}							}							for(int i = 0; i < DropItemNum; i++) 							{								int RandomValue = Random(0, (int)Vampire::VAMPIRE_WEAR_MAX - 1);								Item* pItem = pVampire->getWearItem(Vampire::WearPart(RandomValue));								// 目敲傅阑 冻绢哆妨急 救等促 ぬ.ば								// 2003.3.14								if (pItem != NULL								&&	!isCoupleRing(pItem)								&&	!pItem->isTimeLimitItem()								) 								{									// by sigi. 2002.11.7									pVampire->removeShape( pItem->getItemClass(), true );									/*									GCRemoveFromGear gcRemoveFromGear;									gcRemoveFromGear.setSlotID(i);									gcRemoveFromGear.setDestroy(false);									pVampire->getPlayer()->sendPacket(&gcRemoveFromGear);									*/									if (isTwohandWeapon(pItem)) 									{										pVampire->deleteWearItem(Vampire::WEAR_LEFTHAND);										pVampire->deleteWearItem(Vampire::WEAR_RIGHTHAND);									} 									else 									{										pVampire->deleteWearItem(Vampire::WearPart(RandomValue));									}									//pItem->destroy();									//pCorpse->addTreasure(pItem);									// 粮栏肺 谎赴促.									TPOINT pt = pZone->addItem(pItem, pVampire->getX(), pVampire->getY());									if (pt.x != -1)									{										filelog("dropItem.txt", "DropByKilled: %s %s", pVampire->getName().c_str(), pItem->toString().c_str());										pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y);										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											char zoneName[15];											sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y);											remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP);										}									}									else									{										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP);										}										pItem->destroy();										SAFE_DELETE(pItem);									}									log(LOG_DROP_ITEM_DIE, pVampire->getName(), "");								}							}						}						SkillHandler * pSkillHandler = g_pSkillHandlerManager->getSkillHandler(SKILL_EXTREME);						Assert( pSkillHandler != NULL );						// 劳胶飘覆 吧绢林扁~ 盒畴~~						pSkillHandler->execute( pVampire );						// PK 寸茄巴阑 犁 悸泼 秦 拎具 茄促.						pVampire->setPK(false);					}					else if (CClass == Creature::CREATURE_CLASS_OUSTERS)					{						pOusters = dynamic_cast<Ousters*>(pCreature);						// 己氢俊 蝶扼辑 捣苞 酒捞袍阑 冻绢飘赴促.						if (pOusters->getLevel() > 10 && pOusters->getCompetence() == 3) 						{							Alignment_t alignment   = pOusters->getAlignment();							ItemNum_t   DropItemNum = g_pAlignmentManager->getDropItemNum(alignment, pOusters->isPK());							// DropItemNum俺鳖瘤父 							// 馒侩茄 蜡聪农 酒捞袍阑 冻绢哆赴促.							for(int i = 0; DropItemNum>0 && i<Ousters::OUSTERS_WEAR_MAX; i++) 							{								Item* pItem = pOusters->getWearItem( (Ousters::WearPart)i );								if (pItem != NULL									&& pItem->isUnique()									&& !pItem->isTimeLimitItem()								)								{									// by sigi. 2002.11.7									pOusters->removeShape( pItem->getItemClass(), true );									/*									GCRemoveFromGear gcRemoveFromGear;									gcRemoveFromGear.setSlotID(i);									gcRemoveFromGear.setDestroy(false);									pOusters->getPlayer()->sendPacket(&gcRemoveFromGear);									*/																		if (isTwohandWeapon(pItem)) 									{										pOusters->deleteWearItem(Ousters::WEAR_LEFTHAND);										pOusters->deleteWearItem(Ousters::WEAR_RIGHTHAND);									} 									else 									{										pOusters->deleteWearItem((Ousters::WearPart)i);									}									// 粮栏肺 谎赴促.									TPOINT pt = pZone->addItem(pItem, pOusters->getX(), pOusters->getY());									if (pt.x != -1)									{										filelog("uniqueItem.txt", "DropByKilled: %s %s", pOusters->getName().c_str(), pItem->toString().c_str());										pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y);										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											char zoneName[15];											sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y);											remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP);										}									}									else									{										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP);										}										pItem->destroy();										SAFE_DELETE(pItem);									}									log(LOG_DROP_ITEM_DIE, pOusters->getName(), "");									// 冻绢哆副 俺荐甫 临咯霖促.									DropItemNum--;									// 蜡聪农绰 公炼扒 茄俺父 冻绢哆赴促.									break;								}							}							for(int i = 0; i < DropItemNum; i++) 							{								int RandomValue = Random(0, (int)Ousters::OUSTERS_WEAR_MAX - 1);								Item* pItem = pOusters->getWearItem(Ousters::WearPart(RandomValue));								// 目敲傅阑 冻绢哆妨急 救等促 ぬ.ば								// 2003.3.14								if (pItem != NULL								&&	!isCoupleRing(pItem)								&&	!pItem->isTimeLimitItem()								) 								{									// by sigi. 2002.11.7									pOusters->removeShape( pItem->getItemClass(), true );									/*									GCRemoveFromGear gcRemoveFromGear;									gcRemoveFromGear.setSlotID(i);									gcRemoveFromGear.setDestroy(false);									pOusters->getPlayer()->sendPacket(&gcRemoveFromGear);									*/									if (isTwohandWeapon(pItem)) 									{										pOusters->deleteWearItem(Ousters::WEAR_LEFTHAND);										pOusters->deleteWearItem(Ousters::WEAR_RIGHTHAND);									} 									else 									{										pOusters->deleteWearItem(Ousters::WearPart(RandomValue));									}									//pItem->destroy();									//pCorpse->addTreasure(pItem);									// 粮栏肺 谎赴促.									TPOINT pt = pZone->addItem(pItem, pOusters->getX(), pOusters->getY());									if (pt.x != -1)									{										filelog("dropItem.txt", "DropByKilled: %s %s", pOusters->getName().c_str(), pItem->toString().c_str());										pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y);										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											char zoneName[15];											sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y);											remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP);										}									}									else									{										// ItemTraceLog 甫 巢变促										if ( pItem != NULL && pItem->isTraceItem() )										{											remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP);										}										pItem->destroy();										SAFE_DELETE(pItem);									}									log(LOG_DROP_ITEM_DIE, pOusters->getName(), "");								}							}						}						// PK 寸茄巴阑 犁 悸泼 秦 拎具 茄促.						pOusters->setPK(false);					}					else					{						throw Error("invalid creature class");					}					// 力老 贸澜俊 磷阑 锭俊绰 COMA啊 吧妨 乐瘤 臼栏骨肺,					// 捞 何盒俊 吧妨辑 COMA啊 吧府霸 等促.					EffectComa* pEffectComa = new EffectComa(pCreature);					pEffectComa->setStartTime();					if ( pTryingTile != NULL ) 						pEffectComa->setDeadline(0);					else 						pEffectComa->setDeadline(600);					EffectManager* pEffectManager = pCreature->getEffectManager();					Assert(pEffectManager != NULL);					pEffectManager->addEffect(pEffectComa);					pCreature->setFlag(Effect::EFFECT_CLASS_COMA);					PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);					Assert(pPlayerCreature!=NULL);					//Inventory* pInventory = pPlayerCreature->getInventory();					if (pCreature->isSlayer())					{						Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);						// 葛磐荤捞努阑 鸥绊 乐促搁, 葛磐荤捞努俊辑 郴赴促.						if (pSlayer->hasRideMotorcycle())						{							Zone* pZone = pCreature->getZone();							Assert(pZone!=NULL);							pSlayer->getOffMotorcycle();							GCGetOffMotorCycle _GCGetOffMotorCycle;							_GCGetOffMotorCycle.setObjectID(pSlayer->getObjectID());							pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &_GCGetOffMotorCycle);						}						// 泅犁 秋扁甫 何弗 惑怕扼搁 秋扁甫 馋促.						if (pSlayer->isFlag(Effect::EFFECT_CLASS_SLAYER_PORTAL))						{							pSlayer->removeFlag(Effect::EFFECT_CLASS_SLAYER_PORTAL);							// 秋扁甫 力芭窍扼绊 谎妨拎具 窍绰单...?							//GCAddHelicopter gcAddHelicopter;							//gcAddHelicopter.setObjectID(pSlayer->getObjectID());							//gcAddHelicopter.setCode(1);							//pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcAddHelicopter);						}					}					else if (pCreature->isVampire())					{						//Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);						// 包 加俊辑 唱啊扁						if (pCreature->isFlag(Effect::EFFECT_CLASS_CASKET))						{							Effect* pEffectCasket = pCreature->findEffect(Effect::EFFECT_CLASS_CASKET);							if (pEffectCasket!=NULL)							{								//cout << "Coma --> casket unaffect" << endl;								pEffectCasket->unaffect();							}							pCreature->deleteEffect(Effect::EFFECT_CLASS_CASKET);							pCreature->removeFlag(Effect::EFFECT_CLASS_CASKET);						}					}										if ( pCreature->isFlag( Effect::EFFECT_CLASS_DIVINE_GUIDANCE ) )					{						Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_DIVINE_GUIDANCE);						if ( pEffect != NULL ) pEffect->unaffect();						pCreature->removeFlag( Effect::EFFECT_CLASS_DIVINE_GUIDANCE );						pCreature->deleteEffect( Effect::EFFECT_CLASS_DIVINE_GUIDANCE );					}					if ( pCreature->isFlag( Effect::EFFECT_CLASS_ACID_ERUPTION ) )					{						Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_ACID_ERUPTION);						if ( pEffect != NULL ) pEffect->unaffect();						pCreature->removeFlag( Effect::EFFECT_CLASS_ACID_ERUPTION );						pCreature->deleteEffect( Effect::EFFECT_CLASS_ACID_ERUPTION );					}					if ( pCreature->isFlag( Effect::EFFECT_CLASS_FADE_OUT ) )					{						pCreature->removeFlag( Effect::EFFECT_CLASS_FADE_OUT );						pCreature->deleteEffect( Effect::EFFECT_CLASS_FADE_OUT );						// unaffect 甫 秦林搁 胶唱捞俏捞唱 牢厚瘤啊 吧府扁 锭巩俊 秦林搁 救 等促.					}					if ( pCreature->isFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET ) )					{						pCreature->removeFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET );						pCreature->deleteEffect( Effect::EFFECT_CLASS_REFINIUM_TICKET );					}					if (pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH))					{						Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_SUMMON_SYLPH);

⌨️ 快捷键说明

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