www.pudn.com > back.rar > buy.cpp


//_________________________________________________________________________________ 
// 
//	buy.cpp 
// 
//	buy packet ó¸® ÇÔ¼ö 
// 
//_________________________________________________________________________________ 
// 
#include "Base.H" 
#include "Block.H" 
#include "skill.h" 
 
#include "../CUserInfo/UserInfo.H" 
#include "item.h" 
#include "npc.h" 
#include "xblock.h" 
#include "Clock.H" 
#include "MAP.H" 
#include "CWayAi.h" 
 
#include "xblock_table.h" 
#include "../protocol/Protocol.H"	 
#include "appear.h" 
#include "disappear.h" 
#include "buy.h" 
#include "party.h" 
//#include "skill.h" 
#include "trade.h" 
#include "guild.h" 
#include "PrivateShop.h"	//ÀÓâ¿ø Ãß°¡. 
 
#include "Server.H" 
#include "Main.H" 
#include "Process.H"  
 
bool	CMarketIndex::Check_Item( DWORD dwIndex ) 
{ 
	vector::iterator iter; 
	for( iter = Sell_List.begin(); iter != Sell_List.end(); ++iter ) 
	{ 
		if( *iter == dwIndex ) 
			return true; 
	} 
	return false; 
} 
 
void Server::Process_Buy( int iClient, SIOCPPacket *pMsg ) 
{ 
	//ÀÓâ¿ø Ãß°¡. °³ÀλóÁ¡ °ü·Ã.////////////////////////////////////////////////////////////////////////////////////////////////////// 
	if( g_UserArray[iClient].m_nPrivateShop != -1 &&  
		g_UserArray[g_PrivateShop[g_UserArray[iClient].m_nPrivateShop].m_nUser1].Return_Unique() == g_UserArray[iClient].Return_Unique() ) 
		return; 
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
 
	if( g_UserArray[iClient].m_status == CHR_DEATH ) 
	{ 
		SP_Buy_Error sbe; 
 
		sbe.m_error = 0;  
 
		g_UserArray[iClient].WriteBuffer( (BYTE*)&sbe, sizeof( SP_Buy_Error ) );		 
		return;		 
	} 
	 
	CP_Buy *bp = (CP_Buy*)pMsg; 
	DWORD pos; // ÀιêÀÌ µé¾î°¡´Â À§Ä¡  
	_Value4 iteminfo; 
	 
	if( bp->m_marketindex < 0 || bp->m_marketindex > MAX_MARKET ) 
		return; 
 
	// ¸ñ·Ï¿¡ ¹°°Ç ÀÖ´ÂÁö È®ÀÎ 
	if( g_Market[ bp->m_marketindex ].Check_Item( bp->m_itemidx ) == false ) 
	{ 
		SP_Buy_Error Msg; 
		Msg.m_error = NOT_RIGHT_LIST; 
		g_UserArray[iClient].WriteBuffer( (BYTE*)&Msg, sizeof( SP_Buy_Error ) ); 
		return; 
	} 
 
	DWORD res = g_UserArray[iClient].Buy_Item( bp->m_itemidx , bp->m_count, bp->m_marketindex , &pos , bp->m_iOveritem , bp->m_iOverunique , &iteminfo ); // unique°ªÀ» º¸³½´Ù. 
	if( res != 0 )  
	{ 
		if(res == 1) 
		{ 
			SP_Buy_Error sbe; 
 
			sbe.m_error = 1; // Àκ¥Å丮¿¡ À߸ø ³Ö¾ú´Ù. 
 
			g_UserArray[iClient].WriteBuffer( (BYTE*)&sbe, sizeof( SP_Buy_Error ) ); 
#if defined (GENERATE_LOG_ALL) 
			m_output<<"Àκ¥¿¡ À߸ø³Ö¾î ½ÇÆÐ \r\n"; 
			m_output<m_itemidx; 
		sbo.m_itemunique = res; 
		sbo.m_count = bp->m_count; 
		sbo.m_pos = pos; 
		// 1021-LIM // 
		sbo.m_iteminfo.m_dwValue = iteminfo.m_dwValue; 
//		sbo.m_iteminfo.m_byValue[0] = iteminfo.m_byValue[0]; // life´Â 0À» ¼ÂÆÃÀ» ÇÑ´Ù.(³»±¸µµ)  Áö±ÝÀº ¹«Á¶°Ç ¸¸¶¥ 
 
		g_UserArray[iClient].WriteBuffer( (BYTE*)&sbo, sizeof( SP_Buy_OK ) ); 
#if defined (GENERATE_LOG_ALL) 
		m_output<<"¾ÆÀÌÅÛ »ç±â ¼º°ø \r\n"; 
		m_output<m_itemidx); 
		if (No >= 0) 
			Process_Log_Info(7, 2, iClient, No, res, -1); 
	} 
	else 
	{ 
		SP_Buy_Error sbe; 
 
		sbe.m_error = 0;  
 
		g_UserArray[iClient].WriteBuffer( (BYTE*)&sbe, sizeof( SP_Buy_Error ) ); 
#if defined (GENERATE_LOG_ALL) 
		m_output<<"¾ÆÀÌÅÛ »ç±â ½ÇÆÐ\r\n"; 
		m_output<