• SEARCH

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

      • legendaryme
      • 2020.09.03 - 18:01 137

     

    고정 및 작업 재고 품목 정렬 + 더미 품목.
     
    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 산댜미르2 (3) 알집miniature
    • 9
      legendaryme

    legendaryme 님의 최근 글

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

    legendaryme 님의 최근 댓글

    cHECK 2020 09.05 감사합니다 2020 09.01 대단히 감사합니다! 2020 09.01   좋은 게임 좋아해 2020 09.01
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 미르의전설2 산댜미르2 (3) 알집
    • 목록
      view_headline
    × CLOSE
    전체 뮤 328 아이온 157 어둠의전설 92 던파 94 프로젝트신루 15 리니지2 240 천상비 6 크로노스 40 칼 온라인 15 기타 3303
    기본 (3,301) 제목 날짜 수정 조회 댓글 추천 비추
    기타 정렬 검색
    3301
    기타
    스톤에이지 해피서버 통파일 (3)
    봉황팔선 2026.02.17 - 04:58 22
    3300
    기타
    스톤에이지 해피서버 통파일 (2)
    봉황팔선 2026.02.17 - 04:56 8
    3299
    기타
    스톤에이지 해피서버 통파일 (1)
    봉황팔선 2026.02.17 - 04:52 30
    3298
    기타
    스톤에이지 7.5 서버팩 - 오렌지팩
    봉황팔선 2026.02.17 - 04:12 8
    3297
    기타
    스톤에이지 7.5 서버팩 - 쪼아팩
    봉황팔선 2026.02.17 - 04:11 7
    3296
    기타
    스톤에이지 7.5 서버팩 - 리엘팩
    봉황팔선 2026.02.17 - 04:10 10
    3295
    기타
    스톤에이지 9.0 클라이언트 (3)
    봉황팔선 2026.02.17 - 04:09 5
    3294
    기타
    스톤에이지 9.0 클라이언트 (2)
    봉황팔선 2026.02.17 - 04:07 1
    3293
    기타
    스톤에이지 9.0 클라이언트 (1)
    봉황팔선 2026.02.17 - 04:06 4
    3292
    기타
    스톤에이지 8.0 클라이언트 (3)
    봉황팔선 2026.02.17 - 04:05 1
    3291
    기타
    스톤에이지 8.0 클라이언트 (2)
    봉황팔선 2026.02.17 - 04:04
    3290
    기타
    스톤에이지 8.0 클라이언트 (1)
    봉황팔선 2026.02.17 - 04:02 2
    3289
    기타
    스톤에이지 7.5 클라이언트 (3)
    봉황팔선 2026.02.17 - 04:00 1
    3288
    기타
    스톤에이지 7.5 클라이언트 (2)
    봉황팔선 2026.02.17 - 04:00
    3287
    기타
    스톤에이지 7.5 클라이언트 (1)
    봉황팔선 2026.02.17 - 03:55 10
    3286
    기타
    미르의전설3 지르콘 클라 (2) 알집
    miniature 2026.02.06 - 14:13 17
    3285
    기타
    미르의전설3 지르콘 클라 (1)
    miniature 2026.02.06 - 14:10 16
    3284
    기타
    미르의전설3 지르콘 서버.소스.설명서
    miniature 2026.02.06 - 14:07 38
    3283
    기타
    미르의전설2 산댜미르2 (3) 알집
    miniature 2026.02.06 - 13:58 6
    3282
    기타
    미르의전설2 산댜미르2 (2)
    miniature 2026.02.06 - 13:55 6
    • 1 2 3 4 5 6 7 8 9 10 .. 166
    • / 166 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay