Vehicle absperren - lock

  • Sonstiges

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Vehicle absperren - lock

    Hey zusammen,
    ich habe wieder eine kleine Frage.

    Mir geht es um das absperren von Fahrzeugen durch lock, bzw. setVehicleLock.
    Der Server setzt den Status des Fahrzeuges. Solange der Spieler nicht drin saß, funktioniert das ganze auch.
    Aber sobald ein Spieler in dem Fahrzeug saß, kann der Server weiter den Status setzen. Wenn ich den Status über locked abfrage, wird er auch geändert, zeigt allerdings keine Funktion mehr.

    Gelöst habe ich es, indem ich jedem Spieler den aktuellen Status des Fahrzeuges schicke.
    Nun frage ich mich, ist dies die einzige Möglichkeit?

    Laut dem Wiki von Bohemia Interactive, wird der Effekt von lock und setVehicleLock an alle Teilnehmer geschickt.
    Also mache ich doch etwas falsch?

    Gesetzt wird auf dem Server der Status mit dieser Zeile: _vehicle setVehicleLock "LOCKED";

    Freue mich über Rückmeldungen.

    Grüße
    Henne
  • community.bistudio.com/wiki/lock

    Oben links AL "Arguments local". "Arguments of these scripting commands have to be local to the client the command is executed on."


    Der Server setzt den Status des Fahrzeuges.
    Falsch. Der Besitzer (Owner) des Fahrzeugs setzt den Status. Das kann der Server sein, aber auch jeder dedicated client. Bei einem leeren Fahrzeug nach dem Missionsstart ist es das der Server. Steigt ein Spieler ein, ist es der Spieler. Steigen mehre Spieler ein ist es der Fahrer. Steigen alle aus, dann ist es die Maschine, die das Fahrzeug als letztes besessen hat. etc. etc.

    Der Befehl wird ignoiert, wenn er auf einer Maschine ausgeführt wird, die das Fahrzeug nicht besitzt ("remote machine" bzw. "remote object").
    Das heißt, man kann den Befehl auf allen Maschinen ausführen, oder man optimiert es, und führt ihn nur auf der Maschine aus, die das Fahrzeug besitzt.
  • Wenn ich mich recht erinnere kannst du den Befehl via remoteExec auf dem Client auszuführen auf dem das Fahrzeug lokal ist indem du das Fahrzeug einfach dem remoteExec als Parameter übergibst.
    Dann musst du nicht selber suchen wo das Fahrzeug grad sitzt ;)

    EDIT:
    Sollte so gehen:

    Quellcode

    1. [<Fahrzeug>, "LOCKED"] remoteExec ["setVehicleLock", <Fahrzeug>]
    Entwickler von SQDev
    Co-Entwickler von OurAltis
  • commy2 schrieb:

    Dann sollte das besagte Skript aber nur auf einer Maschiene laufen, da anonsten der Befehl für jeden verbundenen Client - plus einmal für den Server - auf der Maschiene des Fahrzeugs ausgeführt wird.
    Korrekt - Da es aber aktuell nicht funktioniert bin ich davon ausgegangen, dass das Skript ohnehin nicht auf allen Maschinen ausgeführt wird :11_unknown:
    Entwickler von SQDev
    Co-Entwickler von OurAltis
  • Hey,
    wie ich bereits im Eingangspost erwähnte, funktionierte es dort bereits. Allerdings habe ich eben dort jedem Teilnehmer mitgeteilt, dass er den Status ändern soll.

    Nach dem Hinweis von commy2 habe ich das dann soweit geändert, dass nur noch der owner des Objectes den Status verändert.

    Mit remoteExec lässt sich der Code damit noch ein wenig kürzer schreiben.
    Danke für den Hinweis.

    Grüße