close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

 

고정 및 작업 재고 품목 정렬 + 더미 품목.
 
Add this to s_NetGlobal.h ( you know how to do this.  )
under:
enum EMNET_MSG
{
 
    NET_MSG_GCTRL_REQ_HOLD_ARRAY                    = (NET_MSG_GCTRL 1677), 
 
 
GLCharacter.h
Declare this
PHP Code:
 
HRESULT            ReqSortItem (); 
 
GLCharacter.cpp
Add This
PHP Code:
 
HRESULT GLCharacter::ReqSortItem ()
{
    if ( !
IsValidBody() )                                                            return E_FAIL;    
    if ( 
ValidWindowOpen() )                                                        return E_FAIL;    
    if ( 
IsACTION(GLAT_ATTACK) || IsACTION(GLAT_SKILL) ||  m_sPMarket.IsOpen() )    return E_FAIL;

    
GLMSG::SNETPC_REQ_HOLD_ARRAY NetMsg;
    
NETSENDTOFIELD ( &NetMsg );
    return 
S_OK;
 
GLGaeaServerMsg.cpp
Add This
PHP Code:
 
    case NET_MSG_GCTRL_REQ_HOLD_ARRAY
 
GLCharMsg.cpp
Add This
PHP Code:
 
    case NET_MSG_GCTRL_REQ_HOLD_ARRAY:        MsgReqHoldArray(nmg);            break; 
 
GLChar.h
Declare this
PHP Code:
 
    HRESULT MsgReqHoldArray NET_MSG_GENERICnmg ); 
 
GLCharInvenMsg.cpp ( NOW HERE's THE ALGORITHM STARTS )
Add This
PHP Code:
 
HRESULT GLChar::MsgReqHoldArray NET_MSG_GENERICnmg )
{
    if ( !
IsValidBody() )    return E_FAIL;

    
std::vector<SITEMCUSTOM>    vecPILE;
    
std::vector<SNATIVEID>    vecPILEDEL;
    
std::vector<SITEMCUSTOM>    vecDEL;
    
std::vector<SNATIVEID>    vecDEL2;
    
GLInventory::CELL_MAP &ItemMap = *m_cInventory.GetItemList();
    
GLInventory::CELL_MAP_ITER iter ItemMap.begin();
    for ( ; 
iter!=ItemMap.end(); ++iter )
    {
        if (!(*
iter).second ) continue;
        
SINVENITEM &sINVENITEM = *(*iter).second;
        
SITEMCUSTOM &sITEMCUSTOM sINVENITEM.sItemCustom;
        
SITEMpHoldData GLItemMan::GetInstance().GetItem sITEMCUSTOM.sNativeID );
        if ( !
pHoldData ) continue;
        if( 
pHoldData && pHoldData->ISPILE() )  
        {
            
vecPILE.push_back sITEMCUSTOM ); 
            
vecPILEDEL.push_back SNATIVEID(sINVENITEM.wPosX,sINVENITEM.wPosY) );
        }
        else
        {
            
vecDEL.push_back sITEMCUSTOM );
            
vecDEL2.push_back SNATIVEID(sINVENITEM.wPosX,sINVENITEM.wPosY) );
        }
        
    }

    if ( !
vecDEL2.empty() )
    for ( 
DWORD i=0i<vecDEL2.size(); ++)
    {
        
m_cInventory.DeleteItem vecDEL2[i].wMainIDvecDEL2[i].wSubID );
        
GLMSG::SNETPC_INVEN_DELETE NetMsgDelete;
        
NetMsgDelete.wPosX vecDEL2[i].wMainID;
        
NetMsgDelete.wPosY vecDEL2[i].wSubID;
        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgDelete);
    }

    if ( !
vecPILEDEL.empty() )
    for ( 
DWORD i=0i<vecPILEDEL.size(); ++)
    {
        
m_cInventory.DeleteItem vecPILEDEL[i].wMainIDvecPILEDEL[i].wSubID );
        
GLMSG::SNETPC_INVEN_DELETE NetMsgDelete;
        
NetMsgDelete.wPosX vecPILEDEL[i].wMainID;
        
