Taste für 5 sekunden festhalten

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
  • Mach es so:


    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    #define RELEASED(%0) \
    (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))


    new h_job[MAX_PLAYERS]; //oben im Skript


    //Unter OnPlayerkeyStateChange
    if(PRESSED(KEY_ANALOG_DOWN)) if(!h_job[playerid]) h_job[playerid] = gettime();
    if(RELEASED(KEY_ANALOG_DOWN)) {
    if((gettime()-h_job[playerid]) >= 5) {
    //Hier dann der Code rein, wenn er 5 Sekunden lang die Taste gedrückt hat :)
    }
    h_job[playerid]=0;
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von reaL. ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • es passiert aber nichts
    Oben im Script
    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    #define RELEASED(%0) \
    (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))


    new h_job[MAX_PLAYERS];
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_ANALOG_DOWN)) if(!h_job[playerid]) h_job[playerid] = gettime();
    if(RELEASED(KEY_ANALOG_DOWN))
    {
    if((gettime()-h_job[playerid]) >= 5)
    {
    SendClientMessage(playerid,ROT,"Länger als 5 sec :DD");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Keine 5 sec ://");
    }
    h_job[playerid]=0;
    }
    return 1;
    }

  • Beitrag von reaL. ()

    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
  • wieso funktioniert das nicht ?
    Jeffrey:
    Kaliber:
    ich will das man die taste num8 nur in dem Bereich drücken muss und das 7sec aber es ist so wenn ich irgendwas drücke w oder so kommt der Text du hast die Taste keine 7 sekunden gedrückt


    if(IsPlayerInRangeOfPoint(playerid,20,682.4080,823.6100,-27.3594)) if(PRESSED(2048)) if(!Bergarbeiter[playerid][aufladez]) Bergarbeiter[playerid][aufladez] = gettime();
    if(RELEASED(2048))
    print("Losgelassen!");
    {
    if((gettime()-Bergarbeiter[playerid][aufladez]) == 7)
    {
    SetPlayerCheckpoint(playerid,Bergabfuhr_Stationen[berg_Checkpoint][B_fX],Bergabfuhr_Stationen[berg_Checkpoint][B_fY],Bergabfuhr_Stationen[berg_Checkpoint][B_fZ],Bergabfuhr_Stationen[berg_Checkpoint][B_fRad]);
    SendClientMessage(playerid,GRÜN,"Eisenerz abgeliefert!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast die Taste keine 7 Sekunden gedrückt");
    }
    Bergarbeiter[playerid][aufladez]=0;
    }

  • Beitrag von Fernando_Jizuya ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Fernando_Jizuya ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • fail habe das icht gesehen :D
    ne frage wie mach ich das wenn die 7sec vorbei sind direkt die nachricht kommt ?
    sprich ich drück die Taste und wenn die 7sec vorbei sind kommt die Nachricht und Der Cp wird gesetzt weil man sonst bis 7 sekunden zählen muss


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(IsPlayerInRangeOfPoint(playerid,20,682.4080,823.6100,-27.3594))
    {
    if(PRESSED(2048))
    {
    if(!Bergarbeiter[playerid][aufladez])
    Bergarbeiter[playerid][aufladez] = gettime();
    }
    }
    if(RELEASED(2048))
    {
    if((gettime()-Bergarbeiter[playerid][aufladez]) == 7)
    {
    SetPlayerCheckpoint(playerid,Bergabfuhr_Stationen[berg_Checkpoint][B_fX],Bergabfuhr_Stationen[berg_Checkpoint][B_fY],Bergabfuhr_Stationen[berg_Checkpoint][B_fZ],Bergabfuhr_Stationen[berg_Checkpoint][B_fRad]);
    SendClientMessage(playerid,GRÜN,"Eisenerz abgeliefert!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast die Taste keine 7 Sekunden gedrückt");
    }
    Bergarbeiter[playerid][aufladez]=0;
    }
    return 1;
    }

  • Beitrag von reaL. ()

    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