Ultima modifica:
Ciao.
Se il problema e' che il personaggio torna indietro, il problema non e' in "../data/monster/", bensi' in:
Dentro le apposite cartelle, troverai diversi file, che definiscono le diverse motion dei rispettivi mostri/npc/personaggi, fra cui anche le motion run/walk.
Se le suddette motion di run/walk non possiedono un'accumulation, o la possiedono ma e' inappropriata, l'effetto e' questo.
L'accumulation e' un valore presente nelle motion di movimento di mostri e personaggi che determina quante unita' al secondo un entita' puo' percorrere data una certa movement speed.
Nel tuo caso, viene impostata di default a 300, poiche' non viene trovata nei tuoi files di default. Inutile dire che quel valore di default non sara' mai appropriato e serve solo come deterrente per permettere alla funzione di svolgere grossomodo il suo lavoro, e come ho detto sopra, valore sbagliato = questo effetto, perche' secondo il server stai percorrendo piu' unita' di quante ne dovresti poter percorrere.
Spero di essere stato d'aiuto.
Se il problema e' che il personaggio torna indietro, il problema non e' in "../data/monster/", bensi' in:
Codice:
"../data/pc/" (nel caso di guerriero maschio, shamana femmina, sura maschio, ninja femmina)
"../data/pc2/" (nel caso di guerriera femmina, shamano maschio, sura femmina, ninja maschio)
"../data/pc3/" (nel caso del lican)
Dentro le apposite cartelle, troverai diversi file, che definiscono le diverse motion dei rispettivi mostri/npc/personaggi, fra cui anche le motion run/walk.
Se le suddette motion di run/walk non possiedono un'accumulation, o la possiedono ma e' inappropriata, l'effetto e' questo.
L'accumulation e' un valore presente nelle motion di movimento di mostri e personaggi che determina quante unita' al secondo un entita' puo' percorrere data una certa movement speed.
C++:
float CHARACTER::GetMoveMotionSpeed() const
{
DWORD dwMode = GetMotionMode();
const CMotion * pkMotion = NULL;
if (!GetMountVnum())
pkMotion = CMotionManager::instance().GetMotion(GetRaceNum(), MAKE_MOTION_KEY(dwMode, (IsWalking() && IsPC()) ? MOTION_WALK : MOTION_RUN));
else
{
pkMotion = CMotionManager::instance().GetMotion(GetMountVnum(), MAKE_MOTION_KEY(MOTION_MODE_GENERAL, (IsWalking() && IsPC()) ? MOTION_WALK : MOTION_RUN));
if (!pkMotion)
pkMotion = CMotionManager::instance().GetMotion(GetRaceNum(), MAKE_MOTION_KEY(MOTION_MODE_HORSE, (IsWalking() && IsPC()) ? MOTION_WALK : MOTION_RUN));
}
if (pkMotion)
return -pkMotion->GetAccumVector().y / pkMotion->GetDuration();
else
{
sys_err("cannot find motion (name %s race %d mode %d)", GetName(), GetRaceNum(), dwMode);
return 300.0f;
}
}
Nel tuo caso, viene impostata di default a 300, poiche' non viene trovata nei tuoi files di default. Inutile dire che quel valore di default non sara' mai appropriato e serve solo come deterrente per permettere alla funzione di svolgere grossomodo il suo lavoro, e come ho detto sopra, valore sbagliato = questo effetto, perche' secondo il server stai percorrendo piu' unita' di quante ne dovresti poter percorrere.
Spero di essere stato d'aiuto.