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

📄 gmmgr.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
字号:
// GMMgr.cpp: implementation of the CGMMgr class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "CItem.h"
#include "Auction.h"
#include "DefaultHeader.h"
#include "DR_NETWORK.h"
#include "GMMgr.h"
CGMMgr GMMgr;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGMMgr::CGMMgr()
{

}

CGMMgr::~CGMMgr()
{

}

int CGMMgr::IsAllGM(CHARLIST *ch)const//1瞒 2瞒 棵 瘤骏?
{
	for(int i = 0; MAX_GM_MAIN > i ; i++)
	{
		if(	g_GmMain[i].job_level == 1
		||	g_GmMain[i].job_level == 2)//1饭骇捞唱 2饭骇 胶懦捞 葛滴 1000000 捞绢具 茄促
		{
			if(1000000 !=ch->skillexp[g_GmMain[i].skill].skillexp)
			{
				return 0;
			}
		}
	}//扁夯栏肺 All Gm捞绢具 茄促
	return 1;
}

bool CGMMgr::IsMerchant(CHARLIST *ch)const
{ 
	if(IsAllGM(ch))
	{
		if(ch->skillexp[MERCHANT].skillexp == 1000000)	
		{
			return true;
		}
	}
	return false;
}

int CGMMgr::IsSkillMaster(CHARLIST *ch)const
{	
	if(IsMerchant(ch))
	{
		t_SkillExp3* pExp3 =  (t_SkillExp3*)&ch->skillexp[SKILL_MASTER];
		const int iSkillType = pExp3->skillType;
		switch(pExp3->skillType)
		{
		case GM_QUEST_BLACKSMITH_MASTER:
		case GM_QUEST_CARPENTER_MASTER:
		case GM_QUEST_BOWCRAFT_MASTER:
		case GM_QUEST_TAILOR_MASTER	:
			{
				return iSkillType;
			}break;
		default:
			{
				return 0;
			}break;
		}
	}
	return 0;
}


int CGMMgr::CanGmRegist( const int iGmIndex, CHARLIST *ch )
{
	if(	(MAX_GM_MAIN) <= iGmIndex//iGmIndex 绰 0 锅俊 蔼捞 绝促
	||	0 > iGmIndex) 
	{
		return -1;
	}	// 裹困甫 哈绢巢
	
	if (ENABLE_GM_LEVEL >= ch->GetLevel())
	{	//< CSD-030806
		return -1;
	}	//> CSD-030806

	if(!ch->IsPayedUser()) //20 捞窍搁//021126 lsw
	{
		return -1;
	}
		
	const GM_QUEST *pGmMain = &g_GmMain[iGmIndex];
//	if( pGmMain->need_money > ch->Money ) {return 0;}	// 捣捞 何练窍促.

	for( int i=0; i<MAX_GM_NEED_ITEM_COUNT; i++ )
	{
		const int iItemNo = pGmMain->need_item[i];
		if( iItemNo )
		{	// 角力 弊 酒捞袍阑 啊瘤绊 乐绰瘤 眉农( 牢亥配府俊 啊瘤绊 乐绢具 茄促. );
			const int ct = ::CheckInventory( ch, iItemNo, pGmMain->need_quantity[i] );
			if( ct < 0 ) 
			{
				return -4;								// 漂沥 酒捞袍狼 荐樊捞 何练窍促.
			}
		}
	}

	switch(pGmMain->job_level)
	{
	case 1:
	case 2:
		{
			const int iSkillExpIndex = g_GmMain[iGmIndex].skill;
			if( ch->skillexp[iSkillExpIndex].skillexp != 999999 )
			{
				return -2;			// 版氰摹啊 救凳
			}
			if(2 == pGmMain->job_level)//case 1档 乐栏聪鳖
			{
				int ok =0;
				switch(iSkillExpIndex)
				{
				case CARPENTRY		:	{if(ch->skillexp[CUTDOWN].skillexp == 1000000) ok = 1;}break;
				case BLACKSMITHY	:	{if(ch->skillexp[MINING].skillexp == 1000000) ok = 1;}break;
				case COOKING		:	{if(ch->skillexp[FARMING].skillexp == 1000000 
										||	ch->skillexp[FISHING].skillexp == 1000000)ok = 1;}break;
				case TAILORING		:	{if(ch->skillexp[BUTCHERING].skillexp == 1000000) ok = 1;}break;
				case BOWCRAFTING	:	{if(ch->skillexp[CUTDOWN].skillexp == 1000000) ok = 1;}break;
				case ALCHEMING		:	{if(ch->skillexp[HERBDIGGING].skillexp == 1000000) ok = 1;}break;
				case CANDLEMAKING	:	{if(ch->skillexp[FISHING].skillexp == 1000000) ok = 1;}break;
				default:
					ok = 0;
					break;
				}
				if(1==ok){return 2;}
			}
		}break;//case 2:
	case 3:
		{
			return ((IsAllGM(ch))?3:-3);
		}break;
	case 4:
		{
			return ((IsMerchant(ch))?4:-4);
		}break;
	default:
		{
			return -3;
		}break;
	}//switch(pGmMain->job_level)
	return 1;
}

⌨️ 快捷键说明

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