|
maybe this will help you
//////////////////////////////////////////////////
ClaseCaracter mc = pCliente.Caracter;
byte[] b = mPackete;
int timestamp = (b[4] & 0xFF) | ((b[5] & 0xFF) << 8) | ((b[6] & 0xFF) << 16) | ((b[7] & 0xFF) << 24);
int pid = (b[8] & 0xFF) | ((b[9] & 0xFF) << 8) | ((b[10] & 0xFF) << 16) | ((b[11] & 0xFF) << 24);
long targ = ((long)b[12] & 0xFF) | (((long)b[13] & 0xFF) << 8) | (((long)b[14] & 0xFF) << 16) | (((long)b[15] & 0xFF) << 24);
long x = (b[16] & 0xFF) | ((b[17] & 0xFF) << 8);
long y = (b[18] & 0xFF) | ((b[19] & 0xFF) << 8);
int skill = (b[24] & 0xFF) | ((b[25] & 0xFF) << 8);
long skill2;
//cout(" Entrada : ts=" + timestamp + " pid=" + pid + " targ=" + targ + " x=" + x + " y=" + y + " Skill=" + skill);
try
{
skill2 = (skill ^ (mc.iCodigo & 0xffff) ^ 0x915d);
skill2 = ((skill2 << 3) | ((skill2 & 0xe000) >> 13)) & 0xffff;
if (skill2 >= 0xeb42)
{
skill2 = skill2 | 0xffff0000;
}
skill2 += 0x14be;
skill = Convert.ToInt32((skill2 & 0xFFFF));
targ = ((((targ & 0xffffe000) >> 13) | ((targ & 0x1fff) << 19)) ^ 0x5F2D2463 ^ mc.iCodigo) - 0x746F4AE6;
x = x ^ (mc.iCodigo & 0xffff) ^ 0x2ed6;
x = ((x << 1) | ((x & 0x8000) >> 15)) & 0xffff;
x |= 0xffff0000;
x -= (long)0xffff22ee;
y = y ^ (mc.iCodigo & 0xffff) ^ 0xb99b;
y = ((y << 5) | ((y & 0xF800) >> 11)) & 0xffff;
y |= 0xffff0000;
y -= 0xffff8922;
AtacadoItendificador = Convert.ToInt32(targ >> 0x0);
AtacadoX = Convert.ToInt32((x & 0xFFFF));
AtacadoY = Convert.ToInt32((y & 0xFFFF));
skillAtacador = (enumSkill)skill;
SkillAprendido.Frecuencia = 3000;//tres segundos por default
//el rango se calculara luego dependiendo de la magia que use
SkillAprendido.Rango = 8;//por default
//el efecto se calculara luego 1 = en cantidad, 2 = porcentaje
SkillAprendido.AtaqueTipo = enumTipoDeAtaqueMagico.EnCantidad;//efecto del ataque
}
//////////////////////////////////////////////////////////////////////
search MagicTypes.txt or MagicTypes.ini in this forum
|