• SEARCH

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

      • legendaryme
      • 2020.09.03 - 18:01 612

     

    고정 및 작업 재고 품목 정렬 + 더미 품목.
     
    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
    • 5.01 (클래식버전) 클라 분할 1 (재업)천공에스카
    • 9
      legendaryme

    legendaryme 님의 최근 글

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

    legendaryme 님의 최근 댓글

    감사합니다 2020 09.01 대단히 감사합니다! 2020 09.01
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 5.01 (클래식버전) 클라 분할 1 (재업)
    • 목록
      view_headline
    × CLOSE
    전체 뮤 328 아이온 159 어둠의전설 109 던파 133 프로젝트신루 15 리니지2 283 천상비 17 크로노스 57 칼 온라인 15 기타 3410
    기본 (4,562) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 게시판 홍보 관련 안내
      2026.08.05 - 21:44 24226
    • 포인트 획득 공지
      9
      2026.04.24 - 19:48 50826 9
    • 링크 업로드 관련 공지
      12
      2026.03.25 - 21:56 49461 12
    • 인증메일 공지
      3
      2026.03.15 - 16:42 48925 3
    • 파일링크 및 인증메일 발송 관련 문의 안내
      11
      2026.03.14 - 22:03 50052 11
    • 포인트 게시판 안내
      2026.02.28 - 19:14 50506
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 52377 9
    4562
    기타
    R2 1502
    모카코피 2026.08.23 - 18:00 183
    4561
    기타
    커스텀 스킬
    grandu 2026.08.15 - 22:29 177
    4560
    기타
    빌드자료 swing layout
    grandu 2026.08.15 - 22:25 93
    4559
    기타
    각종 쿼리 올인원
    grandu 2026.08.15 - 22:25 90
    4558
    기타
    각종 자바 올인원
    grandu 2026.08.15 - 22:24 102
    4557
    기타
    포르자호라이즌6 각종 에디터
    grandu 2026.08.15 - 22:24 112
    4556
    기타
    포르자호라이즌6 시점변경
    grandu 2026.08.15 - 22:23 98
    4555
    기타
    fc26 싱글 에디터
    grandu 2026.08.15 - 22:23 106
    4554
    기타
    한글화 작업 pvf
    grandu 2026.08.15 - 22:22 160
    4553
    던파
    <<<<던파 각종 버전 무료 공유>>>>
    릔지 2026.08.10 - 22:40 473
    4552
    던파
    던파 중국팩 32/32
    레벨슬기 2026.08.09 - 21:11 281
    4551
    던파
    던파 중국팩 31/32
    레벨슬기 2026.08.09 - 21:08 179
    4550
    던파
    던파 중국팩 30/32
    레벨슬기 2026.08.09 - 21:04 245
    4549
    던파
    던파 중국팩 29/32
    레벨슬기 2026.08.09 - 20:58 190
    4548
    던파
    던파 중국팩 28/32
    레벨슬기 2026.08.09 - 20:51 217
    4547
    던파
    던파 중국팩 27/32
    레벨슬기 2026.08.09 - 20:41 208
    4546
    던파
    던파 중국팩 26/32
    레벨슬기 2026.08.09 - 20:36 192
    4545
    던파
    던파 중국팩 25/32
    레벨슬기 2026.08.09 - 20:29 196
    4544
    던파
    던파 중국팩 24/32
    레벨슬기 2026.08.09 - 20:13 182
    4543
    던파
    던파 중국팩 23/32
    레벨슬기 2026.08.09 - 19:59 203
    4542
    던파
    던파 중국팩 22/32
    레벨슬기 2026.08.09 - 19:52 165
    4541
    던파
    던파 중국팩 21/32
    레벨슬기 2026.08.09 - 19:44 215
    4540
    던파
    던파 중국팩 20/32
    레벨슬기 2026.08.09 - 19:33 195
    4539
    던파
    던파 중국팩 19/32
    레벨슬기 2026.08.09 - 19:25 197
    4538
    던파
    던파 중국팩 18/32
    레벨슬기 2026.08.09 - 19:16 171
    4537
    던파
    던파 중국팩 17/32
    레벨슬기 2026.08.09 - 19:11 204
    4536
    던파
    던파 중국팩 16/32
    레벨슬기 2026.08.09 - 19:06 203
    4535
    던파
    던파 중국팩 15/32
    레벨슬기 2026.08.09 - 18:52 154
    4534
    던파
    던파 중국팩 14/32
    레벨슬기 2026.08.09 - 18:35 192
    4533
    던파
    던파 중국팩 13/32
    레벨슬기 2026.08.09 - 18:30 237
    4532
    던파
    던파 중국팩 12/32
    레벨슬기 2026.08.08 - 22:02 206
    4531
    던파
    던파 중국팩 11/32
    레벨슬기 2026.08.08 - 21:56 216
    4530
    던파
    던파 중국팩 10/32
    레벨슬기 2026.08.08 - 21:49 172
    4529
    던파
    던파 중국팩 9/32
    레벨슬기 2026.08.08 - 21:42 159
    4528
    던파
    던파 중국팩 8/32
    레벨슬기 2026.08.08 - 21:37 208
    4527
    던파
    던파 중국팩 7/32
    레벨슬기 2026.08.08 - 21:33 164
    4526
    던파
    던파 중국팩 6/32
    레벨슬기 2026.08.08 - 21:10 193
    4525
    던파
    던파 중국팩 5/32
    레벨슬기 2026.08.08 - 21:07 219
    4524
    던파
    던파 중국팩 4/32
    레벨슬기 2026.08.08 - 21:01 199
    4523
    던파
    던파 중국팩 3/32
    레벨슬기 2026.08.08 - 20:51 204
    4522
    던파
    던파 중국팩
    레벨슬기 2026.08.08 - 20:45 191
    4521
    던파
    중국 던파팩
    레벨슬기 2026.08.08 - 20:34 205
    4520
    기타
    5.01 (클래식버전) 클라 분할 7
    천공에스카 2026.08.06 - 16:09 262
    4519
    기타
    5.01 (클래식버전) 클라 분할 6
    천공에스카 2026.08.06 - 16:08 195
    4518
    기타
    5.01 (클래식버전) 클라 분할 5
    천공에스카 2026.08.06 - 16:08 165
    4517
    기타
    5.01 (클래식버전) 클라 분할 4
    천공에스카 2026.08.06 - 16:07 216
    4516
    기타
    5.01 (클래식버전) 클라 분할 3
    천공에스카 2026.08.06 - 16:07 180
    4515
    기타
    5.01 (클래식버전) 클라 분할 2
    천공에스카 2026.08.06 - 16:06 167
    4514
    기타
    5.01 (클래식버전) 클라 분할 1 (재업)
    천공에스카 2026.08.06 - 16:06 210
    4513
    어둠의전설
    5.01 (클래식버전) 클라 분할 1
    천공에스카 2026.08.06 - 16:05 237
    • 1 2 3 4 5 6 7 8 9 10 .. 92
    • / 92 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay