Szerző Téma: [FIX]Unknown point change type 119  (Megtekintve 1569 alkalommal)

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 328
  • Segített: 95
  • Developer
[FIX]Unknown point change type 119
« Dátum: 2017-11-02, 11:01:39 »
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!)


Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Nem elérhető udvatt108

  • Professional
  • ***
  • Thank You
  • -Given: 9
  • -Receive: 103
  • Hozzászólások: 328
  • Segített: 95
  • Developer
Re:[FIX]Unknown point change type 119
« Válasz #1 Dátum: 2017-11-16, 21:13:01 »
[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.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.