![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam! Mam pewien problem, a mianowicie odczytałem poprawnie ten plik XML zamieszczony niżej,
jednak chciałbym zrobić coś takiego: Bo gdy gracz nie ma w danym slocie itemu, to ten slot się w ogóle nie zapisuje do pliku gracza i właśnie tu jest problem. Chciałbym aby gdy gracz nie ma danego slota to skrypt php by wywołał np. jakiś obrazek w odpowiednie miejsce. Nie wiem jak to dokładnie wytłumaczyć abyście zrozumieli. Może zaczne od pokazania skryptu php. http://wklej.org/hash/aea146ee657/ Jest to tak zrobione aby odczytywał sloty w taki sposób: '2','1','3','6','4','5','9','7','10','8' Ok, przejdzmy do tego problemu, moze pokaze Wam to graficznie... (IMG:http://i36.tinypic.com/2h3ud8h.jpg) Otoz tak wyglada wywolanie skryptu gdy ktoś ma wszystkie sloty u siebie w pliku natomiast tak: (IMG:http://i36.tinypic.com/2462ahd.jpg) Gdy nie ma jakiegoś slotu u siebie. Jak widzicie wszystko się przesunęło i zepsuło całą estetyke... I właśnie chciałbym uzyskać takie coś aby w miejsce slotu ktorego gracz nie ma pojawił się , nie wiem jakis obrazek lub tekst to juz moge sobie sam zeedytować, ale potrzebuje z tym pomocy bo probowałem wstawiać "else" i jakies "ify" ale zawsze pokazuje obrazek slotu ktorego gracz nie ma tyle razy ile gracz ma slotów... Mam nadzieje, ze zrozumieliscie o co mi chodzi, jakby cos jeszcze bylo niejasne prosze o napisanie. ;p Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Patrzę na kod i łapię się za głowę... Tyle ile pól tyle razy podwójnie zagnieżdżony foreach. Już za samo to by Cię tu większość zjadła (IMG:style_emoticons/default/winksmiley.jpg) Jakby nie spojrzeć wystarczyło by byś przewidział choćby ELSE, którego nigdzie nie posiadasz.
To nie prościej byłoby lecieć jednym(!) foreachem po slotach i w zależności czy ów slot w strukturze istnieje uzupełniać go obrazkiem lub obrazkiem domyślnym. Jedynie w przypadku plecaka miałbyś inaczej. Ja bym nawet zawartość plecaka jako całkowicie osobna strukturę dorobił. Sam slot oznaczałby typ plecaka (kilka rodzajów) lub jego brak. Osobna struktura XML przechowywała by jego zawartość. Czyli inside byłoby osobnym węzłem za slotami.
Zauważ, że usunąłem slotid="8"! Teraz lecąc w pętli po strukturze sprawdzam obecność określonego slotid. Jeśli jest wrzucam jego zawartość. Jeśli nie ma zawartość domyślna. Nic poza jedną pętlą i IF nie jest niemal konieczne!. A Ty rozwaliłeś na makabryczną ilość zagnieżdżonych pętli i ifów w nich. Po prostu złapać się za głowę tylko i rwać włosy. |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A kto mówił o osobnym pliku? Zobacz na strukturę jaką podałem. To wciąż jeden plik ale o nieco zmienionej strukturze drzewa XML. Plecak "wypchnąłem" poza sloty (IMG:style_emoticons/default/smile.gif) Moim zdaniem prościej potem to będzie parsować jeśli zdecydujesz się, że poszerzasz pola i zamiast 3x4 czy ile tam masz zrobisz choćby 4x5. Będziesz sprawdzał czy jakiś slot zamiast obecnego 3 ma wewnątrz jakąś strukturę z itemami, czy może lepiej wrzucić to do jednego, stałego miejsca, które jest niezależne od niej? Poza tym chyba masz sprawdzanie pojemności plecaka i nie możesz przepakowywać itemów z większego do mniejszego lub zakładania 2 plecaków? (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 27.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie mogę tego zrobić bo nie mam kodów źródłowych do całego silnika , dodatkowo byłoby to bawienie się w c++ z którym u mnie kiepsko...
Obejrzyj posta wyzej zeedytowałem go ;p |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj sobie trochę o XPath, przydaje się do wyciągania pojedynczych wartości z XMLa: http://www.w3schools.com/XPath/xpath_intro.asp
Popraw sobie też rozmieszczanie slotów w tabelce. Bo to co napisałem z tymi -1 jest dosyć toporne (IMG:style_emoticons/default/smile.gif) @thek gdzieś na dole: nie obrażę (IMG:style_emoticons/default/smile.gif) Ten post edytował Noidea 27.08.2010, 15:20:49 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ech... Dopóki możesz do takich maleństw używać bibliotek przewidywanych dla XML to nie ma sensu (poza wydajnościowym) to ich używaj SimpleXML choćby. Gdy to już masz: Xpath. Posłałbym całą strukturę SimpleXML do widoku i tam
/inventory/slot[@slotid = tutaj_dasz_numer_slota]/item/@id wyciągał zawartość id itemka. Jeśli brak wyniku -> nie ma itemka w slocie albo nawet slota w strukturze, czyli wyświetlenie obrazka domyślnego (pustego). Tyle razy wywołane ile masz slotów. A więc mniej więcej coś w stylu: Przy dobrze zrobionym i przemyślanym CSS to bajka (IMG:style_emoticons/default/smile.gif) Wystarczy by obrazki miały stałą wysokość i szerokość w wierszach a w kontenerze, który je zawiera będą się nawzajem układały, bez potrzeby używania tabelek. Przypuśćmy, że masz obrazki po 40px x 40px i wszystkie marginy, outline wyzerowane. Ustawię sobie tylko border 1px na nie i umieszczę w divie o wielkości 3x(40px+2*1px), 4x(40px+2*1px) => 126px, 168px a nawzajem sobie popłyną (IMG:style_emoticons/default/winksmiley.jpg) Przykład do zobaczenia sobie jak by to z użyciem css mogło wyglądać: Żadnego kombinowania z tabelkami tu nie trzeba. Proste doklejanie kodu. Bez cudowania z zamykaniem i otwieraniem wierszy tabelki. Zrób kopiuj-wklej kodu HTML a sam zobaczysz. Połączenie zaś pętli z podanym html to na poziomie składania klocków. Więcej nie pomogę, bo to już by oznaczało, że nie potrafisz składać klocków (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
jak już tak się bawiłem to pokażę jaki kod u mnie działa (IMG:style_emoticons/default/smile.gif)
Użyłem $xmlData kolegi Noidea, by całość można było sobie sprawdzić na własnych kompach a nie tworzyć. I pała pacyna za nieumiejętność użycia manuala. Tam pisze jak wczytywać pliki. simplexml_load_file. Masz to nawet w kodzie dla wklej.org
Powód edycji: [thek]: Mam nadzieję, że nie obrazisz się Noidea, że połączyłem oba (Twój i mój) by było ładniej?
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
EDIT: Jeśli na konkretnych pozycjach mają być konkretne obrazki "puste", to warto w ELSE rozważyć zamiast gołego
<div class="image"></div> użycie gdzie klasy slot1 aż do slotX będą nadawały temu divowi odpowiedni background-image. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 08:44 |