Kleine-Scripting-Fragen

  • Guten Tag,


    wie kann ich das zum Laufen bringen?


    Info:


    Man baut eine Bombe ein, sobald ein Fahrer im Auto sitzt und eine bestimmte Geschwindigkeit erreicht wird, soll die Funktion "DetonateVehicle" getriggert werden.


    Wenn ich die Abfrage "if driver" in die While-Schleife packe, kommt dieser Error: ERROR: Infinite/too long execution

  • Du könntest es so machen, dass du ein ElementData auf das Fahrzeug legst und dann beim einsteigen einen Timer setzt, der immer prüft ob die Geschwindigkeit erreicht ist. Bei deinem Script bin ich mir nichtmal sicher ob das funktionieren würde, da du das ganze clientseitig versuchst, und z.B. ausgestreamte Fahrzeuge nicht mehr existieren und somit nichts getriggert werden kann.


    Ungetestet, muss noch etwas angepasst werden, der Timer wird z.B. nicht entfernt wenn man vor dem explodieren aussteigt:


  • Hey, ich hab alles versucht, doch leider wird nur "2" ausgegeben, was heißt dass es bis zum zweiten if kommt.

    Weiß einer warum?

  • Weil deine Funktion eine falsche Reihenfolge der Parameter entgegen nimmt. Füge zwischen player, target einen weiteren Parameter ein z.B. cmd.


    Lua
    function addElementData(player, cmd, target, element, amount)


    Dann hast du zwar die erste Hürde überwunden, doch der Rest wird dann leider noch nicht stimmen.

    Denn die Idee mit dem element-Parameter wirst du so denke ich nicht umsetzen können, da es sich bei dem Parameter um keine Table handelt, sondern um einen String.

  • Denn die Idee mit dem element-Parameter wirst du so denke ich nicht umsetzen können, da es sich bei dem Parameter um keine Table handelt, sondern um einen String.

    Hab folgendes Korrigiert



    1.Fehler


    Alt:


    Code
    vioSetElementData(ziel, element[ValidElements], amount)

    Neu:


    Code
    vioSetElementData(ziel, element, amount)



    2. Fehler


    alt:


    Code
    function addElementData(player, target, element, amount)


    Neu:


    Code
    function addElementData(player, cmd, target, element, amount)


    EDIT//


    3. Fehler


    Alt:

    Code
    if element[ValidElements] then


    neu:


    Code
    if ValidElements[element] then



    Audifire verstehe aber nicht warum das nicht funktionieren sollte nen ElementData so zu setzen ?


    Mit freundlichen Grüßen


    Strider

    Einmal editiert, zuletzt von Strider ()

  • Strider Weil es sich bei addElementData um einen Commandhandler handelt somit element ein String ist.

    Auf einem String kann ich den []-Operator nicht anwenden, da es sich nicht um eine Table handelt.


    Du hast es ja in deiner korrigierten Version berichtigt, in dem du ValidElements[element] durchführst.

    Das ist auch legitim, da es sich bei ValidElements um eine Table handelt.

    Als ich meinen Beitrag schrieb, habe ich die Variable ValidElements gar nicht aktiv wahrgenommen.


    Das wäre ungefähr folgende Problematik:

    Lua
    local str = "Hello World"
    print(str[2]) -- Ausgabe: nil
  • Guten Abend liebes Mta Forum,

    leider verzweifle ich gerade ein wenig an einer Aufgabe. Der Prof hat leider keine genauen Anweisungen gegeben. Vielleicht könnte mir ja jemand helfen.


    /*

    Nennen Sie Ihre Datei mit der Lösung: OOP.09.Solution.java


    Wenn Ihre Datei erfolreich durchläuft, sehen Sie Folgendes:


    >jshell -R-ea OOP.09.Aufgabe.java

    Cool, assertions are enabled!

    All tests passed!

    | Welcome to JShell -- Version 15.0.1

    | For an introduction type: /help intro


    */


    interface LinearLifeForm {

    LinearLifeForm setSuccessor(Cell c);

    LinearLifeForm setPredecessor(Cell c);

    LinearLifeForm getSuccessor();

    LinearLifeForm getPredecessor();

    boolean isAlive();

    }


    try {

    assert false;

    } catch (AssertionError e) {

    System.out.println("Cool, assertions are enabled!");

    }


    /open OOP.09.Solution.java


    assert new Cell(false).toString().equals("<.>");

    assert new Cell(true).toString().equals("<#>");

    assert !new Cell(false).isAlive();

    assert new Cell(true).isAlive();

    assert Cell.of(0).toString().equals("<.>");

    assert Cell.of(1).toString().equals("<#>");

    assert !Cell.of(0).isAlive();

    assert Cell.of(1).isAlive();

    assert Cell.of(new Random().nextInt(1000) + 1).toString().equals("<#>");

    assert Cell.of(-new Random().nextInt(1000) - 1).toString().equals("<#>");

    assert Cell.of(new Random().nextInt(1000) + 1).isAlive();

    assert Cell.of(-new Random().nextInt(1000) - 1).isAlive();

    assert Cell.of() == null;


    assert new Cell(true) instanceof LinearLifeForm;


    Cell c = Cell.of(1,0,1);

    assert c.isAlive() && !c.getSuccessor().isAlive() && c.getSuccessor().getSuccessor().isAlive();

    assert c.toString().equals("<#>.#");

    assert c.getSuccessor().getSuccessor().getSuccessor() == null;

    assert c.getPredecessor() == null;

    LinearLifeForm llf = Cell.of(0,0,1,0);

    assert llf.toString().equals("<.>.#.");


    Cell c = new Cell(true);

    c.setSuccessor(new Cell(false));

    c.setPredecessor(new Cell(true));

    assert c.toString().equals("#<#>.");


    Cell c = new Cell(false);

    c.setSuccessor(new Cell(true));

    c.setPredecessor(new Cell(false));

    assert c.toString().equals(".<.>#");


    Cell c = new Cell(true);

    c.setPredecessor(c);

    assert c.toString().equals("<#>->");


    Cell c = new Cell(true);

    c.setSuccessor(c);

    assert c.toString().equals("<#>->");


    Cell c = Cell.of(1,0,1);

    c.setPredecessor(Cell.of(0));

    assert c.toString().equals(".<#>.#");

    c.getPredecessor().setPredecessor(new Cell(false));

    assert c.toString().equals("..<#>.#");

    c.getSuccessor().getSuccessor().setSuccessor(Cell.of(1));

    assert c.toString().equals("..<#>.##");

    assert c.getSuccessor().getSuccessor().getSuccessor().getSuccessor() == null;

    assert c.getSuccessor().getSuccessor().getSuccessor().toString().equals("..#.#<#>");

    assert c.getPredecessor().getPredecessor().toString().equals("<.>.#.##");

    assert c.getPredecessor().getPredecessor().getPredecessor() == null;

    c.getSuccessor().getSuccessor().getSuccessor().setSuccessor(c.getPredecessor().getPredecessor());

    assert c.toString().equals("<#>.##..->"); // cyclic life form


    System.out.println("All tests passed!");

  • Moin,

    Ich benutze das Ultimate script und habe dort ein Fehler mit dem Tuning Script

    wenn ich in eine Tuningwerkstatt reinfahr bekomm ich 4 Warnings

    und wenn ich raus fahre bekomm ich nochmal ein Warning

    (Bild-> Die ersten 4 Warnings kommen beim reinfahren)(Der letzte Warn kommt beim raus fahren.)

    Hoffe jemand kann mir da helfen hab einiges ausprobiert aber nichts hat geholfen

    Was noch ein Problem ist er Speichert die Farbe nicht nach einem respawn oder serverrestart ist die Farbe wieder schwarz

    Einmal editiert, zuletzt von Benzos ()

  • Hallo ich habe ein Command zum erstellen von Objekten. Wenn ich das Objekt anklicke kann ich es löschen. Sobald ich ein zweites Objekt gesetzt habe kann ich nur noch das zuletzt gesetzte Objekt löschen. Was muss ich tun damit sich das angeklickte Objekt löschen lässt egal ob es das erste zweite oder dritte gesetzte Objekt ist?


    Code
    function objekt(player, cmd, id)
    local x,y,z = getElementPosition(player)
    obj = createObject(id,x,y,z)
        addEventHandler("onElementClicked", obj, function()
    destroyElement( obj )
    end)    
    end
    addCommandHandler( "objekt", objekt )


    Danke :)

  • Du musst einen Table erstellen, wo du alle Objekte rein packst.

    Genaueres dazu findest du hier:

    Würde ich dir widersprechen. Bei onElementClicked ist source das Element, welches angeklickt wurde. Wenn man es auf das Element bindet, kann man es mit Source wiederbekommen.

    Daher sollte folgender Code funktionieren:


    Lua
    function objekt(player, cmd, id)
    local x, y, z = getElementPosition(player)
    local obj = createObject(id, x, y, z)
    addEventHandler("onElementClicked", obj, function()
    destroyElement(source)
    end)
    end
    addCommandHandler("objekt", objekt)
  • Danke euch funktioniert genau so wie ich es wollte!


    Jetzt habe ich noch eine Frage. Ich habe das Objekt nun an den Spieler attached und mit einem weiteren Command auf den Boden gesetzt. Wenn nun ein Spieler probiert ein Objekt zu setzen während noch ein Objekt an einen anderen Spieler attached ist verbuggt das ganze. Wie kann ich das fixen? :)

  • Würde ich dir widersprechen. Bei onElementClicked ist source das Element, welches angeklickt wurde. Wenn man es auf das Element bindet, kann man es mit Source wiederbekommen.

    Daher sollte folgender Code funktionieren:

    Smarte Idee, gut zu wissen.
    Ich hätte das mit nem Table und for schleife gemacht.

    Aber dein Ansatz ist deutlich besser.

  • Könnte mir jemand erklären wie ich diese Fehlermeldung beheben kann?


    • unable to load mods/deathmatch/modules/mta_mysql.so (/mnt/mta/mods/deathmatch/modules/mta_mysql.so: wrong ELF class: ELFCLASS64)
  • Beitrag von Sacklife18 ()

    Dieser Beitrag wurde von sbx320 gelöscht ().

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!