ALT Opublikowano 26 Lutego 2011 Opublikowano 26 Lutego 2011 Potrzebuje prostego przykładu z inventory a'la Minecraft,czyli biorę jakiś item,to sprawdza czy już jest taki w inventory jeżeli tak,to go stack'uje.
Roki Opublikowano 26 Lutego 2011 Opublikowano 26 Lutego 2011 To proste ._. Robisz tablice: GML global.item[1] = 0; // ID Itemu w danej komórce eq global.number[1] = 0; // Ilość Itemu w danej komórce eq</span></span> I jak coś podnosisz to po kolei sprawdzasz każde global.item, jeśli znalazłeś dane ID, to sprawdzasz czy global.number nie przekracza maksymalnej ilości itemka na slocie, jeśli przekracza, szukasz kolejnego pola, jeśli nie to dodajesz itemek. Proste. Przykładu nie napiszę, jest to tak banalne, że sobie chyba poradzisz. Btw. To jest pytanie zaawansowane? To zwykła logika, czy coś w ten deseń.
Muuuuczek567 Opublikowano 26 Lutego 2011 Opublikowano 26 Lutego 2011 @Roki: lol. A jak będzie 4k itemów, to co, też na tablicach? @ALT: proponuję zrobić to na listach. Dużo szybciej. I nie sprawdzać po kolei każdego elementu listy global.item, tylko pobrać ID itemu podnoszonego i od razu zwiększać ds_list_find_value(global.number,id_itemu) o 1. E: Roki, w ciągu 5 minut zmieniłeś avatara 3 razy?
Platyna Opublikowano 26 Lutego 2011 Opublikowano 26 Lutego 2011 I nie sprawdzać po kolei każdego elementu listy global.item, tylko pobrać ID itemu podnoszonego i od razu zwiększać ds_list_find_value(global.number,id_itemu) o 1. A sprawdzałeś cwaniaku złożoność czasową tej funkcji? To, że to jedna instrukcja, a nie pętla nie znaczy, że działa szybciej... Śmiem twierdzić że to też działa w czasie O(n). Chociaż mogę się mylić. Zależy czy jest to rzeczywiście lista czy może jakieś drzewo binarne. EDIT: Chyba masz jednak rację. Zaraz sprawdzę dokładniej. :P EDIT2: Nie, to chyba jednak zwykła lista w której operacje dodawania i zabierania elementu mają złożoność stałą, a odnajdywanie wartości liniową. Trzeba by przetestować czas działania. :) Swoją drogą powinni takie rzeczy pisać w dokumentacji, bo tak to jest o kant dupy potłuc...
Roki Opublikowano 26 Lutego 2011 Opublikowano 26 Lutego 2011 @Roki: lol. A jak będzie 4k itemów, to co, też na tablicach? Tablica przechowuje item w danej komórce, więc co za problem mieć: GML global.item[4000] = 43 Gdzie 43 to ID itema, a 4000 to numer pola w ekwipunku. A avek losuje się sam :>
ALT Opublikowano 26 Lutego 2011 Autor Opublikowano 26 Lutego 2011 Gdzie 43 to ID itema, a 4000 to numer pola w ekwipunku Tym zdaniem "powiedziałeś" 100 słów,cczyli dzięki temu zdaniu mnie olśniło :> THX i zamykam
Rekomendowane odpowiedzi