Auto Soll nicht explodieren

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
  • Hey ich habe hier ein Kleines System:


    [Timer]:
    SetTimer("KaputtesAutoTimer", 1000, 1);



    [Code]:
    public KaputtesAutoTimer(playerid)
    {
    new Float:health;
    new string[256];
    new vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehicleHealth(vehicleid, health);
    format(string, 256, "~n~~n~~n~~n~~n~~n~~g~Auto Schaden : ~w~%.0f",health);
    GameTextForPlayer(playerid, string, 2000, 5);
    }


    new VID, Float:h_vid;
    if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
    {
    VID = GetPlayerVehicleID(playerid);
    GetVehicleHealth(VID, h_vid);
    if(h_vid < = 220 && PlayerMessageMotorschaden[playerid] == false)
    {
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, 0xFF6900AA, " BoardComputer: Dieses Fahrzeug hat nun einen Motorschaden.");
    SendClientMessage(playerid, 0xFF6900AA, " BoardComputer: Rufe bitte das Ordnungsamt oder einen Mechanicker.");
    PlayerMessageMotorschaden[playerid] = true;
    SetVehicleHealth(vehicleid, 220.0);
    } }
    }



    [Problem]:
    Wenn ich nun ich den Autoschaden unter 220 habe sollte der motor ausgehen , Eine nachricht kommen, das auto soll wieder auf 220 gefixt
    werden und nicht mehr anmachbar.
    Aber es fixt nicht. es kommt keine Message und der Motor geht nicht aus
    was ist hier falscH?

  • Zum Ausschalten des Motors einfach SetVehicleParamsEx benutzen.
    Außerdem fragst du hier ab wenn der Schaden 220 X groß ist oder weniger. Du musst dann < 220 nehmen. (Das trägt aber nichts zum Problem bei, nur als Tipp. Den wenn der Schaden 220 X beträgt. Wieso sollte man dann auf 220 Reparieren?


    PS: Rücke bitte dein Code ordentlich ein! So kann man das kaum Lesen ;) :S


  • public KaputtesAutoTimer(playerid)
    {
    new Float:health, string[45], vehicleid = GetPlayerVehicleID(playerid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehicleHealth(vehicleid, health);
    format(string, 45, "~n~~n~~n~~n~~n~~n~~g~Auto Schaden : ~w~%.0f",health);
    GameTextForPlayer(playerid, string, 2000, 5);
    }
    new VID, Float:h_vid;
    if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid)) //Mein Tipp: Fahrrad Auschließen, diese bekommen keinen Schaden! ;-)
    {
    VID = GetPlayerVehicleID(playerid);
    GetVehicleHealth(VID, h_vid);
    if(h_vid < 220 && PlayerMessageMotorschaden[playerid] == false)
    {
    SendClientMessage(playerid, 0xFF6900AA, " BoardComputer: Dieses Fahrzeug hat nun einen Motorschaden.");
    SendClientMessage(playerid, 0xFF6900AA, " BoardComputer: Rufe bitte das Ordnungsamt oder einen Mechanicker.");
    SetVehicleParamsEx(....); //Hier musst du das mal ausfüllen.
    PlayerMessageMotorschaden[playerid] = true;
    SetVehicleHealth(vehicleid, 220.0);
    }
    }
    }


    Zitat

    Und ich habe doch < = 220


    Wenn der schaden unter 220ist soll er es repairieren

    1. Du fragst damit folgendes ab: Weniger oder gleich.
    Wenn du aber nur "<" machst fragst du so ab: Weniger als


    2. Schau mal bei mir, ich habe das jetzt hier gemacht. Einrücken nicht vergessen.


    EDIT: 3. Wo hast du den Timer den stehen? DU musst diesen auch aufrufen ;) PS: Dieser ist auch falsch. Soll ich dir über Teamviewer Helfen?


    Edit: Hier ist mal der Timer wie du ihn brauchst. Du übergibst den Parameter "playerid" nicht an den public. Ich kann dir da gerne Helfen.


    So müsste der Timer richtig ausschauen:


    SetTimerEx("KaputtesAutoTimer",1000,1,"i",playerid);
    Ob ich da jetzt die einzelnen Parameter vertauscht habe kann ich gerade garnicht sagen, musst mal schauen. Ich habe schon lange nicht damit gearbeitet und das ist nur noch aus dem Kopf.