Skocz do zawartości
  • 0

Checkpoint


warchamer12

Pytanie

Siema robię w pluginie zapis gracza na danej pozycji i chciał bym zeby to działało (Jakby takie CheckPointy na tryb gry Parkour) I nie wiem jak to mam zrobić ;(

Potrzebuje zrobic dla gracza max 3 checkpointy i zapisać na daną pozycje gracza. A dla vipa max 5.

To jest ten plugin co napisałem:

 

 

Edytowane przez xAxee
Odnośnik do komentarza
https://skript.pl/temat/25396-checkpoint/
Udostępnij na innych stronach

12 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

@LloydPL dobra mam 

locations.put(player.getName(), player.getLocation());

tylko teraz chce zrobić zeby dalo się teleportowac. Bo lokalizacje ustawia.

@LloydPL 

 

Edytowane przez xAxee
Odnośnik do komentarza
https://skript.pl/temat/25396-checkpoint/#findComment-168229
Udostępnij na innych stronach

  • 0

Dodaj nową mapę, i zamień Location na Integer. Przy wejściu na serwer dodaj gracza do tej mapy z 0 wartością np.

Map<String, Integer> checkpoints = new HashMap<String, Integer>();
  // W evencie join
checkpoints.put(player.getName(), 0);
  
Potem przy zrobieniu nowego checkpointa:
if((!player.hasPermission("vip") && checkpoints.get(player.getName()) > 3) || (player.hasPermission("vip") && checkpoints.get(player.getName()) > 5))
  {
    // jakas wiadomosc o tym, ze gracz ma za duzo checkpointow.
  	return;
  }
  
  A przy dodaniu checkpointu uzyj:
  checkpoints.put(player.getName(), checkpoints.get(player.getName())+1);

 

Odnośnik do komentarza
https://skript.pl/temat/25396-checkpoint/#findComment-168232
Udostępnij na innych stronach

  • 0

@warchamer12 

public class ChPointListener implements Listener {

    private final Map<String, Integer> checkpoints = new HashMap<>();

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
        final Player p = e.getPlayer();
        final Action action = e.getAction();
        if (e.getItem() == null) return;
        if (p.hasPermission("chp.gracz")) {
            if (e.getItem().getType() == Material.COMPASS) {
                if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) {
                    if ((checkpoints.get(p.getName()) > 3)) {
                        p.sendMessage(Utils.getColor("&4Osiagnoles limit checkpoint!"));
                    } else {
                        if (p.getItemInHand() == null) return;
                        checkpoints.put(p.getName(), checkpoints.get(p.getName()) + 1);
                        p.sendMessage(Utils.getColor("&6Postawiles checkpoint!"));
                    }
                }
            }
            if (e.getItem().getType() == Material.COMPASS) {
                if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) {
                    final Integer loc = checkpoints.get(p.getName());
                    checkpoints.get(p.getName());
                    p.sendMessage(Utils.getColor("&4Teleportacja na ostatni checkpoint!"));
                }
            }
        } else {
            p.sendMessage(Utils.getColor("&4Nie masz permisji!"));
        }
    }

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent e) {
        final Player p = e.getPlayer();
        checkpoints.put(p.getName(), 0);
    }
}

poprawiony troche kod, ale przeciez jak to ma dzialac 'checkpoints.get(p.getName());' chcesz zeby cie teleportowalo do lokalizacji okreslonej, tak? ta metoda ci zwraca Integer, a nie teleportuje cie, jak chcesz to jak bede mial czas to moge ci dac kod, ale musialbys wszystko wytlumaczyc co chcesz

@edit w sumie tak patrzac na ten kod to moja poprawka duzo nie dala, nie chce mi sie znowu tego edytowac i tak to nic nie da, pozniej ci moge dac kodzik

Edytowane przez yooniks
Odnośnik do komentarza
https://skript.pl/temat/25396-checkpoint/#findComment-168275
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...