• SEARCH

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

      • legendaryme
      • 2020.09.03 - 18:01 798

     

    고정 및 작업 재고 품목 정렬 + 더미 품목.
     
    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
    • 한글화 작업 pvfgrandu
    • 9
      legendaryme

    legendaryme 님의 최근 글

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

    legendaryme 님의 최근 댓글

    감사합니다 2020 09.01 대단히 감사합니다! 2020 09.01
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 한글화 작업 pvf
    • 목록
      view_headline
    × CLOSE
    전체 뮤 328 아이온 159 어둠의전설 110 던파 133 프로젝트신루 15 리니지2 283 천상비 17 크로노스 57 칼 온라인 15 기타 3449
    기본 (4,602) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 게시판 홍보 관련 안내
      2026.08.05 - 21:44 51277
    • 포인트 획득 공지
      12
      2026.04.24 - 19:48 79274 12
    • 링크 업로드 관련 공지
      12
      2026.03.25 - 21:56 77766 12
    • 인증메일 공지
      3
      2026.03.15 - 16:42 76901 3
    • 파일링크 및 인증메일 발송 관련 문의 안내
      11
      2026.03.14 - 22:03 79244 11
    • 포인트 게시판 안내
      2026.02.28 - 19:14 78474
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 80663 9
    4602
    기타
    넷파워 시디 2/2 (2000.09)
    eddy 2026.09.21 - 22:27 29
    4601
    기타
    넷파워 시디 1/2
    eddy 2026.09.21 - 22:26 39
    4600
    기타
    헬브레스 143 클라이언트
    eddy 2026.09.21 - 22:25 20
    4599
    기타
    포트리스 2.4.1 클라이언트
    eddy 2026.09.21 - 22:24 17
    4598
    기타
    씰 온라인 2004년 클라이언트
    eddy 2026.09.21 - 22:23 20
    4597
    기타
    메틴 옛날 41 버전
    eddy 2026.09.21 - 22:23 11
    4596
    기타
    택티컬 커맨더스 옛날 71 버전
    eddy 2026.09.21 - 22:22 19
    4595
    기타
    레드문 옛날 265 버전 공유
    eddy 2026.09.21 - 22:22 11
    4594
    기타
    오토마우스 2.1
    eddy 2026.09.21 - 01:42 25
    4593
    기타
    바람의나라 752 클라이언트
    eddy 2026.09.21 - 01:38 16
    4592
    기타
    트릭스터 DB 및 클라이언트 패치, GM 명령어 등
    eddy 2026.09.21 - 01:36 24
    4591
    기타
    트릭스터 시즌2 서버파일 및 가이드
    eddy 2026.09.21 - 01:35 35
    4590
    기타
    트릭스터 2.02 클라이언트 2/2
    eddy 2026.09.21 - 01:34 7
    4589
    기타
    트릭스터 2.02 클라이언트 1/2
    eddy 2026.09.21 - 01:33 22
    4588
    기타
    이터널시티 520 클라이언트
    eddy 2026.09.21 - 01:30 24
    4587
    기타
    원신 클라이언트 모음집 (토렌트)
    eddy 2026.09.21 - 01:29 14
    4586
    어둠의전설
    8.24 클라이언트 공유좀 해주실분 없으신가요? ㅠㅠ
    Tad 2026.09.19 - 21:14 60
    4585
    기타
    엘리멘탈사가 elemental saga 3.0
    eddy 2026.09.17 - 23:47 198
    4584
    기타
    미르의전설2 - 무설치 실행버전
    eddy 2026.09.17 - 23:40 185
    4583
    기타
    레드문 아이템 에디터
    레오파드 2026.09.12 - 11:59 133
    4582
    기타
    나비캣 8.0 한국어
    최서 2026.09.11 - 20:55 113
    4581
    기타
    스톤에이지 카오스 통파일 ( 랭킹 , 장판 ,리더봇 다있음 )
    칸타타 2026.09.11 - 00:29 388
    4580
    기타
    아이콘 제작 편집기
    초연 2026.09.10 - 08:27 121
    4579
    기타
    스카이 에디터
    초연 2026.09.10 - 08:26 101
    4578
    기타
    스카이 서버 파일
    초연 2026.09.10 - 08:25 115
    4577
    기타
    c# 스카이 미르 클라 7번
    초연 2026.09.10 - 08:24 78
    4576
    기타
    c# 스카이 미르 클라 6번
    초연 2026.09.10 - 08:22 84
    4575
    기타
    c# 스카이 미르 클라 5번
    초연 2026.09.10 - 08:20 76
    4574
    기타
    c# 스카이 미르 클라 4번
    초연 2026.09.10 - 08:17 75
    4573
    기타
    c# 스카이 미르 클라 3번
    초연 2026.09.10 - 08:15 68
    4572
    기타
    c# 스카이 미르 클라 2번
    초연 2026.09.10 - 08:12 74
    4571
    기타
    c# 스카이 미르 클라 1번
    초연 2026.09.10 - 08:10 81
    4570
    기타
    c# 스카이 미르 클라 첫번째
    초연 2026.09.10 - 08:07 118
    4569
    기타
    스톤에이지 카오스 클라이언트 (5/5)
    칸타타 2026.09.10 - 02:58 154
    4568
    기타
    스톤에이지 카오스 클라이언트 (4/5)
    칸타타 2026.09.10 - 02:57 121
    4567
    기타
    스톤에이지 카오스 클라이언트 (3/5)
    칸타타 2026.09.10 - 02:56 130
    4566
    기타
    스톤에이지 카오스 클라이언트 (2/5)
    칸타타 2026.09.10 - 02:55 119
    4565
    기타
    스톤에이지 카오스 클라이언트 (1/5)
    칸타타 2026.09.10 - 02:54 160
    4564
    기타
    스톤에이지 카오스 클라
    칸타타 2026.09.08 - 22:14 190
    4563
    기타
    서든어택 구축파일
    우마무스메 2026.09.05 - 20:25 150
    4562
    기타
    R2 1502
    모카코피 2026.08.23 - 18:00 421
    4561
    기타
    커스텀 스킬
    grandu 2026.08.15 - 22:29 282
    4560
    기타
    빌드자료 swing layout
    grandu 2026.08.15 - 22:25 206
    4559
    기타
    각종 쿼리 올인원
    grandu 2026.08.15 - 22:25 267
    4558
    기타
    각종 자바 올인원
    grandu 2026.08.15 - 22:24 249
    4557
    기타
    포르자호라이즌6 각종 에디터
    grandu 2026.08.15 - 22:24 248
    4556
    기타
    포르자호라이즌6 시점변경
    grandu 2026.08.15 - 22:23 225
    4555
    기타
    fc26 싱글 에디터
    grandu 2026.08.15 - 22:23 232
    4554
    기타
    한글화 작업 pvf
    grandu 2026.08.15 - 22:22 348
    4553
    던파
    <<<<던파 각종 버전 무료 공유>>>>
    릔지 2026.08.10 - 22:40 817
    • 1 2 3 4 5 6 7 8 9 10 .. 93
    • / 93 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay