[FORRÁS] Pár egyéb fix

Indította 5310pati, 2018-01-25, 03:22:53

2018-01-25, 03:22:53 Utolsó szerkesztés: 2018-06-01, 13:39:45 Szerző: 5310pati
Nos SLZ szépen összegyűjtötte a komolyabb bugokra/sebezhetőségekre a fixeket, itt viszont amolyan szépséghiákra lesznek fixek.
Amint akadnak újak (vagy találok vagy valaki jelez) bővítem a leírást.

Kaptam visszajelzést miszerint kifagy a szerver valamelyik fixtől. Előre leszögezném, hogy tesztelve vannak szóval nem a kóddal van a baj, és mivel ilyen apró kis módosítást igényelnek még csak nem is ütközhetnek más rendszerrel, szóval akinek gondja adódik nézze át még1x.

1. Átváltozásnál megmarad a csillogás
Indító - UserInterface/InstanceBase.cpp
UINT CInstanceBase::__GetRefinedEffect(CItemData* pItem)
a fv legelejére másold be ezt
if (IsPoly())
return 0;


2. Halál előtti késleltetés
Szerver - game/char.h
void Stun();
cseréld le erre:
void Stun(const float flDuration = 3.0);
majd game/char_battle.cpp
void CHARACTER::Stun()
cseréld le erre:
void CHARACTER::Stun(const float flDuration)
majd a függvény legvégén ezt
m_pkStunEvent = event_create(StunEvent, info, PASSES_PER_SEC(3));
cseréld le erre:
m_pkStunEvent = event_create(StunEvent, info, PASSES_PER_SEC(flDuration));
majd keresd meg ezt a részt:
if (GetHP() <= 0)
{
Stun();

és cseréld le erre:
if (GetHP() <= 0)
{
Stun(0.25);

Így halálkor 0.25mp-ig késleltet, míg rendes stunnál megmarad a 3mp.

3. Eladásnál néha bugos név és ár
Indító - UserInterface/PythonPlayerModule.cpp
PyObject * playerIsValuableItem(PyObject* poSelf, PyObject* poArgs)
ezen a fv-en belül
switch (PyTuple_Size (poArgs))
{
case 1:
if (!PyTuple_GetInteger(poArgs, 0, &SlotIndex.cell))
return Py_BuildException();
break;
case 2:
if (!PyTuple_GetInteger(poArgs, 0, &SlotIndex.window_type))
return Py_BuildException();
if (!PyTuple_GetInteger(poArgs, 0, &SlotIndex.cell))
return Py_BuildException();
break;
default:
return Py_BuildException();
}

amikor 2 paramétert kap, akkor a cella indexe el lett írva, csak át kell írni 1-esre és máris jó:
switch (PyTuple_Size (poArgs))
{
case 1:
if (!PyTuple_GetInteger(poArgs, 0, &SlotIndex.cell))
return Py_BuildException();
break;
case 2:
if (!PyTuple_GetInteger(poArgs, 0, &SlotIndex.window_type))
return Py_BuildException();
if (!PyTuple_GetInteger(poArgs, 1, &SlotIndex.cell))
return Py_BuildException();
break;
default:
return Py_BuildException();
}


4. Hibás sebzésszámítás
Szerver - game/battle.cpp
float CalcAttackRating(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, bool bIgnoreTargetRating)
ebben a fv-ben ezt a sort
int victim_lv = pkAttacker->GetLevel();
cseréld le:
int victim_lv = pkVictim->GetLevel();