Guten Abend Community.
Ich wollte einen Befehl erstellen, mit dem ich meinen Wagen mit einer Taste in die entsprechende Richtung beschleunigen kann. Ich habe einen kleinen Ansatz und Hintergedanken gefunden, komme jedoch nicht weiter.
Ich habe mir vorgestellt, die Geschwindigkeit selbst zu bestimmen:
dcmd_speed(playerid,params[])
{
new Float:x, Float:y, Float:z, SpeedValue;
if(sscanf(params, "f", SpeedValue)) return SendClientMessage(playerid, COLOR_GREY,"* usage: /speed <value>");
SetVehicleVelocity(GetPlayerVehicleID(playerid), x*SpeedValue, y*SpeedValue, z*SpeedValue);
return 1;
}
Und dann unter OnPlayerKeyStateChange den Wert wieder irgendwie abrufen
if (newkeys == KEY_WALK)
{
if (!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, COLOR_GREY,"*you've to be in a vehicle to speed up.");
return 1;
}
else
{
// ????
}
}
return 1;
}
Ich denke ich habe den Ansatz soweit richtig. Ich weiß aber nicht wie ich den Wert vom Befehl abrufe um ihn dann unten bei OnPlayerKeyStateChange wieder einfüge.
Meine Idee war folgende, welche oben bei "// ????" in Frage käme:
new Float:Velocity[3], SpeedValue;
GetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0], Velocity[1], Velocity[2]);
SetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0]*SpeedValue, Velocity[1]*SpeedValue, Velocity[2]*SpeedValue);
Es funktioniert aber nicht.^^
Edit: Hat keiner eine Idee?!
Mfg.