NukeBoards

Pomoc - EKWIPUNEK pomocy!

ziomek123234 - 25-08-2017, 16:14
: Temat postu: EKWIPUNEK pomocy!
Witam zrobiłem prosty strasznie ekwipunek ale mam jeden problem. Ponieważ gdy ten idzie na dół to jeżeli jakiś item usunę to ten slot nie może być zapełniony! Czy ktoś mi to pomoże przerobić?
LINK - http://www.mediafire.com/...wgew2z/eqXD.mfa

Proszę o szybką pomoc!
kamiledi15 - 26-08-2017, 21:43
:
Proszę, powinno działać.
www.mediafire.com/file/00pdlpdbk8iop5a/1.mfw
wermi - 26-08-2017, 23:14
:
@kamiledi15



Po pierwsze: powinieneś zapisywać informacje o zawartości ekwipunku w np. Array lub List object, a potem na podstawie tych informacji tworzyć obiekty, które będą służyć wyłącznie do wyświetlania, bądź też niektórych interakcji (ale wtedy też zapisujesz zmiany do tego Arraya). Robienie tego typu rzeczy na samych obiektach jest niewygodne i głupie, bo i tak musisz gdzieś przechowywać te informacje, np. po to, żeby zrobić zapis.

Gdy już masz silnik zbudowany w ten sposób wystarczy, że usuniesz ten jeden przedmiot, przesuniesz resztę o jedną pozycję w tył (w przypadku List object zrobi się to automatycznie) i utworzysz od nowa obiekty do wyświetlania.

Poza tym obiekty w ekwipunku powinny mieć odznaczone "Use fine detection", żeby można było kliknąć w cały slot, zamiast celować w piksel miecza.
ziomek123234 - 26-08-2017, 23:28
:
worm napisał/a:
Po pierwsze: powinieneś zapisywać informacje o zawartości ekwipunku w np. Array lub List object, a potem na podstawie tych informacji tworzyć obiekty, które będą służyć wyłącznie do wyświetlania, bądź też niektórych interakcji (ale wtedy też zapisujesz zmiany do tego Arraya). Robienie tego typu rzeczy na samych obiektach jest niewygodne i głupie, bo i tak musisz gdzieś przechowywać te informacje, np. po to, żeby zrobić zapis.

Gdy już masz silnik zbudowany w ten sposób wystarczy, że usuniesz ten jeden przedmiot, przesuniesz resztę o jedną pozycję w tył (w przypadku List object zrobi się to automatycznie) i utworzysz od nowa obiekty do wyświetlania.

Poza tym obiekty w ekwipunku powinny mieć odznaczone Use fine detection, żeby można było kliknąć w cały slot, zamiast celować w piksel miecza.

Wolałbym jakiś przykład, bo na tym się więcej nauczę niż na czytaniu xd.

kamiledi15 napisał/a:
Proszę, powinno działać.
www.mediafire.com/file/00pdlpdbk8iop5a/1.mfw

Coś nie działa :/
wermi - 27-08-2017, 00:40
:
ziomek123234 napisał/a:
Wolałbym jakiś przykład, bo na tym się więcej nauczę niż na czytaniu xd.


Myślę, że jest dokładnie na odwrót, bo przykład możesz bezmyślnie skopiować, a rozwiązanie podane tekstowo musisz najpierw zrozumieć, żeby zaimplementować. Mimo wszystko myślę, że to co napisałem wcześniej nie jest wystarczająco jasne dla laików. Jutro spróbuję to bardziej dogłębnie wytłumaczyć, mimo że całość można zaimplementować w dosłownie kilku zdarzeniach.
jarlfenrir - 27-08-2017, 10:08
:
worm napisał/a:
ziomek123234 napisał/a:
Wolałbym jakiś przykład, bo na tym się więcej nauczę niż na czytaniu xd.


