Alive Counter

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 Community,


    Ich möchte einen Kill Counter machen für ein DD/DM Modus mit Textdraws


    Also z.B. wen es 10 leute sind die Fahren und einer Stirbt das die Zahl runter auf 9 gezählt wird und er dann die anderen Spieler Spectaten muss bis dann alle Tot sind und die Nächste Runde Startet aber ich habe keine ahnung wie ich das Scripten soll ich habe schon zwar etwas angefangen.


    Hier ist mal der Code wie weit ich schon bin.


    new Iterator:DM<MAX_PLAYERS>;


    //OnPlayerDisconnect
    if(Iter_Contains(DM, playerid)) Iter_Remove(DM, playerid);


    //OnPlayerDeath
    if(Iter_Contains(DM, playerid)) Iter_Remove(DM, playerid);
    RoundCheck();
    PlayerSpectatePlayer(playerid, Iter_Random(DM));


    forward RoundCheck();
    public RoundCheck()
    {
    new Count;


    foreach(new x:DM)
    {
    Count++;
    }


    if(Count == 1)
    }


    Und hier ist das Textdraw


    albox1 = TextDrawCreate(640.732177, 326.549041, "usebox");
    TextDrawLetterSize(albox1, 0.000000, 5.976336);
    TextDrawTextSize(albox1, 589.732299, 0.000000);
    TextDrawAlignment(albox1, 1);
    TextDrawColor(albox1, 0);
    TextDrawUseBox(albox1, true);
    TextDrawBoxColor(albox1, -2147483393);
    TextDrawSetShadow(albox1, 0);
    TextDrawSetOutline(albox1, 0);
    TextDrawFont(albox1, 0);


    albox2 = TextDrawCreate(640.066101, 326.963775, "usebox");
    TextDrawLetterSize(albox2, 0.000000, 5.843825);
    TextDrawTextSize(albox2, 590.399719, 0.000000);
    TextDrawAlignment(albox2, 1);
    TextDrawColor(albox2, 0);
    TextDrawUseBox(albox2, true);
    TextDrawBoxColor(albox2, 255);
    TextDrawSetShadow(albox2, 0);
    TextDrawSetOutline(albox2, 0);
    TextDrawFont(albox2, 0);


    Alive = TextDrawCreate(597.700012, 326.542266, "Alive:");
    TextDrawLetterSize(Alive, 0.391665, 1.848888);
    TextDrawAlignment(Alive, 1);
    TextDrawColor(Alive, -1);
    TextDrawSetShadow(Alive, 0);
    TextDrawSetOutline(Alive, 1);
    TextDrawBackgroundColor(Alive, 51);
    TextDrawFont(Alive, 1);
    TextDrawSetProportional(Alive, 1);


    numberal = TextDrawCreate(595.933471, 348.651947, "50");
    TextDrawLetterSize(numberal, 0.748332, 3.259258);
    TextDrawAlignment(numberal, 1);
    TextDrawColor(numberal, -2147483393);
    TextDrawSetShadow(numberal, 0);
    TextDrawSetOutline(numberal, 1);
    TextDrawBackgroundColor(numberal, -1);
    TextDrawFont(numberal, 2);
    TextDrawSetProportional(numberal, 1);


    Ich hoffe ihr Wisst was ich meine also sowas wie in MTA.

    Einmal editiert, zuletzt von JOK3R ()

  • Ich kenne die Funktionen zwar nicht, aber dem Anschein nach dürfte es so passen:
    forward RoundCheck();
    public RoundCheck()
    {
    new Count;
    for(new i=0; i<MAX_PLAYERS; i++) if(Iter_Contains(DM, i)) Count++;
    if(Count == 1)
    {
    //Beenden
    }
    else
    {
    new str[20];
    format(str, sizeof(str), "Alive: %d", Count);
    TextDrawSetString(...);
    }
    return 1;
    }

  • Müsste das dann nicht so sein ?
    forward RoundCheck();
    public RoundCheck()
    {
    new Count;
    for(new i=0; i<MAX_PLAYERS; i++) if(Iter_Contains(DM, i)) Count++;
    if(Count == 1)
    {
    //Beenden
    }
    else
    {
    new str[20];
    format(str, sizeof(str), "%d", Count);
    TextDrawSetString(i,numberal,str);
    }
    return 1;
    }


    Also mit i ? weil wen ja bekomme da einen Error

  • Oh Okay.


    Wen ich auf den Server gehe steht a Alive: 05 aber ich bin ja Alleine also irgwie macht er die zahl nicht auf 01 Hier ist mal ein Screen.
    Sobal ich sterbe ist dann 0 das klappt dann ^^ aber nur das da Halt durch das Textdraw eine 5 steht ist Falsch.


  • Hmm er zeigt immer noch 05 an ist das auch so Richtig ?


    public OnPlayerSpawn(playerid)
    {
    TextDrawShowForPlayer(playerid,albox1);
    TextDrawShowForPlayer(playerid,albox2);
    TextDrawShowForPlayer(playerid,Alive);
    TextDrawShowForPlayer(playerid,numberal);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    TextDrawHideForPlayer(playerid,albox1);
    TextDrawHideForPlayer(playerid,albox2);
    TextDrawHideForPlayer(playerid,Alive);
    TextDrawHideForPlayer(playerid,numberal);
    return 1;
    }

  • Mach die Schleife mal so:
    for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !IsPlayerNPC(i) && Iter_Contains(DM, i)) Count++, printf("i: %d -> Count: %d", i, Count);


    Dann poste was im Server Log steht, wenn es dir da 05 anzeigt. Und warum eigentlich 05? Zeigst du es mit %02d an?