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

📄 user2.cpp

📁 决战帝王1.5武神降临对喜爱决战的玩家共享研究用
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		result = FAIL;
		TempBuf.Add(result);
		Send(TempBuf, TempBuf.GetLength());
		return;
	}

	if( OutputDN > 0 ) OutCost += 150;

	DWORD BackMyDN = m_dwDN;					// 归诀
	DWORD BackBankDN = m_dwAccountBankDN;

	short slotcount = GetShort( pBuf, index );

	if( slotcount < 0 || slotcount >= TOTAL_ACCOUNT_BANK_ITEM_NUM ) { result = FAIL; goto go_result; }

	for( i = 0; i < slotcount; i++ )
	{
		arSlot[i] = GetShort( pBuf, index );
		arCount[i] = GetShort( pBuf, index );

		if(arSlot[i] >= TOTAL_ACCOUNT_BANK_ITEM_NUM) { result = FAIL; goto go_result; }

		sSid = m_AccountBankItem[arSlot[i]].sSid;
		sHaveCount = m_AccountBankItem[arSlot[i]].sCount;

		if(sSid < 0 || sSid >= g_arItemTable.GetSize()) { result = FAIL; goto go_result; }

		if(arCount[i] <= 0 || arCount[i] > sHaveCount) { result = FAIL; goto go_result; }

		if(g_arItemTable[sSid]->m_sDuration > 0 && arCount[i] > 1) { result = FAIL; goto go_result; }

		iWeight += g_arItemTable[sSid]->m_byWeight * arCount[i];

		if(m_iMaxWeight < m_iCurWeight + iWeight)
		{
			SendSystemMsg( IDS_USER_OVER_WEIGHT1, SYSTEM_ERROR, TO_ME);
			result = FAIL; 
			goto go_result;
		}

		OutCost += 150;
	}

	if( OutCost > m_dwDN )
	{
		SendSystemMsg( IDS_USER_NOT_ENOUGH_PAY_FOR_OUT, SYSTEM_ERROR, TO_ME);
		result = FAIL; 
		goto go_result;
	}
	else m_dwDN -= OutCost;

	for( i = 0; i < TOTAL_ITEM_NUM; i++ )	// 酒捞袍 沥焊 归诀
	{
		MyItem[i] = m_UserItem[i];
	}

	for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ )
	{
		BankItem[i] = m_AccountBankItem[i];
	}

	for( i = 0; i < slotcount; i++ )
	{
		tDestSlot = GetSameItem( m_AccountBankItem[arSlot[i]], INVENTORY_SLOT );

		if( tDestSlot >= 0 )
		{
			m_UserItem[tDestSlot].sCount += arCount[i];
		}
		else
		{
			tDestSlot = GetEmptySlot( INVENTORY_SLOT );

			if( tDestSlot == -1 )
			{
				for( j = 0; j < TOTAL_ITEM_NUM; j++)// 酒捞袍 沥焊 汗盔
				{
					m_UserItem[j] = MyItem[j];
				}
				for( j = 0; j < TOTAL_ACCOUNT_BANK_ITEM_NUM; j++ )
				{
					m_AccountBankItem[j] = BankItem[j];
				}
				m_dwDN = BackMyDN;
				m_dwAccountBankDN = BackBankDN;

				result = FAIL; goto go_result;
			}

			m_UserItem[tDestSlot].sLevel = m_AccountBankItem[arSlot[i]].sLevel;
			m_UserItem[tDestSlot].sSid = m_AccountBankItem[arSlot[i]].sSid;
			m_UserItem[tDestSlot].sDuration = m_AccountBankItem[arSlot[i]].sDuration;
			m_UserItem[tDestSlot].sBullNum = m_AccountBankItem[arSlot[i]].sBullNum;
			m_UserItem[tDestSlot].sCount = arCount[i];
			for(j = 0; j < MAGIC_NUM; j++) m_UserItem[tDestSlot].tMagic[j] = m_AccountBankItem[arSlot[i]].tMagic[j];
			m_UserItem[tDestSlot].tIQ = m_AccountBankItem[arSlot[i]].tIQ;
			m_UserItem[tDestSlot].iItemSerial = m_AccountBankItem[arSlot[i]].iItemSerial;

			MakeItemLog( &m_UserItem[tDestSlot], ITEMLOG_ACCOUNT_BANKOUT );
		}

		arChangeMy.Add( tDestSlot );

		if( arCount[i] >= m_AccountBankItem[arSlot[i]].sCount ) ReSetItemSlot( &m_AccountBankItem[arSlot[i]] );
		else m_AccountBankItem[arSlot[i]].sCount -= arCount[i];

		arChangeBank.Add( arSlot[i] );
	}

	if(!CheckMaxValueReturn(m_dwDN, OutputDN))
	{									// 窜, MAX蔼捞搁 瞒咀篮...
		CheckMaxValue(m_dwDN, OutputDN);
		if(m_dwDN < OutputDN) OutputDN = 0;
		else OutputDN = m_dwDN - OutputDN;
	}
	else m_dwDN += OutputDN;
										// 篮青俊辑 猾促.
	if(OutputDN >= m_dwAccountBankDN) m_dwAccountBankDN = 0;
	else m_dwAccountBankDN -= OutputDN;

	if( OutputDN > 0 )
		MakeMoneyLog( OutputDN, ITEMLOG_ACCOUNT_BANKOUT_MONEY, NULL, m_dwAccountBankDN );

	// 器飘府胶俊 技陛阑 穿利矫难 霖促.
	dwTax = (DWORD)( OutCost * ((double)sRate/100) );
	UpdateFortressTax(sStoreID, dwTax); // 器飘府胶 技陛捞搁 历厘...


	/**************************DB Update 贸府*********************************************/
	if(UpdateUserBank() == FALSE)
	{
		for( i = 0; i < TOTAL_ITEM_NUM; i++)// 酒捞袍 沥焊 汗盔
		{
			m_UserItem[i] = MyItem[i];
		}
		for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ )
		{
			m_AccountBankItem[i] = BankItem[i];
		}
		m_dwDN = BackMyDN;
		m_dwAccountBankDN = BackBankDN;

		result = FAIL;

		goto go_result;
	}

	FlushItemLog( TRUE );

