Knast macht probleme

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
  • Sehr geehrtes Forum,


    ich habe eine Frage zum Thema PAWN mal wieder.


    Sobald ich jemanden als pLeader 1 mit Onduty tötet und dieser Wanteds hat, wird dieser in den knast teleportiert. Kurze Zeit später, 1-2 Sek. Stirbt die Person erneut im Knast.


    Wo ist der Fehler ?



    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(OnDuty[playerid] ==1)
    {
    OnDuty[playerid] =0;
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    TodesPickup[playerid] = CreatePickup(1254, 1, X, Y, Z, 0);
    SetTimerEx("TOT",1000*60*2,0,"i",playerid);
    PlayerInfo[playerid][pDeaths]++;
    justDied[playerid] = true;
    if(PlayerInfo[killerid][pMember]==1 && OnDuty[killerid]==1)
    {
    if(PlayerInfo[playerid][pWanted]>0)
    {
    new pID,string[128];
    new JailTime = PlayerInfo[playerid][pWanted] * (4 * 60);



    format(string, sizeof(string), "Du hast %d$ für den Jailtot erhalten.",PlayerInfo[pID][pWanted]*500);
    SendClientMessage(playerid,COLOR_RED, string);
    PlayerInfo[playerid][pMoney]+=PlayerInfo[pID][pWanted]*500;
    GivePlayerMoney(playerid,PlayerInfo[pID][pWanted]*500);




    PlayerInfo[pID][pMoney]-=PlayerInfo[pID][pWanted]*750;
    GivePlayerMoney(pID,-PlayerInfo[pID][pWanted]*750);

    new string2[16];
    format(string2,sizeof string2,"Du wurdest von %s getötet und musst %i $ bezahlen");
    SendClientMessage(pID,COLOR_RED,string2);



    PlayerInfo[playerid][pWanted] = 0;
    PlayerWantedBarUpdate(playerid);
    PlayerInfo[playerid][pJailTime] = JailTime;
    SetPlayerPos(playerid, 265.9037,77.2875,1001.0391);
    SetPlayerInterior(playerid,6);



    new name[24], name2[24];
    GetPlayerName(killerid, name, sizeof(name));
    GetPlayerName(pID, name2, sizeof(name2));



    format(string, sizeof(string), "Du wurdest von %s für %d Minuten eingesperrt.", name,JailTime/60);
    SendClientMessage(playerid, COLOR_BUSBLUE, string);



    format(string, sizeof(string), "Du hast %s für %d Minuten eingesperrt.", name2,JailTime/60);
    SendClientMessage(killerid, COLOR_BUSBLUE, string);



    PlayerWantedBarUpdate(pID);



    new str[128];
    for(new i = 0, j = GetMaxPlayers(); i < j; i++)
    {
    format(str, sizeof(str), "Wanted: %d", PlayerInfo[playerid][pWanted]);
    UpdatePlayer3DTextLabelText(i, wantedLabel[i][playerid], COLOR_RED, str);
    }
    return 1;
    }
    }
    ResetPlayerWeapons(playerid);
    PlayerInfo[killerid][pWanted]+=2;
    PlayerWantedBarUpdate(killerid);
    return 1;
    }

  • Probier es mal so:

  • Öhm nö ?



    [list=1][*]new Float:X,Float:Y,Float:Z;
    [*] GetPlayerPos(playerid,X,Y,Z);
    [*] TodesPickup[playerid] = CreatePickup(1254, 1, X, Y, Z, 0);
    [*] SetTimerEx("TOT", 1000, false, "i",playerid);
    [/list]


    erstellt den Todespickup. Und das soll nicht nur sein bei einem Spieler der OnDuty ist.



    PlayerInfo[playerid][pDeaths]++;
    justDied[playerid] = true;

    passt von dir auch nicht mit rein. Er soll die Tode ja auch zählen wenn er nicht OnDuty ist.



    Daher Fehler besteht weiterhin

  • Sobald ich jemanden als pLeader 1 mit Onduty tötet und dieser Wanteds hat, wird dieser in den knast teleportiert. Kurze Zeit später, 1-2 Sek. Stirbt die Person erneut im Knast.

    Das liegt daran, dass du den Spieler bei OnPlayerDeath in den Knast setzt, das darf aber erst beim Spawn passieren.
    Setze daher an der Stelle wo du aktuell das Setzen in den Knast hast (in OnPlayerDeath) eine Spielervariable auf 1 für den Spieler:
    PlayerInfo[playerid][SpawnInKnast] = 1;


    Und frage diese bei OnPlayerSpawn ab, wenn diese 1 ist, setzt du ihn dort in den Knast.