Ampeln richtig entfernen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Herzlich Willkommen zu diesem Tutorial, ich möchte euch zeigen, wie ihr alle Ampeln richtig entfernt.
    SAMP hat einen Limit bei 1000 Zeilen vom RemoveBuildingForPlayer.
    Wenn wir alle Ampeln einzelt entfernen, hängt sich der Server nach einem GMX auf.


    Schritt 1:
    Wir brauchen jede ID einer Ampel aus ganz San Andreas.
    Diese ID's sind:

    Spoiler anzeigen

    1283
    1284
    1315
    1350
    1351
    1352
    1373
    1374
    3516


    Schritt 2:
    Wir brauchen jeweils eine Funktion pro Ampel ID.
    Diese Funktion sieht so aus:

    RemoveBuildingForPlayer(playerid,Objekt ID, X, Y, Z, Radius);

    Die Funktion ist sehr leicht zu verstehen:
    Playerid erklärt sich von selbst
    Objekt ID -> Die ID vom Objekt
    X -> X Koordinate
    Y -> Y Koordinate
    Z -> Z Koordinate
    Radius -> Radius in welchem die Objekte gelöscht werden sollen.


    Schritt 3:
    Diese Funktion müssen wir unter dem Callback OnPlayerConnect einfügen, damit es funktioniert.

    public OnPlayerConnect(playerid)
    {
    RemoveBuildingForPlayer(playerid, 1283, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1283
    RemoveBuildingForPlayer(playerid, 1284, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1284
    RemoveBuildingForPlayer(playerid, 1315, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1315
    RemoveBuildingForPlayer(playerid, 1350, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1350
    RemoveBuildingForPlayer(playerid, 1351, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1351
    RemoveBuildingForPlayer(playerid, 1352, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1352
    RemoveBuildingForPlayer(playerid, 1373, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1373
    RemoveBuildingForPlayer(playerid, 1374, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 1374
    RemoveBuildingForPlayer(playerid, 3516, 0.0, 0.0, 0.0, 8000.0); //Alle Ampeln mit der ID 3516
    return 1;
    }


    Ich hoffe ihr habt diese Anleitung gut verstanden, das ist nämlich mein erstes Tutorial, welches ich geschrieben habe.
    Wer Rechtschreibfehler findet darf sie gerne behalten.


    Mit freundlichen Grüßen, Morimoto.

    3 Mal editiert, zuletzt von Morimoto ()

  • SAMP hat einen Limit bei 1000 Zeilen vom RemoveBuildingForPlayer.


    Das ist nicht ganz richtig, es gibt ein Problem damit, wenn man den Spieler mit den Zeilen zuscheißt.


    Dann blockiert der Client irgendwann die Anfragen.
    Macht man das aber in geregelten Abständen dann funktioniert das Problemlos.


    BTW: Du hast nicht alle Ampeln entfernt.
    In Las Venturas stehen noch welche mit der ID 3516
    Das sind die die über die Schnellstraßen gehen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ach okay. Ich füg das eben noch hinzu. Danke für die Erweiterung :).

  • Gibt es keine Möglichkeit die Objekte dauerhaft zu entfernen sobald der Server gestartet ist?
    Ich meine wenn man über 200 Spieler hat und über 200 mal die Objecte entfernt werden, müsste doch auf dauer anstrengend werden.
    Dazu kommt ja auch das disconnecten und reconnecten oder ist das schon die effizienteste Lösung?


    lg

  • Mal eine kurze Frage, die limitierung auf 1000 Zeilen der Removes zählt soweit ich mich erinnern kann nicht, wenn man es per FS macht und falls doch kann man ja pro FS einfach 1000 Removes rein hauen oder ? Habe schon lange nicht mehr gescriptet würde mich deshalb interessieren.


    B2T:
    Sehr simples und gut erklärtes TUT :)

  • Mal eine kurze Frage, die limitierung auf 1000 Zeilen der Removes zählt soweit ich mich erinnern kann nicht, wenn man es per FS macht und falls doch kann man ja pro FS einfach 1000 Removes rein hauen oder ? Habe schon lange nicht mehr gescriptet würde mich deshalb interessieren.


    B2T:
    Sehr simples und gut erklärtes TUT :)

    1000 Removes insgesamt, ich glaube 1000 pro FS wird nicht funktionieren.

  • Mal eine kurze Frage, die limitierung auf 1000 Zeilen der Removes zählt soweit ich mich erinnern kann nicht, wenn man es per FS macht und falls doch kann man ja pro FS einfach 1000 Removes rein hauen oder ? Habe schon lange nicht mehr gescriptet würde mich deshalb interessieren.


    B2T:
    Sehr simples und gut erklärtes TUT :)

    Es gibt an sich keine Limitierung, jedoch wenn du alles auf einmal an den Clienten sendest kann es passieren das der Client einen crash kassiert. Kannst die ganze Map sogar entfernen bloß musst du den Code etwas verteilen damit nicht alles auf einmal entfernt bzw. ausgeführt wird.

  • Das ganze lässt sich in 4 Zeilen Regeln. Wenn du dich als Scripter bezeichnen willst dann hier die Tipps.


    RemoveBulding umfasst eine Floatangabe welche die entsprechende ObjektID in einem gesamten Radius entfernt.


    Die SAMP Map ist 20.000 x 20.000 Groß.

  • das ändert aber nicht die größe der SA Map.
    Aus welchem Grund sollte man den Clienten mit etwas belasten, was gar nicht nötig ist.
    Es wäre mir neu, dass sich außerhalb von SA sich Ampeln o.ä befinden.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski