Experimentat
Experimentat
Mesaje: 72
Membru din: Sâm Ian 31, 2026 4:11 pm
Server: metin2avange.mt2.xyz
Rasă: Ninja
Regat: Chunjo
  • Has thanked: 1 time
  • Experimentat
    Experimentat
    [FIX] Skill Izbitura scade HP

    Mesaj de ProFight3D »

    [center]
    Imagine
    [/center]

    *Descriere:
    Acesta este un FIX pentru Warrior.

    Câteodată, când dai skill „Izbitură” într-un mob, punctele tale de HP vor scădea de asemenea.

    Acesta este un bug clasic; multe surse l-au rezolvat deja, dar merită să verifici și tu dacă îl ai!
    *Poze / Video:
    [FIX] Skill Izbitură scade HP – Mesaj 1 – Imagine 1
    *Link download / Code:

    [hr]

    1) Rezolvare în char.cpp

    Ca să rezolvăm acest bug, mergem în char.cpp și căutăm:

    Cod: Selectaţi tot

    case APPLY_MAX_HP:
    
    Înlocuim cu:

    Cod: Selectaţi tot

    		case APPLY_MAX_HP:
    		case APPLY_MAX_HP_PCT:
    			{
    				if(GetMaxHP() == 0) break;
    				PointChange(aApplyInfo[bApplyType].bPointType, iVal);
    			}
    			break;
    
    		case APPLY_MAX_SP:
    		case APPLY_MAX_SP_PCT:
    			{
    				if(GetMaxSP() == 0) break;
    				PointChange(aApplyInfo[bApplyType].bPointType, iVal);
    			}
    			break;
    
    [hr]

    2) Modificare la POINT_MAX_HP / POINT_MAX_SP

    Acum căutăm:

    Cod: Selectaţi tot

    case POINT_MAX_HP: and case POINT_MAX_SP:  (line3309)
    
    Înlocuim cu:

    Cod: Selectaţi tot

    		case POINT_MAX_HP:
    			{
    				SetPoint(type, GetPoint(type) + amount);
    				int curMaxHP = GetMaxHP();
    				int hp = GetRealPoint(POINT_MAX_HP);
    				int add_hp = MIN(3500, hp * GetPoint(POINT_MAX_HP_PCT) / 100);
    				add_hp += GetPoint(POINT_MAX_HP);
    				add_hp += GetPoint(POINT_PARTY_TANKER_BONUS);
    				SetMaxHP(hp + add_hp);
    				float fRatio = (float)GetMaxHP() / (float)curMaxHP;
    				PointChange(POINT_HP, GetHP() * fRatio - GetHP());
    				val = GetMaxHP();
    			}
    			break;
    
    		case POINT_MAX_SP:
    			{
    				SetPoint(type, GetPoint(type) + amount);
    				int curMaxSP = GetMaxSP();
    				int sp = GetRealPoint(POINT_MAX_SP);
    				int add_sp = MIN(800, sp * GetPoint(POINT_MAX_SP_PCT) / 100);
    				add_sp += GetPoint(POINT_MAX_SP);
    				add_sp += GetPoint(POINT_PARTY_SKILL_MASTER_BONUS);
    				SetMaxSP(sp + add_sp);
    				float fRatio = (float)GetMaxSP() / (float)curMaxSP;
    				PointChange(POINT_SP, GetSP() * fRatio - GetSP());
    				val = GetMaxSP();
    			}
    			break;