Fixare Crash packet ptctl
1- Aprire source
2- Cercate:
3- Sostituite:
Con:
4- Buildare la soluzione!
1- Aprire source
2- Cercate:
Codice:
public void PetMove(PtCtlPacket ptCtlPacket)
3- Sostituite:
Codice:
public void PetMove(PtCtlPacket ptCtlPacket) {
string[] packetsplit = ptCtlPacket.PacketEnd.Split(' ');
for (int i = 0; i < ptCtlPacket.Amount * 3; i += 3) {
if (packetsplit.Length >= ptCtlPacket.Amount * 3 && int.TryParse(packetsplit[i], out int petId) && short.TryParse(packetsplit[i + 1], out short positionX) && short.TryParse(packetsplit[i + 2], out short positionY))
{
Mate mate = Session.Character?.Mates.Find(s => s.MateTransportId == petId);
if (mate != null) {
mate.PositionX = positionX;
mate.PositionY = positionY;
Session.CurrentMapInstance?.Broadcast(StaticPacketHelper.Move(UserType.Npc, petId, positionX, positionY, mate.Monster.Speed));
}
}
}
}
Con:
Codice:
public void PetMove(PtCtlPacket ptCtlPacket) {
if(ptCtlPacket.PacketEnd != null) {
string[] packetsplit = ptCtlPacket.PacketEnd.Split(' ');
for (int i = 0; i < ptCtlPacket.Amount * 3; i += 3) {
if (packetsplit.Length >= ptCtlPacket.Amount * 3 && int.TryParse(packetsplit[i], out int petId) && short.TryParse(packetsplit[i + 1], out short positionX) && short.TryParse(packetsplit[i + 2], out short positionY))
{
Mate mate = Session.Character?.Mates.Find(s => s.MateTransportId == petId);
if (mate != null) {
mate.PositionX = positionX;
mate.PositionY = positionY;
Session.CurrentMapInstance?.Broadcast(StaticPacketHelper.Move(UserType.Npc, petId, positionX, positionY, mate.Monster.Speed));
}
}
}
}
}
4- Buildare la soluzione!