Normal das dass auto solangsam anfährt???
Fahrzeug schnelligkeit
- Teddybaer
- 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
-
-
Eigentlich nicht. Dann hast du irgendwas falsch gemacht.
Ich werde den Code morgen selbst mal probieren, dann kann ich dir eine Funktionierende Variante geben. -
ok danke
-
Ich hab es jetzt schon getestet, und es ist gar nicht so einfach wie ich mir das dachte. Ich verschiedene Varianten getestet, und hab es auch hinbekommen, dass das Auto 135 fährt, aber hab es nicht mehr abbremsen können. Ich hab leider nicht die Zeit dazu das komplett durchzutesten und zu optimieren, dass es auch tut. Vielleicht im Laufe der Woche, wenn, dann würde ich mich bei dir melden.
Auf die Schnelle ist da aber leider nichts zu machen. -
ok... hättest mir vllt den code für die 135 ;)?
-
http://wiki.sa-mp.com/wiki/SetVehicleVelocity
Mit Der funktion kann man theretisch die postition ändern höhe und schnelligkeit
wenn nicht dann bau nitro ein dann ist es schneller
-
Nitro bring nichts... nur für den anfang beim anfahren...
wir haben bereits eine funktion die leichter ist die dieses ding was du sagtest
-
es gibt eine funk die mir grad nicht einfallen mag
schau mal die ganze wiki nach speed && vehicle ab
MFG
PAWN -
ie funktion habe.... nur das mein Car nichtmehr richtig abbremst und ich die geschwindigkeit noch ermitteln muss...
-
Teddybaer:
Ich habe nun einen kleinen FS entworfen, der bei Weitem nicht perfekt ist, aber er tut das, was du willst. Ich hab es probiert, es funktioniert.#include <a_samp>
new bool:GibtGas[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
/*new str[128];
format(str, sizeof(str), "%d", GetPlayerSpeed(playerid));
SendClientMessageToAll(-1, str);
//^debug^
*/
if(IsPlayerInAnyVehicle(playerid) && GibtGas[playerid])
{
new id = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(id);
if(model == 596) //LSPD
{
new speed = GetPlayerSpeed(playerid);
if(speed <= 175 && speed > 170)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/175.0, y1*202.0/175.0, z1);
}
else if(speed <= 185 && speed > 180)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/185.0, y1*202.0/185.0, z1);
}
else if(speed <= 195 && speed > 190)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/195.0, y1*202.0/195.0, z1);
}
}
}
return 1;
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SPRINT) GibtGas[playerid] = true;
else GibtGas[playerid] = false;
return 1;
}stock GetPlayerSpeed(playerid) //Credits an Michael@Belgium
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
return floatround(ST[3]);
}Falls das jemand als Inspiration sieht dies zu perfektionieren, darf er gerne den Code benutzen, abändern oder neu veröffentlichen, ist mir völlig egal.
-
Danke einfach so ins script einfügen?
//e
Wie schnell läuft das ding nun?
-
Teddybaer:
Ich habe nun einen kleinen FS entworfen, der bei Weitem nicht perfekt ist, aber er tut das, was du willst. Ich hab es probiert, es funktioniert.#include
new bool:GibtGas[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
/*new str[128];
format(str, sizeof(str), "%d", GetPlayerSpeed(playerid));
SendClientMessageToAll(-1, str);
//^debug^
*/
if(IsPlayerInAnyVehicle(playerid) && GibtGas[playerid])
{
new id = GetPlayerVehicleID(playerid);
new model = GetVehicleModel(id);
if(model == 596) //LSPD
{
new speed = GetPlayerSpeed(playerid);
if(speed <= 175 && speed > 170)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/175.0, y1*202.0/175.0, z1);
}
else if(speed <= 185 && speed > 180)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/185.0, y1*202.0/185.0, z1);
}
else if(speed <= 195 && speed > 190)
{
new Float:x1, Float:y1, Float:z1, Float:a;
GetVehicleVelocity(id, x1, y1, z1);
GetVehicleZAngle(id, a);
SetVehicleVelocity(id, x1*202.0/195.0, y1*202.0/195.0, z1);
}
}
}
return 1;
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SPRINT) GibtGas[playerid] = true;
else GibtGas[playerid] = false;
return 1;
}stock GetPlayerSpeed(playerid) //Credits an Michael@Belgium
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
return floatround(ST[3]);
}Falls das jemand als Inspiration sieht dies zu perfektionieren, darf er gerne den Code benutzen, abändern oder neu veröffentlichen, ist mir völlig egal.</a_samp>
Es ist extrem Ressourcenlastig. Ich würde lieber einen Timer abfragen, der jede 3 Sekunden oder so läuft. OnPlayerUpdate saugt die Leistung deines Servers raus.
-
Zitat
der bei Weitem nicht perfekt ist, aber er tut das, was du willst.
Er hat nirgendwo behauptet das es ressourcen freundlich ist
Und du meinst mit einem Timer ist man besser dran? -
Zitat
Er hat nirgendwo behauptet das es ressourcen freundlich ist
Und du meinst mit einem Timer ist man besser dran?Was ist für dich besser? 10-100x (hängt von der Synchronisation ab z.B S.W.A.T Panzer Wasser Werfer oder Waffen schießen sehr Ressourcen fressend etwas laufen wenig Ressourcen fressend) die Sekunde oder alle 3 Sekunden 1x?
-
Danke einfach so ins script einfügen?
Wie schnell läuft das ding nun?
Ja.
Genau so schnell wie du es wolltest.Es ist extrem Ressourcenlastig. Ich würde lieber einen Timer abfragen, der jede 3 Sekunden oder so läuft. OnPlayerUpdate saugt die Leistung deines Servers raus.
Nur weil es OnPlayerUpdate benutzt ist es nicht gleich extrem Ressourcenlastig. Ich hab es bei mir auf dem PC getestet, meine CPU ist noch intakt. OnPlayerUpdate hat einfach einen schlechten Ruf, ich benutze es gerne für kleine Dinge und hatte noch nie nur einen Lag damit. Man muss nur wissen wie man es benutzt.Ich habe mit Absicht auf einen Timer verzichtet, weil es ungenau wird. Wie gesagt, es ist nicht perfekt, wer es besser machen will darf das gerne machen. Aber nur rumnörgeln ist nicht nötig, das hilft keinem.
-
Finde es gut Bremsen funktioniert auch Was mich nur bisschen stört das driften wenn ich mit 135 drifte driftet das ding total lange
Vielen Dank
-
Jeffrey, deine Abfragen verwirren mich.
Die Variable 'speed' wird abgefragt von 170 bis 175, 180 bis 185 und 190 bis 195? Was ist mit den 5er Lücken?
-
Finde es gut Bremsen funktioniert auch Was mich nur bisschen stört das driften wenn ich mit 135 drifte driftet das ding total lange
Das liegt daran, dass das Auto ja nur auf die bestimmte Geschwindigkeit begrenzt ist, der script macht es aber schneller als vom Spiel her erlaubt, das führt dazu, dass es beim driften extrem lange driftet, da es länger braucht, bis die Geschwindigkeit wieder erreicht ist, bei der das Auto zu langsam ist um zu driften.
Jeffrey, deine Abfragen verwirren mich.
Die Variable 'speed' wird abgefragt von 170 bis 175, 180 bis 185 und 190 bis 195? Was ist mit den 5er Lücken?
Ich hab das so gemacht, weil der script sonst das Auto die ganze Zeit auf der Maximalgeschwindigkeit hält, würde an manchen Stellen etwas komisch aussehen. Man kann es sicher auch ohne die Lücken machen, ob das aber einen merklichen Unterschied macht weiß ich nicht. Müsste man ausprobieren, was besser läuft. -
(Haben nur einen Laptop gerade Zuhause, deswegen nun von diesem Account da wir uns abwechseln)
Achso, aber von 186 würde er doch dadurch gar nicht mehr auf 190 kommen ohne 'Boost' oder habe ich gerade einen Denkfehler?
-
Achso, aber von 186 würde er doch dadurch gar nicht mehr auf 190 kommen ohne 'Boost' oder habe ich gerade einen Denkfehler?
Ja, aber das Auto wird sehr schnell langsamer, daher fällt es wieder unter die 180 und bekommt wieder einen Schub, ich fand die Schübe sonst etwas zu stark. Es wird besser je näher die einzelnen Werte aneinander liegen, ich wollte aber keine 100 else if's machen.So wie ich das sehe sind viele an etwas Besserem hier Interessiert, was einfacher zu benutzen ist und noch genauer funktioniert. Ich werde in den nächsten Tagen oder Wochen, sofern ich Zeit habe, mich damit auseinandersetzen, ob sich da eine möglichst einfach zu benutzende Include machen lässt.
-
breadfish.de
Hat das Thema geschlossen.