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

📄 eventitemutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
#include "EventItemUtil.h"#include "Item.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Monster.h"#include "VariableManager.h"#include "ItemFactoryManager.h"#include "DB.h"#include <list>MoonCard getCardKind( PlayerCreature* pPC, Monster* pMonster ){	int UserLevel, MonsterLevel = pMonster->getLevel();	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		UserLevel = pSlayer->getHighestSkillDomainLevel();	}	else if ( pPC->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		UserLevel = pVampire->getLevel();	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		UserLevel = pOusters->getLevel();	}	else return NO_CARD;	if ( UserLevel > 100 ) UserLevel = 100;	if ( UserLevel > MonsterLevel + 20 ) return NO_CARD;	if ( rand() % g_pVariableManager->getVariable( FULL_MOON_CARD_RATIO ) == 0 )	{		return FULL_MOON;	}	else if ( rand() % g_pVariableManager->getVariable( OLD_MOON_CARD_RATIO ) == 0 )	{		return OLD_MOON;	}	else if ( rand() % g_pVariableManager->getVariable( NEW_MOON_CARD_RATIO ) == 0 )	{		return NEW_MOON;	}	else if ( rand() % g_pVariableManager->getVariable( HALF_MOON_CARD_RATIO ) == 0 )	{		return HALF_MOON;	}	return NO_CARD;}Item* getCardItem( MoonCard card ){	Item* ret = NULL;	bool putInDB = false;	switch ( card )	{		case NO_CARD:			break;		case FULL_MOON:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_QUEST_ITEM, 5, list<OptionType_t>() );			putInDB = true;			break;		case OLD_MOON:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_QUEST_ITEM, 6, list<OptionType_t>() );			putInDB = true;			break;		case HALF_MOON:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_MOON_CARD, 0, list<OptionType_t>() );			putInDB = true;			break;		case NEW_MOON:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_MOON_CARD, 1, list<OptionType_t>() );			putInDB = true;			break;		default:			break;	}	if ( putInDB )	{		filelog( "MoonCard.log", "酒捞袍捞 唱吭嚼聪促. : %d", (int)card );		Statement* pStmt = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			pStmt->executeQuery("UPDATE CardCount SET CARDCOUNT = CARDCOUNT + 1 WHERE CARDKIND = %d", (int)card - 1);			SAFE_DELETE( pStmt );		}		END_DB(pStmt)	}	return ret;}LuckyBag getLuckyBagKind( PlayerCreature* pPC, Monster* pMonster ){	int UserLevel, MonsterLevel = pMonster->getLevel();	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		UserLevel = pSlayer->getHighestSkillDomainLevel();	}	else if ( pPC->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		UserLevel = pVampire->getLevel();	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		UserLevel = pOusters->getLevel();	}	else return NO_LUCKY_BAG;	if ( UserLevel > 100 ) UserLevel = 100;	if ( UserLevel > MonsterLevel + 30 ) return NO_LUCKY_BAG;	if ( rand() % g_pVariableManager->getVariable( GREEN_LUCKY_BAG_RATIO ) == 0 )	{		return GREEN_LUCKY_BAG;	}	else if ( rand() % g_pVariableManager->getVariable( BLUE_LUCKY_BAG_RATIO ) == 0 )	{		return BLUE_LUCKY_BAG;	}	else if ( rand() % g_pVariableManager->getVariable( GOLD_LUCKY_BAG_RATIO ) == 0 )	{		return GOLD_LUCKY_BAG;	}	else if ( rand() % g_pVariableManager->getVariable( RED_LUCKY_BAG_RATIO ) == 0 )	{		return RED_LUCKY_BAG;	}	return NO_LUCKY_BAG;}Item* getLuckyBagItem( LuckyBag luckybag ){	Item* ret = NULL;	bool putInDB = false;	switch ( luckybag )	{		case NO_LUCKY_BAG:			break;		case GREEN_LUCKY_BAG:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_LUCKY_BAG, 0, list<OptionType_t>() );			putInDB = true;			break;		case BLUE_LUCKY_BAG:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_LUCKY_BAG, 1, list<OptionType_t>() );			putInDB = true;			break;		case GOLD_LUCKY_BAG:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_LUCKY_BAG, 2, list<OptionType_t>() );			putInDB = true;			break;		case RED_LUCKY_BAG:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_QUEST_ITEM, 7, list<OptionType_t>() );			putInDB = true;			break;		default:			break;	}	if ( putInDB )	{		filelog( "LuckyBag.log", "酒捞袍捞 唱吭嚼聪促. : %d", (int)luckybag );		Statement* pStmt = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			pStmt->executeQuery("UPDATE LuckyBagCount SET BAGCOUNT = BAGCOUNT + 1 WHERE BAGKIND = %d", (int)luckybag - 1);			SAFE_DELETE( pStmt );		}		END_DB(pStmt)	}	return ret;}GiftBox getGiftBoxKind( PlayerCreature* pPC, Monster* pMonster ){	int UserLevel, MonsterLevel = pMonster->getLevel();	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		UserLevel = pSlayer->getHighestSkillDomainLevel();	}	else if ( pPC->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		UserLevel = pVampire->getLevel();	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		UserLevel = pOusters->getLevel();	}	else return NO_GIFT_BOX;	if ( UserLevel > 100 ) UserLevel = 100;	if ( UserLevel > MonsterLevel + 30 ) return NO_GIFT_BOX;	if ( rand() % g_pVariableManager->getVariable( RED_GIFT_BOX_RATIO ) == 0 )	{		return RED_GIFT_BOX;	}	else if ( rand() % g_pVariableManager->getVariable( BLUE_GIFT_BOX_RATIO ) == 0 )	{		return BLUE_GIFT_BOX;	}	else if ( rand() % g_pVariableManager->getVariable( GREEN_GIFT_BOX_RATIO ) == 0 )	{		return GREEN_GIFT_BOX;	}	else if ( rand() % g_pVariableManager->getVariable( YELLOW_GIFT_BOX_RATIO ) == 0 )	{		return YELLOW_GIFT_BOX;	}	return NO_GIFT_BOX;}Item* getGiftBoxItem( GiftBox giftbox ){	Item* ret = NULL;	bool putInDB = false;	switch ( giftbox )	{		case NO_GIFT_BOX:			break;		case RED_GIFT_BOX:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_GIFT_BOX, 2, list<OptionType_t>() );			putInDB = true;			break;		case BLUE_GIFT_BOX:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_GIFT_BOX, 3, list<OptionType_t>() );			putInDB = true;			break;		case GREEN_GIFT_BOX:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_GIFT_BOX, 4, list<OptionType_t>() );			putInDB = true;			break;		case YELLOW_GIFT_BOX:			ret = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_GIFT_BOX, 5, list<OptionType_t>() );			putInDB = true;			break;		default:			break;	}	if ( putInDB )	{		filelog( "GiftBox.log", "酒捞袍捞 唱吭嚼聪促. : %d", (int)giftbox + 1 );		Statement* pStmt = NULL;		BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			pStmt->executeQuery("UPDATE GiftBoxCount SET BOXCOUNT = BOXCOUNT + 1 WHERE BOXKIND = %d", (int)giftbox + 1 );			SAFE_DELETE( pStmt );		}		END_DB(pStmt)	}	return ret;}int getBlackGiftBoxType( int t1, int t2){	// 鞘混 窍靛内爹捞促 -ば-	int min = 0;	int max = 0;	if ( t1 > t2 )	{		min = t2;		max = t1;	}	else	{		min = t1;		max = t2;	}	if ( min == 2 && max == 2 )		return 6;	else if ( min == 2 && max == 3 )		return 7;	else if ( min == 2 && max == 4 )		return 8;	else if ( min == 2 && max == 5 )		return 9;	else if ( min == 3 && max == 3 )		return 10;	else if ( min == 3 && max == 4 )		return 11;	else if ( min == 3 && max == 5 )		return 12;	else if ( min == 4 && max == 4 )		return 13;	else if ( min == 4 && max == 5 )		return 14;	else if ( min == 5 && max == 5 )		return 15;	return 0;}bool canGiveEventItem( PlayerCreature* pPC, Monster* pMonster ){	int UserLevel, MonsterLevel = pMonster->getLevel();	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		UserLevel = pSlayer->getHighestSkillDomainLevel();	}	else if ( pPC->isVampire() )	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		Assert( pVampire != NULL );		UserLevel = pVampire->getLevel();	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		UserLevel = pOusters->getLevel();	}	else return false;	if ( UserLevel > 100 ) UserLevel = 100;	if ( UserLevel > MonsterLevel + 30 ) return false;	return true;}

⌨️ 快捷键说明

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