Myślę, że jest dokładnie na odwrót, bo przykład możesz bezmyślnie skopiować, a rozwiązanie podane tekstowo musisz najpierw zrozumieć
Będąc na pewnym etapie nie zrozumiesz rozwiązania podanego tekstowo. Dla początkującego przykład będzie bardziej edukacyjny, niż słowny opis.
kamiledi15 - 27-08-2017, 12:31
:
www.mediafire.com/file/cnvs2i7pbz47mkc/eqXD.mfa
A teraz?
ziomek123234 - 27-08-2017, 14:10
:
jarlfenrir napisał/a:
Będąc na pewnym etapie nie zrozumiesz rozwiązania podanego tekstowo. Dla początkującego przykład będzie bardziej edukacyjny, niż słowny opis.

Dzięki za zrozumienie.

worm napisał/a:
Po pierwsze: powinieneś zapisywać informacje o zawartości ekwipunku w np. Array lub List object, a potem na podstawie tych informacji tworzyć obiekty, które będą służyć wyłącznie do wyświetlania, bądź też niektórych interakcji (ale wtedy też zapisujesz zmiany do tego Arraya). Robienie tego typu rzeczy na samych obiektach jest niewygodne i głupie, bo i tak musisz gdzieś przechowywać te informacje, np. po to, żeby zrobić zapis.

Gdy już masz silnik zbudowany w ten sposób wystarczy, że usuniesz ten jeden przedmiot, przesuniesz resztę o jedną pozycję w tył (w przypadku List object zrobi się to automatycznie) i utworzysz od nowa obiekty do wyświetlania.

Poza tym obiekty w ekwipunku powinny mieć odznaczone Use fine detection, żeby można było kliknąć w cały slot, zamiast celować w piksel miecza.

Dziękuje ci oczywiście i przepraszam za zmarnowany czas :P

kamiledi15 napisał/a:
www.mediafire.com/file/cnvs2i7pbz47mkc/eqXD.mfa
A teraz?

Dziękuje ci bardzo, pomogłeś! :D
kamiledi15 - 27-08-2017, 14:46
:
Nie ma sprawy. Nie znam się na arrayu i nie robiłem jeszcze zapisywania gry, więc nie wiem, czy twój sposób zda egzamin na dłuższą metę, najlepiej sprawdź to, zanim pójdziesz dalej.
ziomek123234 - 27-08-2017, 15:00
:
kamiledi15 napisał/a:
Nie ma sprawy. Nie znam się na arrayu i nie robiłem jeszcze zapisywania gry, więc nie wiem, czy twój sposób zda egzamin na dłuższą metę, najlepiej sprawdź to, zanim pójdziesz dalej.

Działa sprawnie, ja się nie bawię w Array :/
Ale ten się dobrze sprawuje!!
Polecam :)
I jeszcze raz dziękuje ;-]

[ Dodano: 27-08-2017, 15:42 ]
kamiledi15 napisał/a:
sprawdź to

Ej mam jeszcze jeden błąd :/ Bo zrobiłem inny action i on coś źle działa! :<
http://www.mediafire.com/...4tq85h/EQjj.mfa
jak mógłbyś to sprawdź
kamiledi15 - 27-08-2017, 18:28
:
Proszę:
https://www.mediafire.com...31/asdqe235.mfa
Wystarczyło wywalić jeden warunek ze zdarzeń 6 i 11, bo przez to przesuwałeś wskaźnik za daleko. Poza tym w zdarzeniach 2 i 7 źle ustawiałeś pozycję wskaźnika - na trzecie, zamiast na pierwsze pole. Zrobiłem też grupę ,,Good", do której należą krawędzie i przedmioty do zbierania. To daje dwie rzeczy - po pierwsze, dzięki temu nie da się postawić jednego przedmiotu na drugi, gdy pole już jest zajęte (wcześniej, gdy zapełniłeś wszystkie pola, to mogłeś np. położyć drewno na polu zajętym przez miecz), poza tym dzięki temu ten czerwony kwadratowy wskaźnik nie skacze jak szalony, gdy zapełni się już wszystkie pola. To znaczy skacze, ale nie widać tego, bo jest wtedy niewidzialny :P Będziesz musiał tylko pamiętać, gdy będziesz robić następne przedmioty do zbierania, żeby też je wrzucać do tej grupy Good.
wermi - 27-08-2017, 19:46
:
To co zrobił kamiledi jest złe, dlatego stworzyłem prosty przykład ekwipunku oparty o List object, który prezentuje znacznie lepsze podejście. Zawiera w miarę dobre komentarze, które opisują działanie silnika i tłumaczy dlaczego niektóre rzeczy są zrobione akurat w taki sposób.

Download (wymagany MMF2 lub nowszy): https://www.dropbox.com/s...ipunek.mfa?dl=1

Możesz też dalej używać sposobu z obiektami aktywnymi, ale gwarantuję ci, że prędzej czy później cię to zgubi.
ziomek123234 - 27-08-2017, 20:03
:
worm napisał/a:
To co zrobił kamiledi jest złe, dlatego stworzyłem prosty przykład ekwipunku oparty o List object, który prezentuje znacznie lepsze podejście. Zawiera w miarę dobre komentarze, które opisują działanie silnika i tłumaczy dlaczego niektóre rzeczy są zrobione akurat w taki sposób.

Download (wymagany MMF2 lub nowszy): https://www.dropbox.com/s...ipunek.mfa?dl=1

Możesz też dalej używać sposobu z obiektami aktywnymi, ale gwarantuję ci, że prędzej czy później cię to zgubi.

Dzięki za przykład, może też skorzystam jak ten mi nie wypadnie. :D dziękuje ci bardzo ;p

kamiledi15 napisał/a:
Proszę:
https://www.mediafire.com...31/asdqe235.mfa
Wystarczyło wywalić jeden warunek ze zdarzeń 6 i 11, bo przez to przesuwałeś wskaźnik za daleko. Poza tym w zdarzeniach 2 i 7 źle ustawiałeś pozycję wskaźnika - na trzecie, zamiast na pierwsze pole. Zrobiłem też grupę ,,Good, do której należą krawędzie i przedmioty do zbierania. To daje dwie rzeczy - po pierwsze, dzięki temu nie da się postawić jednego przedmiotu na drugi, gdy pole już jest zajęte (wcześniej, gdy zapełniłeś wszystkie pola, to mogłeś np. położyć drewno na polu zajętym przez miecz), poza tym dzięki temu ten czerwony kwadratowy wskaźnik nie skacze jak szalony, gdy zapełni się już wszystkie pola. To znaczy skacze, ale nie widać tego, bo jest wtedy niewidzialny Będziesz musiał tylko pamiętać, gdy będziesz robić następne przedmioty do zbierania, żeby też je wrzucać do tej grupy Good.

Dzięki :D trochę ciężko mi się ogarnia eq więc... Ale pomogłeś mi ! 2x ;D
No dzięki po raz drugi :P
kamiledi15 - 27-08-2017, 22:07
:
Worm, ja jestem zwolennikiem najprostszych rozwiązań. Jeśli działają, to nie widzę potrzeby ich zmieniania i uczenia się nowych rzeczy. Sam jestem samoukiem i pewnie wyśmiałbyś większość rozwiązań w mojej grze - ale działają tak, jak chciałem. Teraz zależy już tylko, czy Ziomek ogarnie zapisywanie gry tą metodą.
wermi - 28-08-2017, 00:27
:
kamiledi15 napisał/a:
Worm, ja jestem zwolennikiem najprostszych rozwiązań.


problem w tym, że twojemu rozwiązaniu daleko do prostego. Moje rozwiązanie w najbiedniejszej formie można zaimplementować w jednym zdarzeniu - sama pętla rysowania ekwipunku. Dodawanie przedmiotu do ekwipunku - kolejne zdarzenie, usuwanie - kolejne. Zapis i odczyt - dwa kolejne. Przy twoim rozwiązaniu trzeba coraz bardziej mieszać w kodzie za każdym razem, gdy dodaje się nową funkcjonalność, bądź coś zmienia.

W jednym z wczesnych filmów z Psa Syreny pokazałeś ilość zdarzeń w jednej z ramek - raczej złapałem się za głowę, niż wyśmiałem.

kamiledi15 napisał/a:
Sam jestem samoukiem


A kim myślisz, że ja jestem?