Zeit Begrenzung

Dieses Thema im Forum "Programmierung" wurde erstellt von kingingo, 8. September 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Hallo ich bin grad dabei ein Kit Plugin zu schreiben und wollte fragen wie man das macht das man das kit benutzten kann und dann eine 1 std oder 3 tage warten muss bis es wieder geht?? Vielen Dank für eine Antwort
     
    #1
  2. Code (Text):
    1. private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
    2.  
    3.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    4.         Player player = (Player) sender;
    5.         if(cooldowns.containsKey(player.getName())){
    6.             if(cooldowns.get(player.getName()) >= System.currentTimeMillis()){
    7.                 player.sendMessage("Aktueller Cooldown aktiv! ");
    8.                 return true;
    9.             }
    10.         }
    11.        
    12.         return true;
    13.     }
    So kannst du einen Cooldown erstellen. Dies ist zwar kein sauberer Code aber er würde Funtkionieren.

    Cooldown kannst du dann einfügen:
    cooldowns.put(playername,System.getCurrentTimeMillis() + timeInMilliseconds);
     
    #2
  3. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Ok danke ich versuch es ma damit THX
     
    #3
  4. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Vergiss aber nicht die hashmap in regelmäßigen abständen zu speichern, sonst gehen alle
    inhalte bei einem reload verloren.
     
    #4
  5. Sn0wBlizz4rdalt
    Offline

    Sn0wBlizz4rdalt Gesperrt

    Registriert seit:
    5. Dezember 2011
    Beiträge:
    311
    Hilft mir auch weiter, Danke!
     
    #5
  6. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Und wie macht man das wenn die Naricht kommt : Du kannst den Befehl erst in ... ausführen das dann auch die Zeit steht also das plugin selbst runter zäht? also

    Du kannst den Befehl erst in 60 min ausführen
    Du kannst den Befehl erst in 59 min ausführen
    Du kannst den Befehl erst in 58 min ausführen
     
    #6
  7. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    360
    Ort:
    Bayern
    Minecraft:
    DerHolzhacker
    Würde mich auch INteresieren..oder wenn da Kommt es sind noch 9,8,7,6,.... :D

    Mfg DerHolzhacker
     
    #7
  8. Code (Text):
    1. long remain = cooldowns.get(Playername)- System.getCurrentTime();
    2.  
    3. plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
    4. long d = remain;
    5.    public void run() {
    6.        getServer().broadcastMessage("Befehl in :" +remain );
    7. remain--;
    8.    }
    9. }, (long) 20*60);
    So ungefähr
     
    #8
  9. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    getCurrentTime geht nicht ? ach und DANKE
     
    #9
  10. getCurrentTime ist natürlich currentTimeMillis();
     
    #10
  11. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    was meinst du eigentlich mit PlayerName??
     
    #11
  12. Name des Spielers..., der den Cooldown hat^^
     
    #12
  13. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    also p.getName() rein??
     
    #13
  14. DevNull
    Offline

    DevNull

    Registriert seit:
    5. August 2012
    Beiträge:
    107
    Ort:
    /
    Mal im Ernst leute
    wasn das hier fürn "Posthunting"
    das is Stoff für ne PN aber nicht für Posts

    sowas kann man auch ganz gepflegt zusammen packen und sagen
    bla is das
    bla is jenes

    und nicht für jedes pillepalle teil n neuen post machen.
    ...

    mfG DevNull
     
    #14
  15. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Ok DevNull hat recht könntest du mir das eben mal zusammen fassen also bei einen Test von mir sieht es jetzt so aus

    Code (Text):
    1. package me.kingingo.kitstart;
    2.  
    3. import java.util.HashMap;
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.plugin.java.JavaPlugin;
    8.  
    9. public class KitStart extends JavaPlugin{
    10.    
    11.     int time = 60000;
    12.     @Override
    13.     public void onEnable(){
    14.        
    15.     }
    16.     @Override
    17.     public void onDisable(){
    18.        
    19.     }
    20.    
    21.     private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
    22.  
    23.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    24.         Player p = (Player) sender;
    25.         if(cooldowns.containsKey(p.getName())){
    26.             if(cooldowns.get(p.getName()) >= System.currentTimeMillis()){
    27.                 p.sendMessage("§c Du kannst den Befehl erst in " + time + " ausführen!");
    28.                 return true;
    29.             }
    30.         }
    31.         if(cmd.getName().equalsIgnoreCase("test")){
    32.             cooldowns.put(p.getName(),System.currentTimeMillis() + time);
    33.             p.sendMessage("§bTest");
    34.         }
    35.  
    36.         return true;
    37.     }
    38.    
    39. }
    40.  
    ok das hat auch geklappt wenn du mir noch sagen könntest wie man das dann so macht das die Nachricht Du kannst den Befehl erst in " + time + " ms ausführen!
    nicht so raus kommt Du kannst den Befehl erst in 60000 ms ausführen! sondern das das so raus komt Du kannst den Befehl erst in 1min ausführen! und bitte noch wie ich das dann speichern kann
     
    #15
  16. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    360
    Ort:
    Bayern
    Minecraft:
    DerHolzhacker
    Java kann Rechnen :D
     
    #16
  17. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Das musst du umrechnen:
    Code (Text):
    1.  
    2. public String formatMilliseconds(long milis){
    3.         int time;
    4.         if(milis>1000){
    5.             if(milis>60000){
    6.                 if(milis>360000){
    7.                     time = (int) (milis/360000);
    8.                     if(milis-(time*360000)>1000){
    9.                         return time +"h "+formatMilliseconds(milis-(time*360000));
    10.                     }else{
    11.                         return time +"h";
    12.                     }                      
    13.                 }
    14.                 time = (int) (milis/60000);
    15.                 if(milis-(time*60000)>1000){
    16.                     return time +"min "+formatMilliseconds(milis-(time*60000));
    17.                 }else{
    18.                     return time +"min";
    19.                 }  
    20.             }
    21.             time = (int) (milis/1000);
    22.             if(milis-(time*1000)>1000){
    23.                 return time +"sec "+formatMilliseconds(milis-(time*1000));
    24.             }else{
    25.                 return time +"sec";
    26.             }          
    27.         }
    28.         return milis+"ms";
    29.        
    30.     }
    31.  
    32.  
    Code (Text):
    1. p.sendMessage("§c Du kannst den Befehl erst in " + formatMilliseconds(time) + " ausführen!");
     
    #17
  18. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Ich hab dann noch eine Frage wie kann ich das dann speichern so das wenn ich reload mache nicht gleich alle Zeit Begrenzungn gelöscht werden ???
     
    #18
  19. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Indem du die werte mit einem FileWriter in eine Datei schreibst?
     
    #19
  20. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    ok danke ich kamm aber leider net sehr weit
    Code (Text):
    1.  
    2. try {
    3.             FileWriter ausgabe = new FileWriter("Kits.txt");
    4.            
    5.             ausgabe.write('');
    6.            
    7.         }catch(Exception e){
    8.             System.err.println(e);
    9.         }
    wenn mir jemand da ein bisschen weiter helfen kann?
     
    #20
Status des Themas:
Es sind keine weiteren Antworten möglich.