Namen der letzten killerid speichern

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 möchte den Namen der letzten killerid in eine Variable speichern, und scheine auf dem Schlauch zu stehen...


    new LastKilledPlayer[MAX_PLAYERS][MAX_PLAYER_NAME];


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new kID[MAX_PLAYER_NAME];
    GetPlayerName(killerid, kID, sizeof(kID));
    LastKilledPlayer[playerid][kID]; //hier das irgendwie reinformatieren...
    return 1;
    }

  • MAX_PLAYER_NAME ist die Größe vom Namen. Derzeit liegt das Limit vom Namen bei 24 Zeichen, daher beträgt MAX_PLAYER_NAME den Wert 24.


    Um in einem Array einen String zu speichern, musst du format oder ähnliches verwenden, aber das funktioniert nicht, wenn du es wie ein Integer speichern möchtest.

  • Hey,
    ich weiß nicht ob das jetzt eine frage ist aber ich beantworte sie dir


    mit sizeof(..) fragst du nur ab wie viele Zeichen das "Limit" ist
    new Test[MAX_PLAYERS][10];
    sizeof(Test[playerid]) das wäre dann 10
    Sprich du kannst beim Format
    format(Test[playerid],sizeof(Test[playerid]),"");
    machen oder statt sizeof(...)
    einfach 10 schreiben
    format(Test[playerid],10,"");

  • Das müsste dann ja heißen, dass...
    format(LastKilledPlayer[playerid], MAX_PLAYER_NAME, "%s", kID);
    und
    format(LastKilledPlayer[playerid], sizeof(LastKilledPlayer[playerid]), "%s", kID);
    ...dasselbe sind.


    Aber wieso krieg ich bei zweiterem diese Errors?
    error 001: expected token: "]", but found "-identifier-"
    warning 215: expression has no effect
    error 001: expected token: ";", but found "]"
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line

  • Du kannst bei einem zweidimensionalen Array nicht mit sizeof arbeiten, sondern dort musst du dann die Länge manuell angeben, z.B. 24 oder so ;)
    Bei einem eindimensionalen Array geht das, aber darüber nicht mehr.

  • format(LastKilledPlayer[playerid], sizeof(LastKilledPlayer[playerid]), "%s", kID);
    Du kannst hier nicht mit sizeof arbeiten da es ein zweidimensionaler Array ist
    Du musst es also so eingeben als Zahl oder wie hier mit "MAX_PLAYER_NAME"
    Benutzt einfach das
    format(LastKilledPlayer[playerid], MAX_PLAYER_NAME, "%s", kID);
    So bist du eh immer auf dem guten Stand

  • Bei einem eindimensionalen Array geht das, aber darüber nicht mehr.


    Doch das geht, nur der index muss leer sein ^^


    Sprich so schreiben:


    format(LastKilledPlayer[playerid], sizeof(LastKilledPlayer[]), "%s", kID);


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ok, aber das bringt ihm dann ja auch nichts mehr ;)
    So ist der Index leer, dann hätte er doch eine Länge von Null, oder nicht?
    Kaliber:

  • So ist der Index leer, dann hätte er doch eine Länge von Null, oder nicht?


    Nein Nein.


    new Test[10][MAX_PLAYER_NAME];


    sizeof(Test) //= 10
    sizeof(Test[]) //= MAX_PLAYER_NAME = 24


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S