Skocz do zawartości
Opublikowano

Witajcie,

 

Jestem pewien, że wielu z was już doświadczyło jednego z bardziej irytujących błędów - mianowicie, ujemnych wartości punktów życia (HP) i energii (MP) po teleportacji postaci.

Kiedy wartość punktów życia lub energii przekraczała pewien zakres, zamiast zobaczyć stan, który mieliśmy wcześniej, widzieliśmy ujemną wartość.

 

Prezentacja błędu:

 

🧩 Rozwiązanie

📂 Lokalizacja pliku: 'common -> tables.h'

 

🔍Szukamy:

🔐 Ukryta Treść 🔐

 

🔄 Zmieniamy:

🔐 Ukryta Treść 🔐

 

Po wprowadzeniu zmian w tables musimy skompilować game oraz db to ważne!

Featured Replies

Opublikowano

Dzięki

Opublikowano

dzięki

  • 2 miesiące temu...
Opublikowano

Dzięki

Opublikowano

dzięki

  • 2 tygodnie później...
Opublikowano

Która wersja jest lepsza?

Cytat
Witam
Pokaże Wam jak usunąć błąd dotyczący skoków HP oraz gdy macie na serwerze ponad 32k HP by po teleportacji nie było na minusie.
Błędy HP

SKOKI HP
Wejdź do char.cpp w /game/src/

Szukaj:

case APPLY_MAX_HP:
case APPLY_MAX_HP_PCT:
case APPLY_MAX_SP:
case APPLY_MAX_SP_PCT:

Zamień na:

#ifdef FIX_ALL_BUG_HP
		case APPLY_MAX_HP:
		case APPLY_MAX_HP_PCT:
			{
				int i = GetMaxHP(); if(i == 0) break;
				PointChange(aApplyInfo[bApplyType].bPointType, iVal);
			}
			break;

		case APPLY_MAX_SP:
		case APPLY_MAX_SP_PCT:
			{
				int i = GetMaxSP(); if(i == 0) break;
				PointChange(aApplyInfo[bApplyType].bPointType, iVal);
			}
			break;
#else
		case APPLY_MAX_HP:
		case APPLY_MAX_SP:
		case APPLY_MAX_HP_PCT:
		case APPLY_MAX_SP_PCT:		
#endif

Szukaj: 

( są dwa - pamiętaj, żeby edytować tego co jest wyżej w pliku ) linijka około 3100-3300

case POINT_MAX_HP:
 
 

Zamień na:



				case POINT_MAX_HP:
			{
                            
				SetPoint(type, GetPoint(type) + amount);
#ifdef FIX_ALL_BUG_HP
								int i = GetMaxHP();
#endif
				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);
#ifdef FIX_ALL_BUG_HP
                                float fRatio = (float)GetMaxHP() / (float)i;
                                PointChange(POINT_HP, GetHP() * fRatio - GetHP());
#endif
				val = GetMaxHP();
			}
			break;
 
 

Szukaj:

( są dwa - pamiętaj, żeby edytować tego co jest wyżej w pliku )  linijka około 3100-3300

 



case POINT_MAX_SP:
 
Zamień na:



		case POINT_MAX_SP:
			{
				SetPoint(type, GetPoint(type) + amount);
#ifdef FIX_ALL_BUG_HP
                                int i = GetMaxSP();
#endif
				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);
#ifdef FIX_ALL_BUG_HP
                                float fRatio = (float)GetMaxSP() / (float)i;
                                PointChange(POINT_SP, GetSP() * fRatio - GetSP());
#endif
				val = GetMaxSP();
			}
			break;
 
 
common/service.h Dodaj:
 
#define FIX_ALL_BUG_HP


-32K HP

Wejdź do char.cpp w /game/src/


Szukaj:

SetHP(t->hp);
SetSP(t->sp);
 
Zamień na:



SetHP(GetMaxHP());
SetSP(GetMaxSP());
 

Wejdź do tables.h w /common/

Szukaj:



short      hp;
short      sp;
 
 

Zamień na:



int      hp;
int      sp;
 
 

Gotowe!

 

 

Edytowane przez ExoCarossa

  • 1 miesiąc temu...
Opublikowano
  • Premium

dziekuje

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...