Jump to content

[M2Dev] Advanced Files To Build Your Server: Src & Server Files & Client [x64 / DX9Ex / CMake / Python3.14 / FreeType / XChaCha20-Poly1305]


Recommended Posts

  • Active+ Member
1 hour ago, Amun said:

Already mentioned this in private, but these people should be banned from pushing to the project and have their PRs reverted or checked one by one. The entire project turned into a fucking joke and AI should've been banned ever since I pointed it out in Mind Rapist's first PR, which was many months ago.

There are PRs there that touch half of the source and there's no explanation for why, how, or even what they're supposed to address. Literal dumps of "found this somewhere, looks smart" code.

I was very clear from the beginning that I am still at a very early beginner level I obviously needed help from a tool to be able to push all these updates. Nobody said shit, yall even smashed that like button every time.

I also ALWAYS tested what I pushed out there a million times per day before pushing and I never pushed a bug and even if I did I found it later and fixed it. I kept updating yall in this thread and once again yall smashed that like button like a pinata.

And finally these 2 above were the reason that I never pushed a breaking change update and I only fixed small things and details. Because sure I want this project to get all those things we used to have in the Trello but quality code and optimized performance are far more important than new features.

I may not know much and I may not have much of a skillset in this area but I dont give 2 craps on a Sunday. All this topic had before I started working with it was issues from people with even less knowledge than me, at least when we all started pushing something there was something exciting in here every 2 days.

And most importantly whatever it is that we pushed at least we fuckin cared enough to do so. When was the last time yall "high status devs" pushed an update? The only big update that was pushed this year except tw1x1's was Python porting from Distraught. And I'm not pointing fingers here or expecting anyone to do anything, I'm just saying that I didn't see anyone else doing it so I did whatever I could and so as the other active devs.

And yes there are other people in this community with way more knowledge than me and way more skills that are sitting around day and night fixing all the bugs. Half the bugs are already solved from the past week's merges and the rest were a work in progress for this week.

So you can either join us in being more active over the next few weeks to fix everything and maybe give us a little guidance if feeling generous and defnitely become a team and start coordinating and finish this project or keep saying "ban AI coders", go ahead and ban them, see what year this project will receive its next update.

Up to yall

Edited by Mind Rapist
  • Flame 1
  • Love 3
  • Active Member
9 minutes ago, Mind Rapist said:

I was very clear from the beginning that I am still at a very early beginner level I obviously needed help from a tool to be able to push all these updates. Nobody said shit, yall even smashed that like button every time.

I also ALWAYS tested what I pushed out there a million times per day before pushing and I never pushed a bug and even if I did I found it later and fixed it. I kept updating yall in this thread and once again yall smashed that like button like a pinata.

And finally these 2 above were the reason that I never pushed a breaking change update and I only fixed small things and details. Because sure I want this project to get all those things we used to have in the Trello but quality code and optimized performance are far more important than new features.

I may not know much and I may not have much of a skillset in this area but I dont give 2 craps on a Sunday. All this project had before I started working with it was issues from people with even less knowledge than me, at least when we all started pushing something there was something exciting in here every 2 days.

And most importantly whatever it is that we pushed at least we fuckin cared enough to do so. When was the last time yall "high status devs" pushed an update? The only big update that was pushed this year except tw1x1's was Python porting from Distraught. And I'm not pointing fingers here or expecting anyone to do anything, I'm just saying that I didn't see anyone else doing it so I did whatever I could and so as the other active devs.

And yes there are other people in this community with way more knowledge than me and way more skills that are sitting around day and night fixing all the bugs. Half the bugs are already solved from the past week's merges and the rest were a work in progress for this week.

So you can either join us in being more active over the next few weeks to fix everything and maybe give us a little guidance if feeling generous and defnitely become a team and start coordinating and finish this project or keep saying "ban AI coders", go ahead and ban them, see what year this project will receive its next update.

Up to yall

There's nothing wrong with using LLM. We appreciate your input, but I think we all need to create a roadmap and more thoroughly review each pull request.

  • Love 4
  • Contributor
