OnPlayerDeath ( Tode werden nicht richtig erkannt )?

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,


    also ich habe im Script die Funktion dass man beim töten eines Spielers 2 Wanteds bekommt und die Cops eine Nachricht davon sowie auch die Medics.


    Die Wantedvergabe sieht wie folgt aus :



    Davor war die Abfrage wenn killerid FraktionsID 2 + 3 ist nicht drinnen ( LSPD + FBI ).


    Das heißt, wenn ich einen Zivi als Zivi killen würde, landet der playerid nicht im Krankenhaus und killerid kriegt keine Wanteds.


    Aber wenn ich als Cop jemanden getötet habe, bekam ich Wanteds ( NUR ALS COP ) und playerid landete normal im Krankenhaus.
    Als ich die Abfrage reingemacht habe, habe ich auch als Cop keine Wanteds und playerid landete auch nicht im Krankenhaus.


    Also man bekommt einfach keine Wanteds wenn man Leute tötet.




    Bitte helft mir :(


    @Jeffry

  • Danke für deine Rückmeldung, hab das gemacht und die neue .amx hochgeladen,


    jedoch kriege ich immernoch keine Wanteds / playerid kommt nicht ins Krankenhaus.

  • Hey,


    habe das gemacht also so :



    Code
    printf("Aufgerufen für killerid: %d", killerid);
    	if(PlayerOnline(killerid))
    	{

    Jedoch kriege ich in der server-log.txt nur das :


    [18:48:03] [kill] TestAcc killed TestAcc2 Desert Eagle

  • Danke für die Rückmeldung,


    setzt ein return 1; nicht die komplette Funktion aus?


    Egal wo?


    Wenn ja, habe ich im Code dass wenn man im Anruf ist dass alles abgebrochen wird, und da drinnen sind auch mehrere Returns 1; drinnen.


  • Wenn es aufgerufen wird (das return), dann ja.
    Ändere es zu:
    if(isAmTelen[playerid])
    {
    if(Call_Anrufer[playerid]!=-1)
    {
    if(PlayerOnline(Call_Anrufer[playerid]))
    {
    SendClientMessage(Call_Anrufer[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
    isAmTelen[Call_Anrufer[playerid]]=0;
    Call_Anrufer[playerid]=-1;
    }
    }
    else if(Call_Anrufen[playerid]!=-1)
    {
    if(PlayerOnline(Call_Anrufen[playerid]))
    {
    SendClientMessage(Call_Anrufen[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
    isAmTelen[Call_Anrufen[playerid]]=0;
    Call_Anrufen[playerid]=-1;
    pInfo[playerid][handykarte]-=gpv(playerid,"MussTeleZahlen");
    }
    }
    isAmTelen[playerid]=0;
    }

  • Also es ist leider nicht das, sondern der Code ist so ( komplett ) :


    Also soll ich einfach alle "return 1;" entfernen?

  • Ändere es hierzu ab:
    if(isAmTelen[playerid])
    {
    if(Call_Anrufer[playerid]!=-1)
    {
    if(PlayerOnline(Call_Anrufer[playerid]))
    {
    SendClientMessage(Call_Anrufer[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
    isAmTelen[Call_Anrufer[playerid]]=0;
    Call_Anrufer[playerid]=-1;
    }
    }
    else if(Call_Anrufen[playerid]!=-1)
    {
    if(PlayerOnline(Call_Anrufen[playerid]))
    {
    SendClientMessage(Call_Anrufen[playerid],GRAU,"Du hörst nur noch ein Rauschen am anderen Ende der Leitung...");
    isAmTelen[Call_Anrufen[playerid]]=0;
    Call_Anrufen[playerid]=-1;
    pInfo[playerid][handykarte]-=gpv(playerid,"MussTeleZahlen");
    }
    }
    isAmTelen[playerid]=0;
    }


    if(killerid!=INVALID_PLAYER_ID)
    {
    if(PlayerOnline(killerid))
    {
    if(pInfo[killerid][fraktion]==2 || pInfo[killerid][fraktion]==3)
    {
    if(Robber[playerid]==1)
    {
    Robber[playerid]=0;
    BankIsRobbed=0;
    BankRobbed=1;
    new str[128];
    format(str,sizeof(str),"* Der Räuber %s wurde vom Beamten %s getötet. Der Bankraub ist gescheitert.",PlayerName(playerid), PlayerName(killerid));
    SendClientMessageToAll(HBLAU,str);
    SetTimer("BankRobReset", 10800*1000, false);
    }
    }
    }
    }