Brauche dringend Hilfe mit Textdraw countdown

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,


    es ist sehr wichtig, dass dieses Problem schnell gelöst wird. Ich habe schon soooo viel ausprobiert, aber ich bekomme es einfach nicht gebacken.
    Ich will, dass sobald ein spieler in einen Checkpoint geht, ein Countdown in einem Textdraw nur für diesen Spieler, der sich im Cp befindet startet und von 20 auf 0 sekunden runterzählt. Jedoch ist dies total verbugt.
    Sobald nämlich mehr als ein Spieler im Server sind, wird die Textdraw nur für einen oder einige spieler angezeigt. Auch zählt der countdown zu schnell runter, sobald mehrere player den cp gleichzeitig betreten.....
    Auch soll der timer bzw. gekillt werden, sobald der besagte spieler den cp wieder verlässt.
    Das ist der Code, den ich habe. Ich kann dieses problem einfach nicht lösen und hoffe auf eure hilfe.
    falls was unverständlich sein sollte, bitte nachfragen.
    Danke schon mal im voraus.



    //at the top of the script


    forward counterzone(playerid);
    new countdownzone[MAX_PLAYERS] = 20;
    new CDONZone[MAX_PLAYERS];


    new Text:MiniCountdown;


    //OnGameModeInit


    MiniCountdown = TextDrawCreate(3.000000, 412.000000, "20");
    TextDrawBackgroundColor(MiniCountdown, 255);
    TextDrawFont(MiniCountdown, 3);
    TextDrawLetterSize(MiniCountdown, 0.939999, 3.900000);
    TextDrawColor(MiniCountdown, -1);
    TextDrawSetOutline(MiniCountdown, 1);
    TextDrawSetProportional(MiniCountdown, 1);
    TextDrawUseBox(MiniCountdown, 0);
    TextDrawBoxColor(MiniCountdown, 1684300900);
    TextDrawTextSize(MiniCountdown, 41.000000, 0.000000);


    //OnPlayerEnterCheckpoint


    CDONZone[playerid] = SetTimerEx("counterzone",990,false,"i",playerid);



    //the timer


    public counterzone(playerid)
    {
    if(countdownzone[playerid] > 0)
    {
    TextDrawShowForPlayer(playerid,MiniCountdown);
    new textformat[85];
    format(textformat,sizeof textformat,"~g~%d",countdownzone[playerid]);
    TextDrawSetString(MiniCountdown,textformat);
    CDONZone[playerid] = SetTimerEx("counterzone",990,false,"i",playerid);
    countdownzone[playerid] --;
    }


    return 1;
    }


    //OnPlayerLeaveCheckpoint


    KillTimer(CDONZone[playerid]);
    countdownzone[playerid] = 20;
    TextDrawHideForPlayer(playerid,MiniCountdown);


  • Musst für jeden Spieler einen eigenen Textdraw erstellen.
    Also new Text:MiniCountdown[MAX_PLAYERS];
    Und dann unter OnPlayerConnect:


    MiniCountdown[playerid] = TextDrawCreate(3.000000, 412.000000, "20");
    TextDrawBackgroundColor(MiniCountdown[playerid], 255);
    TextDrawFont(MiniCountdown[playerid], 3);
    TextDrawLetterSize(MiniCountdown[playerid], 0.939999, 3.900000);
    TextDrawColor(MiniCountdown[playerid], -1);
    TextDrawSetOutline(MiniCountdown[playerid], 1);
    TextDrawSetProportional(MiniCountdown[playerid], 1);
    TextDrawUseBox(MiniCountdown[playerid], 0);
    TextDrawBoxColor(MiniCountdown[playerid], 1684300900);
    TextDrawTextSize(MiniCountdown[playerid], 41.000000, 0.000000);


    Dann sollte das schon funktionieren :)
    MfG
    Evil

  • mhhh, dran hab ich nicht gedacht, vielen dank!! :thumbup:


    Ein kleines Problem würde ich jedoch noch gerne beheben.
    Nur ein einziger Spieler im Server kann diesen Textdraw countdown sehen, wenn er den checkpoint betritt.
    Wenn die anderen spieler den cp betreten, dann sehen die den countdown nicht.
    Wie könte ich das lösen??


    Würde mich sehr über eine antwort freuen.



    MFG, BlackWolf :D