Motorschaden Problem

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
  • Hallo Leute undzwar habe ich folgendes Problem



    Bei folgendem Code


    forward CheckHealth(playerid);
    SetTimer("CheckHealth",1039,true);//Fahrzeug checken
    public CheckHealth(playerid)
    {
    new vid = GetPlayerVehicleID(playerid);
    new engine,lightss,alarm,doors,bonnet,boot,objective;
    for(new i=0;i<sStats[i][sAutos];i++)
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new vehicleid = GetPlayerVehicleID(i);
    new Float:vehiclehp;
    GetVehicleHealth(vehicleid,vehiclehp);
    if(vehiclehp <= 350)
    {
    SendClientMessage(playerid,0xFF6900AA,"Dieses Fahrzeug hat einen Motorschaden! Du kannst nicht mehr weiterfahren.");
    SetVehicleHealth(vehicleid,350.0);
    MotorDown[vehicleid] = 1;
    KillTimer(CheckHealth[playerid]);
    VehicleStarted[vid] = 0;
    PlayerCar[playerid][i][cMSchaden] = 1;
    GetVehicleParamsEx(vid,engine,lightss,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lightss,alarm,doors,bonnet,boot,objective);
    }
    }
    return 1;
    }


    So das sind alle Zeilen, es kommt auch in keiner weiteren Zeile das Wort "CheckHealth" vor.
    Ich brauche eure Hilfe.
    Ihr könnt es so umscripten das es funktioniert, oder mit Tipps geben.
    MFG

  • Schreibe es mal so:
    forward CheckHealth();
    public CheckHealth()
    {
    new engine,lightss,alarm,doors,bonnet,boot,objective,vehicleid,Float:vehiclehp;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    vehicleid = GetPlayerVehicleID(i);
    GetVehicleParamsEx(vehicleid,engine,lightss,alarm,doors,bonnet,boot,objective);
    GetVehicleHealth(vehicleid,vehiclehp);
    if(vehiclehp <= 350 && engine == VEHICLE_PARAMS_ON)
    {
    SendClientMessage(playerid,0xFF6900AA,"Dieses Fahrzeug hat einen Motorschaden! Du kannst nicht mehr weiterfahren.");
    SetVehicleHealth(vehicleid,350.0);
    MotorDown[vehicleid] = 1;
    VehicleStarted[vehicleid] = 0;
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lightss,alarm,doors,bonnet,boot,objective);
    }
    }
    }
    return 1;
    }


  • public CheckHealth()
    {
    new engine,lightss,alarm,doors,bonnet,boot,objective,vehicleid,Float:vehiclehp;
    for(new i=0; i<MAX_PLAYERS; i++)
    for(new j=0;j<sStats[i][sAutos];j++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    vehicleid = GetPlayerVehicleID(i);
    GetVehicleParamsEx(vehicleid,engine,lightss,alarm,doors,bonnet,boot,objective);
    GetVehicleHealth(vehicleid,vehiclehp);
    if(vehiclehp <= 350 && engine == VEHICLE_PARAMS_ON)
    {
    SendClientMessage(i,0xFF6900AA,"Dieses Fahrzeug hat einen Motorschaden! Du kannst nicht mehr weiterfahren.");
    SetVehicleHealth(vehicleid,350.0);
    MotorDown[vehicleid] = 1;
    VehicleStarted[vehicleid] = 0;
    PlayerCar[i][j][cMSchaden] = 1;
    KillTimer(CheckHealth[i]);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lightss,alarm,doors,bonnet,boot,objective);
    }
    }
    }
    return 1;
    }


    Der Fehler ist da wo der KillTimer ist.

  • Ja, klar, das geht so ja auch nicht, deshalb habe ich es weg gemacht.
    Warum hast du den Code verändert? :rolleyes:


    Außerdem geben die Schleifen so keinen Sinn. Versuche es doch mal mit dem Code den ich dir gegeben habe, ohne was zu ändern.



    Hab jetzt wieder alles gechekt, ich habe dem Timer einen Namen gegeben
    autoput[playerid] = SetTimer("CheckHealth",1039,true);//Fahrzeug checken


    und den so gemacht
    KillTimer(autoput[i]);


    Müsste eig klappen oder, errors gibt es keine


    Hab den so genommen wie du es gemacht hast, aber da musste noch ein killtimer rein und musste noch gespeichert werden in der datenbank-

  • Der Timer soll ja aber für die anderen Spieler auf dem Server noch laufen, oder hast du nur 1 Fahrzeug auf dem Server? ;)
    Dass es den Spieler nicht zuspammt, habe ich hiermit abgefangen:
    if(vehiclehp <= 350 && engine == VEHICLE_PARAMS_ON)


    Die Nachricht kommt nur, wenn der Motor an ist, du brauchst den Timer also nicht zu killen.