Spoiler

  

1 hour ago, Mind Rapist said:

I was very clear from the beginning that I am still at a very early beginner level I obviously needed help from a tool to be able to push all these updates. Nobody said shit, yall even smashed that like button every time.

I also ALWAYS tested what I pushed out there a million times per day before pushing and I never pushed a bug and even if I did I found it later and fixed it. I kept updating yall in this thread and once again yall smashed that like button like a pinata.

And finally these 2 above were the reason that I never pushed a breaking change update and I only fixed small things and details. Because sure I want this project to get all those things we used to have in the Trello but quality code and optimized performance are far more important than new features.

I may not know much and I may not have much of a skillset in this area but I dont give 2 craps on a Sunday. All this topic had before I started working with it was issues from people with even less knowledge than me, at least when we all started pushing something there was something exciting in here every 2 days.

And most importantly whatever it is that we pushed at least we fuckin cared enough to do so. When was the last time yall "high status devs" pushed an update? The only big update that was pushed this year except tw1x1's was Python porting from Distraught. And I'm not pointing fingers here or expecting anyone to do anything, I'm just saying that I didn't see anyone else doing it so I did whatever I could and so as the other active devs.

And yes there are other people in this community with way more knowledge than me and way more skills that are sitting around day and night fixing all the bugs. Half the bugs are already solved from the past week's merges and the rest were a work in progress for this week.

So you can either join us in being more active over the next few weeks to fix everything and maybe give us a little guidance if feeling generous and defnitely become a team and start coordinating and finish this project or keep saying "ban AI coders", go ahead and ban them, see what year this project will receive its next update.

Up to yall

 

My G, there's nothing wrong with having AI do SOME things. My problem is that none of you check what the AI is writing. How could I possibly trust you to not break anything when you can't even read the code?

This is, in part, Distraught's fault as well. The source should've been split into branches and the master should only contain PRs that have been reviewed and tested. You can't have a stable line of releases if everyone is pushing whatever the fuck they want, whenever they want.

Yes, it will be much slower to develop, but that's how things work when you want to run a stable project.

 

Do you see what I mean?

  • Metin2 Dev 2
  • Flame 3
  • Good 3
  • Love 2
  • Active+ Member
2 minutes ago, Amun said:
  Reveal hidden contents

  

 

My G, there's nothing wrong with having AI do SOME things. My problem is that none of you check what the AI is writing. How could I possibly trust you to not break anything when you can't even read the code?

This is, in part, Distraught's fault as well. The source should've been split into branches and the master should only contain PRs that have been reviewed and tested. You can't have a stable line of releases if everyone is pushing whatever the fuck they want, whenever they want.

Yes, it will be much slower to develop, but that's how things work when you want to run a stable project.

 

Do you see what I mean?

I see and I agree with that although a much better alternative would be to have people that actually know how to read the code like with a lot of experience to review the PRs because some of the merges may have bugs but the people that pushed them have all the good will and are working day and night to improve this for everyone and without asking anything in return... And these are the only ones that do it lately so it's a little sad that we leave them alone in this... 

We need to do what Distraught said and have some calls with people who wanna seriously contribute and coordinate that would be an ideal start for whatever comes next.

  • Lmao 1
  • Love 1
  • Developer
2 hours ago, Mind Rapist said:

When was the last time yall "high status devs" pushed an update? The only big update that was pushed this year except tw1x1's was Python porting from Distraught. And I'm not pointing fingers here or expecting anyone to do anything, I'm just saying that I didn't see anyone else doing it so I did whatever I could and so as the other active devs.

Almost everyone here offers some kind of paid service, and releases on m2dev have always been a way to showcase skills and stay visible in the market. No one is truly concerned that people can access interesting content for free.

Distraught followed the same approach, with the difference that what he chose to release had little commercial value for him. However, when discussions move toward areas that are valuable to him such as bgfx or renderer-related changes he understandably becomes protective, much like those who previously sold py3/64bit/d3d9ex ports.

I am listed as a contributor, but my involvement was minimal fewer than three small commits. Before releasing the project, Distraught discussed it with a few of us, myself included. I agreed with the release because the goal was clearly defined: to modernize the codebase, nothing more.
There was never any intention to aggregate hundreds of fixes, prepare the project for production use, or introduce gameplay systems and features.

His vision has remained consistent. Fixing gameplay details such as attack calculations while polymorphed was never the priority. The focus was strictly on updating technologies, libraries, and core systems.

These files were created and shared as resources, not as a ready-to-run solution.

At this point, many of the pull requests seem to pursue goals that are the exact opposite of the original intent, or they stem from a misunderstanding of that intent altogether. It feels like some contributors have invested so much time that they’ve begun projecting their own vision onto the project. But @ Distraught (Stop me when I'm wrong )never aimed to undermine the work of file sellers like myself, Marty, Owsap, or others, nor to create a definitive free server base maintained by dozens of developers, for free.

Including commits such as "CMake, Py3, D3D9Ex" aligns with the modernization objective. Adding content like "Razador," "Nemere," or anything tied to gameplay changes, fixes, or features does not. It shifts the project in a direction it was never meant to take.

That said, it's just my opinion, I'm not pissed off even though I could have made +3k in the last few months selling files, AI is updating, and that's how it should be.I feel sorry mostly for the people who will never be able to build a reputation today, not being taken seriously because of AI.

  • Love 8

Villains are not born, they are made.
Join

  • Premium
On 2/20/2026 at 3:48 PM, Mind Rapist said:

I was very clear from the beginning that I am still at a very early beginner level I obviously needed help from a tool to be able to push all these updates. Nobody said shit, yall even smashed that like button every time.

I also ALWAYS tested what I pushed out there a million times per day before pushing and I never pushed a bug and even if I did I found it later and fixed it. I kept updating yall in this thread and once again yall smashed that like button like a pinata.

And finally these 2 above were the reason that I never pushed a breaking change update and I only fixed small things and details. Because sure I want this project to get all those things we used to have in the Trello but quality code and optimized performance are far more important than new features.

I may not know much and I may not have much of a skillset in this area but I dont give 2 craps on a Sunday. All this topic had before I started working with it was issues from people with even less knowledge than me, at least when we all started pushing something there was something exciting in here every 2 days.

And most importantly whatever it is that we pushed at least we fuckin cared enough to do so. When was the last time yall "high status devs" pushed an update? The only big update that was pushed this year except tw1x1's was Python porting from Distraught. And I'm not pointing fingers here or expecting anyone to do anything, I'm just saying that I didn't see anyone else doing it so I did whatever I could and so as the other active devs.

And yes there are other people in this community with way more knowledge than me and way more skills that are sitting around day and night fixing all the bugs. Half the bugs are already solved from the past week's merges and the rest were a work in progress for this week.

So you can either join us in being more active over the next few weeks to fix everything and maybe give us a little guidance if feeling generous and defnitely become a team and start coordinating and finish this project or keep saying "ban AI coders", go ahead and ban them, see what year this project will receive its next update.

Up to yall

In other words, the project will die. The greed of many in this rotten community saw that it was evolving too quickly, and that many would lose sales of their "premium" resources. In any case, your contribution, with or without AI, was very significant. Thank you!

  • Lmao 1
  • Love 4
  • Active+ Member
On 2/26/2026 at 7:14 PM, mackabro2 said:

In other words, the project will die. The greed of many in this rotten community saw that it was evolving too quickly, and that many would lose sales of their "premium" resources. In any case, your contribution, with or without AI, was very significant. Thank you!

Well look premium resources was never meant to be free. People put some hard work in it and most of the times their experience came at the cost of thousands of dollars, endless hours of studying and about 4 years of attending college and even if that's not the case they didn't just download knowledge into their brains right? 😂

The way this community is structured needs sales from pro devs in order to survive and nobody wanted to release premium systems for free here.

But the basics were always meant to be free and available to everyone at least this is what I was standing for. But maybe that was not the project's scope when it comes to basic bug fixing like ymir bugs in the game.

What everyone is right about is that the development was merging unreviewed commits AI or not, and now we have some bugs we need to solve. If everyone agrees on something is that the commits themselves should be bug free.

So no the project is not yet dying, we have a small amount of people working on the bugs caused by the community and we obviously need more people with more experience but this is what we have so far and we are focusing our efforts in creating final, bug free commits to fix whatever bug was caused by the merges. No idea what comes after that but so far this is the only thing that matters.

So if someone is willing to help fix the few stuff left please reach us out in our server and let's get these bugs over with 🙂

  • Love 3
On 2/26/2026 at 6:14 PM, mackabro2 said:

In other words, the project will die. The greed of many in this rotten community saw that it was evolving too quickly, and that many would lose sales of their "premium" resources. In any case, your contribution, with or without AI, was very significant. Thank you!

Even though this project is dead, I did manage to get my client running under DirectX 9 with shaders and x64.

  • Lmao 6
  • 2 weeks later...

This looks like a fantastic contribution. I'm leaving this comment to unlock the hidden content, but I genuinely want to thank you for the hard work you put into providing this for us.

  • kekw 1
  • Love 1
  • Active Member

I want to thank everyone who shared and contributed to this content for free. I didn't see anything particularly noteworthy here (except for the package). If there is anything noteworthy, it would be the cumbersome old code structure being modernized, the pool system being improved, and the use of smart pointers... I will make a small contribution to this community if I find the time. That's all for now, goodbye...

  • Good 1
  • Love 1
  • 2 weeks later...
  • Honorable Member

I officially close the development of these files. I got fed up of ungrateful people badmouthing me because I don't work for free constantly on this project. I did way more for this community over the years, than most of the people, but when you give your pinky, they want your whole arm.

I never signed up for updating these files for eternity, and I completely had enough of many a-hole pricks.

  • Metin2 Dev 3
  • kekw 2
  • Not Good 1
  • Sad 3
  • Cry 2
  • Lmao 2
  • Good 4
  • muscle 3
  • Love 8

992404397646696589.png
Former C++ Developer at Gameloft on DML
Join my Discord: Distraught Labs

  • 1 month later...

I maybe did something wrong but everything is sucessfully set up except the client I cant type on the login page or click the login / password fill forms and also if i change sometihng in the config for example from window to full screen it doesnt apply idk

  • 2 weeks later...

can u explain what is vnum 39048 and vnum 80221-80225 and savege archer(503) doesnt drop full moon sword.
And i found those bugs :
-If you mount up while running toward a target using auto-attack before mounting, your mount will start attacking even if horse isn't armored.
-When a Warrior with Strong Body active (which grants immunity to knockback) fights a Ninja, if the Warrior goes AFK, a desync occurs between the Ninja and the Warrior, causing the Warrior to take ghost damage. If the Warrior returns late, they get rubberbanded/teleported on their own screen. If they return early or if Strong Body expires, they start lagging and sliding while getting repeatedly knocked down
-If you press the spacebar while moving on a mount without releasing the movement keys, you hit while moving forward, then rubberband back, and hit while moving forward again. It looks completely normal on your screen, but the opposing player gets knocked back unnecessarily and takes damage before you even enter their range.
-While some item upgrades/transmutations can be initiated with certain items, others cannot—I'm not sure if this is a bug
-The old level 120 items(ex: 269,229) have no level requirement, their damage is too low, their glows/effects are incorrect, and they don't have any sockets
-Item drops don't have a level restriction. Even a level 105 character is able to get drops from level 1 monsters.

Edited by albinozenci36
  • Active+ Member
On 6/19/2026 at 11:06 PM, albinozenci36 said:

can u explain what is vnum 39048 and vnum 80221-80225 and savege archer(503) doesnt drop full moon sword.
And i found those bugs :
-If you mount up while running toward a target using auto-attack before mounting, your mount will start attacking even if horse isn't armored.
-When a Warrior with Strong Body active (which grants immunity to knockback) fights a Ninja, if the Warrior goes AFK, a desync occurs between the Ninja and the Warrior, causing the Warrior to take ghost damage. If the Warrior returns late, they get rubberbanded/teleported on their own screen. If they return early or if Strong Body expires, they start lagging and sliding while getting repeatedly knocked down
-If you press the spacebar while moving on a mount without releasing the movement keys, you hit while moving forward, then rubberband back, and hit while moving forward again. It looks completely normal on your screen, but the opposing player gets knocked back unnecessarily and takes damage before you even enter their range.
-While some item upgrades/transmutations can be initiated with certain items, others cannot—I'm not sure if this is a bug
-The old level 120 items(ex: 269,229) have no level requirement, their damage is too low, their glows/effects are incorrect, and they don't have any sockets
-Item drops don't have a level restriction. Even a level 105 character is able to get drops from level 1 monsters.

You can fix the errors yourself, can't you? I can help you with one of them 
:
 

Spoiler
# Fix: Strong Body knockback/fall immunity only at Grand Master (G1)

## Problem

**Strong Body** (skill vnum 19) was preventing fall/knockback at all mastery levels. Official Metin2 behavior is that this immunity is only granted once the skill reaches **Grand Master (G1)** or higher.

Additionally, `AFFECT_GEOMGYEONG` (Aura of the Sword, skill vnum 4) had incorrectly been given the same fall resistance in the working tree, which it should not have.

## Root cause

Strong Body uses the `CHEONGEUN` affect flag (`setAffectFlag = CHEONGEUN` in `player.skill_proto`). The server-side `IsImmune(IMMUNE_FALL)` check and the client-side `SetResistFallen` call were both unconditional for this affect.

Skill grade thresholds in this project:

| Level range | Server master type | Client grade |
|-------------|--------------------|--------------|
| 119        | `SKILL_NORMAL`     | 0            |
| 2029       | `SKILL_MASTER`     | 1            |
| 3039       | `SKILL_GRAND_MASTER` | 2          |
| 40+         | `SKILL_PERFECT_MASTER` | 3        |

Grand Master (G1) corresponds to server `SKILL_GRAND_MASTER` and client grade `2`.

## Fix

### 1. Server: `server-src/src/game/char_resist.cpp`

Gate fall/knockback immunity behind G1+:

```cpp
// Strong Body (Cheongeun / Starker Körper, skill vnum 19) prevents
// falling/knockback only at Grand Master (G1) and above.
if (dwImmuneFlag == IMMUNE_FALL && IsAffectFlag(AFF_CHEONGEUN))
{
    if (GetSkillMasterType(SKILL_CHUNKEON) >= SKILL_GRAND_MASTER)
        return true;
}
```

`skill.h` must be included.

### 2. Server: `server-src/src/game/char_skill.cpp`

Crush knockback already respects `IMMUNE_FALL`, so no extra change is needed there once `IsImmune` is fixed:

```cpp
if (IS_SET(m_pkSk->dwFlag, SKILL_FLAG_CRUSH | SKILL_FLAG_CRUSH_LONG) &&
    !IS_SET(pkChrVictim->GetAIFlag(), AIFLAG_NOMOVE) &&
    !pkChrVictim->IsImmune(IMMUNE_FALL))
{
    // existing Sync/Goto push code
}
```

The Cheongeun debuff application also respects `IMMUNE_FALL`:

```cpp
if (!pkVictim->IsImmune(IMMUNE_FALL))
{
    pkVictim->AddAffect(pkSk->dwVnum,
            pkSk->bPointOn,
            iAmount,
            affact_flag,
            iDur,
            (long) pkSk->kDurationSPCostPoly.Eval(),
            false);
}
```

### 3. Client: `client-src/src/UserInterface/InstanceBaseEffect.cpp`

Remove the wrong fall resistance from `AFFECT_GEOMGYEONG` and gate `AFFECT_CHEONGEUN` behind G1 for the main character:

```cpp
case AFFECT_CHEONGEUN:
{
    // Strong Body prevents falling only at Grand Master (G1, grade 2+) and above.
    bool bResistFallen = isVisible;
    if (isVisible && IsMainInstance())
    {
        DWORD dwSlot = 0;
        if (CPythonPlayer::Instance().GetSkillSlotIndex(19, &dwSlot))
        {
            if (CPythonPlayer::Instance().GetSkillGrade(dwSlot) < 2)
                bResistFallen = false;
        }
        else
        {
            bResistFallen = false;
        }
    }
    m_GraphicThingInstance.SetResistFallen(bResistFallen);
    break;
}
case AFFECT_GEOMGYEONG:
    // Aura of the Sword (skill vnum 4) does NOT grant fall immunity.
    __Warrior_SetGeomgyeongAffect(isVisible);
    return;
    break;
```

The client only knows its own skill grade, so the G1 gate is applied only to the main character. Other entities keep the old behavior to avoid the worst visible desyncs for G1+ players.

### 4. Client: `client-src/src/GameLib/ActorInstanceBattle.cpp`

Block client-side push when target resists falling:

```cpp
if (__CanPushDestActor(rVictim) &&
    c_rAttackData.fExternalForce > 0.0f &&
    !rVictim.IsResistFallen())
{
    __PushCircle(rVictim);
    // ...
}
```

## Important note

Strong Body in this project is skill vnum **19** (`SKILL_CHUNKEON`) and sets the `CHEONGEUN` affect flag (`setAffectFlag = CHEONGEUN` in `player.skill_proto`). Use `AFF_CHEONGEUN` / `SKILL_CHUNKEON`, not `AFF_GEOMGYEONG` / `SKILL_GEOMKYUNG`.

 

The tutorial was generated by AI, but it solves exactly that problem. I tested it and everything works, and you also fixed a bug in the process: there was something wrong in the repo regarding the “do not drop” setting for the sword's aura, which had been set incorrectly, and you'll fix that right away with

5 hours ago, Kori said:

You can fix the errors yourself, can't you? I can help you with one of them 
:
 

  Reveal hidden contents
# Fix: Strong Body knockback/fall immunity only at Grand Master (G1)

## Problem

**Strong Body** (skill vnum 19) was preventing fall/knockback at all mastery levels. Official Metin2 behavior is that this immunity is only granted once the skill reaches **Grand Master (G1)** or higher.

Additionally, `AFFECT_GEOMGYEONG` (Aura of the Sword, skill vnum 4) had incorrectly been given the same fall resistance in the working tree, which it should not have.

## Root cause

Strong Body uses the `CHEONGEUN` affect flag (`setAffectFlag = CHEONGEUN` in `player.skill_proto`). The server-side `IsImmune(IMMUNE_FALL)` check and the client-side `SetResistFallen` call were both unconditional for this affect.

Skill grade thresholds in this project:

| Level range | Server master type | Client grade |
|-------------|--------------------|--------------|
| 119        | `SKILL_NORMAL`     | 0            |
| 2029       | `SKILL_MASTER`     | 1            |
| 3039       | `SKILL_GRAND_MASTER` | 2          |
| 40+         | `SKILL_PERFECT_MASTER` | 3        |

Grand Master (G1) corresponds to server `SKILL_GRAND_MASTER` and client grade `2`.

## Fix

### 1. Server: `server-src/src/game/char_resist.cpp`

Gate fall/knockback immunity behind G1+:

```cpp
// Strong Body (Cheongeun / Starker Körper, skill vnum 19) prevents
// falling/knockback only at Grand Master (G1) and above.
if (dwImmuneFlag == IMMUNE_FALL && IsAffectFlag(AFF_CHEONGEUN))
{
    if (GetSkillMasterType(SKILL_CHUNKEON) >= SKILL_GRAND_MASTER)
        return true;
}
```

`skill.h` must be included.

### 2. Server: `server-src/src/game/char_skill.cpp`

Crush knockback already respects `IMMUNE_FALL`, so no extra change is needed there once `IsImmune` is fixed:

```cpp
if (IS_SET(m_pkSk->dwFlag, SKILL_FLAG_CRUSH | SKILL_FLAG_CRUSH_LONG) &&
    !IS_SET(pkChrVictim->GetAIFlag(), AIFLAG_NOMOVE) &&
    !pkChrVictim->IsImmune(IMMUNE_FALL))
{
    // existing Sync/Goto push code
}
```

The Cheongeun debuff application also respects `IMMUNE_FALL`:

```cpp
if (!pkVictim->IsImmune(IMMUNE_FALL))
{
    pkVictim->AddAffect(pkSk->dwVnum,
            pkSk->bPointOn,
            iAmount,
            affact_flag,
            iDur,
            (long) pkSk->kDurationSPCostPoly.Eval(),
            false);
}
```

### 3. Client: `client-src/src/UserInterface/InstanceBaseEffect.cpp`

Remove the wrong fall resistance from `AFFECT_GEOMGYEONG` and gate `AFFECT_CHEONGEUN` behind G1 for the main character:

```cpp
case AFFECT_CHEONGEUN:
{
    // Strong Body prevents falling only at Grand Master (G1, grade 2+) and above.
    bool bResistFallen = isVisible;
    if (isVisible && IsMainInstance())
    {
        DWORD dwSlot = 0;
        if (CPythonPlayer::Instance().GetSkillSlotIndex(19, &dwSlot))
        {
            if (CPythonPlayer::Instance().GetSkillGrade(dwSlot) < 2)
                bResistFallen = false;
        }
        else
        {
            bResistFallen = false;
        }
    }
    m_GraphicThingInstance.SetResistFallen(bResistFallen);
    break;
}
case AFFECT_GEOMGYEONG:
    // Aura of the Sword (skill vnum 4) does NOT grant fall immunity.
    __Warrior_SetGeomgyeongAffect(isVisible);
    return;
    break;
```

The client only knows its own skill grade, so the G1 gate is applied only to the main character. Other entities keep the old behavior to avoid the worst visible desyncs for G1+ players.

### 4. Client: `client-src/src/GameLib/ActorInstanceBattle.cpp`

Block client-side push when target resists falling:

```cpp
if (__CanPushDestActor(rVictim) &&
    c_rAttackData.fExternalForce > 0.0f &&
    !rVictim.IsResistFallen())
{
    __PushCircle(rVictim);
    // ...
}
```

## Important note

Strong Body in this project is skill vnum **19** (`SKILL_CHUNKEON`) and sets the `CHEONGEUN` affect flag (`setAffectFlag = CHEONGEUN` in `player.skill_proto`). Use `AFF_CHEONGEUN` / `SKILL_CHUNKEON`, not `AFF_GEOMGYEONG` / `SKILL_GEOMKYUNG`.

 

The tutorial was generated by AI, but it solves exactly that problem. I tested it and everything works, and you also fixed a bug in the process: there was something wrong in the repo regarding the “do not drop” setting for the sword's aura, which had been set incorrectly, and you'll fix that right away with

I can fix the drops, but it requires a lot of effort. To enable attacking from a mount while the horse is untrained, I'll probably need to modify both the client and the server. If I only do it on the client side, they might exploit it using cheats. I think the other issues are related to network connection problems, and I don't know how much of a challenge that will be for me (e.g., Warrior vs. Ninja, rubberbanding problem). As for the level 120 items, I've already taken care of them.

  • Active+ Member
1 hour ago, eldevaastador said:

Data truncated for column 'size'

Change its type to "set" from "enum" in navicat

Don't use any images from : imgur, turkmmop, freakgamers, inforge, hizliresim... Or your content will be deleted without notice...
Use : https://metin2.download/media/add/

Please use https://metin2.download/ when uploading files smaller than 100MB, otherwise the approval will take longer due to manual upload.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • 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.