go_result:
	TempBuf.Add(ACCOUNT_BANK_ITEM_MOVE_RESULT);

	if(result == FAIL)
	{
		TempBuf.Add(result);
		Send(TempBuf, TempBuf.GetLength());
		FlushItemLog( FALSE );
		return;
	}

	result = (BYTE)0x02;
	TempBuf.Add(result);

	TempBuf.Add( m_dwDN );
/*	TempBuf.Add( m_dwAccountBankDN );

	TempBuf.Add( (short)(arChangeBank.GetSize()) );

	for( i = 0; i < arChangeBank.GetSize(); i++ )
	{
		bankslot = arChangeBank[i];

		TempBuf.Add( (BYTE)bankslot );
		TempBuf.Add(m_AccountBankItem[bankslot].sLevel);
		TempBuf.Add(m_xxxxxxxxeiAccountBankItem[bankslot].sSid);
		TempBuf.Add(m_AccountBankItem[bankslot].sDuration);
		TempBuf.Add(m_AccountBankItem[bankslot].sBullNum);
		TempBuf.Add(m_AccountBankItem[bankslot].sCount);
		for( j = 0; j < MAGIC_NUM; j++) TempBuf.Add(m_AccountBankItem[bankslot].tMagic[j]);
		TempBuf.Add(m_AccountBankItem[bankslot].tIQ);
	}
*/
	TempBuf.Add( (short)(arChangeMy.GetSize()) );

	for( i = 0; i < arChangeMy.GetSize(); i++ )
	{
		myslot = arChangeMy[i];

		TempBuf.Add( (BYTE)myslot );
		TempBuf.Add( m_UserItem[myslot].sLevel );
		TempBuf.Add( m_UserItem[myslot].sSid);
		TempBuf.Add( m_UserItem[myslot].sDuration);
		TempBuf.Add( m_UserItem[myslot].sBullNum);
		TempBuf.Add( m_UserItem[myslot].sCount);
		for( j = 0; j < MAGIC_NUM; j++ ) TempBuf.Add( m_UserItem[myslot].tMagic[j] );
		TempBuf.Add( m_UserItem[myslot].tIQ );
	}

	Send(TempBuf, TempBuf.GetLength());

	m_iCurWeight += iWeight;
	GetRecoverySpeed();							// 雀汗加档 眉农...
}

