para solucionar el problema con los mobs/invasiones pueden probar esto:
ejecutar animaciones de ataque y movimiento normales,
en el Main ----> CustomMonster.cpp
busca la funcion:
void RenderModelAnimation(int Preview, int ModelID)
tienen que agregar este bloque justo al inicio de la funcion
if(!gModel || !lpObj)
{
return;
}
queda asi,,, para que copien y peguen:.....
// ===== FIX: Evita repetir animación de muerte y bloqueos de acción =====
if (lpObj->m_Model.ObjectType == emMonster)
{
int animObj = lpObj->m_Model.AnimationID;
int animModel = gModel->AnimationID;
if (animObj == 5 || animObj == 6 || animObj == 7 || animModel == 5 || animModel == 6 || animModel == 7)
{
return; // No procesar más animaciones (soluciona loop de muerte)
}
}
// ===== FIN FIX =====
espero que le sirva
no funciono bro...otra sugerencia para arreglarlo¿¿¿
hay dejo el fix de los mobs q no se movian en las invas y el fix del daily reward q dava el premio varias veces que uno relogeaba solo faltaria que algun buen samaritano comparta el fix de guild reconect
Pude solucionar el problema que te desconectaba al pedir unir al clan, el problema es que el cliente envia 5 bytes exactos y el servidor por defecto le agregaba un padding(bytes vacios) para redondearlas entre 7 y 8 bits y al enviar los datos de vuelta eso causaba la desconexión para solucionarlo use #pragma pack(1) en el archivo guild.h eliminando los bytes vacios, luego el HackPacketCheck.cpp verifica el valor del 4to byte del paquete y revisando en los paquetes de guild ese byte es variable (ya que es el id del jugador) por lo que al parecer el servidor detecta que es hack y tambien desconecta.
En el archivo guild.h hay que modificar esta parte y agregar pragma pack
//**********************************************//
//************ Client -> GameServer ************//
//**********************************************//
// fix clanes
#pragma pack(1)
struct PMSG_GUILD_REQUEST_RECV
{
PBMSG_HEAD header; // C1:50
BYTE index[2];
};
struct PMSG_GUILD_RESULT_RECV
{
PBMSG_HEAD header; // C1:51
BYTE result;
BYTE index[2];
};
struct PMSG_GUILD_DELETE_RECV
{
PBMSG_HEAD header; // C1:53
char name[10];
char PersonalCode[10];
};
struct PMSG_GUILD_ASSIGN_STATUS_RECV
{
PBMSG_HEAD header; // C1:E1
BYTE type;
BYTE status;
char name[10];
};
#pragma pack()
// fix clanes
El hackpacketcheck.cpp hay que buscar la funcion "bool CHackPacketCheck::CheckPacketHack" y buscamos el siguiente bloque:
if(lpInfo->Encrypt >= 0 && lpInfo->Encrypt != encrypt)
{
gLog.Output(LOG_HACK,"[HackPacketCheck][%s][%s] Packet encryption error (Index: %d, Value: %d, Encrypt: [%d][%d])",gObj[aIndex].Account,gObj[aIndex].Name,index,lpInfo->Value,encrypt,lpInfo->Encrypt);
CloseClient(aIndex);return 0;
}
el bloque de arriba es una validación general y rigida si algo no coincide con lo esperado te desconecta de inmediato. Y el siguiente código es una validación inteligente con excepciones: reconoce que ciertos paquetes (en este caso los clanes) funcionan diferente y permite que pasen sin ser bloqueados y asi evitando que te desconecte a usar las funciones de clan ya que me di cuenta que luego de solucionar lo de pedir clan ya no te desconectaba pero si te querias salir del clan te volvía a desconectar, con estas modificaciones ya no pasa eso por lo cual el codigo de arriba hay que reemplazar por el siguiente.
// --- fix clanes ---
if (index < 0x50 || index > 0x55)
{
if(lpInfo->Value != -1 && lpInfo->Value != value)
{
gLog.Output(LOG_HACK,"[HackPacketCheck][%s][%s] Packet value error (Index: %d, Value: %d, RealValue: %d)",gObj[aIndex].Account,gObj[aIndex].Name,index,lpInfo->Value,value);
return 0;
}
}
// ---------------------------
Y con esto ya funciona, les adjunto imagenes.



Espero mi grano de arena les sirva, me podrían decir que otros bugs hay para ir revisando y solucionando? Gracias .