Death wird nicht hoch gezählt

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 hab eine Frage. Ich will wenn ich sterbe, dass beim Textdraw dann der Tod auf 1 gestellt wird, was leider bei mir nicht funktioniert:
    ocmd:deagle(playerid,params[])
    {
    if(onDeagle[playerid] == 0)
    {
    onDeagle[playerid] = 1;
    new string[128];
    format(string,sizeof(string),"Du betretest die Arena: Deagle.");
    SendClientMessage(playerid,0x00D400FF,string);
    SetPlayerPos(playerid,2169.461181,1618.798339,999.976562);
    SetPlayerInterior(playerid,1);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,24,500);
    NODM[playerid] = 0;

    PlayerTextDrawShow(playerid,deagle0[playerid]);
    PlayerTextDrawShow(playerid,deagle1[playerid]);
    PlayerTextDrawShow(playerid,deagle2[playerid]);
    PlayerTextDrawShow(playerid,deagle3[playerid]);
    PlayerTextDrawShow(playerid,deagle4[playerid]);


    new string2[128];
    format(string2,sizeof(string2),"Kills: %i",DKill[playerid]);
    PlayerTextDrawSetString(playerid, deagle2[playerid], string2);

    new string3[128];
    format(string3,sizeof(string3),"Tode: %i",DDeath[playerid]);
    PlayerTextDrawSetString(playerid, deagle3[playerid], string3);
    return 1;
    }
    else
    {
    SCM(p,ROT,"[ANTI-ARENA]: Du bist schon in einer Arena. Benutze /l.");
    return 1;
    }
    }
    if(onDeagle[playerid] == 1)
    {
    DKill[killerid] ++;
    DDeath[playerid] ++;
    return 1;
    }

  • Ich sehe hier keinen Fehler.
    Wobei ich nicht verstehe warum du die Tode etc. nur hochzählst wenn er in Deagle ist?




    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(onDeagle[playerid] == 1)
    {


    DKill[killerid] ++;
    DDeath[playerid] ++;
    new string[128];
    format(string,sizeof(string),"Kills: %i",DKill[playerid]);
    PlayerTextDrawSetString(playerid, deagle2[playerid], string);

    format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
    PlayerTextDrawSetString(playerid, deagle3[playerid], string);
    return 1;
    }
    }

  • Weil er die nur vom Deagle her zählt. wenn es dann funktioniert, werde ich es ja beim /dm machen.
    Damit er eine übersicht hat wie viele er getötet hat und wie viel er gestorben ist.


    //EDIT
    Wie update ich die Textdraws?

  • public OnPlayerDeath(playerid, killerid, reason)
    {
    if(onDeagle[playerid] == 1)
    {
    DKill[killerid] ++;
    DDeath[playerid] ++;
    new string[128];
    format(string,sizeof(string),"Kills: %i",DKill[playerid]);
    PlayerTextDrawSetString(playerid, deagle2[playerid], string);

    format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
    PlayerTextDrawSetString(playerid, deagle3[playerid], string);
    return 1;
    }
    }

  • Weil er die nur vom Deagle her zählt. wenn es dann funktioniert, werde ich es ja beim /dm machen.
    Damit er eine übersicht hat wie viele er getötet hat und wie viel er gestorben ist.


    //EDIT
    Wie update ich die Textdraws?


    Du setzt nen Timer oder nen PlayerTimer und updatest den Textdraw..


    //E
    Sollte so klappen:
    //Ganz oben
    forward DeagleTimer(playerid);


    ocmd:deagle(playerid,params[])
    {
    if(onDeagle[playerid] == 0)
    {
    onDeagle[playerid] = 1;
    new string[128];
    format(string,sizeof(string),"Du betretest die Arena: Deagle.");
    SendClientMessage(playerid,0x00D400FF,string);
    SetPlayerPos(playerid,2169.461181,1618.798339,999.976562);
    SetPlayerInterior(playerid,1);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,24,500);
    NODM[playerid] = 0;

    PlayerTextDrawShow(playerid,deagle0[playerid]);
    PlayerTextDrawShow(playerid,deagle1[playerid]);
    PlayerTextDrawShow(playerid,deagle2[playerid]);
    PlayerTextDrawShow(playerid,deagle3[playerid]);
    PlayerTextDrawShow(playerid,deagle4[playerid]);


    new string[128];
    format(string,sizeof(string),"Kills: %i",DKill[playerid]);
    PlayerTextDrawSetString(playerid, deagle2[playerid], string);

    format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
    PlayerTextDrawSetString(playerid, deagle3[playerid], string);
    return SetTimerEx("DeagleTimer",888*SEKUNDEN,true,"i",playerid);
    }
    else
    {
    SCM(p,ROT,"[ANTI-ARENA]: Du bist schon in einer Arena. Benutze /l.");
    return 1;
    }
    }


    public DeagleTimer(playerid)
    {
    PlayerTextDrawHideForPlayer(playerid,deagle2[playerid]);
    PlayerTextDrawHideForPlayer(playerid,deagle3[playerid]);
    new string[64]; format(string,sizeof(string),"Kills: %i",DKill[playerid]);
    PlayerTextDrawSetString(playerid, deagle2[playerid],string);
    format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
    return PlayerTextDrawSetString(playerid, deagle3[playerid],string);
    }

  • Wie stirbst du denn ? Selbstmord oder wirst du erschossen ?
    Bei Selbstmord, hast du nämlich einen Fehler drin. Den haben "leider" neben dir auch sehr viele Andere:


    DKill[killerid] ++;
    DDeath[playerid] ++;
    Bei Selbstmord o.Ä. , ist killerid INVALID_PLAYER_ID bzw 65535.
    Macht:
    DKill[65535]++; // Error, index out of bounce. Hier stoppt der Code die weitere Ausführung von OnPlayerDeath
    Wenn man killerid als Index verwendet sollte man sicher sein,dass killerid nicht INVALID_PLAYER_ID ist.
    Siehe auch Wiki Beispiel.

  • NEIN!
    nicht in einem timer das ist unnötig!


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(onDeagle[playerid] == 1)
    {
    DKill[killerid] ++;
    DDeath[playerid] ++;
    new string[128];
    format(string,sizeof(string),"Kills: %i",DKill[killerid]);
    PlayerTextDrawSetString(playerid, deagle2[killerid], string);


    format(string,sizeof(string),"Tode: %i",DDeath[playerid]);
    PlayerTextDrawSetString(playerid, deagle3[playerid], string);
    return 1;
    }
    return 1;
    }


    Mach es so so Updatet es sich immer wenn der jenige Stirbt!