• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 기타게임
    • 기타게임 기타 ()
    • RAn Online 고정 및 작업 재고 품목 정렬 + 더미 품목.

      • legendaryme
      • 2020.09.03 - 18:01 172

     

    고정 및 작업 재고 품목 정렬 + 더미 품목.
     
    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_GENERIC* nmg ); 
     
    GLCharInvenMsg.cpp ( NOW HERE's THE ALGORITHM STARTS )
    Add This
    PHP Code:
     
    HRESULT GLChar::MsgReqHoldArray ( NET_MSG_GENERIC* nmg )
    {
        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;
            
    SITEM* pHoldData = 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=0; i<vecDEL2.size(); ++i )
        {
            
    m_cInventory.DeleteItem ( vecDEL2[i].wMainID, vecDEL2[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=0; i<vecPILEDEL.size(); ++i )
        {
            
    m_cInventory.DeleteItem ( vecPILEDEL[i].wMainID, vecPILEDEL[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=0; b<vecDEL.size(); ++b )
            for ( 
    DWORD c=0; c<vecDEL.size()-1; ++c )
            {
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecDEL[c].sNativeID );
                if ( !
    pHoldData )
                {
                    
    //MessageBox(NULL,"if ( !pHoldData )","vecDEL",NULL);
                    
    continue;
                }
                
    SITEM* pHoldData2 = 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 = 0; i < vecDEL.size(); i++ )
            {        
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecDEL[i].sNativeID );
                if ( !
    pHoldData )
                {
                    
    //MessageBox(NULL,"if ( !pHoldData )","",NULL);
                    
    continue;
                }
                
    BOOL bOk = m_cInventory.IsInsertable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );
                if ( !
    bOk )
                {
                    
    bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->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 != 0 )
                    {
                        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 != 0 )
                            {
                                
    GLVEHICLE* pNewVehicle = new GLVEHICLE();
                                
    CGetVehicle* pGetVehicle = new CGetVehicle ( pNewVehicle, 
                                                            
    sINVENITEM.sItemCustom.dwVehicleID, 
                                                            
    m_dwClientID, 
                                                            
    m_dwCharID, 
                                                            
    true );
                                
    GLDBMan* pDBMan = GLGaeaServer::GetInstance().GetDBMan ();
                                if ( 
    pDBMan ) pDBMan->AddJob ( pGetVehicle );
                            }

                            if ( 
    pITEM->sBasicOp.emItemType == ITEM_PET_CARD && sINVENITEM.sItemCustom.dwPetID != 0 )
                            {
                                
    CDeletePet* pDbAction = new CDeletePet ( m_dwCharID, sINVENITEM.sItemCustom.dwPetID );
                                
    GLDBMan* pDBMan = 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 = 0; i < PET_ACCETYPE_SIZE; ++i )
                                    {
                                        
    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_dwCharID, m_dwClientID );
                                    if ( 
    pDBMan ) pDBMan->AddJob ( pDbAction );
                                }
                                else
                                {
                                    
    GLPET* pNewPet = new GLPET ();
                                    
    CGetPet* pGetPet = new CGetPet ( pNewPet, 
                                                                    
    sINVENITEM.sItemCustom.dwPetID, 
                                                                    
    m_dwClientID, 
                                                                    
    m_dwCharID,
                                                                    
    sINVENITEM.wPosX,
                                                                    
    sINVENITEM.wPosY,
                                                                    
    true );
                                    
    GLDBMan* pDBMan = 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.wPosX, sINVENITEM.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!=0 && pONE->sDrugOp.tTIME_LMT!= 0 )
                                {
                                    
    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.wInvenSizeX, pONE->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->sItemCustom, ID_CHAR, 0, ID_CHAR, m_dwCharID, EMITEM_ROUTE_CHAR, pINSERT_ITEM->sItemCustom.wTurnNum );
                            }
                        }
                    }
                }
                
                if ( 
    _X < 5 ) _X++;
                else
                {
                    
    _X = 0;
                    
    _Y++;
                }
            }
        }

        if ( !
    vecPILE.empty() )
        {
            for ( 
    DWORD b=0; b<vecPILE.size(); ++b )
            for ( 
    DWORD c=0; c<vecPILE.size()-1; ++c )
            {
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecPILE[c].sNativeID );
                if ( !
    pHoldData )    continue;
                
                
    SITEM* pHoldData2 = 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 = 0; i < vecPILE.size(); i++ )
            {        
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecPILE[i].sNativeID );
                if ( !
    pHoldData )
                {
                    
    //MessageBox(NULL,"if ( !pHoldData )",NULL,NULL);
                    
    continue;
                }
                
    BOOL bOk = m_cInventory.IsInsertable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );
                if ( !
    bOk )
                {
                    
    bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->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 != 0 )
                    {
                        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.wPosX, sINVENITEM.wPosY );
                        
                        }
                    }
                }

                if ( 
    _X < 5 ) _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;
                            
    SINVENITEM* sINVENITEM = (*iter_comp).second;
                            if ( 
    sINVENITEM )
                            {
                            
    SITEMCUSTOM& sItemCustom = 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;
                                    
    SINVENITEM* pInvenItem = (*iter).second;
                                    if ( 
    pInvenItem )
                                    {
                                    
    SITEMCUSTOM& sItemCustoms = 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->wPosX, sINVENITEM->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 > 0 )                wITEMNUM += 1;
                                                if ( 
    wSPLITNUM==0 && wITEMNUM>=1 )    wSPLITNUM = wPILENUM;

                                                for ( 
    WORD i=0; i<wITEMNUM; ++i )
                                                {
                                                    
    WORD wInsertPosX(0), wInsertPosY(0);
                                                    
    BOOL bITEM_SPACE = m_cInventory.FindInsrtable ( wINVENX, wINVENY, wInsertPosX, wInsertPosY );
                                                    
    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 ( sITEMCUSTOM, wInsertPosX, wInsertPosY );    //    ÀιêÅ丮¿¡ ³Ö½À´Ï´Ù.

                                                    //    Àι꿡 ¾ÆÀÌÅÆ ³Ö¾îÁִ ¸Þ½ÃÁö.
                                                    
    GLMSG::SNETPC_INVEN_INSERT NetMsgInven;
                                                    
    NetMsgInven.Data = *m_cInventory.GetItem ( wInsertPosX, wInsertPosY );
                                                    
    GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&NetMsgInven);
                                                    
                                                    
    m_cInventory.DeleteItem ( sINVENITEM->wPosX, sINVENITEM->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;
                
    SITEM* pHoldData = 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=0; i<vecPILEDEL.size(); ++i )
            {
                
    m_cInventory.DeleteItem ( vecPILEDEL[i].wMainID, vecPILEDEL[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=0; b<vecPILE.size(); ++b )
            for ( 
    DWORD c=0; c<vecPILE.size()-1; ++c )
            {
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecPILE[c].sNativeID );
                if ( !
    pHoldData )    continue;
                
                
    SITEM* pHoldData2 = 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 = 0; i < vecPILE.size(); i++ )
            {        
                
    SITEM* pHoldData = GLItemMan::GetInstance().GetItem ( vecPILE[i].sNativeID );
                if ( !
    pHoldData )
                {
                    
    //MessageBox(NULL,"if ( !pHoldData )",NULL,NULL);
                    
    continue;
                }
                
    BOOL bOk = m_cInventory.IsInsertable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->sBasicOp.wInvenSizeY, _X, _Y );
                if ( !
    bOk )
                {
                    
    bOk = m_cInventory.FindInsrtable ( pHoldData->sBasicOp.wInvenSizeX, pHoldData->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 != 0 )
                    {
                        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.wPosX, sINVENITEM.wPosY );
                        
                        }
                    }
                }

                if ( 
    _X < 5 ) _X++;
                else
                {
                    
    _X = 0;
                    
    _Y++;
                }
            }
        }

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

    Attached file
    w00t.gif 650Bytes 0
    이 게시물을..
    N
    0
    0
    • 미르2 rom2번젼 한방 실행기 입니다보영빠
    • 9
      legendaryme

    legendaryme 님의 최근 글

    가네 키 의상 Ran Online 108 2020 09.03 RAn Online 고정 및 작업 재고 품목 정렬 + 더미 품목. 172 2020 09.03 incupdate patcher crack 만료없이 사용할 수 있습니다. 101 2020 09.03 부적을위한 evp 도구 84 2020 09.03 새로운 상점 인터페이스가 온라인으로 실행되었습니다. 94 2020 09.03

    legendaryme 님의 최근 댓글

    감사합니다 2020 09.01 대단히 감사합니다! 2020 09.01
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 미르2 rom2번젼 한방 실행기 입니다
    • 목록
      view_headline
    × CLOSE
    전체 뮤 328 아이온 157 어둠의전설 96 던파 94 프로젝트신루 15 리니지2 282 천상비 17 크로노스 56 칼 온라인 15 기타 3326
    기본 (3,324) 제목 날짜 수정 조회 댓글 추천 비추
    기타 정렬 검색
    • 포인트 획득 공지
      4
      2026.04.24 - 19:48 2659 4
    • 링크 업로드 관련 공지
      7
      2026.03.25 - 21:56 3101 7
    • 인증메일 공지
      2
      2026.03.15 - 16:42 3016 2
    • 파일링크 및 인증메일 발송 관련 문의 안내
      8
      2026.03.14 - 22:03 3428 8
    • 포인트 게시판 안내
      2026.02.28 - 19:14 4111
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 5807 9
    3324
    기타
    디지몬 마스터즈 소스/db bac/클라 외국어 입니다.
    포뇨1 2026.05.08 - 10:59 170
    3323
    기타
    NDS 하트골드 한글판
    Ang 2026.04.26 - 12:06 142
    3322
    기타
    해상도 강제조절
    자료좀 2026.04.20 - 09:17 168
    3321
    기타
    엘가드 혈법사
    떼쟁 2026.04.20 - 01:54 106
    3320
    기타
    엘가드 0.9버전
    떼쟁 2026.04.20 - 01:53 112
    3319
    기타
    MY IP 확인
    cjcjcjcj 2026.04.12 - 11:24 170
    3318
    기타
    어둠 클라
    젠장할 2026.04.04 - 21:08 158
    3317
    기타
    어둠 서버
    젠장할 2026.04.04 - 21:07 243
    3316
    기타
    LOM2버젼 구축설명서 입니다
    보영빠 2026.04.02 - 05:51 226
    3315
    기타
    km2버젼 구축설명서 입니다
    보영빠 2026.04.02 - 05:48 179
    3314
    기타
    km2사랑서버버젼 클라 입니다 5번
    보영빠 2026.03.22 - 10:48 149
    3313
    기타
    km2사랑서버버젼 클라 입니다 4번
    보영빠 2026.03.22 - 10:42 157
    3312
    기타
    km2사랑서버버젼 클라 입니다 3번
    보영빠 2026.03.22 - 10:35 146
    3311
    기타
    km2사랑서버버젼 클라 입니다 2번
    보영빠 2026.03.22 - 10:29 137
    3310
    기타
    km2사랑서버버젼 클라 입니다 1번
    보영빠 2026.03.22 - 10:22 339
    3309
    기타
    km2사랑서버버젼
    보영빠 2026.03.22 - 10:20 356
    3308
    기타
    스톤에이지 팩 소스파일
    해달해달 2026.03.21 - 02:50 369
    3307
    기타
    스톤에이지 클라이언트 소스파일
    해달해달 2026.03.21 - 02:46 304
    3306
    기타
    미르2 rom2번젼 한방 실행기 입니다
    보영빠 2026.03.20 - 21:22 185
    3305
    기타
    미르2 rom2 버젼 클라3
    보영빠 2026.03.20 - 21:21 163
    • 1 2 3 4 5 6 7 8 9 10 .. 167
    • / 167 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay