Guida Risolvere problemi della Tartaruga del Deserto

Stato
Discussione chiusa ad ulteriori risposte.

Toki.San

Moderatore
25 Febbraio 2010
256
42
493
410
Ultima modifica da un moderatore:
La Tartaruga del Deserto presenta diverse Problematiche:

1) Si Teletrasporta sempre su di te per tutta la mappa deserto, non hai modo di sfuggirgli.
2) Ogni tanto l'animazione si blocca.
3) Può essere attaccata solo dallo Spadone.


1) La sua causa è da ricercare nei sorgenti server:
Cerca:
C++:
 if (GetRaceNum() == 2191 && number(1, 20) == 1 && get_dword_time() - m_pkMobInst->m_dwLastWarpTime > 1000)
{

float fx, fy;
GetDeltaByDegree(victim->GetRotation(), 400, &fx, &fy);
long new_x = victim->GetX() + (long)fx;
long new_y = victim->GetY() + (long)fy;
SetRotation(GetDegreeFromPositionXY(new_x, new_y, victim->GetX(), victim->GetY()));
Show(victim->GetMapIndex(), new_x, new_y, 0, true);
GotoState(m_stateBattle);
m_dwStateDuration = 1;
ResetMobSkillCooltime();
m_pkMobInst->m_dwLastWarpTime = get_dword_time();
return;
}
Modifica con:
C++:
// if (GetRaceNum() == 2191 && number(1, 20) == 1 && get_dword_time() - m_pkMobInst->m_dwLastWarpTime > 1000)
// {
//
// float fx, fy;
// GetDeltaByDegree(victim->GetRotation(), 400, &fx, &fy);
// long new_x = victim->GetX() + (long)fx;
// long new_y = victim->GetY() + (long)fy;
// SetRotation(GetDegreeFromPositionXY(new_x, new_y, victim->GetX(), victim->GetY()));
// Show(victim->GetMapIndex(), new_x, new_y, 0, true);
// GotoState(m_stateBattle);
// m_dwStateDuration = 1;
// ResetMobSkillCooltime();
// m_pkMobInst->m_dwLastWarpTime = get_dword_time();
// return;
// }
O più semplicemente commenta la funzione.

2) La causa sta nel motlist.txt. Il GENERAL (BACK/FRONT) KNOCKDOWN è strettamente legato al GENERAL STANDUP che nel caso della tartaruga non è presente, da qui il motivo per il quale l'animazione si interrompe:

Fix:

Codice:
GENERAL WAIT 00.msa 65
GENERAL WAIT1 00_1.msa 35
GENERAL RUN 03.msa 100
GENERAL NORMAL_ATTACK 20.msa 50
GENERAL NORMAL_ATTACK1 20_1.msa 50
GENERAL FRONT_DAMAGE 30.msa 100
GENERAL FRONT_DEAD 31.msa 100
GENERAL FRONT_KNOCKDOWN 32.msa 100
GENERAL BACK_DAMAGE 34.msa 100
GENERAL BACK_KNOCKDOWN 35.msa 100
GENERAL SPECIAL 24.msa 100
GENERAL SPECIAL1 25.msa 100
Questo è il motlist.txt di giant_desert_turtle, bisogna rimuovere:

GENERAL BACK_KNOCKDOWN 35.msa 100
GENERAL FRONT_KNOCKDOWN 32.msa 100

Codice:
GENERAL WAIT 00.msa 65
GENERAL WAIT1 00_1.msa 35
GENERAL RUN 03.msa 100
GENERAL NORMAL_ATTACK 20.msa 50
GENERAL NORMAL_ATTACK1 20_1.msa 50
GENERAL FRONT_DAMAGE 30.msa 100
GENERAL FRONT_DEAD 31.msa 100
GENERAL BACK_DAMAGE 34.msa 100
GENERAL SPECIAL 24.msa 100
GENERAL SPECIAL1 25.msa 100

3)Questo è il problema più semplice: basta andare sul db/mob_proto, cercare il vnum 2191(Tartaruga del Deserto) e impostare a 0 o ridurre i seguenti valori:
resist_sword
resist_dagger
resist_bell
resist_fan
resist_bow

Come potete notare il resist_twohand è settato già a 0, motivo per il quale il danno poteva essere fatto solo dagli spadoni.


E' tutto, alla prossima.
 
Stato
Discussione chiusa ad ulteriori risposte.