Textdraw wird nur für ID 0 angezeigt

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
    ich habe eben in meinen vorhandenen Blitzer Befehl ein Blitz versucht einzubauen
    Ein weißes textdraw was für 1 Sec sichtbar wird


    Leider wird dieses NUR für ID 0 angezeigt


    alle anderen bekommen es nicht, werden aber auch nicht geblitzt


    TextDrawShowForPlayer(i,BlitzerDraw[i]);
    SetTimer("BlitzDelete",1000,false);



    Hier dazu mal mein befehl




    Spoiler anzeigen
    forward Blitzer_Timer();
    public Blitzer_Timer()
    {
    new save, strafe, speed;
    //for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    save = GetPVarInt(i, "BlitzPause");
    if(save > 0)
    {
    save--;
    SetPVarInt(i, "BlitzPause", save);
    continue;
    }
    if(!IsPlayerInAnyVehicle(i) || IsPlayerNPC(i)) continue;
    //for(new i = 0; i < sizeof(Blitzer); i++)
    {
    if(Blitzer[i][Erstellt] == 1)
    {
    if(IsPlayerInRangeOfPoint(i, Blitzer[i][eRadius], Blitzer[i][BlitzerX], Blitzer[i][BlitzerY], Blitzer[i][BlitzerZ]))
    {
    new playerState = GetPlayerState(i);
    if(playerState == PLAYER_STATE_PASSENGER)return 0;
    speed = ErmittleGeschwindigkeit(i,true);
    if(speed > Blitzer[i][Geschwindigkeit])
    {
    new string[128];
    // Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
    SetPVarInt(i, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
    // Strafe für Spieler
    strafe = (speed*2) - Blitzer[i][Geschwindigkeit];
    PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
    GivePlayerMoney(i, -strafe);
    // Text für Spieler
    SendClientMessage(i, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
    format(string,sizeof(string), "Du bist %d km/h gefahren und musst %d€ Bußgeld bezahlen.", speed, strafe);
    SendClientMessage(i, 0xFF6347AA, string);
    TextDrawShowForPlayer(i,BlitzerDraw[i]);
    SetTimer("BlitzDelete",1000,false);
    }
    }
    }
    }
    }
    return 1;
    }


    und mein Textdraw welches ich unter OnPlayerConnect erstelle


    BlitzerDraw[playerid] = TextDrawCreate(643.000000, 4.000000, "_");
    TextDrawBackgroundColor(BlitzerDraw[playerid], 255);
    TextDrawFont(BlitzerDraw[playerid], 1);
    TextDrawLetterSize(BlitzerDraw[playerid], 0.500000, 51.000000);
    TextDrawColor(BlitzerDraw[playerid], -1);
    TextDrawSetOutline(BlitzerDraw[playerid], 0);
    TextDrawSetProportional(BlitzerDraw[playerid], 1);
    TextDrawSetShadow(BlitzerDraw[playerid], 1);
    TextDrawUseBox(BlitzerDraw[playerid], 1);
    TextDrawBoxColor(BlitzerDraw[playerid], -144);
    TextDrawTextSize(BlitzerDraw[playerid], -4.000000, 20.000000);



    Danke für jede Hilfe

  • Schreibe es mal so:
    forward Blitzer_Timer();
    public Blitzer_Timer()
    {
    new save, strafe, speed;
    //for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    save = GetPVarInt(i, "BlitzPause");
    if(save > 0)
    {
    save--;
    SetPVarInt(i, "BlitzPause", save);
    continue;
    }
    if(!IsPlayerInAnyVehicle(i) || IsPlayerNPC(i)) continue;
    for(new b = 0; b < sizeof(Blitzer); b++)
    {
    if(Blitzer[b][Erstellt] == 1)
    {
    if(IsPlayerInRangeOfPoint(i, Blitzer[b][eRadius], Blitzer[b][BlitzerX], Blitzer[b][BlitzerY], Blitzer[b][BlitzerZ]))
    {
    new playerState = GetPlayerState(i);
    if(playerState == PLAYER_STATE_PASSENGER)return 0;
    speed = ErmittleGeschwindigkeit(i,true);
    if(speed > Blitzer[b][Geschwindigkeit])
    {
    new string[128];
    // Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
    SetPVarInt(i, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
    // Strafe für Spieler
    strafe = (speed*2) - Blitzer[b][Geschwindigkeit];
    PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
    GivePlayerMoney(i, -strafe);
    // Text für Spieler
    SendClientMessage(i, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
    format(string,sizeof(string), "Du bist %d km/h gefahren und musst %d€ Bußgeld bezahlen.", speed, strafe);
    SendClientMessage(i, 0xFF6347AA, string);
    TextDrawShowForPlayer(i,BlitzerDraw[i]);
    SetTimer("BlitzDelete",1000,false);
    }
    }
    }
    }
    }
    return 1;
    }


    Außerdem musst du das Textdraw nicht für jeden Spieler erstellen, da du dessen String ja nicht änderst. Es reicht wenn du es einmal (ohne Array) bei OnGameModeInit erstellst.