موضوع: مطلوب رأي خبراء الدايركت اكس و C++ في سورس كود)finak fantasy(

ردود: 3 | زيارات: 804
  1. #1

    Question مطلوب رأي خبراء الدايركت اكس و C++ في سورس كود)finak fantasy(

    السلام عليكم ورحمة الله وبركاته

    القصة طويلة ولكن سوف احاول اختصارها

    قام مبرمج ياباني بعمل برنامج يستعرض ملفات اللعبة المشهورة final fantasy xi










    هذا البرنامج يقوم بستعراض رسومات اللعبة في بيئة ثلاثية الابعاد
    و يقوم بتصفح جميع ملفات الداتا في هذه اللعبة

    ولكن هذا المبرمج قد توقف عن العمل على البرنامج و قام بوضع
    السورس كود لمن يريد الاستمرار عليه

    السورس كود موجود لي ولكن المشكلة هي انه مكتوب بالC++

    ومعرفتي في الc++ لا تتعدا Hello World

    ماهو رأي الخبراء في هذا الموضوع خصوصا اني اريد ان افهم عمل البرنامج و تطويرة في المستقبل ولكن ما يمنعني هو معرفتي بالC++

    1-البرنامج يقوم بفك التشفير عن ملفات ورسومات اللعبة ليعرضها في بيئة بسطية جدا
    مثال على عمل البرنامج



    2- السورس كود موتوفر لدي ..هل يوجد هناك امكانية اني احصل على طريقة فك التشفير عن الرسومات لعرضها في محركات جاهزة؟

    ماهي امكانية استخدام الرسوم والمجسمات والخرائط في لعبة بسيطة
    خصوصا وان كود فك التشفير عنها موجود في السورس كود؟

    ماهي اسرع طريقة توصلني الى نقطة التي اريدها وهي فهم مايوجد في السورس كود لهذا البرنامج البسيط الصغير جدا؟

    مثال من السورس كود الذي لم افهم منه شيء
    كود:
    #define FFXITOOLVERSION "Ver.4.04.05.0"
    
    #pragma comment(lib,"d3d8&quot...
    #pragma comment(lib,"D3dx8&quot...
    #pragma comment(lib,"winmm&quot...
    #include <windows.h>
    #include <string.h>
    #include <stdio.h>
    #include "ffxi.h"
    
    LPDIRECT3D8    g_pD3D = NULL;
    LPDIRECT3DDEVICE8 g_pD3DDevice = NULL;
    LPD3DXFONT pDxFont=NULL;
    BOOL g_bSetupOK = FALSE;
    HINSTANCE hInst;
    HWND hwndMain;
    BOOL isOK = FALSE;
    D3DLIGHT8 light;
    BOOL flgDebugLog=FALSE;
    BOOL flgFirst=FALSE;
    BOOL flgSetuping=FALSE;
    int  pory = 0;
    
    
    int mapno = 1000;
    
    static char *pdat=NULL;
    static DWORD dwSize = 0;
    BOOL flgViewError=FALSE;
    
    TEXTEX TexList[4096];
    LPSTR MMBlist[4096];
    int NumMMB = 0;
    int NumTexList=0;
    
    int cc=0;
    
    /*
    typedef struct _D3DTEXVERTEX
    {
      float x,y,z;     //�&#192;•W
      float hx,hy,hz;  //–@�üƒxƒNƒgƒ‹
      float tu,tv;     // UV�&#192;•W
    } D3DTEXVERTEX;
    #define D3DFVF_TEXVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1) 
    */
    
    #define D3DFVF_TEXVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_NORMAL|D3DFVF_TEX1) 
    
    typedef unsigned char uint8 ;
    typedef unsigned int uint32;
    typedef signed int int32;
    
    /*
    struct MzbNode //sizeof 0x64
    {
        char id[16];
        float p1[3];
        float p2[3];
        float p3[3];
        float p4[4];
        uint32 x1;
        uint32 x2;
        uint32 x3;
        uint32 x4;
        uint32 x5;
        uint32 x6;
        uint32 x7;
        uint32 x8;
    };
    */
    
    OBJINFO *oj;
    int noj;
    
    void __cdecl logprintf(LPCSTR lpszFormat, ...)
    {
      if( !flgDebugLog ) return;
      char szOutput[4096];
      va_list v1;
      DWORD dwSize;
    
      va_start(v1, lpszFormat);
    
      dwSize = wvsprintf(szOutput, lpszFormat, v1);
    
      if (szOutput[dwSize-1] != '\n')
            strcat(szOutput, "\r\n&quot...;
    
      HANDLE hFile = CreateFile(".\\ffxitool2.log",GENERIC_WRITE,FILE_SHARE_READ,NULL,
                                  OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL );
      if( hFile!=INVALID_HANDLE_VALUE && hFile!=NULL ){
        DWORD dmy;
        SetFilePointer(hFile,0,NULL,FILE_END);
        WriteFile(hFile,szOutput,lstrlen(szOutput),&dmy,NULL);
        CloseHandle(hFile);
      }
    }
    
    LPSTR sstr(LPSTR str,int n)
    {
      static char tmp[256];
      CopyMemory(tmp,str,n); tmp[n]=0;;
      return tmp;
    }
    
    
    BOOL ImgLoad(DWORD fno)
    {
      char buff[256];
      dwSize = 0;
      if( pdat ){
       delete []pdat;
       pdat = NULL;
      }
      char fname[256];
    
      if( !GetFileNameFromID(fname,fno) ){
        wsprintf(buff,"FFXITool FileNo:%d %s",fno,FFXITOOLVERSION);
        SetWindowText(hwndMain,buff);
        return FALSE;
      }
    
      HANDLE hFile = CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL);
    
      if( hFile!=INVALID_HANDLE_VALUE ){
        wsprintf(buff,"FFXITool2 FileNo:%d %s %s",fno,&fname[lstrlen(ffxidir)],FFXITOOLVERSION);
        SetWindowText(hwndMain,buff);
        DWORD dmy;
        dwSize = GetFileSize(hFile,NULL);
        pdat = new char[dwSize];
        ReadFile(hFile,pdat,dwSize,&dmy,NULL);
        CloseHandle(hFile);
        wsprintf(buff,"map%d",fno);
        flgViewError = GetPrivateProfileInt("MAPERROR",buff,0,".\\ffxitool.ini&quot...;
        flgFirst=TRUE;
        return TRUE;
      }
      wsprintf(buff,"FFXITool2 FileNo:%d NonFile %s %s",fno,&fname[lstrlen(ffxidir)],FFXITOOLVERSION);
      SetWindowText(hwndMain,buff);
    
      return FALSE;
    }
    
    
    IDirect3DTexture8 *CreatTex(LPSTR dat)
    {
      LPDIRECT3DTEXTURE8 pTex=NULL;
      UINT xx,yy;
      xx = *(UINT*)(dat+4);
      yy = *(UINT*)(dat+8);
      D3DLOCKED_RECT rc;
      HRESULT hr;
    
      if( *(DWORD*)(dat+0x28) == 'DXT3' ){
        hr = g_pD3DDevice->CreateTexture(xx,yy,0,0 ,D3DFMT_DXT3,D3DPOOL_MANAGED,&pTex);
        if( hr!=D3D_OK ) return NULL;
        hr = pTex->LockRect(0,&rc,NULL,0);
        if(hr==D3D_OK){
          CopyMemory(rc.pBits,dat+0x28+12,(xx/4) * (yy/4) * 16 );
          pTex->UnlockRect(0);
        }
        return pTex;
      }
    فماهي امكانية معرفة كيفية استخراج الرسومات و الخرائط من هذا البرنامج واستخدامها في اي محرك اخر..وشكرا .

    تعديل: ملاحظة بعض التعليقات في السورس كود باللغة اليابانية وهذا مما يزيد الطن بلة


  2. #2
    مشرف منبر 3D Games Design
    صور رمزية oms
    تاريخ التسجيل
    Oct 2004
    المنطقة
    Turkey
    ردود
    6,683
    هل أفهم من السابق أنك تريد أن تحصل على موديلات فاينل فانتزي .. أم أنك تريد أن تتعلم كيف تعمل مثل هذه البرامج ؟

  3. #3
    نعم الحصول على الموديلات وخصوصا الخرائط

    وهذا مايقوم به هذا البرنامج

    (الموديلات والخرائط مشفرة طبعا والبرنامج يقوم بفك التشفير عنها وعرضها)

    جميع ملفات اللعبة مشفرة وبصيغة .dat
    أخر تعديل بواسطة madeinksa في 03 / 06 / 2008 الساعة 10:29 PM السبب: تعديل

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل