Unfall Bug

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,


    nach langer langer suche nach dem Fehler habe ich mich entschlossen euch zu fragen da ich nun ziemlich Ratlos bin
    also wenn ich einen unfall hatte bzw. mein Fahrzeug im Wasser versenkt habe wir es respawnt mit einem Motorschaden oder
    sobalt das Fahrzeug einen Zustand von 300 erreicht hat bekommt es ein Motorschaden
    dies wird natürlich in der Fahrzeugdatei gespeichert
    jetzt wenn ich einen Server restart mache wo anschließend alle Fahrzeuge neugespawnt werden
    wir auch das Fahrzeug mit einem Motorschaden gespawnt jedoch kommt durch das Unfall script
    immer eine Meldung
    "Du hattest einen Unfall, rufe das ADAC und die Polizei"
    jedoch ist man noch gar nicht gefahren :/
    hier einmal das Script


    public OnVehicleHealthChange(vehicleid, Float:newhealth, Float:oldhealth, Float:difference, bool:health_gained, driver)
    {
    if(health_gained == false)
    {
    if(difference >= 99)
    {
    SCM(driver,COLOR_LIGHTRED,"Du hattest einen Unfall, rufe das ADAC und die Polizei");
    Unfall[driver] = 1;
    return SetTimerEx("Ausrollen", 500, false, "i", driver);
    }
    }
    return 1;
    }


    mfg Dedi


    //keiner ne Ahnung??



    Einmal editiert, zuletzt von Tomi93 ()

  • Ich würde sagen es liegt am Differenz Wert , denk mal etwas nach also, das Auto verliert Energie ist die Differenz zwischen
    dem neuen & alten Status größer als 99 so wird eine Aktion ausgelöst , also startest du den Server neu sind alle Autos auf Status Energie 1000.0 oder int 100
    so ist die Differenz zwischen dem alten und neuen Wert größer als 99 , hatte das Auto jetzt 300.0 auf Rationaler Basis und hat jetzt 1000.0 auf Rationaler Basis so ist die Differenz zwischen den Werten höher als 99.0

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • aber ich habe das ja so eingestellt wenn das Auto mit Motorschaden (300 Zustand) spawnt
    schon schwarz Raucht und den Zustand 300 hat bevor man drin sitzt


    Hier mal das wirklcih kommplette script :/


    public OnPlayerUpdate(playerid)
    {
    new gCurVeh = GetPlayerVehicleID(playerid);
    if(gCurVeh)
    {
    new Float:tempHealth;
    GetVehicleHealth(gCurVeh, tempHealth);
    if(tempHealth != gVehHealth[gCurVeh])
    {
    if(tempHealth < gVehHealth[gCurVeh]) OnVehicleHealthChange(gCurVeh, tempHealth, gVehHealth[gCurVeh], gVehHealth[gCurVeh] - tempHealth,false,playerid);
    if(tempHealth > gVehHealth[gCurVeh]) OnVehicleHealthChange(gCurVeh, tempHealth, gVehHealth[gCurVeh], tempHealth-gVehHealth[gCurVeh],true,playerid);
    GetVehicleHealth(gCurVeh, gVehHealth[gCurVeh]);
    }
    }
    return 1;
    }


    public OnVehicleHealthChange(vehicleid, Float:newhealth, Float:oldhealth, Float:difference, bool:health_gained, driver)
    {
    if(health_gained == false)
    {
    if(difference >= 99)
    {
    SCM(driver,COLOR_LIGHTRED,"Du hattest einen Unfall, rufe das ADAC und die Polizei");
    Unfall[driver] = 1;
    return SetTimerEx("Ausrollen", 500, false, "i", driver);
    }
    }
    return 1;
    }


    public Ausrollen(playerid)
    {
    TPC(playerid,false);
    return 0;
    }


    mfg Dedi

  • So hab mal eine andere Variante gebastelt , sollte seinen zweck erfüllen...



    Oben ins Skript...


    enum datas
    {
    Float:nHealth,
    Float:oldh,
    bool:checked,
    }
    new VehicleDTA[MAX_VEHICLES][datas];
    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicle = GetPlayerVehicleID(playerid);
    if(!VehicleDTA[vehicle][checked])
    {
    GetVehicleHealth(vehicle,VehicleDTA[vehicle][oldh]);
    VehicleDTA[vehicle][checked]=true;
    }
    else
    {
    GetVehicleHealth(vehicle,VehicleDTA[vehicle][nHealth]);
    new Float:dif = VehicleDTA[vehicle][oldh] - VehicleDTA[vehicle][nHealth];
    OnVehicleLostHealth(playerid,vehicle,dif);
    VehicleDTA[vehicle][checked]=false;
    }
    }
    return 1;
    }
    forward OnVehicleLostHealth(playerid,vehicleid,Float:difval);
    public OnVehicleLostHealth(playerid,vehicleid,Float:difval)
    {
    if(difval >=100)
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Wert Erreicht!"); /* Hier kannst du das Fahrzeug bzw. den Spieler Außer Gefecht setzen
    und ihm die Nachricht senden */
    }
    return 1;
    }


    Ich hoffe es hilft dir weiter ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion