![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
Kod |------ |playerItemId|itemId|playerId|playerItemBag|playerItemPlace|playerItemStack |------ |1|1|1|1|16|1 |2|2|1|1|35|1 |3|3|1|1|32|1 |4|2|1|2|1|1 |5|3|1|3|9|1 |6|1|1|2|8|1 |7|1|1|2|14|1 |8|3|1|1|1|1 |9|3|1|2|10|1 |11|1|1|1|9|1 |12|1|1|1|0|1 |13|1|1|1|4|1 Zakres playerItemPlace 0-47 Chcę się dowiedzieć jaka jest najmniejsza wolna wartość playerItemPlace dla danego playerItemBag Czyli dla playerItemBag=1 jest to 2, dla playerItemBag=2 i playerItemBag=3 jest to 0 Tu jest obrazek bo słabo widac na tekstowym przykładzie: (IMG:http://borderless-engine.tk/mediawiki/images/e/ea/Db_toforum.jpg) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Jeśli pobierasz dla konkretnego ID to:
A jeśli minimalne wartości dla wszystkich ID to:
Ten post edytował daniel1302 16.02.2013, 19:52:45 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
No tak, ale mi chodzi jakie jest najmniejsze playerItemPlace dla danego playerItemBag które nie jest zajęte
EDIT: Twój przykład jest dobry do momentu gdzie najniższe zajęte playerItemPlace jest większe/równe 1. Wtedy najniższym wolnym playerItemPlace będzie (wynik twojego zapytania)-1. Jednakże gdy obecnie najniższym zajętym miejscem jest 0 (a powiedzmy wszystkie inne wolne) twoje zapytanie nie będzie działać. Nawet nie wiem jak to zrobić po stronie php, gdybym miał to z bazy pobrane do zmiennej... Ten post edytował foxbond 16.02.2013, 20:08:23 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumię wogóle co chcesz zrobić.
Cytat Chcę się dowiedzieć jaka jest najmniejsza wolna wartość playerItemPlace dla danego playerItemBag Czyli dla playerItemBag=1 jest to 2, dla playerItemBag=2 i playerItemBag=3 jest to 0 Kolumna playerItemPlace dla playerItemBag=2 przyjmuje wartości: 16,35,32,1,0,9,4 Co wogóle rozumiesz przez słowa "nie zajęte" bo mi wolne kojarzy się z wartością ID=null, A tak ty możesz mieć wartość 0xff albo 1, więc pierw poczytaj na temat: "Jak mądrze zadać pytanie" |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://i50.tinypic.com/34xngpl.jpg)
(IMG:http://i45.tinypic.com/9r575t.jpg) (IMG:http://i46.tinypic.com/v5d6v9.jpg) Potrzebuję najmniejszej wartości z zakresu 0-47 która nie jest zajęta Dla pierwszego powinno zwrócić 2 Dla drugiego: 0 Dla trzeciego: 2 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
na pewno na te same dane patrzymy ?
ja widzę dla playerItemBag=1 jest 0 (nie 2) dla playerItemBag=2 jest 1 (nie 0) dla playerItemBag=3 jest 0 (nie 2) najpierw wytłumacz jak ty te wartości wyznaczasz |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję najmniejszej wartości z zakresu 0-47 która nie jest zajęta
dla playerItemBag=1 najmniejsza zajęta jest 0, najmniejsza niezajęta jest 2 dla playerItemBag=2 najmniejsza zajęta jest 1, najmniejsza niezajęta jest 0 dla playerItemBag=3 najmniejsza zajęta jest 0, najmniejsza niezajęta jest 2 No jeśli nadal nie wiadomo co co chodzi to może na obrazku pokazać? Ten post edytował foxbond 16.02.2013, 21:21:43 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
a skąd wiadomo że jest zajęta ?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
Pola zajęte to te wpisane w bazę, czyli:
dla playerItemBag=1 [0,1,4,9,16,32,35] dla playerItemBag=2 [1,8,10,14] dla playerItemBag=3 [0,1,9] |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
Można to zrobić tak:
Jednak to wykona 48 razy zapytanie do bazy.... EDIT: zaraz wypróbuję twój sposób, dzięki za próbę pomocy EDIT: WIELKIE dzięki, działa wyśmienicie EDIT: A jednak w niektórych wypadkach jest błąd. Nie wiem dlaczego, możliwe, że błąd jest w innym miejscu. Ten post edytował foxbond 16.02.2013, 22:31:52 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 17.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jak na moje oko, to nie da rady sprawdzić, które miejsce jest wolne, skoro nie istnieje w bazie taki zapis. Nie lepiej byłoby dla każdego Baga dodać wszystkie miejsca i później sprawdzać gdzie jest pusto?
Żeby sprawdzić w bazie czy coś jest puste, dany rekord musi istnieć. Możesz też ewentualnie połączyć to z php.
Przetwarzasz sobie dane, żeby mieć tablicę w postaci ( playerItemPlace => playerItemStack lub po prostu pusta wartość )
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
a w jakim przypadku ?
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 12 Dołączył: 20.12.2009 Skąd: Siedlce Ostrzeżenie: (0%) ![]() ![]() |
@Qualt
Nie mogę dla każdego baga dać wszystkich pól, gdyż momentalnie baza rozrosła by się o (48*3+10)*liczba_graczy Dodatkowo gracze raczej częściej będą mieli te plecaki puste niż zapełnione, tak więc tworzy się ogromną ilość niepotrzebnych rekordów. Zrobiłem jakieś logi na szybko, wyszło, że błąd był gdy zamieniałem przedmioty miejscami. Wystarczyło zamienić kolejność if-ów i jest w porządku. Sposób @sazian-a jest jak najbardziej poprawny, przypomniały mi się operacje na zbiorach ze szkoły średniej (IMG:style_emoticons/default/tongue.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:52 |