OnPlayerDeath Bug / nicht funktionierend

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,


    aus irgendeinem Grund werden ClientMessages etc. bei OnPlayerDeath einfach nicht abgeschickt bzw. kommen nicht an.


    Und TodesPickups werden auch nicht erstellt etc.


    Quasi ist OnPlayerDeath komplett am Buggen...


    Hier mein ganzer Code :



    @Jeffry help me please

    Einmal editiert, zuletzt von VAM ()

  • Schau mal in Zeile 69 (rofl).


    Du nutzt killerid in einem Array..allerdings prüfst du nicht ob killerid gültig ist.


    Ich zitiere mal das Wiki so schön:



    You MUST check whether 'killerid' is valid (not INVALID_PLAYER_ID) before using it in an array (or really anywhere), as it will cause the OnPlayerDeath script to crash (not the entire script). This is because INVALID_PLAYER_ID is defined as 65535, and if an array only has 'MAX_PLAYERS' elements, e.g. 500, you're trying to access an index that is above 499, which is out of bounds.

    ast2ufdyxkb1.png


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

  • Hey,


    danke für deine Antwort.


    Leider habe ich nicht die größte Ahnung von der Sachen. Du bist ja schon ein Profi in PAWN.


    Wäre dir sehr verbunden wenn du mir erklären könntest / schreiben was ich reinzupacken habe bzw. zu editieren.

  • Überall da wo du [killerid] nutzt musst du dich vergewissern, dass oben drüber steht:



    if(killerid!=INVALID_PLAYER_ID)
    {
    //Hier dann der rest Code
    }

    ast2ufdyxkb1.png


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

  • Hey,


    also wäre das so richtig für Zeile 69 ?


    Code
    if(killerid!=INVALID_PLAYER_ID)
        {
     	if(pInfo[killerid][fraktion]==7 && pInfo[playerid][fraktion]==8)
    	{
    	     GameTextForPlayer(killerid, "~g~GANGWARKILL",3000,4);
    	}
        }
  • Ja, denn: Wenn man Selbstmord im Spiel begeht, hat killerid den Wert 65535 (irgendwie so ^^) und sprengt somit das Array. Sicherer ist es also, es mit in die Abfrage zu packen.