[FILTERSCRIPT] OnPlayerDisconnect wird nicht ausgeführt

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    vermutlich sehe ich den Wald vor lauter Bäumen nicht, aber ich finde keine Erklärung, warum der Code aus meinem Filterscript nicht ausgeführt wird.
    Das Filterscript enthält im Moment mein Autohaussystem, welches ich derzeit noch abändere.
    Das Problem ist folgendes:


    Beim Disconnect sollten die Fahrzeuge des Users gelöscht werden.
    Nach einigen Test habe ich nun die Fehlerquelle eingeschränkt.


    Code vom Filterscript:

    #define Function%0(%1) forward%0(%1); public%0(%1)
    Function OnPlayerDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerDisconnect %d-1", playerid);
    for(new x=0;x<MaxVehs; x++)
    {
    //if(PlayerCar[playerid][x][CarBesitz])
    printf("Autos: OnPlayerDisconnect %d-%d-1", playerid, x);
    if(IsValidVehicle(PlayerCar[playerid][x][cID]))
    {
    SavePlayerCar(playerid, x);
    printf("Autos: OnPlayerDisconnect %d-%d-2", playerid, x);
    UnLockCar(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-3", playerid, x);
    DestroyVehicle(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-4", playerid, x);
    PlayerCar[playerid][x][CarBesitz] = 0;
    PlayerCar[playerid][x][cID] = -1;
    PlayerCar[playerid][x][cModel] = -1;
    PlayerCar[playerid][x][cCurX] = -1;
    PlayerCar[playerid][x][cCurY] = -1;
    PlayerCar[playerid][x][cCurZ] = -1;
    PlayerCar[playerid][x][cCurR] = -1;
    printf("Autos: OnPlayerDisconnect %d-%d-5", playerid, x);
    }
    }
    return 1;
    }

    Es wird KEIN Printbefehl ausgegeben, woraus ich ableite, dass die Funktion nicht aufgerufen wird.
    Mache ich etwas falsch oder ist etwas am Script falsch?


    Code vom Hauptscript:

    Function OnPlayerDisconnect(playerid, reason)
    {
    [...]
    return 1;


    }

    Code im Hauptscript wird immer ausgeführt.


    Hinweise im Log gibt es keine.
    Trozdem hier mal ein Auszug:


    Verwendete Includes:
    #include <a_samp>
    #include <JunkBuster>
    native IsValidVehicle(vehicleid);
    #include <ocmd>
    #include <dini>
    #include <sscanf2>
    #include <TimerFix>


    Ein anderer Versuch mit folgendem Code brachte mich auch nicht weiter:


    Filterscript:

    Function OnPlayerDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerCarDisconnect %d-1", playerid);
    for(new x=0;x<MaxVehs; x++)
    {
    //if(PlayerCar[playerid][x][CarBesitz])
    printf("Autos: OnPlayerDisconnect %d-%d-1", playerid, x);
    if(IsValidVehicle(PlayerCar[playerid][x][cID]))
    {
    SavePlayerCar(playerid, x);
    printf("Autos: OnPlayerDisconnect %d-%d-2", playerid, x);
    UnLockCar(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-3", playerid, x);
    DestroyVehicle(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-4", playerid, x);
    PlayerCar[playerid][x][CarBesitz] = 0;
    PlayerCar[playerid][x][cID] = -1;
    PlayerCar[playerid][x][cModel] = -1;
    PlayerCar[playerid][x][cCurX] = -1;
    PlayerCar[playerid][x][cCurY] = -1;
    PlayerCar[playerid][x][cCurZ] = -1;
    PlayerCar[playerid][x][cCurR] = -1;
    printf("Autos: OnPlayerDisconnect %d-%d-5", playerid, x);
    }
    }
    return 1;
    }


    und im Hauptscript:



    Function OnPlayerDisconnect(playerid, reason)
    {
    [...]
    CallRemoteFunction("OnPlayerCarDisconnect", "dd", playerid, reason);
    return 1;


    }


    Vielleicht findet jemand nen Fehler den ich übersehen habe.


    Mfg
    Wepper

    Mit freundlichem Gruß
    Weper

  • Es geht ja nicht darum, dass die Fahrzeuge gelöscht werden, wenn das Filterscript beendet wird,sondern wenn der User disconnected ...
    Oder versteh ich deine Intention falsch?


    Probiers einfach mal aus ;)


    Oder so:
    public OnPlayerDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerDisconnect %d-1", playerid);
    for(new x=0;x<MaxVehs; x++)
    {
    //if(PlayerCar[playerid][x][CarBesitz])
    printf("Autos: OnPlayerDisconnect %d-%d-1", playerid, x);
    if(IsValidVehicle(PlayerCar[playerid][x][cID]))
    {
    SavePlayerCar(playerid, x);
    printf("Autos: OnPlayerDisconnect %d-%d-2", playerid, x);
    UnLockCar(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-3", playerid, x);
    DestroyVehicle(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-4", playerid, x);
    PlayerCar[playerid][x][CarBesitz] = 0;
    PlayerCar[playerid][x][cID] = -1;
    PlayerCar[playerid][x][cModel] = -1;
    PlayerCar[playerid][x][cCurX] = -1;
    PlayerCar[playerid][x][cCurY] = -1;
    PlayerCar[playerid][x][cCurZ] = -1;
    PlayerCar[playerid][x][cCurR] = -1;
    printf("Autos: OnPlayerDisconnect %d-%d-5", playerid, x);
    }
    }
    return 1;
    }

  • Geht so auch nicht.
    Kann es am Anti Cheat liegen? (nutze JunkBuster 11)

    Mit freundlichem Gruß
    Weper

  • Also,


    ich hab gerade nochmal ein wenig herum experimentiert.
    Egal wie ich die Funktion aufrufe, sie wird nicht ausgeführt.


    Methode 1:
    Im FS
    public OnPlayerDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerDisconnect %d-1", playerid);
    return 1:
    }


    Methode 2:
    Im GM:
    Function OnPlayerDisconnect(playerid, reason)
    {
    [...]
    CallRemoteFunction("OnPlayerCarDisconnect", "dd", playerid, reason);
    return 1;


    }


    und im FS:
    Function OnPlayerCarDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerDisconnect %d-1", playerid);
    return 1:
    }

    Mit freundlichem Gruß
    Weper