Spiele jetzt mit auf

Aktuelles

WerbeZeit!

Status
Für weitere Antworten geschlossen.
Hallo liebe Skyblock Spieler/Spielerinnen!

Euch ist hoffentlich schon aufgefallen das man /ad & /q Nutzen Kann um mehr im Chat aufzufallen!
Alles schön & Gut. Nur eine Sache stört mich. Abgesehen davon das es sehr viele nicht nutzen, Stört mich das wenn man einmal eine Werbung gemacht hat, muss man ja 10 Min warten, Wenn man innerhalb dieser 10 Min versucht noch einmal Werbung zu machen, Steht dort nur: "Du musst noch warten, bevor du erneut Werbung betreiben kannst"! Viel besser fände ich es wenn dort stehen würde: "Du musst noch 5 Min warten, um erneut Werbung zu betreiben"! Natürlich mit der beliebigen Wartezeit.

Eure Meinung zu dem Thema?

Lg. ImAktivYouPassiv <3
 
Warum eigentlich nicht.
So schwer umzusetzen ist das ja nicht.
Hier ist ein Beispiel für eine mögliche Umsetzung:
Code:
if (cooldown == 0) {
  //Gib die Werbung aus
}
else {
  sender.sendMessage("Du kannst in " + cooldown + " Minuten wieder Werbung machen.");
}
cooldown ist dabei der Cooldown für die Werbung (was der Name eigentlich schon sagt) und sender ist der Spieler, der werben möchte.

Bin dafür.
 

Wolfcrest

Ehemaliger Entwickler
Premium
Warum eigentlich nicht.
So schwer umzusetzen ist das ja nicht.
Hier ist ein Beispiel für eine mögliche Umsetzung:
Code:
if (cooldown == 0) {
  //Gib die Werbung aus
}
else {
  sender.sendMessage("Du kannst in " + cooldown + " Minuten wieder Werbung machen.");
}
cooldown ist dabei der Cooldown für die Werbung (was der Name eigentlich schon sagt) und sender ist der Spieler, der werben möchte.

Bin dafür.
Ich bin überzeugt, dass @Wolfcrest schon soweit ist, das selbst zu bewältigen...

1. das,
2.
3risbcx.jpg


Wie dann?
In einer HashMap zu jeder UUID eines Spielers (Key) den aktuellen Zeitstempel in Millisekunden + die Zeit, die der Cooldown dauern soll speichern.
Beim Ausführen des Commands dann überprüfen, ob der Spieler in der HashMap drin steht und ob der eingetragene Wert < dem aktuellen Zeitstempel in Millisekunden entspricht.

Also als Attribut der Klasse:
Code:
public static HashMap<UUID, Long> cooldowns = new HashMap<>();

und in der onCommand():
Code:
//check cooldown
Long cooldown = cooldowns.get(p.getUniqueId());
if(cooldown != null){
    long remainingTime = cooldown - System.currentTimeMillis();
    if(remainingTime > 0){
        p.sendMessage(Messages.SKYBLOCK_PREFIX + "Du musst noch §6" + (TimeUnit.MILLISECONDS.toMinutes(remainingTime) + 1) + " Minuten §7warten, bevor du erneut Werbung betreiben kannst.");    //+1 so that it does not say "0 Minutes" when there is less than a minute remaining
        return true;       //end command execution
    }
}

//continue with command execution

Der Code ist btw ohne IDE geschrieben und nicht getestet, müsste aber eigentlich funktionieren. :D

@MagicEinhorn2000
War sicher nett gemeint und deine Variante hätte man bestimmt auch realisieren können.
Allerdings bräuchte man dann natürlich immer noch einen Ort (z.B. HashMap), wo man die Cooldowns speichert.
Außerdem, wenn du deinen != 0 Check haben willst, einen RepeatingTask, der im Hintergrund die ganze Zeit die Cooldowns der einzelnen Spieler runterzählt. (weil die sich ja sonst nicht aktualisieren.)
Das ist nicht performant. ;)
Falls du oder irgendjemand dazu noch eine Frage hat, gerne hier im Forum eine Nachricht an mich. :)

Da ich das jetzt sowieso schon programmiert hab, kommt das im nächsten Patch. :D

#close

MfG
Wolf
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Oben