"Du wurdest von ... getötet!" - Funktion?

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
  • Im o.g. Callback killerid auf ungleich INVALID_PLAYER_ID abfragen, danach einen String formatieren und an die playerid senden.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Musst halt bei 'Farbe' eine Farbe eintragen, die du im Script definiert hast.


    Und genau dein Codeschnipsel wird nicht immer ausgeführt, wenn z.B sich der Spieler selbst umbringt.

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dann mach das so..


    new toter[MAX_PLAYER_NAME],killer[MAX_PLAYER_NAME];
    new string[128],string1[128];
    GetPlayerName(playerid,toter,sizeof(toter));
    GetPlayerName(killerid,killer,sizeof(killer));
    format(string,sizeof(string),"Kill: Du hast %s getötet.",toter);
    format(string1,sizeof(string1),"Tod: Du wurdest von %s getötet.",killer);
    SendClientMessage(playerid,FARBE,string1);
    SendClientMessage(killerid,FARBE,string);


  • Ich hab dir doch bereits gesagt, du musst noch abfragen, ob killerid gleich INVALID_PLAYER_ID ist, und das dann abfangen,
    da sonst der Code nicht ausgeführt wird (Laufzeitfehler: Array index out ouf bounds) ;)

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Pablo.
    Wofür 2 Strings?
    Zudem kann man für die GetPlayerName-Sache direkt eine Funktion einbauen.


    Hier meine Empfehlung für das ganze:

    stock getName(playerid)
    {
    new name[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[128];
    if(killerid != INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), "- Du hast %s getötet.", getName(playerid));
    SendClientMessage(killerid, 0xFFFFFFFF, string);
    format(string, sizeof(string), "- Du wurdest von %s getötet.", getName(killerid));
    SendClientMessage(playerid, 0xFFFFFFFF, string);
    }
    return 1;
    }

  • Eh, langsam blicke ich kaum mehr durch.. :o
    Ich glaube ich belasse es zum Anfang bei:
    SendClientMessage(playerid,ROT,"Du wurdest getötet!");


    Dein Nickname passt wirklich perfekt zu deinem Verhalten hier.
    Du musst nur noch ein paar Kleinigkeiten anpassen, die dir sogar hier erklärt wurden, macht es jedoch nicht, weil du keinen fertigen Code hingeklatscht bekommst :pinch:

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Wenn du z.B. stirbst, ohne dass ein Spieler dich umgebracht hat (Fall, Ertrinken,...) ist killerid INVALID_PLAYER_ID. Deshalb solltest du abfragen, ob du von einem Spieler getötet wurdest und nur dann die Nachricht ausgeben:
    if(killerid != INVALID_PLAYER_ID) // Überprüfen ob Tod durch Spieler verursacht wurde
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(killerid, pName, MAX_PLAYER_NAME); //Name des Killers herausfinden
    new msg[25+MAX_PLAYER_NAME];
    format(msg,25+MAX_PLAYER_NAME,"Du wurdest von %s getötet.",pName); //Nachricht formatieren
    SendClientMessage(playerid, 0xFF0000FF, msg); //Nachricht an "Opfer" schicken
    }


  • Dein Nickname passt wirklich perfekt zu deinem Verhalten hier.
    Du musst nur noch ein paar Kleinigkeiten anpassen, die dir sogar hier erklärt wurden, macht es jedoch nicht, weil du keinen fertigen Code hingeklatscht bekommst :pinch:

    Danke dir für deinen aufschlussreichen Beitrag.


    Haxler, danke für deine beigefügten Kommentare, haben mir einige Fragen geklärt.
    Liege ich richtig, in dem ich sage, dass diese Funktionen unter "OnPlayerDeath" gehören?