KodziaK 30 Opublikowano 27 sierpnia 2017 Udostępnij Opublikowano 27 sierpnia 2017 Otóż mam pytanie. Jak sprawdzić czy gracz np. może otrzymać diament do ekwipunku. Jeżeli tak daje mu go a jeżeli nie wyrzuca na ziemie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
1 Nieaktywny Opublikowano 27 sierpnia 2017 Udostępnij Opublikowano 27 sierpnia 2017 Licze na + Location loc = p.getLocation(); HashMap<Integer, ItemStack> naziemi = p.getInventory().addItem(item); if(!naziemi.isEmpty()){ loc.getWorld().dropItemNaturally(loc, item); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
1 GotoFinal 195 Opublikowano 27 sierpnia 2017 Udostępnij Opublikowano 27 sierpnia 2017 Godzinę temu, Inder00 napisał: Licze na + Location loc = p.getLocation(); HashMap<Integer, ItemStack> naziemi = p.getInventory().addItem(item); if(!naziemi.isEmpty()){ loc.getWorld().dropItemNaturally(loc, item); } To jest niepoprawna odpowiedz, zadziała poprawnie tylko jeśli dajesz 1 item z ilością 1, w innych przypadkach masz bugi i to poważne, wiec lepiej nigdy nie pisać takiego kodu. Poprawnie powinno być Location loc = p.getLocation(); HashMap<Integer, ItemStack> rest = p.getInventory().addItem(items); for (ItemStack item : rest.values()) { loc.getWorld().dropItemNaturally(loc, item); } bo metoda .addItem zwraca mapę gdzie klucz to index z array itemów do dodania, a wartość to itemy których nie udało się dodać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Nieaktywny Opublikowano 27 sierpnia 2017 Udostępnij Opublikowano 27 sierpnia 2017 Teraz, GotoFinal napisał: To jest niepoprawna odpowiedz, zadziała poprawnie tylko jeśli dajesz 1 item z ilością 1, w innych przypadkach masz bugi i to poważne, wiec lepiej nigdy nie pisać takiego kodu. Poprawnie powinno być Location loc = p.getLocation(); HashMap<Integer, ItemStack> rest = p.getInventory().addItem(items); for (ItemStack item : rest.values()) { loc.getWorld().dropItemNaturally(loc, item); } bo metoda .addItem zwraca mapę gdzie klucz to index z array itemów do dodania, a wartość to itemy których nie udało się dodać Ja podałem co u mnie działało i działa po wieki, ale dzięki za uwagę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 27 sierpnia 2017 Udostępnij Opublikowano 27 sierpnia 2017 1 minutę temu, Inder00 napisał: Ja podałem co u mnie działało i działa po wieki, ale dzięki za uwagę nooo to radzę lepiej sprawdzić zanim gracze zaczną ci klonować tym itemki... tak właściwe ratuje cię chyba fakt że dodaje to do EQ gracza, bo oryginalny item też się wtedy edytuje... W niektórych rodzajach inventory po użyciu addItem możesz mieć taką sytuację: - Dodajesz 2 diaxy do inventory - ale jest tylko miesjce na jednego - Więc jeden się dodaje, a ty potem dropisz dwa na ziemię, łącznie nagle są 3 W eq gracza to działa bo ten item diaxa też jest edytowany podczas dodawania.Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! > It is known that in some implementations this method will also set the inputted argument amount to the number of that item not placed in slots. Z tym ze to się może nagle zmienić po aktualizacji jakiejś, więc ryzykowne. No ale tak to twoja metoda nie wspiera dodawania kilku itemów na raz, trzeba by ręcznie każdy z nich ogarnąć, a tak to można sobie zrobić osobną metodę addItemsOrDrop(Player player, ItemStack... items) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
KodziaK 30
Otóż mam pytanie. Jak sprawdzić czy gracz np. może otrzymać diament do ekwipunku. Jeżeli tak daje mu go a jeżeli nie wyrzuca na ziemie
Odnośnik do komentarza
Udostępnij na innych stronach
4 odpowiedzi na to pytanie
Rekomendowane odpowiedzi