[Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2]

Page 25 of 25 FirstFirst ... 15171819202122232425
Results 361 to 374 of 374
  1. #361
    Member city7 is offline
    MemberRank
    May 2011 Join Date
    92Posts
    module_dll = LoadLibrary("Antihack.dll"); will it be better

  2. #362
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    Quote Originally Posted by city7 View Post
    module_dll = LoadLibrary("Antihack.dll"); will it be better
    Easier yes, better no. Your antihack will offline a small child with a debugger.

    I would also add. I'm not teaching you to program.
    I'll give you a piece of code to work on.
    If you hang a batch file in the game client without protection, it is easy to bypass this batch file.
    You have to think about the code and modify it, secure it.
    Use VM protection, add hang protection, add license protection,...

    I won't write all the code for you and I won't share the code I created for protection. In other words, I won't do all the work for you.
    Last edited by leorond; 01-12-22 at 11:21 AM.

  3. #363
    Apprentice login1 is offline
    MemberRank
    Sep 2014 Join Date
    5Posts
    Please tell me which server (with sources) is suitable for this client? And another question is, can I use the zTeam season 6 server files (for example these https://forum.ragezone.com/f197/rele...100-a-1156924/) ?

  4. #364
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    Quote Originally Posted by login1 View Post
    Please tell me which server (with sources) is suitable for this client? And another question is, can I use the zTeam season 6 server files (for example these https://forum.ragezone.com/f197/rele...100-a-1156924/) ?
    I have not tested which servers are compatible with these source codes.
    I edited season 4 for these resources.

    It will be best if you use source codes that have already been tested with the game client.

    Luis Fernando Más Ortiz
    LouisEmulator
    I want to thank the creator. Good work but no further development.
    Such a shame

  5. #365
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    Has anyone created the SKILL_ATTRIBUTE season 6 structure where the Rage Fighter is entered?
    I don't want to deal with it.

  6. #366
    Member city7 is offline
    MemberRank
    May 2011 Join Date
    92Posts
    I won't write all the code for you and I won't share the code I created for protection. In other words, I won't do all the work for you.

    typedef struct
    {
    char Name[32]; //32
    BYTE Level; //
    WORD Damage; //
    WORD Mana; //
    WORD AbilityGuage; //
    BYTE Distance; //
    DWORD Delay; //
    DWORD Energy; //所需能量(所需计算=20+(Reqeng*Level)*0.04)
    WORD Charisma; //Req_Level
    BYTE MasteryType; //Property_1
    BYTE SkillUseType; //技能用户类型。
    BYTE SkillBrand; //使用该技能必须施放的技能编号。
    BYTE KillCount; //KillCount
    BYTE RequireDutyClass[MAX_DUTY_CLASS]; //
    BYTE RequireClass[MAX_CLASS]; //
    BYTE TypeSkill; //80
    WORD Magic_Icon; // 76
    WORD m_byItemSkill; //84
    WORD m_byMasterSkillValAtt; //88
    WORD Strength; //
    WORD Dexterity; //
    BYTE m_Stnk[6];

    } SKILL_ATTRIBUTE;

    你个小老外 我以为有多吊。还不是个小垃圾

  7. #367
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    Quote Originally Posted by city7 View Post
    I won't write all the code for you and I won't share the code I created for protection. In other words, I won't do all the work for you.

    typedef struct
    {
    char Name[32]; //32
    BYTE Level; //
    WORD Damage; //
    WORD Mana; //
    WORD AbilityGuage; //
    BYTE Distance; //
    DWORD Delay; //
    DWORD Energy; //所需能量(所需计算=20+(Reqeng*Level)*0.04)
    WORD Charisma; //Req_Level
    BYTE MasteryType; //Property_1
    BYTE SkillUseType; //技能用户类型。
    BYTE SkillBrand; //使用该技能必须施放的技能编号。
    BYTE KillCount; //KillCount
    BYTE RequireDutyClass[MAX_DUTY_CLASS]; //
    BYTE RequireClass[MAX_CLASS]; //
    BYTE TypeSkill; //80
    WORD Magic_Icon; // 76
    WORD m_byItemSkill; //84
    WORD m_byMasterSkillValAtt; //88
    WORD Strength; //
    WORD Dexterity; //
    BYTE m_Stnk[6];

    } SKILL_ATTRIBUTE;

    你个小老外 我以为有多吊。还不是个小垃圾
    Nice, I had to do it myself anyway.

    Open Skill Eng.bmd in Magic Hand editor for Skill season 6.
    Write the Rage Fighter skill and save as skill_eng.bmd.

    The structure is like this.

    PHP Code:
    typedef struct
    {
        
    char Name[32];
        
    BYTE Level;
        
    WORD Damage;
        
    WORD Mana;
        
    WORD AbilityGuage;
        
    BYTE Distance;
        
    int  Delay;
        
    int Energy;
        
    WORD Charisma;
        
    BYTE MasteryType;
        
    BYTE SkillUseType
        
    BYTE SkillBrand
        
    BYTE KillCount;
        
    BYTE RequireDutyClass[MAX_DUTY_CLASS];
        
    BYTE RequireClass[MAX_CLASS];
        
    WORD Magic_Icon;
        
    BYTE TypeSkill;
        
    int Strength;
        
    int Dexterity;
    SKILL_ATTRIBUTE
    Then remove the CRC or find out the checksum for better security and it's OK.

  8. #368
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    I am also attaching the skill_eng.bmd file here with fully functional Rage fighter attacks.

    skill_eng.bmd

    The MagicHand editor must be used for editing.
    For example this one

    MagicHand editor

    You can turn off CRC like this

    PHP Code:
    if ( dwCheckSum != GenerateCheckSum2BufferSize*MAX_SKILLS0x5A18)) // With CRC
    if ( dwCheckSum == GenerateCheckSum2BufferSize*MAX_SKILLS0x5A18)) // Without CRC 
    Or better

    PHP Code:
    void OpenSkillScript(char *FileName)
    {
        
    FILE *fp fopen(FileName,"rb");
        if(
    fp != NULL)
        {
            
    int Size sizeof(SKILL_ATTRIBUTE);

            
    BYTE *Buffer = new BYTE [Size*MAX_SKILLS];
            
    fread(Buffer,Size*MAX_SKILLS,1,fp);

            
    BYTE *pSeek Buffer;
            for(
    int i=0;i<MAX_SKILLS;i++)
            {
                
    BuxConvert(pSeek,Size);
                
    memcpy(&SkillAttribute[i],pSeek,Size);
                
    pSeek += Size;
            }
            
    delete [] Buffer;
        }
        else
        {
            
    char Text[256];
            
    sprintf(Text,"%s - File not exist.",FileName);
            
    g_ErrorReport.WriteText);
            
    MessageBox(g_hWnd,Text,NULL,MB_OK);
            
    SendMessage(g_hWnd,WM_DESTROY,0,0);
        }

    Or even slightly better for the above skill_eng.bmd

    PHP Code:
    void OpenSkillScript(char *FileName)
    {
        
    FILE *fp fopen(FileName,"rb");
        if(
    fp != NULL)
        {
            
    int Size sizeof(SKILL_ATTRIBUTE);
            
    // 읽기
            
    BYTE *Buffer = new BYTE [Size*MAX_SKILLS];
            
    fread(Buffer,Size*MAX_SKILLS,1,fp);
            
    // crc 체크
            
    DWORD dwCheckSum;
            
    fread(&dwCheckSum,sizeof DWORD),1,fp);
            
    fclose(fp);
            
    //DWORD dwCheckSum2 = GenerateCheckSum2( Buffer, Size*MAX_SKILLS, 0x5A18);
            
    DWORD dwCheckSum2 7798882;
            if ( 
    dwCheckSum != dwCheckSum2)
            {
                
    char Text[256];
                
    sprintf(Text,"%s - File corrupted.",FileName);
                
    g_ErrorReport.WriteText);
                
    MessageBox(g_hWnd,Text,NULL,MB_OK);
                
    SendMessage(g_hWnd,WM_DESTROY,0,0);
            }
            else
            {
                
    BYTE *pSeek Buffer;
                for(
    int i=0;i<MAX_SKILLS;i++)
                {

                    
    BuxConvert(pSeek,Size);
                    
    memcpy(&SkillAttribute[i],pSeek,Size);

                    
    pSeek += Size;
                }
            }
            
    delete [] Buffer;
        }
        else
        {
            
    char Text[256];
            
    sprintf(Text,"%s - File not exist.",FileName);
            
    g_ErrorReport.WriteText);
            
    MessageBox(g_hWnd,Text,NULL,MB_OK);
            
    SendMessage(g_hWnd,WM_DESTROY,0,0);
        }

    I would add the most correct option to my answer.
    Set MAX_SKILLS to the number of lines in the Skill_eng.bmd file + 1.
    When using the correct number of lines for the correct BMD file, the CRC will successfully evaluate to key 0x5A18.

    PHP Code:
    void OpenSkillScript(char *FileName)
    {
        
    FILE *fp fopen(FileName,"rb");
        if(
    fp != NULL)
        {
            
    int Size sizeof(SKILL_ATTRIBUTE);
            
    // read
            
    BYTE *Buffer = new BYTE [Size*MAX_SKILLS];
            
    fread(Buffer,Size*MAX_SKILLS,1,fp);
            
    // crc check
            
    DWORD dwCheckSum;
            
    fread(&dwCheckSum,sizeof DWORD),1,fp);
            
    fclose(fp);
            
    DWORD dwCheckSum2 GenerateCheckSum2BufferSize*MAX_SKILLS0x5A18);
            if ( 
    dwCheckSum != dwCheckSum2)
            {
                
    char Text[256];
                
    sprintf(Text,"%s - File corrupted.",FileName);
                
    g_ErrorReport.WriteText);
                
    MessageBox(g_hWnd,Text,NULL,MB_OK);
                
    SendMessage(g_hWnd,WM_DESTROY,0,0);
            }
            else
            {
                
    BYTE *pSeek Buffer;
                for(
    int i=0;i<MAX_SKILLS;i++)
                {

                    
    BuxConvert(pSeek,Size);
                    
    memcpy(&SkillAttribute[i],pSeek,Size);

                    
    pSeek += Size;
                }
            }
            
    delete [] Buffer;
        }
        else
        {
            
    char Text[256];
            
    sprintf(Text,"%s - File not exist.",FileName);
            
    g_ErrorReport.WriteText);
            
    MessageBox(g_hWnd,Text,NULL,MB_OK);
            
    SendMessage(g_hWnd,WM_DESTROY,0,0);
        }

    Last edited by leorond; 15-12-22 at 10:55 AM.

  9. #369
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    If you don't have the correct file, I recommend using the function

    PHP Code:
    void SaveSkillScript(char *FileName
    This function creates an empty Skill_eng.bmd file with the key 0x5A18.
    After that, just write all the spells into it and you have a fully functional CRC.

  10. #370
    Enthusiast son1xx2 is offline
    MemberRank
    Jul 2019 Join Date
    35Posts
    Old minimap,



  11. #371
    Novice rubdario23 is online now
    MemberRank
    Mar 2020 Join Date
    1Posts
    Thanks you a lot!!! a question ... can be posible that we need to add in ZzzScene.cpp this lines?
    PHP Code:
    // ---- 3D camera ----
    extern float CameraZoom;
    extern float AngleY3D;
    // ------------------- 
    Cause this variables was declared in ZzzOpenglUtil.cpp and ZzzScene.cpp just its include ZzzScene.h

    Too in ZzzLodTerrain.cpp

    PHP Code:
     // ---- 3D camera ----
    extern float CameraZoom;
    extern float AngleY3D;
    // ------------------- 
    Another question is that the variables

    PHP Code:
    float AgleRL 0.f;
    float AgleX3D 0.f
    its were not used. (?)

    **Sorry my bad english.

    Quote Originally Posted by leorond View Post
    As promised, I will share with you my work on the 3D camera.

    I want to inform you that I am still working on the 3D camera.

    Unfinished or in preparation...
    1. Damage listing function
    2. Complete saving of settings in windows registry
    - drawing objects on the map
    3. FPS, CPU usage for maximum performance
    4. Reworked feature for monster sounds

    Here I will add instructions for the 3D camera, which is controlled by the arrow keys and the keys PgUp, PgOn, END

    1. defining all variables
    - In the ZzzOpenglUtil.cpp file, add the definitions
    PHP Code:
    //////////////////////////////////////////////////////////////////////////
    //  Global Variable.
    //////////////////////////////////////////////////////////////////////////
    int     OpenglWindowX;     
    int     OpenglWindowY;     
    int     OpenglWindowWidth
    int     OpenglWindowHeight;
    bool    CameraTopViewEnable false;
    float   CameraViewNear      20.f;
    float   CameraViewFar       2000.f;
    float   CameraFOV           55.f;
    // ---- 3D camera ----
    float    CameraZoom            0.f;
    float    AngleX3D            0.f;
    float    AngleY3D            0.f;
    float    AngleRL                0.f;
    // -------------------
    vec3_t  CameraPosition;
    vec3_t  CameraAngle;
    float   CameraMatrix[3][4];
    vec3_t  MousePosition;
    vec3_t  MouseTarget;
    float   g_fCameraCustomDistance 0.f;
    bool    FogEnable   false;
    GLfloat FogDensity  0.0004f;
    GLfloat FogColor[4] = {30/256.f,20/256.f,10/256.f,}; 
    - In the Winmain.h file, add the definition
    PHP Code:
    extern char m_ID[];
    extern char m_Version[];
    extern int  m_SoundOnOff;
    extern int  m_MusicOnOff;
    // ---- 3D camera ----
    extern int    m_CameraOnOff;
    // -------------------
    extern int  m_Resolution;
    extern int m_nColorDepth
    - In the Winmain.cpp file, find the BOOL OpenInitFile() function and add a definition above this function
    PHP Code:
    char m_ID[11];
    char m_Version[11];
    char m_ExeVersion[11];
    int  m_SoundOnOff;
    int  m_MusicOnOff;
    // ---- 3D camera ----
    int    m_CameraOnOff;
    // -------------------
    int  m_Resolution;
    int    m_nColorDepth;
    int    g_iRenderTextType 0;

    #ifdef LJH_ADD_SUPPORTING_MULTI_LANGUAGE
    // ´Ů±ąľî Áöżř ·±ĂÄżˇĽ­ Ľ±ĹõȠľđľî
    char g_aszMLSelection[MAX_LANGUAGE_NAME_LENGTH] = {'\0'};
    string g_strSelectedML "";
    #endif //LJH_ADD_SUPPORTING_MULTI_LANGUAGE

    //int ĆÄŔĎ Ŕд ÇÔĽö
    BOOL OpenInitFile()

    2. Creating a 3D camera launcher using windows registry save
    - Go to the BOOL OpenInitFile() function in the Winmain.cpp file and supply the following condition to validate and possibly write to the windows registry
    PHP Code:
        m_ID[0] = '\0';
        
    m_SoundOnOff 1;
        
    m_MusicOnOff 1;
    // ---- 3D camera ----
        
    m_CameraOnOff 1;
    // -------------------
        
    m_Resolution 0;
        
    m_nColorDepth 0
    PHP Code:
            dwSize 11;
            if ( 
    RegQueryValueEx (hKey"ID"0NULL, (LPBYTE)m_ID, & dwSize) != ERROR_SUCCESS)
            {
            }
            
    dwSize sizeof ( int);
            if ( 
    RegQueryValueEx (hKey"SoundOnOff"0NULL, (LPBYTE) & m_SoundOnOff, &dwSize) != ERROR_SUCCESS)
            {
                
    m_SoundOnOff true;
            }
            
    dwSize sizeof ( int);
            if ( 
    RegQueryValueEx (hKey"MusicOnOff"0NULL, (LPBYTE) & m_MusicOnOff, &dwSize) != ERROR_SUCCESS)
            {
                
    m_MusicOnOff false;
            }
    // ---- 3D camera ----
            
    dwSize sizeof ( int);
            if ( 
    RegQueryValueEx (hKey"3DCameraOnOff"0NULL, (LPBYTE) & m_CameraOnOff, &dwSize) != ERROR_SUCCESS)
            {
                
    m_CameraOnOff false;
            }
    // -------------------
            
    dwSize sizeof ( int);
            if ( 
    RegQueryValueEx (hKey"Resolution"0NULL, (LPBYTE) & m_Resolution, &dwSize) != ERROR_SUCCESS)
            {
                
    m_Resolution 1;
            } 
    - Now go to the NewUIOptionWindow.h file and define a new public function
    PHP Code:
    void SetCameraOnOff(); 
    - Then create a new function in the NewUIOptionWindow.cpp file
    - This function checks if a setting for the camera exists in the registry and has permission to change the value of that setting
    PHP Code:
    void SEASON3B::CNewUIOptionWindow::SetCameraOnOff()
    {

        
    HKEY hKey;
        
    DWORD dwDisp;
        
    DWORD dwSize;
        
    dwSize sizeof ( int);
        if ( 
    ERROR_SUCCESS == RegCreateKeyEx(HKEY_CURRENT_USER"SOFTWARE\\Webzen\\Mu\\Config"0NULLREG_OPTION_NON_VOLATILEKEY_ALL_ACCESSNULL, & hKey, &dwDisp))
        {
            
    m_CameraOnOff = !m_CameraOnOff;
            
    RegSetValueEx(hKey"3DCameraOnOff"0NULL, (LPBYTE) & m_CameraOnOffdwSize);
        }
        
    RegCloseKeyhKey);

    - Go to the Render Buttons() function in the NewUIOption Window.cpp file and create a checkbox for the 3D camera
    - My settings save is next to the Effects render settings name
    PHP Code:
        // 3D Camera checkbox
        
    if(m_CameraOnOff)
        {
            
    RenderImage(IMAGE_OPTION_BTN_CHECKm_Pos.x+150m_Pos.y+149151500);
        }
        else
        {
            
    RenderImage(IMAGE_OPTION_BTN_CHECKm_Pos.x+150m_Pos.y+1491515015.f);
        } 
    - Go to the RenderContents() function in the NewUIOption Window.cpp file and create a dot before the description and the settings description itself for the 3D camera
    PHP Code:
    void SEASON3B::CNewUIOptionWindow::RenderContents()
    {
        
    float xy;
        
    m_Pos.20.f;
        
    m_Pos.46.f;
        
    RenderImage(IMAGE_OPTION_POINTxy10.f10.f);
        
    += 22.f;
        
    RenderImage(IMAGE_OPTION_POINTxy10.f10.f);
        
    += 22.f;
        
    RenderImage(IMAGE_OPTION_POINTxy10.f10.f);
        
    += 40.f;
        
    RenderImage(IMAGE_OPTION_POINTxy10.f10.f);
        
    += 22.f;
        
    RenderImage(IMAGE_OPTION_POINTxy10.f10.f);
        
    // 3D Camera
        
    RenderImage(IMAGE_OPTION_POINTx+60y10.f10.f);
        
        
    g_pRenderText->SetFont(g_hFont);
        
    g_pRenderText->SetTextColor(255255255255);
        
    g_pRenderText->SetBgColor(0);
        
    // 386 "ŔÚµż °ř°Ý"
        
    g_pRenderText->RenderText(m_Pos.x+40m_Pos.y+48GlobalText[386]);
        
    // 387 "±Ó¸» ľË¸˛Ŕ˝"
        
    g_pRenderText->RenderText(m_Pos.x+40m_Pos.y+70GlobalText[387]);
        
    // 389 "şĽ·ýÁ¶Ŕý"
        
    g_pRenderText->RenderText(m_Pos.x+40m_Pos.y+92GlobalText[389]);
        
    // 919 "˝˝¶óŔ̵堵µżň¸»"
        
    g_pRenderText->RenderText(m_Pos.x+40m_Pos.y+132GlobalText[919]);
        
    // 1840 "+Čż°úÁ¦ÇŃ"
        
    g_pRenderText->RenderText(m_Pos.x+40m_Pos.y+154"+Effect");
        
    // 3D Camera
        
    g_pRenderText->RenderText(m_Pos.x+100m_Pos.y+154"3D Camera");

    - Now go to the UpdateMouseEvent() function in the NewUIOption Window.cpp file and create an action when the 3D camera checkbox is checked
    PHP Code:
        if(SEASON3B::IsPress(VK_LBUTTON) && CheckMouseIn(m_Pos.x+150m_Pos.y+1271515))
        {
            
    m_bSlideHelp = !m_bSlideHelp;
        }
        
    // 3D Camera
        
    if(SEASON3B::IsPress(VK_LBUTTON) && CheckMouseIn(m_Pos.x+150m_Pos.y+1491515))
        {
            
    SetCameraOnOff();
        }
        
        if(
    CheckMouseIn(m_Pos.x+33-8m_Pos.y+104124+816)) 
    Now we have our startup setup ready and we can get down to the 3D camera itself

    3. Creating a 3D camera control
    - This control setting is contained in the ZzzScene.cpp file and can be customized to your liking.
    I chose keyboard control for the player's convenience.


    - Go to the ZzzScene.cpp file in the MoveMainCamera() function and add the settings for the 3D camera.
    - Edit the first condition of the function as follows.
    PHP Code:
        if (
    #ifdef PJH_NEW_SERVER_SELECT_MAP
            
    World == WD_73NEW_LOGIN_SCENE
    #else
            
    World == WD_77NEW_LOGIN_SCENE
    #endif //PJH_NEW_SERVER_SELECT_MAP
            
    && CCameraMove::GetInstancePtr()->IsTourMode())
    #ifdef PJH_NEW_SERVER_SELECT_MAP
            
    CameraFOV 65.0f;
    #else //PJH_NEW_SERVER_SELECT_MAP
            
    CameraFOV 61.0f;
    #endif //PJH_NEW_SERVER_SELECT_MAP
        
    else
        {
            if (
    World == WD_74NEW_CHARACTER_SCENE || World == WD_73NEW_LOGIN_SCENE// Fix for opening scene and character selection
            
    {
                
    CameraZoom 0;
                
    AngleY3D 0;
            }
            
    CameraFOV 35.f CameraZoom;
            if( !
    g_pUIManager->IsInputEnable())
            {
                if (
    m_CameraOnOff == 1)
                {
                    if(
    HIBYTE(GetAsyncKeyState(109))==128 || HIBYTE(GetAsyncKeyState(VK_PRIOR))==128// PAGE UP or +
                    
    {
                        if (
    CameraZoom 12CameraZoom += 2;
                    }
                    if(
    HIBYTE(GetAsyncKeyState(107))==128 || HIBYTE(GetAsyncKeyState(VK_NEXT))==128// PAGE DOWN or -
                    
    {
                        if (
    CameraZoom > -12CameraZoom -= 2;
                    }
                    if(
    HIBYTE(GetAsyncKeyState(VK_RIGHT))==128// RIGHT ARROW
                        
    CameraAngle[2] -= 4;
                    if(
    HIBYTE(GetAsyncKeyState(VK_LEFT))==128// LEFT ARROW
                        
    CameraAngle[2] += 4;
                    
                    if(
    HIBYTE(GetAsyncKeyState(VK_DOWN))==128// DOWN ARROW
                        
    if (AngleY3D 5AngleY3D += 1;
                    if(
    HIBYTE(GetAsyncKeyState(VK_UP))==128// UP ARROW
                        
    if (AngleY3D > -10AngleY3D -= 1;
                    if(
    HIBYTE(GetAsyncKeyState(VK_END))==128// END keys for reset 3D camera
                    
    {
                        
    CameraZoom 0;
                        
    CameraAngle[2] = -45.f;
                        
    AngleY3D 0;
                    }
                }
                else {
                    
    CameraZoom 0;
                    
    CameraAngle[2] = -45.f;
                    
    AngleY3D 0;
                }
            }
        } 
    - In the same function, go to this condition and edit as follows
    PHP Code:
            else if(SceneFlag == CHARACTER_SCENE// ŔĚÇőŔç - ÄɸŻĹÍ ľŔ Ŕ϶§ Ä«¸Ţ¶ó Ŕ§Äˇ ĽĽĆĂ
            
    {
    #ifdef PJH_NEW_SERVER_SELECT_MAP
                
    CameraAngle[0] = -84.5f;
                
    CameraAngle[1] = 0.0f;
                
    CameraAngle[2] = -75.0f;
                 
    CameraPosition[0] = 9758.93f;
                 
    CameraPosition[1] = 18913.11f;
                 
    CameraPosition[2] = 675.5f;
    #else //PJH_NEW_SERVER_SELECT_MAP
                
    CameraAngle[0] = -84.5f;
                
    CameraAngle[1] = 0.0f;
                
    CameraAngle[2] = -30.0f;
                
    CameraPosition[0] = 23566.75f;
                
    CameraPosition[1] = 14085.51f;
                
    CameraPosition[2] = 395.0f;
    #endif //PJH_NEW_SERVER_SELECT_MAP
            
    }
            else
            {
                
    CameraAngle[0] = -48.5f;
                if (
    m_CameraOnOff == 1)
                {
                    
    CameraAngle[0] += AngleY3D;
                }
            }
    #endif 
    - At the end of this function, add the following condition before return bLockCamera;
    PHP Code:
        // Field of vision
        
    if (m_CameraOnOff == 1)
        {
            if (
    CameraZoom 0)
                
    CameraViewFar += 458.33f + (458.33f CameraZoom);
            else 
                
    CameraViewFar += 1458.33f;
        } 
    - Go to the MoveMainScene() function and modify this condition. Thus...
    PHP Code:
        if(!CameraTopViewEnable
            
    || m_CameraOnOff == 1    // <= 3D Camera
    #ifdef LDS_FIX_DISABLE_INPUTJUNKKEY_WHEN_LORENMARKT
    #ifdef LDS_FIX_DISABLE_INPUTJUNKKEY_WHEN_LORENMARKT_EX01    // °řĽşŔü, ĹëÇŐ˝ĂŔĺŔş Ľ­ąö ·Îµů˝Ă°ŁŔĚ ±ćľî ·ÎµůÁß Ĺ°ŔԷ şí·°.
            
    && ( g_bReponsedMoveMapFromServer == TRUE )        // Ĺ°ŔԷ ¸·±â : Ľ­ąö·ÎşÎĹÍ ·Îµů żůµĺ ŔŔ´äŔĚ ľČżÂ °ćżě¸¸. 
    #else // LDS_FIX_DISABLE_INPUTJUNKKEY_WHEN_LORENMARKT_EX01
            
    && LoadingWorld 30
    #endif // LDS_FIX_DISABLE_INPUTJUNKKEY_WHEN_LORENMARKT_EX01
    #endif // LDS_FIX_DISABLE_INPUTJUNKKEY_WHEN_LORENMARKT
            
    )
        {
    #ifdef MOD_MOUSE_Y_CLICK_AREA
            
    if(GFxProcess::GetInstancePtr()->GetUISelect() == 1)
            {
                if(
    MouseY>=(int)(480))
                    
    MouseOnWindow true;
            }
            else
            {
                if(
    MouseY>=(int)(480-48))
                    
    MouseOnWindow true;
            }
    #else //MOD_MOUSE_Y_CLICK_AREA
            
    if(MouseY>=(int)(480-48))
                
    MouseOnWindow true;
    #endif //MOD_MOUSE_Y_CLICK_AREA

            
    g_pPartyManager->Update();
            
    g_pNewUISystem->Update();
            
            
    // Ŕ©µµżě ľĆ´Ń°÷ Ĺ¬¸Ż˝Ă
            
    if (MouseLButton == true 
                
    && false == g_pNewUISystem->CheckMouseUse() /* NewUIżë ¸¶żě˝ş ĂĽĹ© */
                
    && g_dwMouseUseUIID == /* ±âÁ¸ŔÇ UI ¸¶żě˝ş ĂĽĹ© ŔüżŞ şŻĽö */
                
    && g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_CHATINPUTBOX) == false
                
    )
            {
                
    g_pWindowMgr->SetWindowsEnable(FALSE);
                
    g_pFriendMenu->HideMenu();
                
    g_dwKeyFocusUIID 0;
                if(
    GetFocus() != g_hWnd)
                {
                    
    SaveIMEStatus();
                    
    SetFocus(g_hWnd);
                }
            }
    #ifdef _PVP_ADD_MOVE_SCROLL
            
    g_MurdererMove.MurdererMoveCheck();
    #endif    // _PVP_ADD_MOVE_SCROLL
            
            
    MoveInterface();
            
    MoveTournamentInterface();
            if( 
    ErrorMessage != MESSAGE_LOG_OUT )
                
    g_pUIManager->UpdateInput();
        } 
    - Go to the next condition in the MoveMainScene() function and edit that condition. Thus...
    PHP Code:
        if(!CameraTopViewEnable 
            
    || m_CameraOnOff == 1// <= 3D Camera
            
    MoveItems();
        if ( ( 
    World==WD_0LORENCIA && HeroTile!=) || 
             ( 
    World==WD_2DEVIAS && HeroTile!=&& HeroTile<10 
             || 
    World==WD_3NORIA 
             
    || World==WD_7ATLANSE 
             
    || InDevilSquare() == true
             
    || World==WD_10HEAVEN 
             
    || InChaosCastle()==true 
             
    || battleCastle::InBattleCastle()==true
             
    || M31HuntingGround::IsInHuntingGround()==true
             
    || M33Aida::IsInAida()==true
             
    || M34CryWolf1st::IsCyrWolf1st()==true
            
    || World == WD_42CHANGEUP3RD_2ND
    #ifdef CSK_ADD_MAP_ICECITY
            
    || IsIceCity()
    #endif // CSK_ADD_MAP_ICECITY
    #ifdef YDG_ADD_MAP_SANTA_TOWN
            
    || IsSantaTown()
    #endif    // YDG_ADD_MAP_SANTA_TOWN
    #ifdef PBG_ADD_PKFIELD
            
    || IsPKField()
    #endif //PBG_ADD_PKFIELD
    #ifdef YDG_ADD_MAP_DOPPELGANGER2
            
    || IsDoppelGanger2()
    #endif    // YDG_ADD_MAP_DOPPELGANGER2
    #ifdef LDS_ADD_EMPIRE_GUARDIAN
            
    || IsEmpireGuardian1() 
            || 
    IsEmpireGuardian2()
            || 
    IsEmpireGuardian3()
            || 
    IsEmpireGuardian4()
    #endif //LDS_ADD_EMPIRE_GUARDIAN
    #ifdef LDS_ADD_MAP_UNITEDMARKETPLACE
            
    || IsUnitedMarketPlace()
    #endif    // LDS_ADD_MAP_UNITEDMARKETPLACE
         
    )
        {
            
    MoveLeaves();
        } 
    - Go to the next condition in the RenderMainScene() function and edit that condition. Thus...
    PHP Code:
        BYTE byWaterMap 0;

        if(
    CameraTopViewEnable == false 
            
    || m_CameraOnOff == 1// 3D Camera
        
    {
    #ifdef MOD_MAINSCENE_HEIGHT
            
    Height 480;
    #else //MOD_MAINSCENE_HEIGHT
            
    Height 480-48;
    #endif //MOD_MAINSCENE_HEIGHT
        
    }
        else
        {
            
    Height 480;
        } 
    - And the last condition in this file in the RenderMainScene() function modify this condition. Thus...
    PHP Code:
        RenderCharactersClient();   //  Äł¸ŻĹÍ ą¦»ç.

        
    if(EditFlag!=EDIT_NONE)     //  żˇµđĹÍżˇĽ­¸¸ Ăł¸®.
        
    {
            
    RenderTerrain(true);
        }
        if(!
    CameraTopViewEnable 
            
    || m_CameraOnOff == 1)    // <=  3D Camera
             
    RenderItems(); 
    3. Problem with rotating figure and head when moving the cursor.
    Webzen did not expect that someone would create a 3D camera. Because of this, an abnormality will appear when the camera is turned to the right or left side.
    - Go to the ZzzInterface.cpp file and find the MoveHero() function. Modify the following condition as follows.
    PHP Code:
        //  ! ¸¶żě˝ş µű¶óĽ­ Äł¸ŻĹÍŔǠȸŔü °˘µµ¸¦ şŻ°ćÇŃ´Ů.
        
    if( g_isCharacterBuff(oeDeBuff_Stun)
            || 
    g_isCharacterBuff(oeDeBuff_Sleep)
    #ifdef WORLDCUP_ADD
            
    || o->CurrentAction == PLAYER_POINT_DANCE
    #endif //WORLDCUP_ADD
    #ifdef PBG_ADD_NEWCHAR_MONK_SKILL
            
    || o->CurrentAction == PLAYER_SKILL_GIANTSWING
    #endif //PBG_ADD_NEWCHAR_MONK_SKILL
                
    )
        {
            
    Angle = (int)Hero->Object.Angle[2];
            
    bLookAtMouse false;
        }
        else
        {
            if (
    m_CameraOnOff == 1)
                
    Angle = (int)(Hero->Object.Angle[2]+CreateAngle((float)HeroX,(float)HeroY,(float)MouseX,(float)MouseY)) + 360 CameraAngle[2];
            else
                
    Angle = (int)(Hero->Object.Angle[2]+CreateAngle((float)HeroX,(float)HeroY,(float)MouseX,(float)MouseY)) + 360 45;

            
    Angle %= 360;
            if(
    Angle 120Angle 120;
            if(
    Angle 240Angle 240;
            
    Angle += 180;
            
    Angle %= 360;
        }
            
        
    Hero->Object.HeadTargetAngle[2] = 0.f
    - Find another condition and edit it like this
    PHP Code:
            if(StandTime >= 40 && !MouseOnWindow && !Hero->Dead &&
                
    o->CurrentAction!=PLAYER_POSE1 && o->CurrentAction!=PLAYER_POSE_FEMALE1 &&
                
    o->CurrentAction!=PLAYER_SIT1  && o->CurrentAction!=PLAYER_SIT_FEMALE1 && NoAutoAttacking &&
                
    o->CurrentAction!=PLAYER_ATTACK_TELEPORT &&
                
    o->CurrentAction!=PLAYER_ATTACK_RIDE_TELEPORT &&
                
    o->CurrentAction != PLAYER_FENRIR_ATTACK_DARKLORD_TELEPORT &&
    #ifdef PBG_ADD_NEWCHAR_MONK_SKILL
                
    o->CurrentAction != PLAYER_SKILL_ATT_UP_OURFORCES &&
                
    o->CurrentAction != PLAYER_SKILL_HP_UP_OURFORCES &&
    #endif //PBG_ADD_NEWCHAR_MONK_SKILL
                
    Hero->AttackTime == 0)
            {
                
    StandTime 0;
                if (
    m_CameraOnOff == 1)
                    
    HeroAngle = -(int)(CameraAngle[2]+CreateAngle((float)MouseX,(float)MouseY,(float)HeroX,(float)HeroY)) + 360;
                else
                    
    HeroAngle = -(int)(CreateAngle((float)MouseX,(float)MouseY,(float)HeroX,(float)HeroY)) + 360 45;

                
    HeroAngle %= 360;
                
    BYTE Angle1 = ((BYTE)((o->Angle[2]+22.5f)/360.f*8.f+1.f)%8);
                
    BYTE Angle2 = ((BYTE)(((float)HeroAngle+22.5f)/360.f*8.f+1.f)%8);
                if(
    Angle1 != Angle2)
                {
                    if ( 
    o->CurrentAction!=PLAYER_ATTACK_SKILL_SWORD2 )
                    {
                        
    Hero->Object.Angle[2] = (float)HeroAngle;
                    }
                    
    SendRequestAction(AT_STAND1,((BYTE)((HeroAngle+22.5f)/360.f*8.f+1.f)%8));
                }
            } 
    Now, even when moving sideways, the figure and head will rotate behind the cursor.

    4. The distance of drawing objects from the character
    - Go to the ZzzLodTerrain.cpp file and find the function bool TestFrustrum2D(float x,float y,float Range). Edit it as follows.
    PHP Code:
    bool TestFrustrum2D(float x,float y,float Range)
    {
        if ( 
    SceneFlag == SERVER_LIST_SCENE || SceneFlag == WEBZEN_SCENE || SceneFlag == LOADING_SCENE)
            return 
    true;

        
    int j 3;
        for(
    int i=0;i<4;j=i,i++)
        {
            if (
    m_CameraOnOff == 1)    
            {
                if (
    CameraZoom 0)
                    
    Range -= ((50.f/2.5f) * CameraZoom);//Range -= 600.f;
                
    else
                    
    Range -= 50.f;

                if (
    AngleY3D 0)
                    
    Range += 15.f AngleY3D;
            }

            if((
    FrustrumX[i]-x) * (FrustrumY[j]-y) - (FrustrumX[j]-x) * (FrustrumY[i]-y) <= Range)
            {
                return 
    false;
            }
        }
        return 
    true;

    - Then find the function bool bool TestFrustrum(vec3_t Position,float Range). Edit it as follows.
    PHP Code:
    bool TestFrustrum(vec3_t Position,float Range)
    {
        for(
    int i=0;i<5;i++)
        {
            
    float Value;
            if (
    m_CameraOnOff == 1
            {
                if (
    CameraZoom 0)
                    
    Range += 0.f + ((41.66f/2.5f) * CameraZoom);//Range += 500.f;
                
    else
                    
    Range += 41.66f;
            }
            
    Value FrustrumFaceD[i] + DotProduct(Position,FrustrumFaceNormal[i]);
            if(
    Value < -(Range)) return false;
        }
        return 
    true;


    [BONUS]
    5. Fog around field of vision.
    Another problem is rendering objects while walking. Objects just disappear and it looks ugly. This problem can also be solved.

    - Go to the ZzzOpenglUtil.cpp file and find the void BeginOpengl(int x,int y,int Width,int Height ) function. Adjust the fog condition as follows.
    PHP Code:
        glDisable(GL_ALPHA_TEST);
        
    glEnable(GL_TEXTURE_2D);
        
    glEnable(GL_DEPTH_TEST);
        
    glEnable(GL_CULL_FACE);
           
    glDepthMask(true);
        
    AlphaTestEnable false;
        
    TextureEnable   true;
        
    DepthTestEnable true;
        
    CullFaceEnable  true;
        
    DepthMaskEnable true;
        
    glDepthFunc(GL_LEQUAL);
        
    glAlphaFunc(GL_GREATER,0.25f);

        if(
    FogEnable
        {
            if (
    m_CameraOnOff == 1)
            {
                
    glEnable(GL_FOG);
                
    glFogfGL_FOG_MODEGL_LINEAR );
                
    glFogf(GL_FOG_START2000.f);
                
    glFogf(GL_FOG_END2700.f);

                
    glFogf(GL_FOG_DENSITYFogDensity);
                
    float color[] = {10/256.f,10/256.f,10/256.f,5.0};
                
    glFogfv(GL_FOG_COLORcolor);
            }
            else 
            {
                
    glEnable(GL_FOG);
                
    glFogi(GL_FOG_MODEGL_LINEAR);
                
    glFogf(GL_FOG_DENSITYFogDensity);
                
    glFogfv(GL_FOG_COLORFogColor);
            }
        }
        else
        {
            
    glDisable(GL_FOG);
        }

        
    GetOpenGLMatrix(CameraMatrix); 
    - Go to the ZzzScene.cpp file and find the RenderMainScene() function. Replace the following line
    PHP Code:
    FogEnable true
    with this line
    PHP Code:
    FogEnable   = (m_CameraOnOff)?true:false
    If you did everything right, your 3D camera is now almost ready.
    When I finish the other edits I can provide them as well.

    During this tutorial I modified the code to make it faster. It's not a win.
    Last edited by rubdario23; 2 Weeks Ago at 03:22 PM.

  12. #372
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    I found that websites are easy to attack.
    I try to put everything into the game environment and thereby improve security.
    I prefer to use Discord for communication and forum.


  13. #373
    Apprentice temidox is offline
    MemberRank
    Jan 2015 Join Date
    9Posts
    someone fixed the problem of minimizing and restoring by tasks and main force disconnect?

  14. #374
    if(!caffeine) continue; leorond is online now
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    481Posts
    Leaderboard of top players and indicator of online players in the game.



    - - - Updated - - -

    You can learn a lot from the source code of the game client.

    If you search it properly, you will find out WebZen's true intention for the attack.

    The attack should not be as big as it is on all muonline servers now, but on the contrary.

    As an example I will give the character Rage Fighter.

    Dark Side ( As we know the definition )
    PHP Code:
    AttackDamage = (AttackDamage+(Vitality/8)+(Energy/10))*(100 + (Vitality/8) + (Energy/10))/100.0f
    This is how the definition is written in the game client
    PHP Code:
    100 + (Dexterity Energy 10); 
    The reason why it is not possible to level the characters in the game is an incorrect calculation on the server side.

    Dark Side ( How the calculation should look like )
    PHP Code:
    AttackDamage += 100 + (Dexterity Energy 10); 
    After this intervention, the Rage Fighter is primarily a power character and is on par with an Elf or Dark Wizard.

    Elf and Dark Wizard have no defined attacks and therefore have low attack levels.

    After all, it is not logical for a character to have a lower number of lives than the received attack.

    - - - Updated - - -

    If I write out the hit value after this adjustment.

    I get a number that is genuine and agrees. When I add IMP for example, the hit value really only increases by 20%.



Advertisement