NetMsgDelete.wPosY vecPILEDEL[i].wSubID;
        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgDelete);
    }

    if ( !
vecDEL.empty() )
    {
        for ( 
DWORD b=0b<vecDEL.size(); ++)
        for ( 
DWORD c=0c<vecDEL.size()-1; ++)
        {
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecDEL[c].sNativeID );
            if ( !
pHoldData )
            {
                
//MessageBox(NULL,"if ( !pHoldData )","vecDEL",NULL);
                
continue;
            }
            
SITEMpHoldData2 GLItemMan::GetInstance().GetItem vecDEL[c+1].sNativeID );
            if ( !
pHoldData2 )
            {
            
//    MessageBox(NULL,"if ( !pHoldData2 )","vecDEL",NULL);
                
continue;
            }
            
BOOL bCOMPARE FALSE;
            if ( 
pHoldData->sBasicOp.emItemType pHoldData2->sBasicOp.emItemType bCOMPARE TRUE;
            else if ( 
pHoldData->sBasicOp.emItemType == pHoldData2->sBasicOp.emItemType )
            {
                if ( 
pHoldData->sBasicOp.emItemType == ITEM_SUIT )
                {
                    if ( 
pHoldData->sSuitOp.emSuit == pHoldData2->sSuitOp.emSuit )
                    {
                        if ( 
pHoldData->sSuitOp.emSuit == SUIT_HANDHELD )
                        {
                            if ( 
pHoldData->sSuitOp.emAttack pHoldData2->sSuitOp.emAttack bCOMPARE TRUE;
                        }
                        else 
bCOMPARE TRUE;
                    }
                    else if ( 
pHoldData->sSuitOp.emSuit pHoldData2->sSuitOp.emSuit bCOMPARE TRUE;
                }
                else 
bCOMPARE TRUE;
            }

            if ( 
bCOMPARE 
            {
                
SITEMCUSTOM sCUSTOM vecDEL[c+1];
                
vecDEL[c+1] = vecDEL[c];
                
vecDEL[c] = sCUSTOM;
            }
        }

        
WORD _X 0_Y 0;
        for( 
int i 0vecDEL.size(); i++ )
        {        
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecDEL[i].sNativeID );
            if ( !
pHoldData )
            {
                
//MessageBox(NULL,"if ( !pHoldData )","",NULL);
                
continue;
            }
            
BOOL bOk m_cInventory.IsInsertable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
            if ( !
bOk )
            {
                
bOk m_cInventory.FindInsrtable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
                if ( !
bOk )
                {
                    
//MessageBox(NULL,"bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );","",NULL);
                    
continue;
                }
            }
            
bOk m_cInventory.InsertItem vecDEL[i], _X_Y );
            if ( !
bOk )    
            {
                
//MessageBox(NULL,"!bOk = m_cInventory.InsertItem ( vecDEL[i], _X, _Y );","",NULL);
                
continue;
            }
            
                    
            
SINVENITEM sINVENITEM = *m_cInventory.FindPosItem _X_Y );
                    
            
GLMSG::SNETPC_INVEN_INSERT NetMsg_Inven_Insert;
            
NetMsg_Inven_Insert.Data sINVENITEM;
            
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsg_Inven_Insert);

            
SITEM *pITEM GLItemMan::GetInstance().GetItem sINVENITEM.sItemCustom.sNativeID );
            if ( 
pITEM && pITEM->IsTIMELMT() )
            {
                if ( 
pITEM->sDrugOp.tTIME_LMT != )
                {
                    const 
CTime cTIME_CUR CTime::GetCurrentTime();

                    
CTimeSpan cSPAN(pITEM->sDrugOp.tTIME_LMT);
                    
CTime cTIME_LMT(sINVENITEM.sItemCustom.tBORNTIME);
                    
cTIME_LMT += cSPAN;

                    if ( 
cTIME_CUR cTIME_LMT )
                    {
                        if ( 
pITEM->sBasicOp.emItemType == ITEM_VEHICLE && sINVENITEM.sItemCustom.dwVehicleID != )
                        {
                            
GLVEHICLEpNewVehicle = new GLVEHICLE();
                            
CGetVehiclepGetVehicle = new CGetVehicle pNewVehicle
                                                        
sINVENITEM.sItemCustom.dwVehicleID
                                                        
m_dwClientID
                                                        
m_dwCharID
                                                        
true );
                            
GLDBManpDBMan GLGaeaServer::GetInstance().GetDBMan ();
                            if ( 
pDBMan pDBMan->AddJob pGetVehicle );
                        }

                        if ( 
pITEM->sBasicOp.emItemType == ITEM_PET_CARD && sINVENITEM.sItemCustom.dwPetID != )
                        {
                            
CDeletePetpDbAction = new CDeletePet m_dwCharIDsINVENITEM.sItemCustom.dwPetID );
                            
GLDBManpDBMan GLGaeaServer::GetInstance().GetDBMan ();
                            if ( 
pDBMan pDBMan->AddJob pDbAction );

                            
PGLPETFIELD pMyPet GLGaeaServer::GetInstance().GetPET m_dwPetGUID );
                            if ( 
pMyPet && sINVENITEM.sItemCustom.dwPetID == pMyPet->m_dwPetID )
                            {
                                
pMyPet->UpdateTimeLmtItem this );

                                for ( 
WORD i 0PET_ACCETYPE_SIZE; ++)
                                {
                                    
CItemDrop cDropItem;
                                    
cDropItem.sItemCustom pMyPet->m_PutOnItems[i];
                                    if ( 
IsInsertToInven ( &cDropItem ) ) InsertToInven ( &cDropItem );
                                    else
                                    {
                                        if ( 
m_pLandMan )
                                        {
                                            
m_pLandMan->DropItem m_vPos
                                                                &(
cDropItem.sItemCustom), 
                                                                
EMGROUP_ONE
                                                                
m_dwGaeaID );
                                        }
                                    }
                                }

                                
GLGaeaServer::GetInstance().ReserveDropOutPet SDROPOUTPETINFO(pMyPet->m_dwGUID,true,false) );

                                
CGetRestorePetList *pDbAction = new CGetRestorePetList m_dwCharIDm_dwClientID );
                                if ( 
pDBMan pDBMan->AddJob pDbAction );
                            }
                            else
                            {
                                
GLPETpNewPet = new GLPET ();
                                
CGetPetpGetPet = new CGetPet pNewPet
                                                                
sINVENITEM.sItemCustom.dwPetID
                                                                
m_dwClientID
                                                                
m_dwCharID,
                                                                
sINVENITEM.wPosX,
                                                                
sINVENITEM.wPosY,
                                                                
true );
                                
GLDBManpDBMan GLGaeaServer::GetInstance().GetDBMan ();
                                if ( 
pDBMan pDBMan->AddJob pGetPet );
                            }
                        }

                        
GLMSG::SNETPC_INVEN_DELETE NetMsgInvenDel;
                        
NetMsgInvenDel.wPosX sINVENITEM.wPosX;
                        
NetMsgInvenDel.wPosY sINVENITEM.wPosY;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDel);

                        
GLMSG::SNET_INVEN_DEL_ITEM_TIMELMT NetMsgInvenDelTimeLmt;
                        
NetMsgInvenDelTimeLmt.nidITEM sINVENITEM.sItemCustom.sNativeID;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDelTimeLmt);

                        
m_cInventory.DeleteItem sINVENITEM.wPosXsINVENITEM.wPosY );
                    
                        if ( 
sINVENITEM.sItemCustom.nidDISGUISE!=SNATIVEID(false) )
                        {
                            
SITEM *pONE GLItemMan::GetInstance().GetItem sINVENITEM.sItemCustom.nidDISGUISE );
                            if ( !
pONE )        continue;

                            
SITEMCUSTOM sITEM_NEW;
                            
sITEM_NEW.sNativeID sINVENITEM.sItemCustom.nidDISGUISE;
                            
CTime cTIME CTime::GetCurrentTime();
                            if ( 
sINVENITEM.sItemCustom.tDISGUISE!=&& pONE->sDrugOp.tTIME_LMT!= )
                            {
                                
cTIME CTime(sINVENITEM.sItemCustom.tDISGUISE);

                                
CTimeSpan tLMT(pONE->sDrugOp.tTIME_LMT);
                                
cTIME -= tLMT;
                            }

                            
sITEM_NEW.tBORNTIME cTIME.GetTime();
                            
sITEM_NEW.wTurnNum 1;
                            
sITEM_NEW.cGenType EMGEN_BILLING;
                            
sITEM_NEW.cChnID = (BYTE)GLGaeaServer::GetInstance().GetServerChannel();
                            
sITEM_NEW.cFieldID = (BYTE)GLGaeaServer::GetInstance().GetFieldSvrID();
                            
sITEM_NEW.lnGenNum GLITEMLMT::GetInstance().RegItemGen sITEM_NEW.sNativeID, (EMITEMGEN)sITEM_NEW.cGenType );

                            
BOOL bOk m_cInventory.IsInsertable pONE->sBasicOp.wInvenSizeXpONE->sBasicOp.wInvenSizeY_X_Y );
                            if ( !
bOk )            continue;

                            
m_cInventory.InsertItem sITEM_NEW_X_Y );
                            
