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<