cglotteryselecthandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 686 行 · 第 1/2 页

CPP
686
字号
										makeOptionList( oSlayer1[ rand()%5 ], oList );									}									else if ( qGrade < 211 )									{										iType = 3;										makeOptionList( oSlayer1[ rand()%5 ], oList );									}									else if ( qGrade < 271 )									{										iType = 4;										makeOptionList( oSlayer2[ rand()%5 ], oList );									}									else if ( qGrade < 300 )									{										iType = 5;										makeOptionList( oSlayer2[ rand()%5 ], oList );									}									else									{										iType = 6;										makeOptionList( oSlayer2[ rand()%5 ], oList );									}								}								else if ( pPC->isVampire() )								{									Vampire* pVampire = dynamic_cast<Vampire*>(pPC);									Level_t level = pVampire->getLevel();									iClass = Item::ITEM_CLASS_VAMPIRE_RING;																		if ( level < 31 )									{										iType = 2;										makeOptionList( oVampire1[ rand()%5 ], oList );									}									else if ( level < 51 )									{										iType = 3;										makeOptionList( oVampire1[ rand()%5 ], oList );									}									else if ( level < 71 )									{										iType = 4;										makeOptionList( oVampire2[ rand()%5 ], oList );									}									else if ( level < 91 )									{										iType = 5;										makeOptionList( oVampire2[ rand()%5 ], oList );									}									else									{										iType = 6;										makeOptionList( oVampire2[ rand()%5 ], oList );									}								}								else if ( pPC->isOusters() )								{									Ousters* pOusters = dynamic_cast<Ousters*>(pPC);									Level_t level = pOusters->getLevel();									iClass = Item::ITEM_CLASS_OUSTERS_RING;																		if ( level < 31 )									{										iType = 2;										makeOptionList( oVampire1[ rand()%5 ], oList );									}									else if ( level < 51 )									{										iType = 3;										makeOptionList( oVampire1[ rand()%5 ], oList );									}									else if ( level < 71 )									{										iType = 4;										makeOptionList( oVampire2[ rand()%5 ], oList );									}									else if ( level < 91 )									{										iType = 5;										makeOptionList( oVampire2[ rand()%5 ], oList );									}									else									{										iType = 6;										makeOptionList( oVampire2[ rand()%5 ], oList );									}								}							}							break;						case 2:							{								isLairItem = true;								masterType = 432;							}							break;						case 3:							{								isLairItem = true;								masterType = 433;							}							break;						case 4:							{								isTimeLimit = true;								if ( pPC->isSlayer() )								{									isUnique = true;									static const Item::ItemClass iClasses[] =									{										Item::ITEM_CLASS_COAT,										Item::ITEM_CLASS_TROUSER,										Item::ITEM_CLASS_GLOVE,										Item::ITEM_CLASS_HELM,										Item::ITEM_CLASS_SHOES,										Item::ITEM_CLASS_BELT,										Item::ITEM_CLASS_NECKLACE,										Item::ITEM_CLASS_BRACELET									};									static const ItemType_t iTypes[] =									{										16,										16,										8,										9,										7,										4,										10,										10									};									int index = rand() % 8;									iClass = iClasses[index];									iType = iTypes[index];								}								else if ( pPC->isVampire() )								{									isUnique = true;									static const Item::ItemClass iClasses[] =									{										Item::ITEM_CLASS_VAMPIRE_COAT,										Item::ITEM_CLASS_VAMPIRE_WEAPON,										Item::ITEM_CLASS_VAMPIRE_RING,										Item::ITEM_CLASS_VAMPIRE_NECKLACE,										Item::ITEM_CLASS_VAMPIRE_BRACELET,										Item::ITEM_CLASS_VAMPIRE_AMULET,										Item::ITEM_CLASS_VAMPIRE_EARRING									};									static const ItemType_t iTypes[] =									{										12,										15,										10,										10,										9,										10,										10									};									int index = rand() % 7;									iClass = iClasses[index];									iType = iTypes[index];								}								else if ( pPC->isOusters() )								{									static const Item::ItemClass iClasses[] =									{										Item::ITEM_CLASS_OUSTERS_COAT,										Item::ITEM_CLASS_OUSTERS_CIRCLET,										Item::ITEM_CLASS_OUSTERS_ARMSBAND,										Item::ITEM_CLASS_OUSTERS_BOOTS,										Item::ITEM_CLASS_OUSTERS_PENDENT,										Item::ITEM_CLASS_OUSTERS_RING									};									static const ItemType_t iTypes[] =									{										7,										9,										9,										7,										9,										9									};									static const string options[] =									{										"DAM+3",										"ASPD+3",										"LUCK+2",										"HP+9",										"STR+3",										"DEX+3",										"INT+3",										"ATTR+2",										"RES+3",										"MP+4"									};									int index = rand() % 6;									iClass = iClasses[index];									iType = iTypes[index];									int option1 = rand()%10;									int option2 = rand()%10;									while ( option1 == option2 ) option2 = rand()%10;									makeOptionList( options[ option1 ] + "," + options[ option2 ], oList );								}							}							break;						default:							break;					}					Item* pItem;					if ( isLairItem )					{						const MonsterInfo* pMonsterInfo = g_pMonsterInfoManager->getMonsterInfo(masterType);						TreasureList *pTreasureList = NULL;						if (pPC->isSlayer())							pTreasureList = pMonsterInfo->getSlayerTreasureList();						else if ( pPC->isVampire() )							pTreasureList = pMonsterInfo->getVampireTreasureList();						else if ( pPC->isOusters() )							pTreasureList = pMonsterInfo->getOustersTreasureList();						const list<Treasure*>& treasures = pTreasureList->getTreasures();						list<Treasure*>::const_iterator itr = treasures.begin();						ITEM_TEMPLATE it;						for(; itr != treasures.end(); itr++)						{							Treasure* pTreasure = (*itr);							it.ItemClass = Item::ITEM_CLASS_MAX;							it.ItemType = 0;							it.NextOptionRatio = 0;							//cout << "TradeLairItem: BonusRatio = " << it.NextOptionRatio << endl;							if ( pTreasure->getRandomItem(&it) )							{								pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType);								Assert(pItem != NULL);							}						}					}					else					{						pItem = g_pItemFactoryManager->createItem( iClass, iType, oList );					}					GenderRestriction gender = GENDER_BOTH;					switch( pPC->getSex() )					{						case MALE:							gender = GENDER_MALE;							break;						case FEMALE:							gender = GENDER_FEMALE;							break;						default:							break;					}					setItemGender( pItem, gender );					_TPOINT tp;					if ( pItem != NULL && pPC->getInventory()->addItem( pItem, tp ) )					{						pPC->getZone()->registerObject( pItem );						pItem->create( pPC->getName(), STORAGE_INVENTORY, 0, tp.x, tp.y );						if ( isTimeLimit )						{							pPC->addTimeLimitItem( pItem, 604800 );							pPC->sendTimeLimitItemInfo();						}						GCCreateItem gcCreateItem;						makeGCCreateItem( &gcCreateItem, pItem, tp.x, tp.y );						pPC->getPlayer()->sendPacket( &gcCreateItem );						remainTraceLog( pItem, "GOD", pCreature->getName(), ITEM_LOG_CREATE, DETAIL_EVENTNPC);					}					else					{						if ( isUnique )							pItem->setUnique();						if ( isTimeLimit )							pItem->setTimeLimitItem();						pPC->setQuestItem( pItem );						remainTraceLog( pItem, "GOD", pCreature->getName(), ITEM_LOG_CREATE, DETAIL_EVENTNPC);					}				}				if ( pPC->getLottoQuestLevel() == 4 )				{					pPC->getQuestManager()->cancelQuest();					GCNoticeEvent gcNE;					gcNE.setCode( NOTICE_EVENT_START_QUEST_ENDING );					pPC->getPlayer()->sendPacket( &gcNE );				}			}			break;		case TYPE_OVER_ENDING:			{				// 磷牢促. // PlayerCreature 俊辑绰 setHP 给 何甫淀				//pPC->setHP(0);				if ( pCreature != NULL )				{					if ( pCreature->isSlayer() )					{						Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);						pSlayer->setHP(0);					}					else if (pCreature->isVampire() )					{						Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);						pVampire->setHP(0);					}				}			}			break;	}#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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