[Hilfe] OnPlayerDeath total verbuggt

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
  • Hallo
    Bei mir ist OnPlayerDeaht total verbuggt finde aber nicht den Fehler z.B hier mal ein Beispiel
    Spieler[playerid][Deaths]++; //Diese Aktion wird durchgefuhrt
    Spieler[killerid][Kills]++;// Dieso auch ...
    SendClientMessage(playerid,rot,"tod");//Aber diese nicht ?!
    SendClientMessage(killerid,rot,"tod");// genau so wie diese
    Oder ich wollte das hier machen funkt aber auch nicht 8|
    if(killerid == INVALID_PLAYER_ID)
    {
    SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
    } //wieso geht das nicht ?


    Ich versteh das nicht ,ist verdammt unlogisch :S
    Hier mal der Public
    public OnPlayerDeath(playerid, killerid, reason)
    {
    Spieler[playerid][Deaths]++;
    Spieler[killerid][Kills]++;
    // ROBSYSTEM ===================================================================
    if(killerid != INVALID_PLAYER_ID && isAtRob[playerid])
    {
    GivePlayerMoney(killerid,6000);
    GivePlayerMoney(playerid,-6000);
    SendClientMessage(playerid, gruen, "The Robber is killed. You get 6.000$");
    isAtRob[playerid] = 0;
    }
    SetPlayerScore(playerid,GetPlayerScore(playerid)-1);


    //=======================================================
    if(killerid != INVALID_PLAYER_ID)
    {
    SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
    GameTextForPlayer(playerid,"~r~Y0U G0T 0WN3D!",2000,3);
    }
    // TEAMKILL SYSTEM =============================================================
    if (Gang[killerid] == Gang[playerid] && IsDm[killerid] == 0)
    {
    SendClientMessage(killerid,hellrot,"You have been punished for teamkillng (3 Teamkills and u get a kick)");
    teamkills[killerid]++;
    GivePlayerMoney(killerid,-1000);
    ResetPlayerWeapons(killerid);
    GivePlayerWeapon(killerid,23,100);
    }
    if (teamkills[killerid] > 2)
    {
    Kick(killerid);
    }
    SendDeathMessage(killerid,playerid,reason); // KiLL table
    return 1;
    }

  • Ich kenn das Problem, hatte ich bereits öfter.
    Bei mir lag es daran, das ich mehrmals mit "if(DMzone[playerid] == 1)" abgefragt hatte.
    Das erste 'if' hat er noch durchgeführt aber alles darunter hatte das Script ignoriert. ( Ich weiß unlogisch :huh: )


    Ich hab das so gelöst, dass ich noch was anderes dazu abgefragt habe z.B. "if(DMzone[playerid] == 1 && ...".



    Versuch mal eine davon nur für den Test wegzumachen, also nur eins von den beiden. Dann schreib back.

  • Ne hat nicht geklappt meinst du es würde mit else if gehen ?
    /edit Problem gefunden es lag an
    Spieler[playerid][Deaths]++; //Diese Aktion wird durchgefuhrt
    Spieler[killerid][Kills]++;// Dieso auch ...

    Ich versuch diese Variablen am ende des Publics zu geben hoffentlich hilfts

    Einmal editiert, zuletzt von Hustlеr ()

  • Mhhh... merkwürdig.
    Hab das grad ebenfalls versucht, das scheint ein anderes Problem zu sein. :/


    EDIT: Ja, voll übersehen... Das muss außerdem 'Spieler[playerid][Deaths] +=1;' sein. :)


    Spieler[playerid][Deaths] +=1;Also das xDD? mit ++ addiern sich die Variablen auch wunderbar also ob es daran lag bezweifle ich ^^

  • Versuchs doch einfach. :)
    Du siehst selber, PAWN ist eigenartiger als man denkt... ;D


    Wenn das auch nicht hilft, mach das mal so einfach ganz oben:


    if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID) {
    Player[killerid][Kills]++;
    }
    Player[playerid][Deaths]++;


    So ist das in mein DeathMatch Script und das geht ohne Probleme. :huh:

  • Nicht Pawn denke ich sondern das Pawono die Sa-Mp Entwickler konnten nicht alles vohersehen :P
    Naja mit Variablen ganz nach hinten zu geben scheint zu klappen auf jeden Fall Danke für die Mühe zu helfen usw... :)