MapTeleport

Dieses Thema im Forum "Programmierung" wurde erstellt von HeadiPlays, 28. März 2014.

  1. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    HeyHo,

    ich bin gerade dabei ein Minigame zu programmieren und stecke beim Lobby-Count fest ._.
    Naja, er funktioniert zwar, doch das viel zu schnell.

    Hier der code:

    PHP:
    1.  
    2.     @SuppressWarnings({ "static-access", "deprecation" })
    3.     public void mapteleport() {
    4.        
    5.        
    6.         bowgame.lobbycount = Bukkit.getScheduler().scheduleAsyncRepeatingTask(bowgame, new Runnable() {
    7.  
    8.             @Override
    9.             public void run() {
    10.                
    11.                 for(Player all : Bukkit.getOnlinePlayers()) {
    12.                
    13.                 bowgame.lobbytime--;
    14.                
    15.                 if(bowgame.lobbytime == 90) {Bukkit.broadcastMessage("90 sek remaining");}
    16.                 if(bowgame.lobbytime == 60) {Bukkit.broadcastMessage("60 sek remaining");}
    17.                 if(bowgame.lobbytime == 30) {Bukkit.broadcastMessage("30 sek remaining");}
    18.                 if(bowgame.lobbytime == 10) {Bukkit.broadcastMessage("10 sek remaining");}
    19.                 if(bowgame.lobbytime == 5) {Bukkit.broadcastMessage("5 sek remaining");}
    20.                 if(bowgame.lobbytime == 4) {Bukkit.broadcastMessage("4 sek remaining");}
    21.                 if(bowgame.lobbytime == 3) {Bukkit.broadcastMessage("3 sek remaining");}
    22.                 if(bowgame.lobbytime == 2) {Bukkit.broadcastMessage("2 sek remaining");}
    23.                 if(bowgame.lobbytime == 1) {Bukkit.broadcastMessage("1 sek remaining");}
    24.                
    25.                 if(bowgame.lobbytime == 0) {  
    26.                    
    27.                     if(Bukkit.getOnlinePlayers().length >= 2) {
    28.                         for(Player all2 : Bukkit.getOnlinePlayers()) {
    29.                            
    30.                             all.setLevel(bowgame.lobbytime);
    31.                            
    32.                             File f = new File("plugins/BowGame", "locations.yml");
    33.                             FileConfiguration cfg = YamlConfiguration.loadConfiguration(f);
    34.                            
    35.                             World world = Bukkit.getWorld(cfg.getString("location.spawn.world"));
    36.                             double x = cfg.getDouble("location.spawn.x");
    37.                             double y = cfg.getDouble("location.spawn.y");
    38.                             double z = cfg.getDouble("location.spawn.z");
    39.                             double yaw = cfg.getDouble("location.spawn.yaw");
    40.                             double pitch = cfg.getDouble("location.spawn.pitch");
    41.                            
    42.                             all2.teleport(new Location(world, x, y, z, (float) yaw, (float) pitch));
    43.                            
    44.                             all2.getInventory().clear();
    45.                            
    46.                             Bukkit.getScheduler().cancelTask(bowgame.lobbycount);
    47.                            
    48.                         }
    49.                     } else {
    50.                         Bukkit.broadcastMessage("Not enough Players, restarting");
    51.                         bowgame.lobbytime = 90;
    52.                     }
    53.                    
    54.                 }
    55.                
    56.                    
    57.             }
    58.             }
    59.            
    60.         }, 0L, 20L);
    61.        
    62.        
    63.     }
    64.  
    Ich hoffe, dass mir einer helfen kann ;)
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Ist 'bowgame.lobbytime' am Anfang auf 90 gesetzt (und wird am ende wieder auf 90 gesetzt)?
     
    #2
  3. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    RE:

    Also, er wird beim joinen gestartet und er wurde in der main-klasse auch auf 90 gesetzt..
    und wenn nicht genug spieler da sind, dann wird er halt wieder auf 90 gesetzt..
     
    #3
  4. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni

    Für was ist die gut? Du verwendest doch schon

    Schau mal hier : http://pastebin.com/hKq6QyjA
     
    #4
  5. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Ja, du hast es jetzt ohne die for() schleife gemacht, jedoch möchte ich ja, dass die Spieler den Countdown in der EXP Leiste bekommen, deswegen die for() schleife...
    Aber um so mehr spieler drauf sind, um so schnell wird der Countdown..
     
    #5
  6. ThunderFlo
    Offline

    ThunderFlo

    Registriert seit:
    22. September 2013
    Beiträge:
    53
    Der Scheduler läuft viel zu schnell, da du ihn mehrmals startest. Ich weiß ja nicht wie du es gemacht hast, aber du könntest es so machen das der Countdown gestartet wird wenn 6 Leute online sind und wenn es unter 5 sind wird er gestoppt, oder du machst es so dass du dir verschiedene Spielstände erstellst (Enum *hust*) und zum Beispiel beim starten des Servers den Spielstand auf Lobby setzt und wenn zum ersten mal 6 Leute online sind, wird der Spielstand auf Countdown gesetzt und du checkst einfach später wenn der Countdown auf 0 ist, ob mindestens 6 Leute online sind und dann startet das Spiel, ansonsten setzt du einfach deine Zeit neu und das ganze geht von vorne los. Das heißt dann aber auch wenn mal 6 Leute online waren aber dann wieder alle leften läuft der Timer immer noch, deswegen würde ich dir die erste Variante empfehlen.

    Ich hoffe das hat dir geholfen :)
     
    #6
  7. HeadiPlays
    Offline

    HeadiPlays

    Registriert seit:
    8. Februar 2014
    Beiträge:
    45
    Ort:
    Bayern
    Minecraft:
    HeadShotNoob
    Es hat sich erledigt, danke :)
     
    #7