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

Page 23 of 25 FirstFirst ... 131516171819202122232425 LastLast
Results 331 to 345 of 370
  1. #331
    Novice Raxy is offline
    MemberRank
    Jul 2021 Join Date
    1Posts

    time, if you can, post the progress.

  2. #332
    Novice 4312204 is offline
    MemberRank
    Oct 2022 Join Date
    3Posts
    Thanks!
    I know why it don't work, WzAG.dll!!!
    But I won't modify the wzag.dll.
    bro,U konw modify or U know where to teach modify?

  3. #333
    if(!caffeine) continue; leorond is offline
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    479Posts
    I just finished optimizing the 3D camera for performance and display.
    25 FPS is optimal for Mu Online.
    I also added ATI and NVidia support + CPU Info.

    In my opinion, the result is sufficient.
    The most FPS limits the rendering of objects on maps.

    Just adjust the edges of the rendering of the objects and you can start testing.

    After that I will share with you.

    https://imgur.com/L6YqG34

  4. #334
    Apprentice kayito is offline
    MemberRank
    Nov 2016 Join Date
    10Posts
    Quote Originally Posted by leorond View Post
    I just finished optimizing the 3D camera for performance and display.
    25 FPS is optimal for Mu Online.
    I also added ATI and NVidia support + CPU Info.

    In my opinion, the result is sufficient.
    The most FPS limits the rendering of objects on maps.

    Just adjust the edges of the rendering of the objects and you can start testing.

    After that I will share with you.

    https://imgur.com/L6YqG34
    The problem is in the rendering system. Making a good shader for rendering and using correctly the buffer system of the graphic driver will improve the performance a lot. Even adding fog to avoid the objects pop in and pop out magically, rendering the correct side of the objects face culling (in your video when you move the camera, the wooden gates looks transparent).

    If you want to improve the rendering system, i think you should rebuild the complete system using higher version of OpenGL and making good GLSL files.

  5. #335
    Developer nevS is offline
    MemberRank
    Aug 2005 Join Date
    GermanyLocation
    531Posts
    Quote Originally Posted by leorond View Post
    I already figured it out, there is a rendering error in the game server.

    https://imgur.com/9YhyySY
    It's actually not a "rendering error" of the game server. It's by design, because the server optimized that for the normal camera frustum. The original game is not designed for a 3D Camera with changing perspectives.

    Of course, you can increase this frustum on the server side, but that also has downsides, which should be kept in mind, for example:
    - It not only increases the load on the client side (I saw you worked on that), but also on the server. It needs to notify more players about changes, so it increases the network traffic a lot, when there are more objects (players, monsters) on the map.
    - Also, it might be strange from a sound perspective. Afaik, the client plays sound effects of all objects it currently knows at full volume. With an increased frustum on the server, the client plays sounds of objects far away, which it might not see.

  6. #336
    if(!caffeine) continue; leorond is offline
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    479Posts
    Quote Originally Posted by kayito View Post
    The problem is in the rendering system. Making a good shader for rendering and using correctly the buffer system of the graphic driver will improve the performance a lot. Even adding fog to avoid the objects pop in and pop out magically, rendering the correct side of the objects face culling (in your video when you move the camera, the wooden gates looks transparent).

    If you want to improve the rendering system, i think you should rebuild the complete system using higher version of OpenGL and making good GLSL files.
    You still don't understand what OpenGL is.

    I would like to explain something else.

    OpenGL is the perfect tool. You can use, for example, EGL or another rewritten version, but if you do not remove the errors in the coding, you will not have a better rendering.


    What you write can be done in OpenGL using six lines.

    https://imgur.com/txSyTZ7

    - - - Updated - - -

    Quote Originally Posted by nevS View Post
    It's actually not a "rendering error" of the game server. It's by design, because the server optimized that for the normal camera frustum. The original game is not designed for a 3D Camera with changing perspectives.

    Of course, you can increase this frustum on the server side, but that also has downsides, which should be kept in mind, for example:
    - It not only increases the load on the client side (I saw you worked on that), but also on the server. It needs to notify more players about changes, so it increases the network traffic a lot, when there are more objects (players, monsters) on the map.
    - Also, it might be strange from a sound perspective. Afaik, the client plays sound effects of all objects it currently knows at full volume. With an increased frustum on the server, the client plays sounds of objects far away, which it might not see.
    The truth is that it is a mistake.

    - This is an original function with a condition for the distance between the object and the player.
    PHP Code:
    BOOL gObjCheckViewport(int aIndexint xint y)
    {
        if(
    OBJMAX_RANGE(aIndex) == 0)
        {
            return 
    false;
        }

        
    LPOBJ lpObj = &gObj[aIndex];

        if(
    lpObj->15  || lpObj->15 || lpObj->15 || lpObj->15)
        {
            return 
    false;
        }

        
    int j 3;

        for(
    int i 0MAX_ARRAY_FRUSTRUMii++)
        {
            
    int frustrum = (lpObj->FrustrumX[i]- x) * (lpObj->FrustrumY[j]-y) - (lpObj->FrustrumX[j]-x) * (lpObj->FrustrumY[i]-y);
            if(
    frustrum 0)
            {
                return 
    false;
            }
        }
        return 
    true;

    - This is a condition modified by me
    PHP Code:
    BOOL gObjCheckViewport(int aIndexint xint y)
    {
        
    LPOBJ lpObj = &gObj[aIndex];

        
    int distance 20;
        if(
    lpObj->distance || lpObj->distance || lpObj->distance || lpObj->distance)
        {
            return 
    false;
        }

        
    int j 3;

        for(
    int i 04ii++)
        {
            
    int frustrum = (lpObj->FrustrumX[i]- lpObj->X) * (lpObj->FrustrumY[j]- lpObj->Y) - (lpObj->FrustrumX[j]- lpObj->X) * (lpObj->FrustrumY[i]- lpObj->Y);
            if(
    frustrum 0)
            {
                return 
    false;
            }
        }
        return 
    true;

    The change is minimal and you don't need to make the difference of two points big.

  7. #337
    Apprentice kayito is offline
    MemberRank
    Nov 2016 Join Date
    10Posts
    Quote Originally Posted by leorond View Post
    You still don't understand what OpenGL is.

    I would like to explain something else.

    OpenGL is the perfect tool. You can use, for example, EGL or another rewritten version, but if you do not remove the errors in the coding, you will not have a better rendering.


    What you write can be done in OpenGL using six lines.

    https://imgur.com/txSyTZ7
    I know its easy to add fog effect and correct the face culling of the objects.
    You misunderstood me. I said that you need to IMPROVE the actual code with OpenGL, not changing OpenGL itself. I give an example of GLSL (OpenGL Shading Language) that is used in newer versions of OGL. What i meant when i said 'If you want to improve the rendering system, i think you should rebuild the complete system' is the same as what you're saying about correcting the code.
    Even i said UPGRADE the OpenGL Version, because by default its using OGL 1.1 (defined by Windows library) and not the latest OGL version (defined by Graphics Card's Drivers) and that takes down a lot of performance.

  8. #338
    Developer nevS is offline
    MemberRank
    Aug 2005 Join Date
    GermanyLocation
    531Posts
    Quote Originally Posted by leorond View Post
    The truth is that it is a mistake.

    - This is an original function with a condition for the distance between the object and the player.
    ...
    - This is a condition modified by me
    ...

    The change is minimal and you don't need to make the difference of two points big.
    Understood, but did you also modify the frustum? Because otherwise, you'll not see very far if you rotate the camera to specific directions, e.g. to the opposite of the default direction (downwards).

  9. #339
    Enthusiast son1xx2 is offline
    MemberRank
    Jul 2019 Join Date
    34Posts
    can anyone share a fix for socket system, when mixing socket item can crash main

  10. #340
    Account Upgraded | Title Enabled! Odisk is offline
    MemberRank
    Apr 2009 Join Date
    VenezuelaLocation
    208Posts
    Quote Originally Posted by leorond View Post
    You still don't understand what OpenGL is.

    I would like to explain something else.

    OpenGL is the perfect tool. You can use, for example, EGL or another rewritten version, but if you do not remove the errors in the coding, you will not have a better rendering.


    What you write can be done in OpenGL using six lines.

    https://imgur.com/txSyTZ7

    - - - Updated - - -



    The truth is that it is a mistake.

    - This is an original function with a condition for the distance between the object and the player.
    PHP Code:
    BOOL gObjCheckViewport(int aIndexint xint y)
    {
        if(
    OBJMAX_RANGE(aIndex) == 0)
        {
            return 
    false;
        }

        
    LPOBJ lpObj = &gObj[aIndex];

        if(
    lpObj->15  || lpObj->15 || lpObj->15 || lpObj->15)
        {
            return 
    false;
        }

        
    int j 3;

        for(
    int i 0MAX_ARRAY_FRUSTRUMii++)
        {
            
    int frustrum = (lpObj->FrustrumX[i]- x) * (lpObj->FrustrumY[j]-y) - (lpObj->FrustrumX[j]-x) * (lpObj->FrustrumY[i]-y);
            if(
    frustrum 0)
            {
                return 
    false;
            }
        }
        return 
    true;

    - This is a condition modified by me
    PHP Code:
    BOOL gObjCheckViewport(int aIndexint xint y)
    {
        
    LPOBJ lpObj = &gObj[aIndex];

        
    int distance 20;
        if(
    lpObj->distance || lpObj->distance || lpObj->distance || lpObj->distance)
        {
            return 
    false;
        }

        
    int j 3;

        for(
    int i 04ii++)
        {
            
    int frustrum = (lpObj->FrustrumX[i]- lpObj->X) * (lpObj->FrustrumY[j]- lpObj->Y) - (lpObj->FrustrumX[j]- lpObj->X) * (lpObj->FrustrumY[i]- lpObj->Y);
            if(
    frustrum 0)
            {
                return 
    false;
            }
        }
        return 
    true;

    The change is minimal and you don't need to make the difference of two points big.
    please shared camera 3D

  11. #341
    if(!caffeine) continue; leorond is offline
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    479Posts
    Today I will give you 3D camera source codes. When I get home from work.

  12. #342
    if(!caffeine) continue; leorond is offline
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    479Posts

    3D Camera

    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.

  13. #343
    Enthusiast MaxSpeed is offline
    MemberRank
    Jul 2015 Join Date
    43Posts
    @leorond you can change map login server and select character to EX700 ?

  14. #344
    if(!caffeine) continue; leorond is offline
    MemberRank
    Jul 2012 Join Date
    Czech RepublicLocation
    479Posts
    Quote Originally Posted by MaxSpeed View Post
    @leorond you can change map login server and select character to EX700 ?
    It's not hard, can you provide the maps you want there?

    I don't have these maps and objects.

  15. #345
    Enthusiast MaxSpeed is offline
    MemberRank
    Jul 2015 Join Date
    43Posts
    Quote Originally Posted by leorond View Post
    It's not hard, can you provide the maps you want there?

    I don't have these maps and objects.
    this is Maps Select Character and Select Server EX700 (World94, Object94 -> Select Character | World95,Object95 -> Select Server)
    Link : https://mega.nz/file/Os9BTRrK#XrUGf3...ebAsIJeQgazfz8



Advertisement