• SEARCH

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

      • legendaryme
      • 2020.09.03 - 18:01 908

     

    고정 및 작업 재고 품목 정렬 + 더미 품목.
     
    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
    • 스톤에이지 메르 클라 3/18셀림
    • 9
      legendaryme

    legendaryme 님의 최근 글

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

    legendaryme 님의 최근 댓글

    감사합니다 2020 09.01 대단히 감사합니다! 2020 09.01
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 스톤에이지 메르 클라 3/18
    • 목록
      view_headline
    × CLOSE
    전체 뮤 329 아이온 159 어둠의전설 111 던파 133 프로젝트신루 16 리니지2 283 천상비 17 크로노스 57 칼 온라인 15 기타 3510
    기본 (4,666) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 해외 IP(중국) 차단 공지
      2026.10.11 - 14:30 8782
    • 게시판 홍보 관련 안내
      2
      2026.08.05 - 21:44 74074 2
    • 포인트 획득 공지
      14
      2026.04.24 - 19:48 102399 14
    • 링크 업로드 관련 공지
      13
      2026.03.25 - 21:56 100417 13
    • 인증메일 공지
      4
      2026.03.15 - 16:42 99011 4
    • 파일링크 및 인증메일 발송 관련 문의 안내
      12
      2026.03.14 - 22:03 102412 12
    • 포인트 게시판 안내
      2026.02.28 - 19:14 101055
    • 게임존 사이트 변경 사항 안내
      9
      2026.02.26 - 01:07 103475 9
    4666
    기타
    신루 통파일
    꿀벌잉 2026.11.06 - 14:24 62
    4665
    기타
    스톤에이지 카오스팩 1
    알빠냐고 2026.11.03 - 21:03 83
    4664
    뮤
    MuEditor_1.9.25버전 아이템 이름변경 등
    ㄴ니아 2026.10.31 - 21:57 57
    4663
    기타
    트릭스터 이클서버 클라 7/7
    라비린스 2026.10.29 - 23:10 55
    4662
    기타
    트릭스터 이클서버 6/7
    라비린스 2026.10.29 - 23:09 34
    4661
    기타
    트릭스터 이클서버 클라 5/7
    라비린스 2026.10.29 - 23:07 35
    4660
    기타
    트릭스터 이클서버 클라 4/7
    라비린스 2026.10.29 - 23:06 37
    4659
    기타
    트릭스터 이클서버 클라 3/7
    라비린스 2026.10.29 - 23:04 37
    4658
    기타
    트릭스터 이클서버 클라 2/7
    라비린스 2026.10.29 - 23:03 37
    4657
    기타
    트릭스터 이클서버 클라 1/7
    라비린스 2026.10.29 - 23:01 86
    4656
    프로젝트신루
    신루 통파일+구축 설명입니다.
    Blackhat 2026.10.29 - 17:10 101
    4655
    기타
    구룡쟁패 서버파일&클라 좀 올려주세요~~
    연금 2026.10.29 - 15:39 40
    4654
    어둠의전설
    어둠의전설 8.2버전 백갑 구현 버전 서버팩 공유 가능하신분 있나요?
    Tad 2026.10.20 - 22:43 109
    4653
    기타
    SPT 멀티용 서버모드 FIKA
    Repi 2026.10.20 - 16:33 113
    4652
    기타
    드래곤라자 서버 스크립트
    Repi 2026.10.19 - 11:38 142
    4651
    기타
    마지막왕국 클라이언트 해상도 변경 작업된 클라 파일(1080p)
    Repi 2026.10.18 - 15:17 119
    4650
    기타
    마지막왕국 클라이언트 해상도 변경 작업된 클라 파일(720p)
    Repi 2026.10.18 - 15:16 101
    4649
    기타
    스톤에이지 아이템 제작 도구
    WKdrnsl! 2026.10.11 - 17:20 340
    4648
    기타
    스톤에이지 페트 초기S급 계산기
    WKdrnsl! 2026.10.11 - 17:11 181
    4647
    기타
    스톤에이지 GM도우미(제작)
    WKdrnsl! 2026.10.11 - 17:01 281
    4646
    기타
    스톤에이지 카오스팩 소스+클라 및 VM 원클릭 풀팩
    김도란 2026.10.11 - 09:12 572
    4645
    기타
    스톤에이지 카오스팩
    김도란 2026.10.10 - 13:32 299
    4644
    기타
    스톤에이지 8.0 팩
    쿨카피 2026.10.09 - 01:35 242
    4643
    기타
    그라나도 에스파다 v32 (4/4)
    eddy 2026.10.08 - 20:05 157
    4642
    기타
    그라나도 에스파다 v32 (3/8)
    eddy 2026.10.08 - 20:04 132
    4641
    기타
    그라나도 에스파다 v32 (2/8) - 클라이언
    eddy 2026.10.08 - 20:03 125
    4640
    기타
    그라나도 에스파다 v32 (1/8)
    eddy 2026.10.08 - 20:02 213
    4639
    기타
    마지막왕국 서버팩 좀 공유 해주실분~~
    타심 2026.10.08 - 11:15 115
    4638
    기타
    카발 ep33 Clean DB
    셀림 2026.10.07 - 16:31 126
    4637
    기타
    카발 RockAndRollITS EP33_to_EP35
    셀림 2026.10.07 - 16:16 149
    4636
    기타
    카발 NOFUN 클라
    셀림 2026.10.07 - 15:27 159
    4635
    기타
    프리크로노스
    젝스초코 2026.10.05 - 11:31 370
    4634
    기타
    추억의 미르의 전설 1 입니다. (개발소스+1998년도 클라이언트)
    미르매니아 2026.10.02 - 16:27 370
    4633
    기타
    스톤에이지 메르 클라 18/18
    셀림 2026.10.02 - 15:03 325
    4632
    기타
    스톤에이지 메르 클라 17/18
    셀림 2026.10.02 - 14:57 298
    4631
    기타
    스톤에이지 메르 클라 16/18
    셀림 2026.10.02 - 14:54 270
    4630
    기타
    스톤에이지 메르 클라 15/18
    셀림 2026.10.02 - 14:51 270
    4629
    기타
    스톤에이지 메르 클라 14/18
    셀림 2026.10.02 - 14:50 320
    4628
    기타
    스톤에이지 메르 클라 13/18
    셀림 2026.10.02 - 14:49 273
    4627
    기타
    스톤에이지 메르 클라 12/18
    셀림 2026.10.02 - 14:45 252
    4626
    기타
    스톤에이지 메르 클라 11/18
    셀림 2026.10.02 - 14:43 273
    4625
    기타
    스톤에이지 메르 클라 10/18
    셀림 2026.10.02 - 14:40 210
    4624
    기타
    스톤에이지 메르 클라 9/18
    셀림 2026.10.02 - 14:39 220
    4623
    기타
    스톤에이지 메르 클라 8/18
    셀림 2026.10.02 - 14:34 250
    4622
    기타
    스톤에이지 메르 클라 7/18
    셀림 2026.10.02 - 14:32 274
    4621
    기타
    스톤에이지 메르 클라 6/18
    셀림 2026.10.02 - 14:30 255
    4620
    기타
    스톤에이지 메르 클라 5/18
    셀림 2026.10.02 - 14:29 242
    4619
    기타
    스톤에이지 메르 클라 4/18
    셀림 2026.10.02 - 14:20 287
    4618
    기타
    스톤에이지 메르 클라 3/18
    셀림 2026.10.02 - 14:20 252
    4617
    기타
    스톤에이지 메르 클라 2/18
    셀림 2026.10.02 - 14:19 295
    • 1 2 3 4 5 6 7 8 9 10 .. 94
    • / 94 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay