Sziasztok.
Biztosan sokan találkoztatok már azok közül akik a hungary szerver forrást használják, vagy előfordulhat, hogy más forrásnál az alábbi syserr-ben megjelenő hibával:
PointChange: CHARACTER::PointChange: [ST]Admin: unknown point change type 119
Nos ez engem is traktált, így hát elkezdtem keresni a megoldást, amit meg is találtam.
Ezt szeretném veletek megosztani, mivel én személy szerint sehol nem találkoztam a probléma megoldásával.
Vágjunk is bele!
Keresd meg és nyisd meg a "game/src" mappában a "Char.cpp" fájlt.
Keress rá az alábbira:
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;
Ez után közvetlen illeszd be az alábbit:
case POINT_MAX_HP_PCT:
SetPoint(type, GetPoint(type) + amount);
val = GetPoint(type);
PointChange(POINT_MAX_HP, 0);
break;
Ezek után mentsd el a változtatásokat és buildeld le a game fájlt, rakd be a szerverbe és nem lesz több ilyen hiba jelenség.
Sysserr mentes szép napot! :)
(A honorációt egy + fejében meg köszönöm!)
[FRISSÍTÉS]
Nos sikeresen fixáltuk a hibát, de különösképpen nem csinált a kód semmit, azon kívül, hogy kijavította a hiányt. Most viszont szeretném megosztani ezt a kis frissítést amit alkalmazva a funkció amit javítottunk már egy rendes műveletet is végrehajt az érintett case-on belül ahogyan azt illik.
Használd ezt, a fenti leírásban szereplő második kódrészlet helyett:
case POINT_MAX_HP_PCT:
PointChange(POINT_MAX_HP, amount * GetPoint(POINT_MAX_HP) / 100);
break;
A kódrészlet Distraught-tól származik.