void USER::AccountBankInPutDN(TCHAR *pBuf)
{
	CBufferEx TempBuf;

	BYTE result; 
	int index = 0;
	DWORD BackBankDN = 0, BackMyDN = 0;

	DWORD InputDN = GetDWORD(pBuf, index);

	TempBuf.Add(ACCOUNT_BANK_ITEM_MOVE_RESULT);

	if(InputDN == 0 || InputDN > m_dwDN) 
	{
		result = FAIL;
		TempBuf.Add(result);
		Send(TempBuf, TempBuf.GetLength());
		return;
	}
	
	BackMyDN = m_dwDN;
	BackBankDN = m_dwAccountBankDN;
										// 篮青俊 涝陛
	if(!CheckMaxValueReturn(m_dwAccountBankDN, InputDN))
	{									// 窜, MAX蔼捞搁 瞒咀篮...
		CheckMaxValue(m_dwAccountBankDN, InputDN);
		if(m_dwAccountBankDN < InputDN) InputDN = 0;
		else InputDN = m_dwAccountBankDN - InputDN;
	}
	else m_dwAccountBankDN += InputDN;
										// 啊瘤绊 乐绰 家瘤陛俊辑 猾促.
	if(m_dwDN <= InputDN) m_dwDN = 0;
	else m_dwDN -= InputDN;

	MakeMoneyLog( InputDN, ITEMLOG_ACCOUNT_BANKIN_MONEY, NULL, m_dwAccountBankDN );

	if(UpdateUserBank() == FALSE)		// DB UpDate
	{
		m_dwDN = BackMyDN;
		m_dwBankDN = BackBankDN;

		result = FAIL;
		TempBuf.Add(result);
		Send(TempBuf, TempBuf.GetLength());

		FlushItemLog( FALSE );
		return;
	}

	result = (BYTE)0x03;				// 3 : DN 涝陛
	TempBuf.Add(result);

	TempBuf.Add(m_dwAccountBankDN);			// 篮青郴 涝陛茄 醚陛咀
	TempBuf.Add(m_dwDN);				// 家瘤茄 醚陛咀

	Send(TempBuf, TempBuf.GetLength());

	FlushItemLog( TRUE );
}

void USER::AccountBankOpenReq(int nStoreID)
{
	CStore* pStore = NULL;
	pStore = GetStore(nStoreID);
	if(pStore == NULL) return;
	DWORD dwCost = 150;

	int i, j;
	CBufferEx TempBuf;

	CByteArray arItemSlotList;

//	m_dwAccountBankDN = 0;

//	if(!LoadMemAccountBank())
//	{
//		if(!LoadAccountBank()) return;						// 蜡历啊 焊包茄 篮青 酒捞袍阑 贸澜 立加且锭 啊瘤绊 柯促.
//	}

	for(i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++)
	{												// 泅犁 焊包等 酒捞袍父 焊咯林扁困秦 沥纺茄促. 
		if(m_AccountBankItem[i].sSid >= 0)
		{
			arItemSlotList.Add(i);
		}
	}

	TempBuf.Add(ACCOUNT_BANK_OPEN);

	TempBuf.Add((short)nStoreID);

	TempBuf.Add((DWORD)m_dwAccountBankDN);
	TempBuf.Add((BYTE)arItemSlotList.GetSize());

	for(i = 0; i < arItemSlotList.GetSize(); i++)
	{
		BYTE tempSlot = 0;
		tempSlot = arItemSlotList[i];
		TempBuf.Add(tempSlot);
		TempBuf.Add((short)m_AccountBankItem[tempSlot].sLevel);
		TempBuf.Add((short)m_AccountBankItem[tempSlot].sSid);
		TempBuf.Add((short)m_AccountBankItem[tempSlot].sDuration);
		TempBuf.Add((short)m_AccountBankItem[tempSlot].sBullNum);
		TempBuf.Add((short)m_AccountBankItem[tempSlot].sCount);

		for(j = 0; j < MAGIC_NUM; j++) TempBuf.Add((BYTE)m_AccountBankItem[tempSlot].tMagic[j]);

		TempBuf.Add((BYTE)m_AccountBankItem[tempSlot].tIQ);
		TempBuf.Add( dwCost );
	}

	Send(TempBuf, TempBuf.GetLength());
}

