Hallo Community,
wie kann ich machen das dass PD Car statt 117 135 läuft?
LG
Hallo Community,
wie kann ich machen das dass PD Car statt 117 135 läuft?
LG
Nein, soviel ich weiß ist es möglich das Fahrzeug langsamer fahren zu lassen. (Sprich drosseln)
Langsamer wie und schneller brauch cih dringend auch
Theoretisch schon möglich, allerdings ganz schon umständlich.
Mit SetVehicleVelocity
http://wiki.sa-mp.com/wiki/SetVehicleVelocity
eventuell kann man das Fahrzeug damit auch schneller machen (Habe vergessen das Stunt Server sowas wie Speedhack gebastelt haben.)
Und wie funktioniert die Funktion nun richtig, damit es bisschen schneller fährt, also man kanns doch sicher abfragen lassen und danach wie weiter?
Du müsstest in einem gewissen Zeitabstand (vllt ne halbe Sekunde?) die Geschwindigkeit eines jeden Polizeiautos abrufen und das ggf. (bei zu hoher Geschwindigkeit) wieder auf einen niedrigeren Wert setzen. Wie schon gesagt benötigst du dafür die Methoden:
SetVehicleVelocity
und
GetVehicleVelocity
edit:
Daraus resultieren kann natürlich, dass sich das Fahrzeug manchmal nicht mehr flüssig lenken lässt. (Ich verweise hier mal auf ein Tempomatsystem zum halten der Geschwindigkeit eines bekannten Trucker SA:MP Servers)
Ist glaub ne nummer zu schwer... ich verstehe das überhaupt nicht....
Trotzdem Danke
Wenn du das, was ziemlich leicht erklärt wird (zwar auf Englisch) nicht verstehst würde ich erst mal ein wenig lernen. Diese Funktion scheint einfach zu sein, ist aber schwer zu handhaben da man mehr als nur einige Sachen beachten muss. Sonst wird daraus ziemlich schnell ein ungewollter Superantrieb.
Wills nun nochmal versuchen... kann mir einer dabei vllt iwie helfen?
Das dass PD car statt 117 135 fährt?
Motor an/ausmachen?
dcmd_motor(playerid,params[])
{
#pragma unused params
new string[128];
if(DasFahrzeugbrauchtkeinTacho(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_GRAD1, "{FFFFFF}Fahrräder haben {FF0000}keinen{FFFFFF} Motor ...");
return 1;
}
if((GetPlayerVehicleID(playerid)!=INVALID_VEHICLE_ID) && (GetPlayerState(playerid)==PLAYER_STATE_DRIVER))//Erstmal abchecken, ob er überhaupt in einem Fahrzeug sitzt "UND" Fahrer ist!
{
new Namevo[MAX_PLAYER_NAME];
GetPlayerName(playerid, Namevo, sizeof(Namevo));
new engine,lights,alarm,doors,bonnet,boot,objective;
new vid = GetPlayerVehicleID(playerid);
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
if(engine == VEHICLE_PARAMS_ON)
{
SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[vid] = false;//Keine Ahnung wo man das noch weitergehend verwenden müsste; finde ich persönlich jetzt unnötig ;)
format(string, sizeof(string), "%s dreht den Schlüssel um und stoppt den Motor!", Namevo);
ProxDetector(10.0, playerid, string, Blau,Blau,Blau,Blau,Blau);
}
else
{
if(Gas[vid] >= 1)
{
SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[vid] = true;//Hier ebenfalls =)
format(string, sizeof(string), "%s dreht den Schlüssel um und startet den Motor!", Namevo);
ProxDetector(10.0, playerid, string, Blau,Blau,Blau,Blau,Blau);
}
else
{
format(string, sizeof(string), "%s startet den Motor und er säuft ab.", Namevo);
ProxDetector(10.0, playerid, string, Blau,Blau,Blau,Blau,Blau);
}
}
}
return 1;
}
Wills nun nochmal versuchen... kann mir einer dabei vllt iwie helfen?
Das dass PD car statt 117 135 fährt?
SetVehicleSpeed(vehicleid, Float:speed);
Muss dann wo rein???
Naja, ich würde das so angehen:
OnPlayerUpdate
if(IsPlayerInAnyVehicle(playerid))
{
new id = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(id);
if(model == PD_CAR_MODEL)
{
new Float:speed = GetPlayerSpeed(playerid);
if(speed <= 117)
{
SetVehicleSpeed(GetPlayerVehicleID(playerid), speed*135/117);
}
}
}
Die Werte musst du unter Umständen noch verändern (117 und 135), ich weiß nicht mit welchen Multiplikatoren du arbeitest. Einfach probieren, wobei 117 beides mal mit der gleichen Zahl ersetzt wird, sonst machts keinen Sinn mehr.
Oben im Script:
#define REDUCER_AMOUNT 0.01
Die Zeile so verändern:
SetVehicleSpeed(GetPlayerVehicleID(playerid), speed*REDUCER_AMOUNT*135/117);
Dann eben REDUCER_AMOUNT so lange ändern, bis deine Geschwindigkeit passt. Musst halt probieren.
aber muss das nicht so?
if(speed >= 117)
Nein.
Das GetPlayerSpeed solltest du wenn möglich mit der Funktion ersetzen, die du verwendest um auf 117 max. Geschwindigkeit zu kommen, das wäre sinnvoll.
Dann musst du nur noch so lange am REDUCER_AMOUNT probieren, bis du auf 135 kommst.