Skocz do zawartości
  • 0

If player can hold w pluginie


KodziaK

Pytanie

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1

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

  • 1
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

  • 0
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ę :D

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Inder00 napisał:

Ja podałem co u mnie działało i działa po wieki, ale dzięki za uwagę :D

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

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ę...