Jump to content

Dyshaxo

Inactive Member
  • Posts

    20
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Posts posted by Dyshaxo

  1.  

    It is not complete.
    Pet does not have life.
    Monsters do not attack the petul.
    Your pet will not die.
    Pet does not revive.

     

    Pet does have life,

    monsters do attack the pet,

    pet can die,

    and if you re-use your pet-seal it will revive.

     

    Maybe you should implement it and take a look by yourself before

    creating statements. The video was made in a pre-stadium of

    the release.

  2.  

    Corrected tabulation and english How-To :D

     

    [HowTo]
     
    Search in petsystem.h "void unmount();" and add this under :
    bool            Attack(LPCHARACTER pkVictim = NULL);
    

    It's look like this :

    57e1f1668b.png
     
    Then search "CPetActor* GetByVnum(DWORD vnum) const;"
    and add this under :
    void        LaunchAttack(LPCHARACTER pkVictim = NULL);
    

     

    It's look like this :

     
    fce8dd05ac.png
     
    -> Save and then open PetSystem.cpp:
     
    Search the "bool CPetActor::Update(DWORD deltaTime)" function

    And replace it with this :

    bool CPetActor::Update(DWORD deltaTime)
    {
        bool bResult = false;
    
        if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead())
                || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())
                || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner()
                )
        {
            this->Unsummon();
            return true;
        }
        
        if (this->GetCharacter()->GetVictim())
        {
            bResult = this->Attack();
        }
     
        if (!bResult)
        {
        if (this->IsSummoned() && HasOption(EPetOption_Followable))
            bResult = this->_UpdateFollowAI();
        }
     
        return bResult;
    }
    
     
    Search the "void CPetActor::ClearBuff()" function
     
    And add this function under :
     
    bool CPetActor::Attack(LPCHARACTER pkVictim)
    {
        if (pkVictim)
        {
            if (!pkVictim->IsMonster() || pkVictim->IsDead())
                return false;
     
            if (m_pkChar->GetVictim())
                return false;
        }
        else
        {
            pkVictim = m_pkChar->GetVictim();
     
            if (!pkVictim)
                return false;
        }
     
        m_pkChar->SetVictim(pkVictim);
     
        const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ();
        const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ();
     
        int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y);
     
        if (iDistance >= m_pkChar->GetMobAttackRange())
        {
            m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange());
        }
        else
        {
            if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000)
            {
                if (m_pkChar->Attack(pkVictim))
                {
                    m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time());
                    m_pkChar->SetLastAttacked(get_dword_time());
            }
     
        }
    }
     
    return true;
    }
    

    It will look like this:

     
    a0b99abacf.png
     
    Search "bool CPetSystem::Update(DWORD deltaTime)"
     
    And add this above:
     
    void CPetSystem::LaunchAttack(LPCHARACTER pkVictim)
    {
        if (!pkVictim)
            return;
     
        for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it)
        {
            CPetActor* pkPetActor = it->second;
            if (pkPetActor->IsSummoned())
                pkPetActor->Attack(pkVictim);
        }
    }
    
    
     
    It will look like this:
     
    b5ab31cc31.png
     
    Save and open "char_battle.cpp" :
     
    Then search this function :
     
    "bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)"
     
    And especially this part:
     
            // only pc sets victim null. For npc, state machine will reset this.
            if (BATTLE_DEAD == iRet && IsPC())
                SetVictim(NULL);
    
     
    Add this under:
     
            if (BATTLE_DEAD != iRet && IsPC())
            {
                if (m_petSystem && m_petSystem->CountSummoned() > 0)
                    m_petSystem->LaunchAttack(pkVictim);
            }
    
     
    It will look like this:
     
    90c9d5797d.png
     
    Save and open "pvp.cpp"
     

    Then search this function : "bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)"

     
    And add this under :
     
        if (pkChr->IsPet() && pkVictim->IsMonster())
        {
            return true;
        }
     
        if (pkChr->IsMonster() && pkVictim->IsPet())
        {
            return true;
        }
    
     
    Like this:
    8a379645c3.png

     

    Recompile, and done :D

     

    bfGh.png

     

    char_battle.cpp add to Includes: #include "PetSystem.h", should work =)

    • Love 1
  3. Corrected tabulation and english How-To :D

     

     

    Thanks =) I actually had the Intention to translate it, but no time and stuff, really nice from you ^-^

     

    All in all - this is a Bitchmove-Release.

    The Guy selling this annoyed me hard.

     

    And 250€ is definetly too much for 2 Functions and a call.

    • Love 1
  4. M2 Download Center

    This is the hidden content, please
    ( Internal )

    I'm releasing self-tipped Source-Code extension for attacking Pets 😃

    Preview:

     
     
    In Scope Square - the hottest P-Server project that will ever start -
    the whole thing is of course 1000x better, fixed with possible bugs, and a gui,
    with which the pet can then essentially control where the target of the
    Can choose pets himself, and can also launch skills of the pet 😃
     
    you open "PetSystem.h" and insert under "void unmount();"
    bool Attack(LPCHARACTER pkVictim = NULL);
    Should then look like this:
    Spoiler

    223348ss-2015-02-26-at-10.33.30-.png

    Same file, looks for:

    CPetActor * GetByVnum(DWORD vnum) const;

    and inserts below:

    void LaunchAttack(LPCHARACTER pkVictim = NULL);
    Should then look like this:
    Spoiler

    223348fce8dd05ac.png.4fb8e99014283638cd6

    you open "PetSystem.cpp" and:

    searches for
    bool CPetActor::Update(DWORD deltaTime)

    Replace complete function with:

    bool CPetActor::Update(DWORD deltaTime)
    {
    bool bResult = false;
     
    // Æê ÁÖÀÎÀÌ Á×¾ú°Å³ª, ¼ÒȯµÈ ÆêÀÇ »óÅ°¡ ÀÌ»óÇÏ´Ù¸é ÆêÀ» ¾ø¾Ú. (NOTE: °¡²û°¡´Ù ÀÌ·± Àú·± ÀÌÀ¯·Î ¼ÒȯµÈ ÆêÀÌ DEAD »óÅ¿¡ ºüÁö´Â °æ¿ì°¡ ÀÖÀ½
    // ÆêÀ» ¼ÒȯÇÑ ¾ÆÀÌÅÛÀÌ ¾ø°Å³ª, ³»°¡ °¡Áø »óÅ°¡ ¾Æ´Ï¶ó¸é ÆêÀ» ¾ø¾Ú.
    if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) 
    || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())
    || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner()
    )
    {
    this->Unsummon();
    return true;
    }
    if (this->GetCharacter()->GetVictim())
    {
    bResult = this->Attack();
    }
     
    if (!bResult)
    {
    if (this->IsSummoned() && HasOption(EPetOption_Followable))
    bResult = this->_UpdateFollowAI();
    }
     
    return bResult;
    }
    Same file, looks for the function:
    void CPetActor::ClearBuff()

    Adds the following func AFTER this function (not IN the function):

    bool CPetActor::Attack(LPCHARACTER pkVictim)
    {
    if (pkVictim)
    {
    if (!pkVictim->IsMonster() || pkVictim->IsDead())
    return false;
     
    if (m_pkChar->GetVictim())
    return false;
    }
    else
    {
     
    pkVictim = m_pkChar->GetVictim();
     
    if (!pkVictim)
    return false;
    }
     
    m_pkChar->SetVictim(pkVictim);
     
    const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ();
    const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ();
     
    int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y);
     
    if (iDistance >= m_pkChar->GetMobAttackRange())
    {
    m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange());
    }
    else
    {
    if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000)
    {
    if (m_pkChar->Attack(pkVictim))
    {
    m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time());
    m_pkChar->SetLastAttacked(get_dword_time());
    }
     
    }
    }
     
    return true;
    }
    should then look like this:
    Spoiler

    223348a0b99abacf.png.1988b5ee5dbe08b3742

    You are looking for the function:

    bool CPetSystem::Update(DWORD deltaTime)

    and ABOVE inserts the following function:

    void CPetSystem::LaunchAttack(LPCHARACTER pkVictim)
    {
    if (!pkVictim)
    return;
     
    for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it)
    {
    CPetActor* pkPetActor = it->second;
    if (pkPetActor->IsSummoned())
    pkPetActor->Attack(pkVictim);
    }
    }
    should then look like this:
    Spoiler

    223348b5ab31cc31.png.efafa0e663ccd2896b5

    and last but not least - open the file:

    "char_battle.cpp", looks for the function:
    bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)

    and adds under the following content:

    // only pc sets victim null. For npc, state machine will reset this.
    if (BATTLE_DEAD == iRet && IsPC())
    SetVictim(NULL);
    This one:
    if (BATTLE_DEAD != iRet && IsPC())
    {
    if (m_petSystem && m_petSystem->CountSummoned() > 0)
    m_petSystem->LaunchAttack(pkVictim);
    }
    Should then look like this:
    Spoiler

    22334890c9d5797d.png.1ab8130fab96238d9dd

    So 😃 that would increase the biceps buttock opening by - for my part - 2 meters.

     
    #Edt: So that the pets can also die:
    Opens the pvp.cpp, searches for
    bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)

    and inserts:

    if (pkChr->IsPet() && pkVictim->IsMonster())
    {
    return true;
    }
     
    if (pkChr->IsMonster() && pkVictim->IsPet())
    {
    return true;
    }
    Like this:
    Spoiler

    2233488a379645c3.png.6ac540a818120a8826a

    Enjoy!

    • Metin2 Dev 13
    • Confused 1
    • Good 5
    • Love 26
  5. Hi there,

     

    I tried to make my own based on the Pasha37-Serverfiles, but they were so buggy from the start, and for some reason

    my skills and query's do not work on them.

     

    I guess that's some database stuff, but oh god >_< I replaced so much stuff and restored and replaced again and ahhh...

     

    This is - a Request for working Windows-Serverfiles, except someone got a solution for that "No working skills and Questquery's"-Problem,

     

    to explain it -> Skilling them up has no effect, you loose points but can't use the skill. They stay on "Unskilled".

     

    Game/DB-Files are not the problem -> replaced, still error.

     

    Client -> Tried with Clean 40250, error still occurs,

     

    Database -> used the one that was already installed on them, and - used my own, error still occured,

     

    Mysql-Version -> Tried with 5.6 and 5.5.16, Error occured on both,

     

    blah blah blah,

     

    and tomorrow I "wanted" to start the Test-Phase of my Server.

  6. Anyone else got the Skills-Problem?

     

    When I skill up for example sura-skills - the Skillpoints are used, but the skill is not usable.

     

    I actually want to create serverfiles based on this files, but even replacing stuff with my old FreeBSD-Files - bugs still stay.

     

    Somehow I got rid of the Invisible Inventory-Equipment bug, but the Skills still don't work, not even with my own gamecore/dbcore.

  7. Hi there, I got some really annoying problems:

     

    I downloaded VS 2008, VS 2008 SP1-Extension, Windows Development Kit 7.7.1 (for ATL-Stuffs),

     

    then I added atl71-includes and libs,

    Extern-folder-includes and libs,

    ATL-Stuffs Includes and Libs,

     

    ef2768efbc.png

     

    c31be63d69.png

     

    and the Problem:

    At Linking around a million error's like this:

     

    1>Verknüpfen...
    1>war_map.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>wedding.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>xmas_event.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>XTrapManager.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>TrafficProfiler.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>trigger.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>utils.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>vector.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>start_position.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>target.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>text_file_loader.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__RTC_CheckEsp" in Funktion ""public: __thiscall CTextFileLoader::CTextFileLoader(void)" (??0CTextFileLoader@@QAE@XZ)".
    1>threeway_war.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>shopEx.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>skill.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>skill_power.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>SpeedServer.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>sectree_manager.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>sequence.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>shop.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>shop_manager.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>refine.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>regen.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>safebox.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".
    1>sectree.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_CheckEsp".

     
    should be in english something like:
     
    "unresolved external symbol "symbol""
     
    Can someone tell me how you put your linker-settings so this error does not appear?
  8. Hi there,

     

    since I couldn't get rid of that "tcp_bind: can't assign requested address"-Error, I made

    some research, and someone posted that the different socket-header /sys/sys/socket.h

    at FreeBSD 9.2 is responsible for the Error.

     

    Means ->

    Compiling a Gamecore on FreeBSD9.2 will put out that error,

     

    Theoretical Solution:

    Compiling with FreeBSD 8.2

     

    So I've put my Source on my old 8.2-VM,

    gmake clean

    gmake -j20

     

    -> Source compiled without any error, but at the end it doesn't build a gamefile.

     

    97323e842c.png

     

    #Compiled without any error, but no "linking game..."/"linking test..."

     

    I guess the problem is a missing port-package, but which one?

    Anyone got any Idea?

  9.  

    That is the Error:

    5d0ac215af.png

    747a653aa0.png

     

    same error

     

     

    Found a fix for that:

     

    Put the class "FCompareVnum" above the Function "InitializeMobTableSQL()":

     

    b4093637a0.png

  10. Hello there,
    I finally made the 40k core + db running:
    f24f939da4.png
     
    But got a new Problem:
    After trying to log in, the auth-server crashes:

    99959e46da.jpg

     
    Syserr of auth:

    SYSERR: Nov 22 10:45:04.851535 :: socket_connect: HOST localhost:15000, could not connect.
    SYSERR: Nov 22 10:45:04.889244 :: LoadPackageCryptInfo: [PackageCryptInfo] Failed to load package/cshybridcrypt_metin2_patch_sg1.dat
    SYSERR: Nov 22 10:45:07.30198 :: socket_connect: HOST localhost:15000, could not connect.
    SYSERR: Nov 22 10:45:10.31200 :: socket_connect: HOST localhost:15000, could not connect.
    SYSERR: Nov 22 10:45:13.10432 :: socket_connect: HOST localhost:15000, could not connect.

     
    "cshybridcrypt_metin2_patch_sg1.dat" - I was told that this doesn't matter
     
    Syslog of auth:

    aacc7c018c.png
    dad80dd2da.png

     
    "No need for auth server" - What is that?
     
    Used difs: Timebomb-Fix, Internal-IP fix
  11. Hi there,

     

    I am using the 2089M gamefile on my server,

     

    and my problem atm. is the skillhack"shield":

     

    When I configure root/playersettingmodule.py to use use Sura's Blade-Buffs on Magic-Sura, the animation

    is shown, but the skill won't activate, same for combat skills, they don't do any damage and after 1-2 Minutes - kick.

     

    I was told that there's a skillhack-Fix on the 2089M Game-file.

     

    Is there a way to bypass that? Because I want to try some "new PvP-System" in which classes can use all of their skills.

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.