SINVENITEM *pINSERT_ITEM m_cInventory.GetItem _X_Y );

                            
GLMSG::SNETPC_INVEN_INSERT NetItemInsert;
                            
NetItemInsert.Data = *pINSERT_ITEM;
                            
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetItemInsert);

                            
GLITEMLMT::GetInstance().ReqItemRoute pINSERT_ITEM->sItemCustomID_CHAR0ID_CHARm_dwCharIDEMITEM_ROUTE_CHARpINSERT_ITEM->sItemCustom.wTurnNum );
                        }
                    }
                }
            }
            
            if ( 
_X _X++;
            else
            {
                
_X 0;
                
_Y++;
            }
        }
    }

    if ( !
vecPILE.empty() )
    {
        for ( 
DWORD b=0b<vecPILE.size(); ++)
        for ( 
DWORD c=0c<vecPILE.size()-1; ++)
        {
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecPILE[c].sNativeID );
            if ( !
pHoldData )    continue;
            
            
SITEMpHoldData2 GLItemMan::GetInstance().GetItem vecPILE[c+1].sNativeID );
            if ( !
pHoldData2 )    continue;
            
            
BOOL bCOMPARE FALSE;
            
            if ( 
pHoldData->sBasicOp.sNativeID.dwID pHoldData2->sBasicOp.sNativeID.dwID bCOMPARE TRUE;
            else if ( 
pHoldData->sBasicOp.sNativeID == pHoldData2->sBasicOp.sNativeID && vecPILE[c].wTurnNum != vecPILE[c+1].wTurnNum bCOMPARE TRUE;
            
            if ( 
bCOMPARE 
            {
                
SITEMCUSTOM sCUSTOM vecPILE[c+1];
                
vecPILE[c+1] = vecPILE[c];
                
vecPILE[c] = sCUSTOM;
            }
        }

        
WORD _X 0_Y 0;
        for( 
int i 0vecPILE.size(); i++ )
        {        
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecPILE[i].sNativeID );
            if ( !
pHoldData )
            {
                
//MessageBox(NULL,"if ( !pHoldData )",NULL,NULL);
                
continue;
            }
            
BOOL bOk m_cInventory.IsInsertable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
            if ( !
bOk )
            {
                
bOk m_cInventory.FindInsrtable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
                if ( !
bOk )
                {
                    
//MessageBox(NULL,"bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );","",NULL);
                    
continue;
                }
            }
            
bOk m_cInventory.InsertItem vecPILE[i], _X_Y );
            if ( !
bOk )    
            {
                
//MessageBox(NULL,"!bOk = m_cInventory.InsertItem ( vecPILE[i], _X, _Y );","",NULL);
                
continue;
            }
            
            
SINVENITEM sINVENITEM = *m_cInventory.FindPosItem _X_Y );
            
            
GLMSG::SNETPC_INVEN_INSERT NetMsg_Inven_Insert;
            
NetMsg_Inven_Insert.Data sINVENITEM;
            
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsg_Inven_Insert);

            
SITEM *pITEM GLItemMan::GetInstance().GetItem sINVENITEM.sItemCustom.sNativeID );
            if ( 
pITEM && pITEM->IsTIMELMT() )
            {
                if ( 
pITEM->sDrugOp.tTIME_LMT != )
                {
                    const 
CTime cTIME_CUR CTime::GetCurrentTime();

                    
CTimeSpan cSPAN(pITEM->sDrugOp.tTIME_LMT);
                    
CTime cTIME_LMT(sINVENITEM.sItemCustom.tBORNTIME);
                    
cTIME_LMT += cSPAN;

                    if ( 
cTIME_CUR cTIME_LMT )
                    {
                        
GLMSG::SNETPC_INVEN_DELETE NetMsgInvenDel;
                        
NetMsgInvenDel.wPosX sINVENITEM.wPosX;
                        
NetMsgInvenDel.wPosY sINVENITEM.wPosY;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDel);

                        
GLMSG::SNET_INVEN_DEL_ITEM_TIMELMT NetMsgInvenDelTimeLmt;
                        
NetMsgInvenDelTimeLmt.nidITEM sINVENITEM.sItemCustom.sNativeID;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDelTimeLmt);

                        
m_cInventory.DeleteItem sINVENITEM.wPosXsINVENITEM.wPosY );
                    
                    }
                }
            }

            if ( 
_X _X++;
            else
            {
                
_X 0;
                
_Y++;
            }
        }
                
GLInventory::CELL_MAP &ItemMapLoop = *m_cInventory.GetItemList();
                
GLInventory::CELL_MAP_ITER iter_Loop ItemMapLoop.begin();
                for ( ; 
iter_Loop!=ItemMapLoop.end(); ++iter_Loop )
                {
                    if (!(*
iter_Loop).second ) continue;
                    
GLInventory::CELL_MAP &ItemMapComp = *m_cInventory.GetItemList();
                    
GLInventory::CELL_MAP_ITER iter_comp ItemMapComp.begin();
                    for ( ; 
iter_comp!=ItemMapComp.end(); ++iter_comp )
                    {
                        if (!(*
iter_comp).second ) continue;
                        
SINVENITEMsINVENITEM = (*iter_comp).second;
                        if ( 
sINVENITEM )
                        {
                        
SITEMCUSTOMsItemCustom sINVENITEM->sItemCustom;
                        
SITEM *pITEMc GLItemMan::GetInstance().GetItem sItemCustom.sNativeID );
                        if ( 
pITEMc && pITEMc->ISPILE() )
                        {
                            
GLInventory::CELL_MAP &ItemMap = *m_cInventory.GetItemList();
                            
GLInventory::CELL_MAP_ITER iter ItemMap.begin();
                            for ( ; 
iter!=ItemMap.end(); ++iter )
                            {
                                if (!(*
iter).second ) continue;
                                
SINVENITEMpInvenItem = (*iter).second;
                                if ( 
pInvenItem )
                                {
                                
SITEMCUSTOMsItemCustoms pInvenItem->sItemCustom;
                                
SITEM *pITEM GLItemMan::GetInstance().GetItem pInvenItem->sItemCustom.sNativeID );

                                if ( 
pITEM && pITEM->ISPILE() )
                                {
                                    if ( 
pITEM->sBasicOp.sNativeID == pITEMc->sBasicOp.sNativeID )
                                    {
                                        if( 
sINVENITEM != pInvenItem // compare two
                                        
{
                                            
WORD wINVENX pITEMc->sBasicOp.wInvenSizeX;
                                            
WORD wINVENY pITEMc->sBasicOp.wInvenSizeY;

                                            
WORD wPILENUM pITEMc->sDrugOp.wPileNum;
                                            
SNATIVEID sNID pITEMc->sBasicOp.sNativeID;

                                            
WORD wREQINSRTNUM = ( sItemCustom.wTurnNum );
                                            
                                            if ( 
sItemCustoms.sNativeID != sItemCustom.sNativeID )    continue;
                                            if ( 
sItemCustoms.wTurnNum>=wPILENUM )        continue;
                                            if ( 
sItemCustom.wTurnNum>=wPILENUM )        continue;
                                            
WORD wSURPLUSNUM wPILENUM sItemCustoms.wTurnNum;

                                            if ( 
wREQINSRTNUM wSURPLUSNUM )
                                            {
                                                
//MessageBox(NULL,"if ( wREQINSRTNUM > wSURPLUSNUM )",NULL,NULL);
                                            
                                                
sItemCustoms.wTurnNum wPILENUM;

                                                
GLMSG::SNETPC_INVEN_DRUG_UPDATE NetMsg;
                                                
NetMsg.wPosX pInvenItem->wPosX;
                                                
NetMsg.wPosY pInvenItem->wPosY;
                                                
NetMsg.wTurnNum sItemCustoms.wTurnNum;
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsg);

                                                
wREQINSRTNUM -= wSURPLUSNUM;
                                            }
                                            else
                                            {
                                                
sItemCustoms.wTurnNum += wREQINSRTNUM;

                                                
GLMSG::SNETPC_INVEN_DRUG_UPDATE NetMsg;
                                                
NetMsg.wPosX pInvenItem->wPosX;
                                                
NetMsg.wPosY pInvenItem->wPosY;
                                                
NetMsg.wTurnNum sItemCustoms.wTurnNum;
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsg);

                                                
GLMSG::SNETPC_UPDATE_MONEY NetMsgMoney;
                                                
NetMsgMoney.lnMoney m_lnMoney;
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgMoney);

                                                
m_cInventory.DeleteItem sINVENITEM->wPosXsINVENITEM->wPosY );
                                                
GLMSG::SNETPC_INVEN_DELETE NetMsgInvenDel;
                                                
NetMsgInvenDel.wPosX sINVENITEM->wPosX;
                                                
NetMsgInvenDel.wPosY sINVENITEM->wPosY;
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDel);
                                                
                                                break;
                                            }
                                            
                                            
WORD wONENUM wREQINSRTNUM wPILENUM;
                                            
WORD wITEMNUM wONENUM;

                                            
//    ¿©ºÐ°ãħ¾ÆÀÌÅÛÀÇ °ãħ¼ö.
                                            
WORD wSPLITNUM wREQINSRTNUM wPILENUM;
                                            if ( 
wSPLITNUM )                wITEMNUM += 1;
                                            if ( 
wSPLITNUM==&& wITEMNUM>=)    wSPLITNUM wPILENUM;

                                            for ( 
WORD i=0i<wITEMNUM; ++)
                                            {
                                                
WORD wInsertPosX(0), wInsertPosY(0);
                                                
BOOL bITEM_SPACE m_cInventory.FindInsrtable wINVENXwINVENYwInsertPosXwInsertPosY );
                                                
GASSERT(bITEM_SPACE&&"³ÖÀ» °ø°£À» ¹Ì¸® Ã¼Å©¸¦ ÇÏ°í ¾ÆÀÌÅÛÀ» ³Ö¾úÀ¸³ª °ø°£ÀÌ ºÎÁ·ÇÔ.");

                                                
//    Note : »õ·Î¿î ¾ÆÀÌÅÛÀ» ³Ö¾îÁÜ.
                                                //
                                                
SITEMCUSTOM sITEMCUSTOM(sItemCustom.sNativeID);
                                                
sITEMCUSTOM.tBORNTIME sItemCustom.tBORNTIME;

                                                
sITEMCUSTOM.cGenType sItemCustom.cGenType;
                                                
sITEMCUSTOM.cChnID sItemCustom.cChnID;
                                                
sITEMCUSTOM.cFieldID sItemCustom.cFieldID;

                                                if ( 
wITEMNUM==(i+1) )    sITEMCUSTOM.wTurnNum wSPLITNUM;    //    ¸¶Áö¸· ¾ÆÀÌÅÛÀº ÀÜ¿©·®.
                                                
else                    sITEMCUSTOM.wTurnNum wPILENUM;    //    ¾Æ´Ò °æ¿ì´Â ²ËÂù·®.

                                                
m_cInventory.InsertItem sITEMCUSTOMwInsertPosXwInsertPosY );    //    ÀιêÅ丮¿¡ ³Ö½À´Ï´Ù.

                                                //    Àι꿡 ¾ÆÀÌÅÆ ³Ö¾îÁִ ¸Þ½ÃÁö.
                                                
GLMSG::SNETPC_INVEN_INSERT NetMsgInven;
                                                
NetMsgInven.Data = *m_cInventory.GetItem wInsertPosXwInsertPosY );
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInven);
                                                
                                                
m_cInventory.DeleteItem sINVENITEM->wPosXsINVENITEM->wPosY );
                                                
GLMSG::SNETPC_INVEN_DELETE NetMsgInvenDel;
                                                
NetMsgInvenDel.wPosX sINVENITEM->wPosX;
                                                
NetMsgInvenDel.wPosY sINVENITEM->wPosY;
                                                
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDel);
                                            }
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    {
        
vecPILEDEL.clear();
        
vecPILE.clear();
        
        
GLInventory::CELL_MAP &ItemMap = *m_cInventory.GetItemList();
        
GLInventory::CELL_MAP_ITER iter ItemMap.begin();
        for ( ; 
iter!=ItemMap.end(); ++iter )
        {
            if (!(*
iter).second ) continue;
            
SINVENITEM &sINVENITEM = *(*iter).second;
            
SITEMCUSTOM &sITEMCUSTOM sINVENITEM.sItemCustom;
            
SITEMpHoldData GLItemMan::GetInstance().GetItem sITEMCUSTOM.sNativeID );
            if ( !
pHoldData ) continue;
            if( 
pHoldData && pHoldData->ISPILE() )  
            {
                
vecPILE.push_back sITEMCUSTOM ); 
                
vecPILEDEL.push_back SNATIVEID(sINVENITEM.wPosX,sINVENITEM.wPosY) );
            }
        }

        if ( !
vecPILEDEL.empty() )
        for ( 
DWORD i=0i<vecPILEDEL.size(); ++)
        {
            
m_cInventory.DeleteItem vecPILEDEL[i].wMainIDvecPILEDEL[i].wSubID );
            
GLMSG::SNETPC_INVEN_DELETE NetMsgDelete;
            
NetMsgDelete.wPosX vecPILEDEL[i].wMainID;
            
NetMsgDelete.wPosY vecPILEDEL[i].wSubID;
            
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgDelete);
        }

        for ( 
DWORD b=0b<vecPILE.size(); ++)
        for ( 
DWORD c=0c<vecPILE.size()-1; ++)
        {
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecPILE[c].sNativeID );
            if ( !
pHoldData )    continue;
            
            
SITEMpHoldData2 GLItemMan::GetInstance().GetItem vecPILE[c+1].sNativeID );
            if ( !
pHoldData2 )    continue;
            
            
BOOL bCOMPARE FALSE;
            
            if ( 
pHoldData->sBasicOp.sNativeID.dwID pHoldData2->sBasicOp.sNativeID.dwID bCOMPARE TRUE;
            else if ( 
pHoldData->sBasicOp.sNativeID == pHoldData2->sBasicOp.sNativeID && vecPILE[c].wTurnNum != vecPILE[c+1].wTurnNum bCOMPARE TRUE;
            
            if ( 
bCOMPARE 
            {
                
SITEMCUSTOM sCUSTOM vecPILE[c+1];
                
vecPILE[c+1] = vecPILE[c];
                
vecPILE[c] = sCUSTOM;
            }
        }

        
WORD _X 0_Y 0;
        for( 
int i 0vecPILE.size(); i++ )
        {        
            
SITEMpHoldData GLItemMan::GetInstance().GetItem vecPILE[i].sNativeID );
            if ( !
pHoldData )
            {
                
//MessageBox(NULL,"if ( !pHoldData )",NULL,NULL);
                
continue;
            }
            
BOOL bOk m_cInventory.IsInsertable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
            if ( !
bOk )
            {
                
bOk m_cInventory.FindInsrtable pHoldData->sBasicOp.wInvenSizeXpHoldData->sBasicOp.wInvenSizeY_X_Y );
                if ( !
bOk )
                {
                    
//MessageBox(NULL,"bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );","",NULL);
                    
continue;
                }
            }
            
bOk m_cInventory.InsertItem vecPILE[i], _X_Y );
            if ( !
bOk )    
            {
                
//MessageBox(NULL,"!bOk = m_cInventory.InsertItem ( vecPILE[i], _X, _Y );","",NULL);
                
continue;
            }
            
            
SINVENITEM sINVENITEM = *m_cInventory.FindPosItem _X_Y );
            
            
GLMSG::SNETPC_INVEN_INSERT NetMsg_Inven_Insert;
            
NetMsg_Inven_Insert.Data sINVENITEM;
            
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsg_Inven_Insert);

            
SITEM *pITEM GLItemMan::GetInstance().GetItem sINVENITEM.sItemCustom.sNativeID );
            if ( 
pITEM && pITEM->IsTIMELMT() )
            {
                if ( 
pITEM->sDrugOp.tTIME_LMT != )
                {
                    const 
CTime cTIME_CUR CTime::GetCurrentTime();

                    
CTimeSpan cSPAN(pITEM->sDrugOp.tTIME_LMT);
                    
CTime cTIME_LMT(sINVENITEM.sItemCustom.tBORNTIME);
                    
cTIME_LMT += cSPAN;

                    if ( 
cTIME_CUR cTIME_LMT )
                    {
                        
GLMSG::SNETPC_INVEN_DELETE NetMsgInvenDel;
                        
NetMsgInvenDel.wPosX sINVENITEM.wPosX;
                        
NetMsgInvenDel.wPosY sINVENITEM.wPosY;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDel);

                        
GLMSG::SNET_INVEN_DEL_ITEM_TIMELMT NetMsgInvenDelTimeLmt;
                        
NetMsgInvenDelTimeLmt.nidITEM sINVENITEM.sItemCustom.sNativeID;
                        
GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInvenDelTimeLmt);

                        
m_cInventory.DeleteItem sINVENITEM.wPosXsINVENITEM.wPosY );
                    
                    }
                }
            }

            if ( 
_X _X++;
            else
            {
                
_X 0;
                
_Y++;
            }
        }
    }

    
vecPILEDEL.clear();
    
vecPILE.clear();
    
vecDEL.clear();
    
vecDEL2.clear();
    return 
S_OK;

번호 제목 글쓴이 날짜 조회 수
3109 리니지2 서버팩 [2] file 룰라우 2020.09.19 457
3108 미니파이터 시즌3캐쉬 file 룰라우 2020.09.19 97
3107 오투잼 프리섭입니다. [1] file 멍멍잼 2020.09.18 260
3106 천년 신아버전팩 file 똥껑이다 2020.09.18 104
3105 월광보합 우리집오락실4 710 (14/14) [1] file 강함27 2020.09.17 246
3104 월광보합 우리집오락실4 710 (13/14) [1] file 강함27 2020.09.16 268
3103 천년 ATZ뷰어기 [1] file 똥껑이다 2020.09.16 80
3102 aion 7.5 소스파일 file 나즈샤&나즈빈 2020.09.15 184
3101 월광보합 우리집오락실4 710 (12/14) [1] file 강함27 2020.09.15 163
3100 월광보합 우리집오락실4 710 (11/14) [1] file 강함27 2020.09.15 33
3099 월광보합 우리집오락실4 710 (10/14) [1] file 강함27 2020.09.15 48
3098 월광보합 우리집오락실4 710 (9/14) [1] file 강함27 2020.09.15 27
3097 월광보합 우리집오락실4 710 (8/14) [3] file 강함27 2020.09.15 228
3096 리니지2구축필수자료 file 데빌스카이 2020.09.13 347
3095 싱글카트라이더 X엔진버전 2/3 file 쏘잇 2020.09.13 84
3094 싱글카트라이더 X엔진버전 1/3 file 쏘잇 2020.09.13 454
3093 싱글엘소드 3/3 [2] file 쏘잇 2020.09.13 424
3092 싱글엘소드 2/3 file 쏘잇 2020.09.13 44
3091 싱글엘소드 1/3 file 쏘잇 2020.09.13 263
3090 블소 vm전용 구축 영상입니다. file 나즈샤&나즈빈 2020.09.13 317
3089 블소 구축 영상입니다. [2] file 나즈샤&나즈빈 2020.09.13 489
3088 블소 176 클라 [1] file 나즈샤&나즈빈 2020.09.13 351
3087 월광보합 우리집오락실4 710 (7/14) file 강함27 2020.09.13 31
3086 월광보합 우리집오락실4 710 (6/14) file 강함27 2020.09.13 19
3085 월광보합 우리집오락실4 710 (4/14) file 강함27 2020.09.13 19
3084 월광보합 우리집오락실4 710 (5/14) file 강함27 2020.09.13 23
3083 월광보합 우리집오락실4 710 (3/14) file 강함27 2020.09.13 46
3082 암호파일 압축풀기프로그램 file CBBB 2020.09.13 28
3081 모바일 열혈강호 서버파일 + 클라 + 구축법 포함 file seres 2020.09.13 313
3080 월광보합 우리집오락실4 710 (2/14) file 강함27 2020.09.12 37
3079 월광보합 우리집오락실4 710 (1/14) [2] file 강함27 2020.09.12 349
3078 내부/외보 IP 확인(내피씨) [2] file 강함27 2020.09.12 45
3077 AMONG US PC 9.1 HACK file 공왕이 2020.09.07 63
3076 스톤에이지 켈란팩 9.0 [2] file 형믿고두루와 2020.09.07 391
3075 PK ARENA RAN ONLINE file rampage 2020.09.06 46
3074 Assasin Login RAN Online file rampage 2020.09.06 24
3073 2017 RAN ONLINE GS LOGIN file rampage 2020.09.06 22
3072 테일즈위버 블랙서버(클라) file 노라구 2020.09.06 593
3071 Money Heist Male And Female Costume For RAN file rampage 2020.09.06 7
3070 Police Wing RO file rampage 2020.09.06 8
3069 Ran:Online Dinosaurs mobs file NaverKnow 2020.09.05 29
3068 勇 온라인 게임 내 웹 기능 [클라이언트] 1 부 file dmk14 2020.09.05 127
3067 勇 온라인 게임 내 웹 기능 [클라이언트] 4 부 file dmk14 2020.09.05 13
3066 勇 온라인 게임 내 웹 기능 [클라이언트] 2 부 file dmk14 2020.09.05 11
3065 勇 온라인 게임 내 웹 기능 [클라이언트] 5 부 file dmk14 2020.09.05 6
3064 勇 온라인 게임 내 웹 기능 [클라이언트] 3 부 file dmk14 2020.09.05 41
3063 勇 온라인 게임 내 웹 기능 file dmk14 2020.09.05 78
3062 勇 온라인 pubg 킬 디스플레이 file dmk14 2020.09.05 56
3061 가네 키 의상 Ran Online file legendaryme 2020.09.03 70
» RAn Online 고정 및 작업 재고 품목 정렬 + 더미 품목. file legendaryme 2020.09.03 71