////////////////////////////////////////////////////////////////////////////////
//	荤捞坷葱 矫傈矫 竿傍俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyAssault()
{
	int iLevel = 0;
	int iSkillSid = 0;

	int iAttackUp = 0;
	int tClass = 0;

	BYTE tWeaponClass = 0;

	IsCanUseWeaponSkill(tWeaponClass);
	tClass = tWeaponClass * SKILL_NUM;

	for(int i = tClass; i < tClass + SKILL_NUM; i++)
	{
		iSkillSid  = m_UserSkill[i].sSid;

		if(iSkillSid == SKILL_ASSAULT) // 竿傍			// 20 index
		{
			// 鉴荐 胶懦 饭骇 
			iLevel = m_UserSkill[i].tLevel;		
			if(iLevel < 0) iLevel = 0;
			
			// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
			if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
			
			if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
			if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
			iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
		}
	}

	return iAttackUp;	
}

////////////////////////////////////////////////////////////////////////////////
//	荤捞坷葱 矫傈矫 例措规绢 胶懦俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyAbsoluteDefense()
{
	int iLevel = 0;
	int iSkillSid = 0;

	int iAttackUp = 0;
	int tClass = 0;

	BYTE tWeaponClass = 0;

	IsCanUseWeaponSkill(tWeaponClass);
	tClass = tWeaponClass * SKILL_NUM;

	for(int i = tClass; i < tClass + SKILL_NUM; i++)
	{
		iSkillSid  = m_UserSkill[i].sSid;
		if(iSkillSid == SKILL_ABSOLUTE_DEFENSE) // 例措规绢			21 index
		{
			// 鉴荐 胶懦 饭骇 
			iLevel = m_UserSkill[i].tLevel;		
			if(iLevel < 0) iLevel = 0;
			
			// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
			if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
			
			if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
			if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
			iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
		}
	}

	return iAttackUp;	
}

////////////////////////////////////////////////////////////////////////////////
//	荤捞坷葱 矫傈矫 荤捞坷葱 历亲 胶懦俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyPsyResist()
{
	int iLevel = 0;
	int iSkillSid = 0;

	int iAttackUp = 0;
	int tClass = 0;

	BYTE tWeaponClass = 0;

	IsCanUseWeaponSkill(tWeaponClass);
	tClass = tWeaponClass * SKILL_NUM;

	for(int i = tClass; i < tClass + SKILL_NUM; i++)
	{
		iSkillSid  = m_UserSkill[i].sSid;
		if(iSkillSid == SKILL_PSYCHIC_RESIST) // 荤捞坷葱 历亲			// 22 index
		{
			// 鉴荐 胶懦 饭骇 
			iLevel = m_UserSkill[i].tLevel;		
			if(iLevel < 0) iLevel = 0;
			
			// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
			if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
			
			if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
			if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
			iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
		}
	}

	return iAttackUp;	
}

void USER::ResetOver100LevelSkill(int sLevel)
{
	int emptyskillslot = -1;
	int skillsid = 0;

	switch( m_byClass )
	{
	case	BRAWL:
		emptyskillslot = 4;
		break;

	case	STAFF:
		emptyskillslot = 9;
		break;

	case	EDGED:
		emptyskillslot = 14;
		break;

	case	FIREARMS:
		emptyskillslot = 19;
		break;

	default:
		return;
	}

	if( emptyskillslot == -1 ) return;

	skillsid = m_UserSkill[emptyskillslot].sSid;

	if( sLevel <= 99 )		// 父距 99乏栏肺 悸泼窍扼绊 甸绢坷搁
	{
		m_UserSkill[emptyskillslot].sSid = emptyskillslot;		// 扁粮 100乏 胶懦 沥焊甫 瘤款促
		m_UserSkill[emptyskillslot].tLevel = 0;

		return;
	}
	else
	{
		if( skillsid < 0 || skillsid >= g_arSkillTable.GetSize() ) return;

		if( g_arSkillTable[skillsid]->m_sSid == -1 ) return;
		//此处为限制百级技的条件
		if(sLevel >99 && sLevel < 120)
		{
			m_UserSkill[emptyskillslot].tLevel = (BYTE)((sLevel % 100) + 1);
		}
		//如果等级大于或是等于120那么都把它的技能点数固定在20上
		if(sLevel >= 120)
		{
			m_UserSkill[emptyskillslot].tLevel = (BYTE)(20);
		}
	}
}

BOOL USER::CheckMoneyMinMax(int min, int max)
{
	if( min < -1 || max < -1 ) return FALSE;
	if( min == -1 && max == -1 ) return FALSE;

	DW

⌨️ 快捷键说明

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