Spieler werden nicht gekickt

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hi Leute,


    wieder habe ich Probleme und zwar, einmal bei.


    Wenn ein Spieler 4 mal sein eigenen Teammitglied tötet wird er Gekickt.


    Und einmal bei, wenn der Spieler beim Registrieren auf den Button "Abbrechen" drückt wird er Gekickt.


    Und bei mir passiert das nicht ...


    Zu dem ersten Problem


    Ich habe es so geschrieben unter OnPlayerDeath



    public OnPlayerDeath(playerid, killerid, reason)
    {
    if (Gang[playerid] == Gang[killerid])
    {
    Teamkills[playerid] = Teamkills[killerid] + 1;
    if (Teamkills[killerid] > 4)
    {
    SendClientMessage(playerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
    Kick(playerid);
    }
    }
    return 1;
    }



    und zu dem anderen Problem


    Ich habe es unter OnDialogRespone geschrieben und zwar so:



    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,DUNKELROT,"Du musst dir schon ein Passwort aussuchen!");
    ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_INPUT,"Registrierung","Bitte wähle ein Passwort um dir ein Account zu erstellen!","Registrieren","Abbrechen");
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }



    Ich weiß nicht ob ihr anhand dieser Sachen den Fehler findet, wenn jemand Zeit hätte um auf ein TS³ zu kommen oder so, und dann per Teamvierwer sich das mal Anschaut, das wäre wirklich sehr Nett.


    Vielen Dank schon mal :)


  • public OnPlayerDeath(playerid, killerid, reason)
    {
    if (Gang[playerid] == Gang[killerid])
    {
    Teamkills[playerid] = Teamkills[killerid] + 1;
    if (Teamkills[killerid] > 4)
    {
    SendClientMessage(playerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
    Kick(playerid);
    }
    }
    return 1;
    }


    und das so:

    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    Kick(playerid);
    return 0;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,DUNKELROT,"Du musst dir schon ein Passwort aussuchen!");
    ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_INPUT,"Registrierung","Bitte wähle ein Passwort um dir ein Account zu erstellen!","Registrieren","Abbrechen");
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }

    versuchs mal so


    /edit pwn vergessen xD


    Bedanke dich bitte, wenn du den Beitrag als hilfreich empfandest!



  • http://wiki.sa-mp.com/wiki/OnPlayerDeath
    Schau dir lieber nochmal OnPlayerDeath an.


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if( killerid != INVALID_PLAYER_ID ) // Ganz wichtig!
    {
    if (Gang[playerid] == Gang[killerid])
    {
    // Teamkills[playerid] = Teamkills[killerid] + 1;
    // Du änderst immer von playerid die Teamkills.
    // Ist natürlich falsch, denn du musst sie bei killerid ändern
    Teamkills[killerid] = Teamkills[killerid] + 1;
    if(Teamkills[killerid] > 4)
    {
    // SendClientMessage(playerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
    // Kick(playerid);
    // Du sendest die Nachricht an playerid und kickst auch diesen
    // Ist natürlich ebenfalls falsch
    SendClientMessage(killerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
    Kick(killerid);
    }
    }
    }
    return 1;
    }
    Unnötiger Beitrag von dir Mr.Langer, der hilft niemanden.