Nabend.
Ich hab zwar hier schon 2 Includes gefunden, die mir aber nicht weiterhelfen.
Ich möchte die Geschwindigkeit nur von einem Fahrzeug begrenzen, so das alle anderen davon nicht betroffen sind. Kann mir das vielleicht einer verständlich "erklären"? Ich möchte keinen Code haben, sonder möchte es nach möglichkeit selber scripten.
Geschwindigkeit begrenzen
- Rocky--BANNED
- Geschlossen
- Erledigt
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
-
-
Abfragen ob es die VehikelID ist
Wenn ja Geschwindigkeit prüfen und wenn zu hoch auf Maximum herabsetzen -
Wenn ja Geschwindigkeit prüfen und wenn zu hoch auf Maximum herabsetzen
Na da wäre ich auch von alleine drauf gekommen.
Nur wie ermittel ich die Geschwinigkeit. Und wie setz ich die herab? Das ist ja das Problem. -
-
// EDiT: Ups, willst ja garkein Code...
Also:
Du musst die Geschwindigkeit berechnen, indem du der Betrag des Geschwindigkeitsvektors berechnest. Mehr dazu hier:
http://de.wikipedia.org/wiki/V…ge.2FBetrag_eines_Vektors
Die 3 Komponenten des Vektors erhälst du mit GetVehicleVelocity, wobei x, y und z genau diese Komponenten sind.
Die berechnete Länge solltest du dann noch mit etwa 160 multiplizieren, damit du KM/H-Werte erhälst.Jetzt überprüfst du, ob der erhaltene Wert (also die Geschwindigkeit) grösser als die maximale Geschwindigkeit ist.
Falls ja, dividierst du x, y und z jeweils durch die berechnete Geschwindigkeit, denn dann hat der Geschwindigkeitsvektor die Länge 1, wobei die Richtung erhalten bleibt.
Danach multiplizierst du x, y und z jeweils noch mit der maximalen Geschwindigkeit und dann hat der Geschwindigkeitsvektor eine Länge mit dem Wert der maximalen Geschwindigkeit.
Jetzt noch durch 160 dividieren, damit die Skalierung stimmt und SetVehicleVelocity anwenden.Alles klar?
-
// EDiT: Ups, willst ja garkein Code...
Naja ich will mir ja das Scripten etwas näher bringen. Daher denke ich das nen Code unvorteilhaft wäre. Denn durch selber probieren wird man schlau.
Brauche nur nen Denkanstoß. Das mit Velocity ist ja schonmal okay. nur weiss ich leider garnicht, was ich damit anfangen soll. -
Hab den vorherigen Post editiert mit einer Erklärung. Sag bescheid, wenn du die "Musterlösung" doch willst
-
Alles klar?
Ähm....
Ich glaube ich nehmen meine aussage von eben wieder zurück. ICh hab gerade nen riesen Fragezeichen übern Kopf.//edit
Satz des Pythagoras... alles klar. Ich passe. Bin nur nen popliger Handwerker. Ich kann + und - -
Achtung SPOILER:
Quellcode
Spoiler anzeigen stock LimitVehicleSpeed(vehicleid, Float:maxspeed)
{
new Float:x, Float:y, Float:z, Float:speed;
// Anstatt berechnete Geschwindigkeit 2mal zu skalieren, max einmal skalieren.
maxspeed /= 160.0;
// Länge des Geschwindigkeitsvektors berechnen.
GetVehicleVelocity(vehicleid, x, y, z);
speed = floatsqroot(x * x + y * y + z * z);
if (speed > maxspeed)
{
// Vektorlänge anpassen, also auf maxspeed setzen.
new Float:r = maxspeed / speed;
x *= r;
y *= r;
z *= r;
SetVehicleVelocity(vehicleid, x, y, z);
}
}
} -
Alles klar. Ich glaube ich schau mir das morgen mal an, wenn ich ausgeschlafen hab. Danke dir.
-
breadfish.de
Hat das Thema geschlossen.