Guida [ON] Packet ptctl [Crash Fix]

Stato
Discussione chiusa ad ulteriori risposte.

Exco

Utente Gold
8 Agosto 2013
461
53
74
218
Fixare Crash packet ptctl

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!


 
Stato
Discussione chiusa ad ulteriori risposte.