Textdraw Problem

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
  • Hey,
    ich habe ein DM gemacht, wenn man ein DM Betritt soll sich unten eine Leiste verändern bzw. verschwinden und eine neue erscheinen.
    Die Leiste beinhaltet die Kills des Spielerts etc´.
    Aber leider schmieren, beim aktualiesieren der TextDraw alle anderen Textdraws ab
    Screen:

    So sollte es eigentlich aussehen


    Dm Command
    dcmd_dm1(playerid, params[])
    {
    #pragma unused params
    if(dma[playerid] == 1) return SendClientMessage(playerid,Rot,"Du bist bereits in einem Deathmatch!");
    new String[200];
    dm[0] ++;
    dma[playerid] = 1;
    DM1[playerid] = 1;
    dmupdate();
    TextDrawHideForPlayer(playerid, LA[playerid]);
    TextDrawHideForPlayer(playerid, Leiste);


    DMT1[playerid] = TextDrawCreate(2.000000, 437.000000, "~y~www.~r~SR-Clan~y~.de ~y~Kills:~r~0 ~y~Tode:~r~0 ~y~Killserie:~r~0 ~y~DM Siege:~r~0");
    TextDrawBackgroundColor(DMT1[playerid], 255);
    TextDrawFont(DMT1[playerid], 2);
    TextDrawLetterSize(DMT1[playerid], 0.500000, 1.000000);
    TextDrawColor(DMT1[playerid], 255);
    TextDrawSetOutline(DMT1[playerid], 0);
    TextDrawSetProportional(DMT1[playerid], 1);
    TextDrawSetShadow(DMT1[playerid], 1);
    TextDrawUseBox(DMT1[playerid], 1);
    TextDrawBoxColor(DMT1[playerid], -589505502);
    TextDrawTextSize(DMT1[playerid], 711.000000, 0.000000);
    TextDrawSetSelectable(DMT1[playerid], false);
    TextDrawShowForPlayer(playerid, DMT1[playerid]);

    SetPlayerVirtualWorld(playerid, 1);
    format(String,200,">> %s hat das dm1 betreten (/dm1)<<", SpielerName(playerid));
    SendClientMessageToAll(Gelb,String);
    DMRandom[0] = random(3);
    switch(DMRandom[0])
    {
    case 0:
    {
    SetPlayerPos(playerid, 1387.9513,2190.0144,11.0234);
    }
    case 1:
    {
    SetPlayerPos(playerid, 1391.1406,2109.3345,11.0156);
    }
    case 2:
    {
    SetPlayerPos(playerid, 1306.1323,2108.0132,11.0156);
    }
    case 3:
    {
    SetPlayerPos(playerid, 1334.8402,2136.6853,11.0156);
    }
    }
    SendClientMessage(playerid, 0xFFFFFFAA, "Tippe /exit um das DM zu verlassen!"); //Nachricht für Player wie man DM verlässt
    GivePlayerWeapon(playerid, 26, 5000);
    return 1;
    }


    Update


    forward dmt1update(playerid);
    public dmt1update(playerid)
    {
    new string[100];
    format(string, sizeof(string),"~y~f~r~x~y~L ~r~ll ~y~Kills:~r~%d ~y~Tode:~r~%d ~y~KD:~r~%d ~y~Killserie:~r~%d ~y~DMSiege:~r~%d",dm1kills[playerid], dm1tode[playerid], dm1kills[playerid]/dm1tode[playerid], ukills[playerid], Spieler[playerid][dm1siege]);
    TextDrawSetString(DMT1[playerid],string);
    }


    OnPlayerDeath
    if(DM1[playerid] == 1){
    TDM1Update(playerid);
    TDM1Update(killerid);
    dm1kills[killerid] ++;
    dm1tode[playerid] ++;
    if(dm1kills[killerid] == 15){
    new string[60];
    format(string,60,">>Deathmatch<< %s hat das DM1 Gewonnen!", SpielerName(killerid));
    SendClientMessageToAll(Gelb, string);
    GivePlayerMoney(killerid, 10000);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    dm1kills[i] = 0;
    dm1tode[i] = 0;
    }
    }
    }


    Ich habe weder error´s noch warnings im script.
    Hilfe???


    lg
    Flash

  • OnPlayerConnect:

    DMT1[playerid] = TextDrawCreate(2.000000, 437.000000, "~y~www.~r~SR-Clan~y~.de ~y~Kills:~r~0 ~y~Tode:~r~0 ~y~Killserie:~r~0 ~y~DM Siege:~r~0");
    TextDrawBackgroundColor(DMT1[playerid], 255);
    TextDrawFont(DMT1[playerid], 2);
    TextDrawLetterSize(DMT1[playerid], 0.500000, 1.000000);
    TextDrawColor(DMT1[playerid], 255);
    TextDrawSetOutline(DMT1[playerid], 0);
    TextDrawSetProportional(DMT1[playerid], 1);
    TextDrawSetShadow(DMT1[playerid], 1);
    TextDrawUseBox(DMT1[playerid], 1);
    TextDrawBoxColor(DMT1[playerid], -589505502);
    TextDrawTextSize(DMT1[playerid], 711.000000, 0.000000);
    TextDrawSetSelectable(DMT1[playerid], false);



    dcmd_dm1(playerid, params[])
    {
    #pragma unused params
    if(dma[playerid] == 1) return SendClientMessage(playerid,Rot,"Du bist bereits in einem Deathmatch!");
    new String[200];
    dm[0] ++;
    dma[playerid] = 1;
    DM1[playerid] = 1;
    dmupdate();
    TextDrawHideForPlayer(playerid, LA[playerid]);
    TextDrawHideForPlayer(playerid, Leiste);
    TextDrawShowForPlayer(playerid, DMT1[playerid]);

    SetPlayerVirtualWorld(playerid, 1);
    format(String,200,">> %s hat das dm1 betreten (/dm1)<<", SpielerName(playerid));
    SendClientMessageToAll(Gelb,String);
    DMRandom[0] = random(3);
    switch(DMRandom[0])
    {
    case 0:
    {
    SetPlayerPos(playerid, 1387.9513,2190.0144,11.0234);
    }
    case 1:
    {
    SetPlayerPos(playerid, 1391.1406,2109.3345,11.0156);
    }
    case 2:
    {
    SetPlayerPos(playerid, 1306.1323,2108.0132,11.0156);
    }
    case 3:
    {
    SetPlayerPos(playerid, 1334.8402,2136.6853,11.0156);
    }
    }
    SetTimerEx("dmt1update", 1000, true ,"i", playerid); //timer damit er die textdraw updated
    SendClientMessage(playerid, 0xFFFFFFAA, "Tippe /exit um das DM zu verlassen!"); //Nachricht für Player wie man DM verlässt
    GivePlayerWeapon(playerid, 26, 5000);
    return 1;
    }



    forward dmt1update(playerid);
    public dmt1update(playerid)
    {
    new string[100];
    format(string, sizeof(string),"~y~f~r~x~y~L ~r~ll ~y~Kills:~r~%d ~y~Tode:~r~%d ~y~KD:~r~%d ~y~Killserie:~r~%d ~y~DMSiege:~r~%d",dm1kills[playerid], dm1tode[playerid], dm1kills[playerid]/dm1tode[playerid], ukills[playerid], Spieler[playerid][dm1siege]);
    TextDrawSetString(DMT1[playerid],string);
    }

  • Genau so habe ich es gemacht, hat mir aber auch nicht viel gebracht. Könnte es evl. an einen der anderen Textdraws liegen? Zum Beispiel Die DM Leiste anzeigt wie viel spieler in welchen dm sind?


    lg

  • Hatte gerade eben mal Versucht es beim Command zu updaten und daraufhin ging das ganze dm nicht mehr, danach habe ich die KD raus genommen und siehe da, es funktioniert! Tausend Dank an Jeffry und firestormZ die mir so tatenkräftig geholfen haben :D

  • jz weis ich warum das nicht ging :D kannst KD wieder einbauen, wenn du die kills durch tode teilst, kommt eine Dezimalzahl raus also nen Float, und du hast den Parameter %d genommen, da muss %f rein :))


    //edit: es wird ne lange kommazahl rauskommen, deswegen mach das hier :


    "...~y~KD:~r~%.2f..." //wird auf zwei stellen nach dem komma gerundet ^^

    Einmal editiert, zuletzt von firestormZ ()

  • Musst nicht rausnehmen, kannste so machen:


    forward dmt1update(playerid);
    public dmt1update(playerid)
    {
    new string[200];
    new tmptod = dm1tode[playerid];
    if(tmptod==0) tmptod=1;
    format(string, sizeof(string),"~y~f~r~x~y~L ~r~ll ~y~Kills:~r~%d ~y~Tode:~r~%d ~y~KD:~r~%0.2f ~y~Killserie:~r~%d ~y~DMSiege:~r~%d",dm1kills[playerid], dm1tode[playerid], float(dm1kills[playerid])/float(tmptod), ukills[playerid], Spieler[playerid][dm1siege]);
    TextDrawSetString(DMT1[playerid],string);
    }