Wenn ich sterbe zählz es kein gestorben dazu

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,


    ich wollte machen wenn ich sterbe das ich dann einen Gestorben punkt bekomme...


    aber ich kriege diesen nicht...


    So hab ich es:


    public OnPlayerDeath(playerid, killerid, reason)
    {


    IstSpielerGespawnt[playerid] = false;
    if(GetPlayerWeapon(killerid) == 45) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 44) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 37) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 18) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 16) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 38) Ban(killerid); //Ban if they have a minigun
    if(GetPlayerWeapon(killerid) == 37) Ban(killerid); //Ban if they have a minigun
    if(GetPlayerWeapon(killerid) == 39) Ban(killerid); //Ban if they have a minigun
    if(GetPlayerWeapon(killerid) == 36) Ban(killerid); //Ban if they have a minigun
    if(GetPlayerWeapon(killerid) == 35) Ban(killerid); //Ban if they have a minigun

    SInfo[killerid][pMord]++;
    SInfo[playerid][pGestorben]++;


    Ich sitz im auto und ich fahr gegen eine wand, dass auto geht kaputt und ich sterbe, aber ich kriege keinen Punkt drauf...


    Ich hoffe mir kann einer helfen


    LG

  • Der Fehler tritt auf, weil du nicht prüfst, ob killerid == INVALID_PLAYER_ID ist, was beim Autounfall der Fall ist.


    Der Array in Zeile 16 hat das Element INVALID_KILLER_ID nicht, was zu einem Fehler führt, weshalb das Callback abgebrochen wird.


    Richtig wäre also
    if(killerid != INVALID_PLAYER_ID)SInfo[killerid][pMord]++;
    SInfo[playerid][pGestorben]++;

  • Du solltest auch davor schon überprüfen, ob die killerid INVALID_PLAYER_ID ist.
    Wenn ja dann ist nämlich auch die GetPlayerWeapon-Abfrage völlig unnötig.
    public OnPlayerDeath(playerid, killerid, reason)
    {


    IstSpielerGespawnt[playerid] = false;
    if(killerid != INVALID_PLAYER_ID)
    {
    if(GetPlayerWeapon(killerid) == 45) Ban(killerid);
    if(GetPlayerWeapon(killerid) == 44) Ban(killerid);
    // und so weiter...


    SInfo[killerid][pMord]++;
    }
    SInfo[playerid][pGestorben]++;
    }

    Professioneller Webentwickler.

  • Wie oft ich das hier schon gesagt habe, und trotzdem noch immer so oft der Fehler gemacht wird.
    Man könnte ja eventuell auch mal ins Wiki schauen:

    Zitat von SAMP-Wiki

    Important Note: You MUST check whether killerid equals INVALID_PLAYER_ID before using it in an array, as it will cause the script to stop. See example above.


    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.