Friedhofstimer buggt

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, wenn ich auf dem Friedhof lande ist die Zeit oft im - bereich
    Wenn ich das erste mal sterbe ist sie noch normal danach ist sie im MInus


    Warum??


    if(strcmp(cmd, "/friedhof", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pFriedhof] >= 1)
    {
    //mini = PlayerInfo[playerid][pFriedhofTime]/60;
    new chat[128];
    new mini;
    //mini = (PlayerInfo[playerid][pFriedhofTime]-gettime()); // +1
    //new secs = PlayerInfo[playerid][pFriedhofTime]-gettime() - (mini*60);// - (mini*60); new secs = PlayerInfo[playerid][pFriedhofTime]-gettime();
    new secs = PlayerInfo[playerid][pFriedhofTime]-gettime() - (mini*60);
    format(chat, sizeof(chat), "Du bist noch für ca %d Sekunden auf dem Friedhof",secs);
    //format(chat, sizeof(chat), "Du bist noch für ca %d Sekunden auf dem Friedhof",secs);//PlayerInfo[playerid][pFriedhofTime]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, chat);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht auf dem Friedhof.");
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen,
    rndy

  • PlayerInfo[playerid][pFriedhofTime] = gettime() + 180;


    forward FriedhofTimer();
    public FriedhofTimer()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pFriedhof] == 1)
    {
    pIstTot[i] += 1;
    }
    if(PlayerInfo[i][pFriedhof] == 1 && pIstTot[i] == 3)//wielange man auf dem Friedhof ist
    {
    PlayerInfo[i][pFriedhof] = 0;
    pIstTot[i] = 0;
    SetPlayerVirtualWorld(i,0);
    SetPlayerSpawn(i);
    SpawnPlayer(i);
    DestroyPickup(TotenKopf[i]);
    }
    }
    }
    }



    if(PlayerInfo[playerid][pFriedhof] == 1 /*PlayerInfo[playerid][pTot] == 1 */&& PlayerInfo[playerid][pJailed] == 0 && PlayerInfo[playerid][pGangJailed] == 0 && PlayerPaintballing[playerid] == 0) // && PlayerInfo[playerid][pLevel] > 2
    {
    if(IsPlayerInFrac(playerid, 1))
    {
    SetPlayerColor(playerid,NAMECOLOR_LSCOP);
    }
    else
    {
    SetPlayerColor(playerid,TEAM_HIT_COLOR);
    }
    //TogglePlayerControllable(playerid, 0);
    ResetPlayerWeapons(playerid);
    SetPlayerPos(playerid,828.3665,-1102.0914,24.7891);//895.1538,-1119.9735,24.5863);
    //SetPlayerCameraPos(playerid, 1223.379028, -1333.354126, 33.809105);
    //SetPlayerCameraLookAt(playerid, 910.9415,-1102.5831,34.3235);
    SetPlayerVirtualWorld(playerid, 20);
    SetPlayerInterior(playerid, 0);
    //FreezePlayer(playerid);
    return 1;
    }


    Also ich hoffe da ist was bei was du brauchst^^

    Mit freundlichen Grüßen,
    rndy

  • Ja. Schreibe es so:
    if(strcmp(cmd, "/friedhof", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pFriedhof] >= 1)
    {
    new chat[128];
    new secs = PlayerInfo[playerid][pFriedhofTime]-gettime();
    format(chat, sizeof(chat), "Du bist noch für ca %d Sekunden auf dem Friedhof",secs);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, chat);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht auf dem Friedhof.");
    }
    }
    return 1;
    }

  • und wie wird der Timer jetzt resettet also das wenn ich wieder auf dem Friedhof komme das es wieder 180 Sekunden sind? also das der Timer sich zurücksetzt und erst wieder los geht wenn man wieder auf dem Friedhof ist

    Mit freundlichen Grüßen,
    rndy

  • und wie wird der Timer jetzt resettet also das wenn ich wieder auf dem Friedhof komme das es wieder 180 Sekunden sind? also das der Timer sich zurücksetzt und erst wieder los geht wenn man wieder auf dem Friedhof ist


    Einfach:
    PlayerInfo[playerid][pFriedhofTime] = 0;
    PlayerInfo[playerid][pFriedhof] = 0;
    dort wo du den Spieler aus dem Friedhof lässt.


    Wenn du in die Variable aber sonst nichts schreibst wird es mit dem nächsten mal sowieso überschrieben, sprich es müsste so eigentlich schon funktionieren.

  • Beitrag von ErikSon ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen