Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > 12Sky2
You last visited: Today at 11:34

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Motion2 to motion3 help

Discussion on Motion2 to motion3 help within the 12Sky2 forum part of the MMORPGs category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2020
Posts: 243
Received Thanks: 51
Motion2 to motion3 help

I found what i look for. So as before on my searching post DOS wrote structure and hex editing method. But hex editing motion2 to motion3 doesnt work on me. How can i convert this motion2 file to 3. Is there an easy way? How can i use structure? Thx for any help
[IMG=expandable: 1][/IMG]
zahter55 is offline  
Old 06/12/2022, 12:41   #2
 
elite*gold: 0
Join Date: Apr 2020
Posts: 243
Received Thanks: 51
added motion files

if u wanna look inside share any process pls
virustotal
Attached Files
File Type: rar TwelveSky 2G03_GDATAD03_GMOTION001.rar (1.03 MB, 47 views)
zahter55 is offline  
Old 06/12/2022, 21:48   #3
 
RHNbaskan's Avatar
 
elite*gold: 0
Join Date: May 2016
Posts: 161
Received Thanks: 16
bu nedir dostum
RHNbaskan is offline  
Old 06/25/2022, 20:08   #4
 
elite*gold: 0
Join Date: Nov 2011
Posts: 129
Received Thanks: 174
some bone is not not working
Code:
#ifndef halloc
#define halloc( size ) HeapAlloc( GetProcessHeap(), 0, size )
#endif
#ifndef hfree
#define hfree( ptr ) if( ptr ){ HeapFree( GetProcessHeap(), 0, ptr ); ptr = NULL; }
#endif
#define TRACE()
class FHandle
{
public:
    HANDLE hFile;
    FHandle( char* tFileName )
    {
        hFile = CreateFileA( tFileName, 0x40000000u, 2u, 0, 2u, 0x80u, 0 );
    }
    ~FHandle()
    {
        if (hFile)
            CloseHandle(hFile);
        hFile = NULL;
    }    
    BOOL Write( void* value, int len )
    {
        if( !value || len < 1 ) return FALSE;
        if( hFile == INVALID_HANDLE_VALUE ) return FALSE;

        DWORD n;
        BOOL ret = WriteFile( hFile, value, len, &n, 0 );
        return ret && (int)n == len;
    }
};
class ZCompress
{
public:
    BYTE* tOriginal;
    DWORD tOriginalSize;
    BYTE* tCompress;
    DWORD tCompressSize;
    ZCompress()
    {
        tOriginal = 0;
        tOriginalSize = 0;
        tCompress = 0;
        tCompressSize = 0;
    }
    BOOL CreateOriginal( int size  )
    {
        tOriginalSize = size;
        tOriginal = (BYTE*)halloc( tOriginalSize );
        if( !tOriginal )
            return 0;
        return 1;
    }
    BOOL CreateCompress()
    {
        if( !CGXD::GetCompressSize( tOriginalSize, tOriginal, &tCompressSize ) )
            return 0;
        tCompress = (BYTE*)halloc( tOriginalSize );
        if( !tCompress )
            return 0;
        return 1;
    }
    ~ZCompress()
    {
        hfree(tOriginal);
        hfree(tCompress);
    }
};
BOOL GXD_SaveToMOTION3( MOTION_FOR_GXD* This )
{
    MOTION_FOR_GXD::Init(This);
    MOTION_FOR_GXD::Load(This, "G03_GDATA\\D03_GMOTION\\001\\C002001085_old.MOTION");

    TRACE();
    if (!This->mCheckValidState)
        return 0;
    TRACE();
    if (This->mFrameNum<1||This->mBoneNum < 1)
        return 0;

    TRACE();
    FHandle f("G03_GDATA\\D03_GMOTION\\001\\C002001085.MOTION");
    TRACE();
    char sig[] = { 'M', 'O', 'T', 'I', 'O', 'N', '3', 1, 1, 0, 0 };
    if( !f.Write( sig, sizeof(sig) ) )
        return 0;
    TRACE();
    
    printf( "%d:%d\n",This->mFrameNum, This->mBoneNum );

    int matrixSize = (This->mBoneNum * This->mFrameNum);
    int saveSize = 28 * matrixSize;
    ZCompress z;
    if( !z.CreateOriginal( 4 + 4 + saveSize ) )
        return 0;
    memcpy( &z.tOriginal[0], &This->mFrameNum, 4 );
    memcpy( &z.tOriginal[4], &This->mBoneNum, 4 );

    D3DXQUATERNION pOut;
    D3DXVECTOR3 pTrans;
    D3DXVECTOR3 pScale;
    D3DXMATRIX* mx;
    int pos = 8;
    for (int i = 0; i < matrixSize; i++ ) {
        mx = &This->mKeyMatrix[i];
        D3DXMatrixDecompose( &pScale, &pOut, &pTrans, mx );
        //D3DXQuaternionRotationMatrix( &pOut, mx );
        memcpy( &z.tOriginal[pos], &pOut, 16 );
        memcpy( &z.tOriginal[pos+16], &mx->_41, 4 );
        memcpy( &z.tOriginal[pos+20], &mx->_42, 4 );
        memcpy( &z.tOriginal[pos+24], &mx->_43, 4 );
        pos += 28;
    }

    if( !z.CreateCompress() )
        return 0;
    TRACE();

    BOOL ret = CGXD::Compress( z.tOriginalSize, z.tOriginal, z.tCompressSize, z.tCompress );
    if ( ret )
    {
        TRACE();
        return f.Write( &z.tOriginalSize, 4 ) && f.Write( &z.tCompressSize, 4 ) && f.Write( z.tCompress, z.tCompressSize );
    }

    TRACE();
    return 0;
}

//usage
MOTION_FOR_GXD mot;
BOOL GXD_SaveToMOTION3(MOTION_FOR_GXD* This);
GXD_SaveToMOTION3(&mot);
lnwnuyhodd is offline  
Reply


Similar Threads Similar Threads
[VORSTELLUNG] Motion2 - Bist du der Auserwählte?
05/01/2012 - Metin2 PServer Advertising - 23 Replies
#DELETE #CLOSED
[VORSTELLUNG] Motion2 - Bist du der Auserwählte?
04/30/2012 - Metin2 PServer Advertising - 9 Replies
http://www.picbird.de/images/737548792.png



All times are GMT +1. The time now is 11:36.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.