1 Probleme (Textdraw anzeige)

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
  • Jetzt hast du drei mal was anderes erzählt. Wie willst du es denn haben wenn du einsteigst und wenn du aussteigst? Soll sich nichts ändern?
    Wenn ja, dann musst du die if Abfragen wieder rein machen und einfach SetVehicleParamsEx weg lassen.


    Ja, habe ich gemacht jedoch ist ein bug: Obwohl mein Motor/Licht läuft bzw. An ist , steht beim Textdraw aus ABER nur wenn ich aussteige und wieder einsteige. -> derzeitig ist der Code so:



    if(newstate == PLAYER_STATE_DRIVER)
    {
    new string[128], vID, Float:vhealth, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;
    PlayerTextDrawShow(playerid,Textdraw11[playerid]);
    PlayerTextDrawShow(playerid,Textdraw12[playerid]);
    PlayerTextDrawShow(playerid,Textdraw13[playerid]);
    PlayerTextDrawShow(playerid,Textdraw14[playerid]);
    PlayerTextDrawShow(playerid,Textdraw15[playerid]);
    //TextDrawShowForPlayer(playerid,Textdraw16);
    PlayerTextDrawShow(playerid,Textdraw17[playerid]);
    PlayerTextDrawShow(playerid,Textdraw18[playerid]);
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    vID = GetPlayerVehicleID(playerid);
    //Motor an/ausschalten
    if(tmp_engine == 1)
    {
    tmp_engine = 1;
    format(string, sizeof(string), "Motor: ~g~An");
    }
    else
    {
    tmp_engine = 0;
    format(string, sizeof(string), "Motor: ~r~Aus");
    }
    PlayerTextDrawSetString(playerid,Textdraw15[playerid] ,string);
    if(tmp_lights == 1)
    {
    tmp_lights = 1;
    format(string, sizeof(string), "Licht: ~g~An");
    }
    else
    {
    tmp_lights = 0;
    format(string, sizeof(string), "Licht: ~r~Aus");
    }
    PlayerTextDrawSetString(playerid, Textdraw17[playerid] ,string);

    format(string, sizeof(string), "Zustand: %i", GetVehicleHealth(vID, vhealth));
    PlayerTextDrawSetString(playerid,Textdraw14[playerid] ,string);

    }
    if(oldstate == PLAYER_STATE_DRIVER)
    {
    PlayerTextDrawHide(playerid, Textdraw11[playerid]);
    PlayerTextDrawHide(playerid, Textdraw12[playerid]);
    PlayerTextDrawHide(playerid, Textdraw13[playerid]);
    PlayerTextDrawHide(playerid, Textdraw14[playerid]);
    PlayerTextDrawHide(playerid, Textdraw15[playerid]);
    //TextDrawShowForPlayer(playerid, Textdraw16);
    PlayerTextDrawHide(playerid, Textdraw17[playerid]);
    PlayerTextDrawHide(playerid, Textdraw18[playerid]);
    }

    +
    Bild: http://www.fotos-hochladen.net/uploads/samp0113qe2nar74p.png


    Und die zweite sache , ich will mein Schaden vom Fahrzeug ablesen und habe mir deswegen einen Timer erstellt:



    public autoschadenanzeige(playerid)
    {
    new string[128], vID, Float:vhealth;
    vID = GetPlayerVehicleID(playerid);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    format(string, sizeof(string), "Zustand: %f", GetVehicleHealth(vID, vhealth));
    PlayerTextDrawSetString(playerid,Textdraw14[playerid] ,string);
    }
    return 1;
    }


    jedoch steht immer nur 0.00000... siehe Screen(oben).

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    2 Mal editiert, zuletzt von [GeD]Max ()

  • 1.)
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new string[128], vID, Float:vhealth, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective;
    PlayerTextDrawShow(playerid,Textdraw11[playerid]);
    PlayerTextDrawShow(playerid,Textdraw12[playerid]);
    PlayerTextDrawShow(playerid,Textdraw13[playerid]);
    PlayerTextDrawShow(playerid,Textdraw14[playerid]);
    PlayerTextDrawShow(playerid,Textdraw15[playerid]);
    //TextDrawShowForPlayer(playerid,Textdraw16);
    PlayerTextDrawShow(playerid,Textdraw17[playerid]);
    PlayerTextDrawShow(playerid,Textdraw18[playerid]);
    vID = GetPlayerVehicleID(playerid); //vID muss als erstes hin

    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);

    if(tmp_engine == 1) format(string, sizeof(string), "Motor: ~g~An");
    else format(string, sizeof(string), "Motor: ~r~Aus");

    PlayerTextDrawSetString(playerid,Textdraw15[playerid] ,string);

    if(tmp_lights == 1) format(string, sizeof(string), "Licht: ~g~An");
    else format(string, sizeof(string), "Licht: ~r~Aus");

    PlayerTextDrawSetString(playerid, Textdraw17[playerid] ,string);

    GetVehicleHealth(vID, vhealth);
    format(string, sizeof(string), "Zustand: %0.2f", vhealth);
    PlayerTextDrawSetString(playerid,Textdraw14[playerid] ,string);

    }
    if(oldstate == PLAYER_STATE_DRIVER)
    {
    PlayerTextDrawHide(playerid, Textdraw11[playerid]);
    PlayerTextDrawHide(playerid, Textdraw12[playerid]);
    PlayerTextDrawHide(playerid, Textdraw13[playerid]);
    PlayerTextDrawHide(playerid, Textdraw14[playerid]);
    PlayerTextDrawHide(playerid, Textdraw15[playerid]);
    //TextDrawShowForPlayer(playerid, Textdraw16);
    PlayerTextDrawHide(playerid, Textdraw17[playerid]);
    PlayerTextDrawHide(playerid, Textdraw18[playerid]);
    }

    Die Werte musst du nicht nochmal setzen, das habe ich dir weg gemacht. Dann wird das ganze etwas überschaubarer. Außerdem musst du GetPlayerVehicleID vor GetVehicleParamsEx aufrufen.


    2.)
    public autoschadenanzeige()
    {
    new string[128], vID, Float:vhealth;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    vID = GetPlayerVehicleID(i);
    GetVehicleHealth(vID, vhealth);
    format(string, sizeof(string), "Zustand: %0.2f", vhealth);
    PlayerTextDrawSetString(i,Textdraw14[i] ,string);
    }
    return 1;
    }


    Jetzt sollte eigentlich alles passen.



  • Alles Klar , danke es geht jetzt endlich *-*


    Aber ein paar Fragen hätte ich noch:



    1.)Wie stelle ich dass so ein , dass z.b. Ab Schaden 300.00 es rot angezeigt wird?


    2.) Warum geht mein makeadmin befehl nicht mehr?



    ocmd:makeadmin(playerid,params[]) //bearbeiten
    {
    new pID,string[256],adminname[MAX_PLAYERS],spielername[MAX_PLAYERS],arank;
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(playerid, spielername, sizeof(spielername));
    if(!IsPlayerConnected(playerid))return SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Die angegebende SpielerID ist nicht online!");
    SpielerInfo[playerid][pAlevel] = arank;
    if(arank < 0 || arank > 7) return SendClientMessage(playerid,Rot, "[FEHLER] {FFFFFF}Du kannst nur das Adminlevel von 0 - 7 vergeben!");
    if(SpielerInfo[playerid][pAlevel] == 8)
    {
    if(SpielerInfo[playerid][pAlevel] == 0)
    {
    format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich aus dem Team entfernt!",adminname);
    format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s aus dem Team entfernt!",adminname,spielername);
    SendClientMessage(playerid,Rot,string);
    SendAdminMessage(Rot,string);
    SpielerInfo[pID][pAlevel] = 0;
    SavePlayer(playerid);
    }
    else if(SpielerInfo[playerid][pAlevel] >= 1)
    {
    new rankstr[64];
    if(SpielerInfo[playerid][pAlevel] == 1)
    {
    rankstr = "Supporter";
    }
    else if(SpielerInfo[playerid][pAlevel] == 2)
    {
    rankstr = "Administrator Level 1";
    }
    else if(SpielerInfo[playerid][pAlevel] == 3)
    {
    rankstr = "Administrator Level 2";
    }
    else if(SpielerInfo[playerid][pAlevel] == 4)
    {
    rankstr = "Administrator Level 3";
    }
    else if(SpielerInfo[playerid][pAlevel] == 5)
    {
    rankstr = "High Administrator";
    }
    else if(SpielerInfo[playerid][pAlevel] == 6)
    {
    rankstr = "Entwickler";
    }
    else if(SpielerInfo[playerid][pAlevel] == 7)
    {
    rankstr = "Stelv. Serverleiter";
    }
    format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich zum %s befördert!",adminname,rankstr);
    format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s zum %s befördert!",adminname,spielername,rankstr);
    SendClientMessage(playerid,Rot,string);
    SendAdminMessage(Rot,string);
    SpielerInfo[pID][pAlevel] = arank;
    SavePlayer(playerid);
    }
    return 1;
    }
    return 1;
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • 1.)
    public autoschadenanzeige()
    {
    new string[128], vID, Float:vhealth;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInAnyVehicle(i))continue;
    vID = GetPlayerVehicleID(i);
    GetVehicleHealth(vID, vhealth);
    if(vhealth > 300) format(string, sizeof(string), "Zustand: %0.2f", vhealth);
    else format(string, sizeof(string), "Zustand: ~r~%0.2f~w~", vhealth);
    PlayerTextDrawSetString(i,Textdraw14[i] ,string);
    }
    return 1;
    }


    2.) Erstelle bitte einen neuen Thread und erkläre dein Problem. Nur "geht nicht" hilft uns nicht, den Fehler zu finden. Du solltest schon erklären was nicht geht.



  • Alles klar danke dir :love:


    //CLOSE

    Mit freundlichen Grüßen
    [KoSoVa] :klugs: