caanmasu 399 Posted October 20, 2023 Share Posted October 20, 2023 (edited) Hi Bug fix by me Before fix: https://metin2.download/video/FHN62NXpd74c1pLqPt5PJDX7IBs5r2vA/.mp4 After fix: https://metin2.download/video/NguTHfen88bFnAuP6JZ5fIMiiLoeSgRm/.mp4 Fix: char_state.cpp Comment this line: f.m_pkChrFind->AddAffect(AFFECT_WAR_FLAG, POINT_MOV_SPEED, 50 - f.m_pkChrFind->GetPoint(POINT_MOV_SPEED), 0, INFINITE_AFFECT_DURATION, 0, false); Add below: f.m_pkChrFind->UpdatePacket(); Like this: if (!pMap->GetTeamIndex(GetPoint(POINT_STAT), idx)) return; f.m_pkChrFind->AddAffect(AFFECT_WAR_FLAG, POINT_NONE, GetPoint(POINT_STAT), idx == 0 ? AFF_WAR_FLAG1 : AFF_WAR_FLAG2, INFINITE_AFFECT_DURATION, 0, false); //f.m_pkChrFind->AddAffect(AFFECT_WAR_FLAG, POINT_MOV_SPEED, 50 - f.m_pkChrFind->GetPoint(POINT_MOV_SPEED), 0, INFINITE_AFFECT_DURATION, 0, false); //fix f.m_pkChrFind->UpdatePacket(); //fix pMap->RemoveFlag(idx); char.cpp Find: case POINT_MOV_SPEED: min_limit = 0; if (IsPC()) limit = 200; else limit = 250; Add below: if (FindAffect(AFFECT_WAR_FLAG)) limit = 50; Like this: case POINT_MOV_SPEED: min_limit = 0; if (IsPC()) limit = 200; else limit = 250; if (FindAffect(AFFECT_WAR_FLAG)) limit = 50; break; Edited October 20, 2023 by Metin2 Dev International Core X - External 2 Internal 3 1 5 Link to comment Share on other sites More sharing options...
Denizeri24 40 Posted October 26, 2023 Share Posted October 26, 2023 (edited) thanks, I discovered another bug while trying this fix on my server Edited October 26, 2023 by Metin2 Dev International Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
caanmasu 399 Posted October 26, 2023 Author Share Posted October 26, 2023 @Denizeri24 o.O share it please Link to comment Share on other sites More sharing options...
[TiTAN] 40 Posted December 23, 2023 Share Posted December 23, 2023 Your approach is wrong... I've fixed it by changing case POINT_MOV_SPEED from ::PointChange like: case POINT_MOV_SPEED: if (FindAffect(AFFECT_WAR_FLAG)) SetPoint(type, FindAffect(AFFECT_WAR_FLAG)->lApplyValue); else SetPoint(type, GetPoint(type) + amount); val = GetPoint(type); break; Ofc there should exist a better way, but i'll stick with that. Don't forget to change 50 - f.m_pkChrFind->GetPoint(POINT_MOV_SPEED) part as if your movment speed is greater than 50 will become negative, for me a fixed value works the best, you can use std::min or smth but i guess all players should have the same speed with the flag. Link to comment Share on other sites More sharing options...
Recommended Posts