private bool ServerPacketHandler(Context context, Packet packet) { bool retval = false; switch (packet.Opcode) { case 0x303D: { packet.SeekRead(24, SeekOrigin.Begin); uint maxHP = packet.ReadUInt32(); uint maxMP = packet.ReadUInt32(); _charracter.MaxHP = maxHP; _charracter.MaxMP = maxMP; if (_charracter.CurrentHP > 0) { _mainForm.UpdateProgressBarValue(_charracter.MaxHP, _charracter.MaxHP, _charracter.MaxMP, _charracter.MaxMP); } } break; case 0x3020: { _charracter.Id = packet.ReadUInt32(); Packet packet3013 = _charracter.Opcode3013; string id = BitConverter.ToString(BitConverter.GetBytes(_charracter.Id)).Replace("-", ""); string tempPacket = BitConverter.ToString(packet3013.GetBytes()).Replace("-", ""); int index = tempPacket.IndexOf(id, 0); if (index > 0) { float X = 0, Y = 0; byte XX = 0, YY = 0; index = index / 2 + 4; packet3013.SeekRead(index, SeekOrigin.Begin); ushort zonetype = packet3013.ReadUInt16(); XX = BitConverter.GetBytes(zonetype)[0]; YY = BitConverter.GetBytes(zonetype)[1]; if (zonetype >= 32769 && zonetype <= 32775) { X = packet3013.ReadSingle(); packet3013.SeekRead(index + 14, SeekOrigin.Begin); Y = packet3013.ReadSingle(); } else { X = packet3013.ReadSingle(); packet3013.SeekRead(index + 10, SeekOrigin.Begin); Y = packet3013.ReadSingle(); } _charracter.XCoord = (int)Math.Floor((XX - 135) * 192 + X / 10); _charracter.YCoord = (int)Math.Floor((YY - 92) * 192 + Y / 10); _mainForm.UpdateCoord("X : " + _charracter.XCoord + " " + "Y : " + _charracter.YCoord); } packet3013.Dispose(); _charracter.Opcode3013 = null; } break; case 0x3057: { uint tempID = packet.ReadUInt32(); packet.SeekRead(6, SeekOrigin.Begin); if (tempID == _charracter.Id) { byte check = packet.ReadUInt8(); if (check == 1) { _charracter.CurrentHP = packet.ReadUInt32(); } else if (check == 2) { _charracter.CurrentMP = packet.ReadUInt32(); } } _mainForm.UpdateProgressBarValue(_charracter.MaxHP, _charracter.CurrentHP, _charracter.MaxMP, _charracter.CurrentMP); } break; case 0x3013: { //Print(packet, "S->P"); _charracter.Opcode3013 = packet; packet.SeekRead(42, SeekOrigin.Begin); _charracter.CurrentHP = packet.ReadUInt32(); _charracter.CurrentMP = packet.ReadUInt32(); //_mainForm.UpdateProgressBarValue(_charracter.MaxHP, _charracter.CurrentHP, _charracter.MaxMP, _charracter.CurrentMP); } break; case 0xB021: { byte XX = 0, YY = 0; ushort X = 0, Y = 0; uint uintObjectID = packet.ReadUInt32(); byte byteDes = packet.ReadUInt8(); XX = packet.ReadUInt8(); YY = packet.ReadUInt8(); packet.SeekRead(5, SeekOrigin.Begin); ushort zonetype = packet.ReadUInt16(); packet.SeekRead(7, SeekOrigin.Begin); if (byteDes != 0) { if (uintObjectID == _charracter.Id) { if (zonetype >= 32769 && zonetype <= 32775) { X = (ushort)(packet.ReadUInt16() - packet.ReadUInt16()); packet.SeekRead(15, SeekOrigin.Begin); Y = (ushort)(packet.ReadUInt16() - packet.ReadUInt16()); } else { X = packet.ReadUInt16(); packet.ReadUInt16(); Y = packet.ReadUInt16(); } _charracter.XCoord = (int)Math.Floor((XX - 135) * 192 + X / 10.0); _charracter.YCoord = (int)Math.Floor((YY - 92) * 192 + Y / 10.0); _mainForm.UpdateCoord("X : " + _charracter.XCoord + " " + "Y : " + _charracter.YCoord); } } } break; default: break; } return retval; }