Probleme bei OnPlayerDeath

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,


    ich habe Probleme mit dem OnPlayerDeath Callback.
    Ich wollte nämlich an die Sanitäter eine Nachricht senden (und auch wenn ein Polizist einen Verbrecher tötet) sobald jemand stirbt.
    Das Problem ist, dieser Teil wird nicht angezeigt.


    Unten ab "if(killerid != INVALID_PLAYER_ID)" da passiert rein garnichts.


    Danke schonmal :)

  • Ja, und auch wenn jemand einfach so stirbt, kriegen die Medics keine Nachricht im Chat.
    Die Kills und Deaths gehen ebenso nicht höher.


    ->

    • new ort[36];
    • GetPlayer2DZone(playerid, ort, 36);
    • format(string, sizeof(string), "* %s ist in %s gestorben. Zum Orten tippe /revivefind %d!", GetName(playerid), ort, playerid);
    • SendFraktionMessage(3, COLOR_YELLOW, string);


    Es kommt nichts in Fraktion "3" welche Medic ist.

  • Mache es so:
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[128], Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    Spieler[playerid][pTot] = 1;
    Spieler[playerid][pTotUnix] = 120;
    Spieler[playerid][pTotX] = pos[0];
    Spieler[playerid][pTotY] = pos[1];
    Spieler[playerid][pTotZ] = pos[2];
    Spieler[playerid][pTotWorld] = GetPlayerVirtualWorld(playerid);
    CreateToten(playerid);
    SetMoney(playerid,Spieler[playerid][pMoney]+100);
    Spieler[playerid][pSpawned] = false;
    Spieler[playerid][pDuty] = false;
    if(pCurrentCall[playerid] != -1)
    {
    if(IsPlayerConnected(pCurrentCall[playerid]) && Spieler[pCurrentCall[playerid]][pLoggedIn])
    {
    SendClientMessage(pCurrentCall[playerid], COLOR_GREY, "** Die Verbindung wurde unterbrochen ...");
    pPhoning[pCurrentCall[playerid]] = 0;
    pPayGuthaben[playerid] = 0;
    pPayGuthaben[pCurrentCall[playerid]] = 0;
    pCurrentCall[pCurrentCall[playerid]] = -1;
    pCurrentCall[playerid] = -1;
    pPhoning[playerid] = 0;
    }
    }
    pPhoning[playerid] = 0;
    pPayGuthaben[playerid] = 0;
    pPayGuthaben[pCurrentCall[playerid]] = 0;
    pCurrentCall[playerid] = -1;
    if(Spieler[playerid][pJailed] == 1)
    {
    Spieler[playerid][pTot] = 0;
    Spieler[playerid][pTotUnix] = 0;
    return 1;
    }
    Spieler[playerid][pDeaths] ++;
    new ort[36];
    GetPlayer2DZone(playerid, ort, 36);
    format(string, sizeof(string), "* %s ist in %s gestorben. Zum Orten tippe /revivefind %d!", GetName(playerid), ort, playerid);
    SendFraktionMessage(3, COLOR_YELLOW, string);
    if(killerid != INVALID_PLAYER_ID)
    {
    Spieler[killerid][pKills] ++;
    if(Spieler[killerid][pFraktion] == 1)
    {
    if(Spieler[playerid][pWanteds] > 0)
    {
    Spieler[playerid][pTot] = 0;
    Spieler[playerid][pTotX] = 0.0;
    Spieler[playerid][pTotY] = 0.0;
    Spieler[playerid][pTotZ] = 0.0;
    Spieler[playerid][pTotUnix] = 0;
    Spieler[playerid][pTotWorld] = 0;
    GameTextForPlayer(killerid, "~w~Gesuchten ~g~verhaftet", 3000, 6);
    if(Spieler[killerid][pFraktion] == 1)format(string, sizeof(string), "HQ: Officer %s hat %s verhaftet, erschossen, over.", GetName(killerid), GetName(playerid));
    SendFraktionMessage(1, COLOR_COP_MELDUNG, string);
    Spieler[playerid][pJailed] = 1;
    Spieler[playerid][pJailTime] = 240*Spieler[playerid][pWanteds];
    Spieler[playerid][pWanteds] = 0;
    UpdateWantedTD(playerid);
    Spieler[playerid][pDeaths] ++;
    Spieler[playerid][pJailVisits] ++;
    }
    }
    }
    return 1;
    }

  • Funktioniert immernoch nicht wirklich, komisch.
    Habs mal alles debuggen lassen:


    "
    [20:51:22] killerid: 0
    [20:51:22] Debug 1
    [20:51:22] Debug 2
    [20:51:22] Debug 3
    [20:51:22] Debug 5
    [20:51:22] Debug 6
    [20:51:22] Debug 8"



    Und ja, nicht wundern, habe "Debug 4" vergessen. ^^


    @Jeffry