Killernachricht für einen TDM/DM Gamemode erstellen

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 Breadfish
    und herzlich Willkommen zu meinem zweiten Tutorial!


    In diesem Tutorial werde ich euch zeigen, wie man in einem
    TDM/DM Gamemode eine Nachricht einbindet, die
    anzeigt das ein Spieler einen Kill gemacht hat.


    Was benötigen wir dafür?
    -Grundkenntnisse
    -Geduld
    -Einen DM GM


    Nun geht es auch schon los!
    Als erstes müssen wir ganz oben im Script folgendes definieren

    new PlayerTotalKills[MAX_PLAYERS] = 0;

    PlayerTotalKills = Damit die Kills später auch ausgelesen werden können


    Dann können wir direkt in den Public OnPlayerDeath gehen und dort
    zwei string erstellen, einen für den Namen und einen zum auslesen

    new Name[128], string[128]

    Name = Der Name des Spielers denn wir gleich herausfinden
    string = Der eigentliche string für die Wiedergabe des ganzen
    Nun müssen wir noch den Namen herausfinden:

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));

    GetPlayerName = Um den Namen herauszufinden bzw, auszulesen
    killerid = Steht für den Spieler der dann später in dem GamText erscheint.
    Name = Unser definierter Name
    sizeof(Name) = liest die Größe des Namnes aus
    Dann , damit die Nachricht wieder von vorn beginnt wenn der Spieler gestorben ist,
    müssen wir folgendes hinzufügen:

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));
    PlayerTotalKills[killerid]++;
    PlayerTotalKills[playerid] = 0;

    PlayerTotalKills[killerid]++ = Damit die Kills ausgelesen werden und er nicht immer die selbe Nachricht bekommt
    PlayerTotalKills[playerid] = 0 = Damit die Nachricht des gekillten Spielers wieder von vorn beginnt.
    Gut, nun sind wir schon einen großen schritt weiter.
    Nun müssen wir abfragen wie viele Kills der Spieler hat, damit die Nachricht abgesendet wird.
    Das machten wir mit einer einfachen if Schleife:

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));
    PlayerTotalKills[killerid]++;
    PlayerTotalKills[playerid] = 0;
    if(PlayerTotalKills[killerid] == 1) {




    }

    if(PlayerTotalKills[killer] == 1) { = Er fragt ab ob der Spieler einen Kill hat.
    Wenn dies so ist, wird der Gametext versendet.
    Im Inhalt enthalten ist der string für die Nachricht
    und diesen setzen wir nun ein

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));
    PlayerTotalKills[killerid]++;
    PlayerTotalKills[playerid] = 0;
    if(PlayerTotalKills[killerid] == 1) {
    format(string, sizeof(string), "~r~%s `s erster Kill", Name);
    }

    format = Formatiert den string
    string = Das ist der oben definierte string der nun ausgelesen werden muss
    sizeof(string) = Die Größe des strings
    %s = Der String , in diesem fall der Name
    %i = Ein Integer, gilt für Namen und Zahlen
    %d = Dezimalzahl
    Gut, damit dies nun auch wiedergeben wird,
    brauchen wir den GameTextForAll.
    Dies wenden wir wie folgt an:

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));
    PlayerTotalKills[killerid]++;
    PlayerTotalKills[playerid] = 0;
    if(PlayerTotalKills[killerid] == 1) {
    format(string, sizeof(string), "~r~%s `s erster Kill", name);
    GameTextForAll(string, 6000,3);
    }

    GameTextForAll = Dieser Text wird wie ein Textdraw angezeigt nur immer mittig
    und in einer bestimmten Zeit, in diesem Fall 6 Sekunden.
    string = Der string den wir oben definiert haben
    3 = Die Schriftart, diese kannst du hier aussuchen
    Nun, sind wir mit dem ersten fertig und könne als Feinheit noch folgendes hinzufügen

    new Name[128], string133[32];
    GetPlayerName(killerid, Name, sizeof(Name));
    PlayerTotalKills[killerid]++;
    PlayerTotalKills[playerid] = 0;
    if(PlayerTotalKills[killerid] == 1) {
    format(string, sizeof(string), "~r~%s `s erster Kill", name);
    GameTextForAll(string, 6000,3);
    GivePlayerMoney(killerid,1000);
    format(string, sizeof(string), "Du hast nun %d Dollar.", GetPlayerMoney(killerid));
    SendClientMessage(killerid, 0xFFFFFFFF, string);
    }

    GivePlayerMoney = Diesem Spieler eine bestimmte Menge geld geben
    killerid = Die ID/Name des Killers der das Geld bekommt
    1000 = Die Menge an Geld die er bekommt
    GetPlayerMoney = Um das Geld des Spielers abzufragen
    SendClientMessage = Dem Spieler eine Nachricht senden
    0xFFFFFFFF = Der Farbcode


    Nun zum Pastebin
    da es sonst zu lang werden würde.
    Der Rest ist sowieso das selbe.


    Ich hoffe das Tutorial hat euch geholfen.


    Kritik und Verbesserungsvorschläge sind erwünscht.


    Mfg
    think_good


    //Edit Pastebin aktualisiert

    graphics frontend web

    2 Mal editiert, zuletzt von Maximilian ()

  • new Name[128]
    Um GetPlayerName herrauszufinden ?
    Wie du beschrieben hast , sind Grundkenntnisse angesagt , hier fehlen diese aber!


    Bitte benutze daüfr beim nächsten mal new Name[MAX_PLAYER_NAME]; !