Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Jak to napisać w pluginie?


Rekomendowane odpowiedzi

Opublikowano

Witajcie ;)

 

Robie pewien plugin i chce w nim zrobić takie coś że:

 

Gracz Maciuś125 wchodzi pierwszy raz na serwer.Wyświetla się wiadomość w stylu "Maciuś125 wszedł pierwszy raz na serwer powitajcie go miło".Maciuś jednak nie widzi tej wiadomości za to widzą ją inni gracze obecni na serwie :)

 

Wykombinowałem już tak że Maciuś przy pierwszym wejściu na serwer będzie wpisywany do HashMapy "ngracz" a osoby zapisane w tej HashMapie nie będą widzieć czatu serwera.Serwer będzie wtedy wysyłał wiadomość po czym odczeka 2/3 sekundy i wypisze Maciusia z HashMapy.

 

Mam jednak problem: Jak zrobić aby ci wpisani do HashMapy nie widzieli tego czatu?

 

Fragment mojego kodu:

public final  HashMap<Integer, String> ngracz = new HashMap<Integer, String>();

public void onPlayerJoinEvent(PlayerJoinEvent join) {
   if(!join.getPlayer().hasPlayedBefore()) {
    //zapisywanie gracza do hashmapy ngracz
    Player p = join.getPlayer();
    String nick = p.getName();
    int liczbaNowych = 1;
    ngracz.put(liczbaNowych, nick);
    liczbaNowych++;
  
      if(ngracz.containsKey(nick)){
      //no i tu właśnie nwm co zrobić ;p
      }

Od razu zaznaczam że nie jestem jakimś super pro programistą lecz dopiero się uczę, więc proszę nie jeździć po mnie jak są jakieś podstawowe błędy a spokojnie wytłumaczyć ;d

Opublikowano

 Jak zrobić aby ci wpisani do HashMapy nie widzieli tego czatu?

Pobierasz wszystkich graczy na serwerze:

 

getServer().getOnlinePlayers()

I w pętli for dla każdego dostępnego wysyłasz wiadomość jeśli go nie ma w HashMapie.

for(int a=0;a<getOnlinePlayers().size();a++)
{
if(!jest w HashMapie)
{
getOnlinePlayers().get(a).send("Wiadomosc");
}
} 
Opublikowano

po co do hashmapy ? arraylist wystarczy 

a usuwanie graczy z listy po tych 3 sekundach bedzie malo wydajne jak wejdzie wiecej graczy

lepiej to zrobic przy wyjsciu z serwera 

albo po wyslaniu wiadomosci

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...