Guten Morgen, sa-mp.de
wisst ihr wie ich es machen müsste das motorschaden system beim fahren geht wen ich zb mein car bis 400hp kaput mache das die meldung kommt du hast ein motorschaden und dan rausgeworfen werde ?
ich habe schon alles versucht doch es geht einfach nicht
danke in voraus an alle helfer
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
-
-
Mach nen Timer und Frag dann ab, wieviel HP das Auto noch hat.
Dann setzt du für das Fahrzeug ne Variable um nachher festzustellen, ob es da schon einen Motorschaden gibt.
Und dann einfach RauswerfenBeim Reparieren die Variable wieder resetten.
-
Frag doch einfach das Leben des Fahrzeugs ab..
http://wiki.sa-mp.com/wiki/GetVehicleHealth
Wenn es 400 ist, lässt du deinen Fahrer rausschmeißen. -
if(strcmp(cmdtext,"/Motor", true) == 0)
{
new Float:health;
new vehicleid = GetPlayerVehicleID(playerid);
GetVehicleHealth(vehicleid,health);
if(health >= 300)
{
new engine,lights,alarm,doors,bonnet,boot,objective;
new cveh = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid) &&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
{
if(cveh != INVALID_VEHICLE_ID)
{
if(EngineStatus[playerid] == 0)
{
GetVehicleParamsEx(cveh,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(cveh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
EngineStatus[playerid] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s betätigt die Zündung. Der Motor springt an.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
gGas[playerid] = 1;
}
else if(EngineStatus[playerid] == 1)
{
GetVehicleParamsEx(cveh,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(cveh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
EngineStatus[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s schaltet den Motor ab.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
gGas[playerid] = 1;
}
}
}
else {
SendClientMessage(playerid, COLOR_RED, "Sie befinden sich in keinem Fahrzeug.");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Ihr Fahrzeug hat einen Motorschaden, rufen sie einen ADAC.");
}
} -
wie soll ich den den timer machen habe ja so schon geamcht doch wen ich unter 400hp habe kommt einfach nix
hatte so an anfangSetTimer"(Motorschaden",1000,1);
forward Motorschaden();
Public Motorschaden()
{
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health >500)
{
Naricht(playerid,Rot,"Auto am arsch"
werfplayerausauto(playerid);
}
return 1;
}
aber es geht net -
SetTimer"(Motorschaden",1000,1);
Nimm mal die Klammer raus "(", die kommt vor das ' " ' -
Eine Schleife, die alle VehicleID's durchgibt
-
if(strcmp(cmdtext,"/Motor", true) == 0)
{
new Float:health;
new vehicleid = GetPlayerVehicleID(playerid);
GetVehicleHealth(vehicleid,health);
if(health >= 300)
{
new engine,lights,alarm,doors,bonnet,boot,objective;
new cveh = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid) &&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
{
if(cveh != INVALID_VEHICLE_ID)
{
if(EngineStatus[playerid] == 0)
{
GetVehicleParamsEx(cveh,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(cveh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
EngineStatus[playerid] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s betätigt die Zündung. Der Motor springt an.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
gGas[playerid] = 1;
}
else if(EngineStatus[playerid] == 1)
{
GetVehicleParamsEx(cveh,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(cveh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
EngineStatus[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s schaltet den Motor ab.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
gGas[playerid] = 1;
}
}
}
else {
SendClientMessage(playerid, COLOR_RED, "Sie befinden sich in keinem Fahrzeug.");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Ihr Fahrzeug hat einen Motorschaden, rufen sie einen ADAC.");
}
}
es geht mir nicht um den befehl das ist einfach es geht mir darum das wen man es grade kaput macht es kommt -
Wie Ich es weiß kann man das ganze mit server.cfg machen
Ich weiß aber nicht, ob das stimmt bzw. ob das funktioniert. -
Wo hast du das denn her?
Du kannst in der server.cfg nichts dergleichen einstellen. -
Wie Ich es weiß kann man das ganze mit server.cfg machen
Ich weiß aber nicht, ob das stimmt bzw. ob das funktioniert.
käse mir ist nicht bekannt das samp so eine fungzion schon hat -
Wie Ich es weiß kann man das ganze mit server.cfg machen
Ich weiß aber nicht, ob das stimmt bzw. ob das funktioniert.Was bitte hat die Server.cfg mit denn Script zu tun ? ouh gott
-
Ich sags noch mal:
Du brauchst eine schleife, die alle Fahrzeuge durchgeht.
Ansonsten wird immer nur ID 0 geprüft. -
Ich sags noch mal:
Du brauchst eine schleife, die alle Fahrzeuge durchgeht.
Ansonsten wird immer nur ID 0 geprüft.
ja glaube ich auch du meinst so ne ?
for(new i; i != MAX_VEHICLES; i++)
{
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health >500)
} -
for(new c = 0; c < MAX_VEHICLES; c++)
{
// deine Abfrage
}
Das ist die Schleife, die Du brauchst. -
Ähnlich.
i ist die vehicleid, nicht vehSo wie es jetzt ist, würde er hunderte male FahrzeugID 0 prüfen
-
ich habe es jetzt so
forward Motorschaden();
public Motorschaden()
{
for(new c = 0; c < MAX_VEHICLES; c++)
{
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health >400)
{
SendClientMessage(playerid,0xFF0000FF,"Debug!");
//ausfürung
}
}
return 1;
} -
Ähnlich.
i ist die vehicleid, nicht vehSo wie es jetzt ist, würde er hunderte male FahrzeugID 0 prüfen
Quatsch.
So, wie ich es geschrieben habe ist es korrekt.
Nichts dergleichen ähnlich oder so, sondern genau so.
// Edit
Statt GetVehicleHealth(veh... muss das C der Schleife eingesetzt werden.
GetVehicleHealth(c, ...
-
Ich hab auch nicht von deiner Schleife gesprochen, sondern von der Schleife von Armin
-
Dann ist's ja in Ordnung.
Damit wurden alle Lösungen genannt.