Timer geht nicht

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,


    habe ja jetzt den Befehl.
    Aber egal welche Zeit ich mache, ich komme nicht aus dem Knast.
    ocmd:einsperren(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist!");
    //if(!IsPlayerInRangeOfPoint(playerid,7.0,215.54243469238,215.54243469238,215.54243469238))return SendClientMessage(playerid,ROT,"Du bist nicht in der Nähe des Knast's!");
    new pID,zeit,string[180];
    if(sscanf(params,"ud",pID,zeit))return SendClientMessage(playerid,BLAU,"Benutzung: /einsperren [ID] [ZEIT]");
    if(!isPlayerWanted(pID))return SendClientMessage(playerid,ROT,"Spieler hat keine Wanteds");
    {
    format(string, sizeof(string), "** Officer %s hat %s in dem Knast gesperrt! **",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(BLAU, string);
    SendClientMessage(pID,ROT,"Du bist für bla Sekunden in den Knast gesperrt worden (-5000€)!");
    SetPlayerPos(pID,215.54243469238,215.54243469238,215.54243469238);
    SetPlayerInterior(pID,10);
    arrest = SetTimer("arrestzeit", zeit, true);
    }
    return 1;
    }
    public arrestzeit(playerid)
    {
    KillTimer(arrest);
    SendClientMessage(playerid,GREEN,"Du bist aus dem Knast gekommen!");
    SendClientMessage(playerid,GREEN,"Benimm dich in Zunkunft!");
    SpawnPlayer(playerid);
    }

  • Okay. Und wie mache ich die Zeit in Sekunden? Und lasse die im String oder in der einen Message anzeigen?

  • Du kannst keine Variablen/Funktionen mit SetTimer übermitteln (dafür nutzt man SetTimerEx).


    SetTimer baut sich so auf:


    SetTimer("diefunktion", 1000, false);


    Nutze http://wiki.sa-mp.com/wiki/SetTimerEx, Beispiel:


    SetTimerEx("arrestzeit", zeit, false, "d", playerid);


    (PS: Ich sehe nirgendwo eine Zuweisung für die Variable "zeit". Wie setzt du das / berechnest du das?)


    /edit:


    Zum Umrechnen von Millisekunden in Sekunden kannst du den Konverter hier nutzen: http://metricconversion.biz/de/zeit-umrechnung.html


    /edit2:


    Danke Mayor, habe ich überlesen. ;)

  • Ist doch da


    if(sscanf(params,"ud",pID,zeit))return SendClientMessage(playerid,BLAU,"Benutzung: /einsperren [ID] [ZEIT]");


    So setze ich die Zeit ja. Und meine Frage war dann ja auch noch, wie ich diese in Sekunden mache. Und wie zeige ich diese dann an?

  • "zeit" wird bei ihm mit ssanf übergeben und es ist ja auch nicht so das man gewarnt wird "Seit Sie begonnen haben diesen Beitrag zu verfassen gab es X neue Beiträge in diesem Thema." ...


    @ Thread
    Wenn du Zeit in Minuten angeben willst musst du sie einmal für den nutzer mal 60 rechnen damit die sekunden rauskommen und zweimal für den Timer mal 60 da er mit millisekunden arbeitet.


    ocmd:einsperren(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist!");
    //if(!IsPlayerInRangeOfPoint(playerid,7.0,215.54243469238,215.54243469238,215.54243469238))return SendClientMessage(playerid,ROT,"Du bist nicht in der Nähe des Knast's!");
    new pID,zeit,string[180];
    if(sscanf(params,"ud",pID,zeit))return SendClientMessage(playerid,BLAU,"Benutzung: /einsperren [ID] [ZEIT]");
    if(!isPlayerWanted(pID))return SendClientMessage(playerid,ROT,"Spieler hat keine Wanteds");
    {
    format(string, sizeof(string), "** Officer %s hat %s in dem Knast gesperrt! **",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(BLAU, string);
    format(string, sizeof(string), "Du bist für %d Sekunden in den Knast gesperrt worden (-5000€)!",zeit*60);
    SendClientMessage(pID,ROT,string);
    SetPlayerPos(pID,215.54243469238,215.54243469238,215.54243469238);
    SetPlayerInterior(pID,10);
    arrest = SetTimerEx("arrestzeit", zeit*60*60, true,"i",playerid);
    }
    return 1;
    }


  • Danke!!!
    Nun noch eine Sache.
    Die Cords stimmen gar nicht. Irgendwie habe ich einen Fehler gemacht.


    Leider geht mein Sobeit auch nicht mehr. Wie finde ich die Cords nun raus?

  • Ja, das ist ja auch nicht das Problem.
    Aber ich komme ja nicht dort rein.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ??? Was meinst du Damit?


    Ich komme ja nicht im Knast REIN. Der ist ja ZU... da kann ich NICHT REIN laufen.

  • Okay Habs Danke!


    Nun neues Problem :cursing:
    Ich mache /einsperren ID 5


    Normaler Weiße sollten das Doch 5 Minuten sein, oder? Es kommt auch die Message mit 300 Sekunden eingesperrt.
    Aber man ist nur 20 Sekunden drin.


    //Edit:
    Hier noch mal Befehl
    ocmd:einsperren(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist!");
    //if(!IsPlayerInRangeOfPoint(playerid,7.0,215.54243469238,215.54243469238,215.54243469238))return SendClientMessage(playerid,ROT,"Du bist nicht in der Nähe des Knast's!");
    new pID,zeit,string[180],string2[180],string3[180];
    if(sscanf(params,"ud",pID,zeit))return SendClientMessage(playerid,BLAU,"Benutzung: /einsperren [ID] [ZEIT]");
    if(!isPlayerWanted(pID))return SendClientMessage(playerid,ROT,"Spieler hat keine Wanteds");
    {
    format(string, sizeof(string), "** Officer %s hat %s für %d Sekunden in dem Knast gesperrt! **",SpielerName(playerid),SpielerName(pID),zeit*60);
    SendClientMessageToAll(BLAU, string);
    format(string2, sizeof(string2), "Du bist für %d Sekunden in den Knast gesperrt worden (-5000€)!",zeit*60);
    SendClientMessage(pID,ROT,string2);
    format(string3, sizeof(string3), "Du hast %s in den Knast eingesperrt (+5000€)!",SpielerName(pID));
    SendClientMessage(pID,ROT,string2);
    GivePlayerMoney(playerid,5000);
    GivePlayerMoney(pID,-5000);
    SetPlayerPos(pID,216.6484, 108.4219, 998.6719);
    SetPlayerInterior(pID,10);
    arrest = SetTimerEx("arrestzeit", zeit*60*60, true,"i",playerid);
    }
    return 1;
    }


    Muss man *1000*60 machen.

    3 Mal editiert, zuletzt von Mayor Degtyarev ()