OnPlayerDeath Problem

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
  • Guten Tag liebe Breadfish Community,


    ich habe ein kleines Problem und zwar dass meine Schleife unter "OnPlayerDeath" alles darauffolgende abbricht.

    Das heißt, würde ich diese Schleife an die Spitze von "OnPlayerDeath" packen, würde es zwar keine Errors oder dergleichen geben, aber alles

    was unter dieser Schleife liegt würde nicht mehr ausgeführt werden.

    Ich danke für jede Antwort.


    Pastebin zum kompletten OnPlayerDeather Public


    Mit freundlichen Grüßen

    Moersy

  • Welche Schleife eigentlich?
    Schreibe es mal so, und schau dann ob es noch immer abbricht, ich habe dir ein paar Sicherheiten zwecks INVALID_PLAYER_ID hinzugefügt.

    Spoiler anzeigen
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new name[MAX_PLAYER_NAME];
    new string[256];
    PlayerInfo[playerid][pInvWeapon] = 0;
    PlayerInfo[playerid][pInvAmmo] = 0;
    PlayerInfo[playerid][pInvWeapon2] = 0;
    PlayerInfo[playerid][pInvAmmo2] = 0;
    FrakMatsHolding[playerid] = 0;
    format(string, sizeof(string), "Du wurdest getötet.");
    SendClientMessage(playerid, 0xFF1400FF, string);
    format(string, sizeof(string), "Du hast %s getötet.", MeinName(playerid));
    SendClientMessage(killerid, 0xFF00FFFF, string);
    for(new fs;fs<sizeof(FightSystem);fs++)
    {
    if(FightSystem[fs][fsFightTime])
    {
    if(GetPlayerFaction(playerid) == FightSystem[fs][fsOwnerFaction]||
    GetPlayerFaction(playerid) == FightSystem[fs][fsAttackFaction])
    {
    PlayerInfo[playerid][pTot] = 0;
    }
    }
    }
    gPlayerSpawned[playerid] = 0;
    GetPlayerName(playerid, name, sizeof(name));
    PlayerInfo[playerid][pLocal] = 255;
    if(reason == 38 && killerid != 255)
    {
    new kstring[128];
    new kickname[MAX_PLAYER_NAME];
    if(IsPlayerConnected(killerid))
    {
    GetPlayerName(killerid, kickname, sizeof(kickname));
    format(string, 256, "%s (ID: %d) hat einen Spieler mit einer Minigun getötet.",kickname,killerid);
    ABroadCast(COLOR_YELLOW,string,1);
    printf("%s", kstring);
    }
    }
    if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
    {
    DisablePlayerCheckpoint(playerid);
    gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
    }
    new caller = Mobile[playerid];
    if(caller != 255)
    {
    if(caller < 255)
    {
    SendClientMessage(caller, COLOR_GRAD2, " Die Verbindung wurde unterbrochen...");
    CellTime[caller] = 0;
    CellTime[playerid] = 0;
    Mobile[caller] = 255;
    }
    Mobile[playerid] = 255;
    CellTime[playerid] = 0;
    }
    ClearCrime(playerid);
    if(PlayerPaintballing[playerid] != 0 && killerid != INVALID_PLAYER_ID)
    {
    PlayerPaintballKills[killerid] ++;
    if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
    {
    new killer[MAX_PLAYER_NAME];
    PaintballWinner = killerid;
    PaintballWinnerKills = PlayerPaintballKills[killerid];
    GetPlayerName(killerid, killer, sizeof(killer));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerPaintballing[i] != 0)
    {
    format(string, sizeof(string), "* %s ist mit %d Kills in Führung.",killer,PaintballWinnerKills);
    SendClientMessage(i, COLOR_WHITE, string);
    }
    }
    }
    }
    return 1;
    }
    if(GettingCK[playerid] < 999 || OnCK[playerid] < 999)
    {
    if(IsPlayerConnected(killerid))
    {
    if(GettingCK[killerid] < 999 || OnCK[playerid] < 999)
    {
    new killer[MAX_PLAYER_NAME];
    new dier[MAX_PLAYER_NAME];
    GetPlayerName(playerid, dier, sizeof(dier));
    GetPlayerName(killerid, killer, sizeof(killer));
    format(string, sizeof(string), "* %s hat deinen Charakter gesperrt, du kannst nun mit diesem Charakter nicht mehr Spielen.",killer);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "** %s hat den Spieler %s erledigt **",killer,dier);
    CKLog(string);
    PlayerInfo[playerid][pCK] = 1;
    if(GettingCK[playerid] < 999)
    {
    GettingCK[playerid] = 999;
    }
    else if(OnCK[playerid] < 999)
    {
    OnCK[playerid] = 999;
    }
    if(GettingCK[killerid] < 999)
    {
    GettingCK[killerid] = 999;
    }
    else if(OnCK[killerid] < 999)
    {
    OnCK[killerid] = 999;
    }
    KickPlayer[playerid] = 1;
    }
    }
    }
    SetPlayerColor(playerid,COLOR_GRAD2);
    if(killerid != INVALID_PLAYER_ID)
    {
    //if(NoContract == 0)
    //{
    new ftextk[32];
    if(GetPlayerFaction(killerid) == 0)
    {
    ftextk = "Zivilist";
    }
    else
    {
    ftextk = Fracs[(GetPlayerFaction(killerid)-1)];
    }
    new ftexto[32];
    if(GetPlayerFaction(killerid) == 0)
    {
    ftexto = "Zivilist";
    }
    else
    {
    ftexto = Fracs[(GetPlayerFaction(killerid)-1)];
    }
    new lstring[400];
    format(lstring,sizeof(lstring),"DeathReport: Killer: %s(%d)(%s) Lvl: %d | Opfer: %s(%d)(%s) Lvl: %d",Spielername(killerid),killerid,ftextk,PlayerInfo[killerid][pLevel],Spielername(playerid),playerid,ftexto,PlayerInfo[playerid][pLevel]); // Code
    ABroadCast(COLOR_LIGHTGREEN,string,1);
    //}
    }
    GW_OnPlayerDeath(playerid, killerid, reason);
    //killerid = INVALID_PLAYER_ID;
    SetPlayerColor(playerid,COLOR_GRAD2);
    RemovePlayerWeapon(playerid);
    M_OnPlayerDeath(playerid,killerid,reason);
    if(FluchtzoneChance[playerid] == 1)
    {
    KillTimer(timer[playerid]);
    SendClientMessage(playerid,COLOR_YELLOW,"Deine Fluchtmöglichkeit ist vorbei.");
    GangZoneDestroy(zone[playerid]);
    FluchtzoneChance[playerid] = 0;
    StopVerfolgungsmusikForPlayer(playerid);
    }
    if(gPlayerUsingLoopingAnim[playerid])
    {
    gPlayerUsingLoopingAnim[playerid] = 0;
    TextDrawHideForPlayer(playerid,txtAnimHelper);
    }
    if(BlindFold[playerid] == 1)
    {
    BlindFold[playerid] = 0;
    }
    if(PlayerInfo[playerid][pMauled] == 1)
    {
    PlayerInfo[playerid][pMauled] = 0;
    }
    InCargo[playerid] = 0; InLevi[playerid] = 0; InEnfo[playerid] = 0;
    if(FirstSpawn[playerid] == 1)
    {
    FirstSpawn[playerid] = 0;
    }
    if(IsBlacklist[playerid]==1)
    {
    ClearBlack(playerid);
    IsBlacklist[playerid]=0;
    }
    /*if (killerid != INVALID_PLAYER_ID && !IsACop(killerid) && reason != 49 && PlayerInfo[killerid][pJailed] == 0 && !IstInGangFight(playerid))
    {
    SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
    }*/
    if(killerid != INVALID_PLAYER_ID && !IsACop(killerid) && reason == 49)
    {
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }
    if(killerid != INVALID_PLAYER_ID && PlayerInfo[playerid][pKopfgeld] > 0 && IsPlayerInFrac(killerid, 8))
    {
    new bstring[400];
    new ttdstring[300];
    format(bstring,sizeof(bstring),"[CONTRACT] Der Spieler %s wurde von Hitman %s getötet.",Spielername(playerid),Spielername(killerid));
    TBroadCast(COLOR_LIGHTRED, bstring);
    GivePlayerMoney(killerid,PlayerInfo[playerid][pKopfgeld]);
    SendClientMessage(killerid,COLOR_YELLOW,"| ================================================================= |");
    SendClientMessage(killerid,COLOR_YELLOW,"| [Auftraggeber]: Auftrag erledigt! Gute Arbeit, hier ist ihr Geld! |");
    SendClientMessage(killerid,COLOR_YELLOW,"| ================================================================= |");
    format(ttdstring, sizeof(ttdstring), "~g~Contract ~w~Erledigt~n~Du bekommst ~r~%d$~w~!", PlayerInfo[playerid][pKopfgeld]);
    GameTextForPlayer(killerid, ttdstring, 5000, 3);
    SendClientMessage(playerid,COLOR_YELLOW,"| =========================================================================== |");
    SendClientMessage(playerid,COLOR_YELLOW,"| [Auftragsmord]: Du wurdest getötet da auf dich ein Kopfgeld ausgesetzt war. |");
    SendClientMessage(playerid,COLOR_YELLOW,"| =========================================================================== |");
    PlayerInfo[playerid][pKopfgeld] = 0;
    }
    killerid = INVALID_PLAYER_ID;
    return 1;
    }


  • erstmals danke für die Hilfestellung.

    Ich meine die Schleife wenn ein Spieler Kopfgeld hat und dann von einem Hitman getötet wird.

    Ich probiere es aber gleich mal aus mit deiner Variante des OnPlayerDeath


    [[[ if(killerid != INVALID_PLAYER_ID && PlayerInfo[playerid][pKopfgeld] > 0 && IsPlayerInFrac(killerid, 8)) ]]]