KGaZ 28 Opublikowano 6 maja 2017 Udostępnij Opublikowano 6 maja 2017 Witam , dopiero zaczynam z tym programowaniem itp. Ale nie radze sobie z pluginem na kick if(Bukkit.getPlayer(args[0]) !=null){ Player r = Bukkit.getPlayer(args[0]); String powod = args[1]; String gracz = ((Player) sender).getPlayer().getDisplayName(); powod = powod.replaceAll("&", "§"); powod = powod.replaceAll(" ", " "); String kicked = args[0]; r.kickPlayer("§f§m-------------------------------------- \n§eZosales wyrzucony z serwera!\n§6»§f Wyrzucil:§a " + gracz +"\n§6»§f Powod:§a " + powod + "\n§fZapraszamy do ponownego wejscia na serwer\nI nie sprawiania wiecej problemow!\n §f§m--------------------------------------"); Bukkit.broadcastMessage("§7[§3§lHC§f§l2§b§lU§7]§c " + gracz + "§7 wyrzucil§c " + kicked + "§7 za§c " + powod + "§7!"); return true; Chodzi mi o to że jak mam zapełnione oba argumenty gracz i jedno słowo to drugie już mi się zalicza jako argument 3 A chce żeby to podlegało pod jeden argument Źle trochę to wytłumaczyłem ale niezbyt ogarniam Odnośnik do komentarza https://skript.pl/temat/18276-string-z-wieloma-argumentami/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 TheMolkaPL 345 Opublikowano 6 maja 2017 Udostępnij Opublikowano 6 maja 2017 (edytowane) Otóż parametry, czy też argumenty w komendach podawane są jako tablica String. Tablica jest taką jakby listą, gdzie tutaj podawany jest ciąg znaków. Jest to więc lista ciągów znaków. Teraz pobieramy z niej informacje; pierwszym Stringiem jest nick gracza (powinniście sprawdzać czy ten Player r jest online). Następne Stringi powinny zostać zjednoczone w jeden string (przy czym każdy z nich powinien zostać oddzielony znakiem spacji). Można to zrobić następująco w czystej Javie: public String uniteStrings(String[] strings) { // Na początku tworzymy nowego "budowniczego" naszego Stringa. Do tego // budowniczego będziemy podawać kolejne Stringi z naszej tablicy. // Ostatecznie pobierzemy z niego gotowy String StringBuilder builder = new StringBuilder(); // Robimy pętlę przez prawie wszystkie Stringi w tablicy. W Javie zawsze // liczymy od zera, ale tutaj robimy wyjątek. Wszystko przez to, że pierwszy // argument w naszej tablicy jest nickiem gracza, który chcemy wyrzucić. // Zaczynamy więc od 2 argumentu, a więc od 1 (bo liczymy od 0, więc // odejmujemy 1). for (int i = 1; i < strings.length; i++) { // Kod wewnątrz tego for wykona się za każdym razem, gdy w tej tablicy // będzie się znajdować kolejny argument. Jeżeli wykonamy komendę // "/kick TheMolkaPL Hello world!", to TheMolkaPL pominiemy, bo // zapętlamy od drugiego argumentu (patrz wyżej). Następnie kod wewnątrz // tego for wykona się 2 razy. Pierwszy raz dla "Hello", a następnie dla // "world!" String string = strings[i]; // No dobrze mamy już ten String. Moglibyśmy dodać go już to tego // StringBuildera na początku, ale nie możemy zapomnieć, że argumenty // muszą być oddzielone znakiem spacji! Przecież nie chcemy powodu o // treści "HelloWorld!", tylko "Hello world!". W tym celu musimy // sprawdzić czy właśnie zapętlamy przez pierwszy String w tej tablicy. // Jeżeli tak, to wstawiamy go do StringBuildera jak jest, jeżeli nie to // przez dodaniem go tam dodajemy najpierw znak spacji. Dzięki temu // kolejne argumenty powodu (nie licząc tego pierwszego) będą // poprzedzone znakiem spacji. I znowu uwaga! Jak już wcześniej // wspomniałem, w Javie liczymy od zera, powinno być tu w takim razie 0, // natomiast w pierwszym Stringu mamy nick gracza, którego tutaj nie // chcemy! if (i == 1) { builder.append(string); } else { // "if ... else" - czyli - "jeżeli ... w innym przypadku". Kod // wewnątrz "if" wykona się jeżeli if zostanie spełniony, kod // wewnątrz "else" wykona się jeżeli ten wcześniejszy "if" nie // zostanie spełniony. Tak więc ten kod wykona się jeżeli nie jest // to pierwszy argument w powodzie. W takim wypadku najpierw // dodajemy spacje, potem String. builder.append(" "); builder.append(string); } } // Na koniec zwracamy gotowy String z tego StringBuildera. return builder.toString(); } Kod który wyżej podałem jest uproszczony. Ma problem powtarzania linijki "builder.append(string);" Dla kogoś takiego jak ja powinien wyglądać następująco: // Jeżeli i nie jest równe 1, != jest negacją, czyli zaprzeczeniem do ==. == // znaczy "jest równe", a więc != znaczy "nie jest równe". Krótko mówiąc, jeżeli // zmienna i nie jest równa 1. A więc wykonaj kod wewnątrz tego ifa, jeżeli nie // jest to pierwszy String z tych argumentów powodu. if (i != 1) { builder.append(" "); } // Zawsze! Zawsze dodajemy String który właśnie zapętlamy! builder.append(string); Dzisiaj powstały biblioteki, które upraszczają tego typu działania. Mamy przykładowo bibliotekę Apache Commons Lang, która jest już zaimplementowana w Bukkicie. Dzięki temu wystarczy użyć: StringUtils.join(args, " ", 1, args.length()); To znaczy - połącz Stringi z "args", oddziel je znakiem spacji " ", zacznij od 1 (czyli pomiń nick gracza) i zakończ na końcu tej tablicy. Pozdrawiam Czerwono! Edytowane 6 maja 2017 przez TheMolkaPL Ixidi 1 Odnośnik do komentarza https://skript.pl/temat/18276-string-z-wieloma-argumentami/#findComment-125083 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
KGaZ 28
Witam , dopiero zaczynam z tym programowaniem itp.
Ale nie radze sobie z pluginem na kick
if(Bukkit.getPlayer(args[0]) !=null){ Player r = Bukkit.getPlayer(args[0]); String powod = args[1]; String gracz = ((Player) sender).getPlayer().getDisplayName(); powod = powod.replaceAll("&", "§"); powod = powod.replaceAll(" ", " "); String kicked = args[0]; r.kickPlayer("§f§m-------------------------------------- \n§eZosales wyrzucony z serwera!\n§6»§f Wyrzucil:§a " + gracz +"\n§6»§f Powod:§a " + powod + "\n§fZapraszamy do ponownego wejscia na serwer\nI nie sprawiania wiecej problemow!\n §f§m--------------------------------------"); Bukkit.broadcastMessage("§7[§3§lHC§f§l2§b§lU§7]§c " + gracz + "§7 wyrzucil§c " + kicked + "§7 za§c " + powod + "§7!"); return true;Chodzi mi o to że jak mam zapełnione oba argumenty gracz i jedno słowo to drugie już mi się zalicza jako argument 3
A chce żeby to podlegało pod jeden argument
Źle trochę to wytłumaczyłem ale niezbyt ogarniam
Odnośnik do komentarza
https://skript.pl/temat/18276-string-z-wieloma-argumentami/Udostępnij na innych stronach
1 odpowiedź na to pytanie
Rekomendowane odpowiedzi