-
Postów
5 841 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
5
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Tymon
-
Chciałbym zauważyć, że robisz dokładnie to samo. Po za tym, na razie widziałem, że masz tylko ściągnięty przykład ruchu platformowego lekko zmodyfikowany jeszcze prze zemnie, ripy z Maple Story i tyle. Do tego zadajesz pytania które można na prawdę rozwiązać w łopatologiczny sposób. Rozumiem, nie każdy ma talent, ale pomyśleć każdy może. Ile Ty masz lat? ;/ Do create. back = background_z_kawałkiem_tileseta; tile_add( back, 0, 0, background_get_width( back ), background_get_height( back ), x, y, depth ); I co ma do tego moja pozycja na stronie?
-
A może wsiąść się za coś na swoje możliwości? Na razie liczysz na gotowca.
-
tile_add? Albo rysować i background_create_from_screen, czy tam z surface.
-
hp -= 1/room_speed;
-
No ok, ale mówię jeszcze raz. Te grafiki mają różne wielkości i nie zrobisz z nich dobrego tileseta. Lepiej poupychać je jako obiekty które "wrysowują" się w background i się niszczą.
-
Ja bym proponował popracować tak z miesiąc i dopiero wtedy wrzucać nową wersję. :P
-
Lowrider, przestań zmieniać konta co chwilę. Grałem i nie lubię. :P
-
Mobilizacja samego siebie. O. ;P
-
Przykład zastosowania global.text
Tymon odpowiedział(a) na Backslash temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nie przejmuj się nim, czasami tak ma. :P No i sam nie wiem o co mu chodzi. Przykład ok, jedyne co można by dodać to kasowanie tego co się napisało z bufora klawiatury. :3 -
Lord Marcelot, dziwne bo mi ambicja siadła właśnie. Zrobiłem tylko S, H, E, P i Y. I w GM wymyślałem sobie jakby to wyglądało. http://www.gmclan.org/up152_11_sheep_logo.html O kant tyłka można potłuc. Nie wiem kiedy uda mi się zrobić poprawki, czy następne. Samo mobilizacja nie działa.
-
To wyjątkowo proste, potęgi liczby 2 mają swoje odpowiedniki w kodzie binarnym jako pojedyncza jedynka w określonej pozycji między zerami. 1 - 0000001 2 - 0000010 4 - 0000100 8 - 0001000 Tutaj tę pozycję określa wykładnik potęgi liczby 2, więc też wartość takiej liczby. Widzisz to? Jak już wcześniej tłumaczyłem zasadę działania binarnego xor ( ^ ), tak też tutaj podobną zasadę można wykorzystać tylko, że z użyciem binarnego or ( | ). Pozwoli to nam wstawić jedynkę w określone miejsce i przypadkiem się jej nie pozbyć ( np. gdy będziemy przypadkowo używać dwóch takich samych indeksów obiektów - pamiętaj, że or mówi "jeśli jedna z dwóch liczb", a xor dodatkowo dokłada warunek "jeśli te liczby nie są równe" co nam jest kompletnie niepotrzebne ). Teraz jeśli użyjemy binarnego or na dwóch lub kilku liczbach to otrzymamy coś takiego: 00000100 | 00010000 = 00010100 10000000 | 00000001 = 10000001 10000000 | 00000001 | 00010000 = 10010001 Rozumiesz? Teraz, jeśli indeks obiektu jest liczbą to potraktujmy go jako wykładnik potęgi! Wtedy te 0 i 1 będą mówić jakie indeksy są w zmiennej, a ich pozycja powie nam jaki to indeks. :D Dla przykładu: /* Obiekty i ich wartości indeksów: obj_1 = 1 obj_2 = 2 obj_3 = 3 */ zmienna1 = power( 2, obj_1 ) | power( 2, obj_3 ); Tłumacząc na nasze: ( 2 do potęgi 1 ) | ( 2 do potęgi 3 ) Czyli: 2 | 8 = 10 Na bitach: 00000010 | 00001000 = 00001010 Teraz przydało by się zanalizować to co mamy. Musimy sprawdzić każdy z zapisanych bitów w zmiennej czy jest równy 1 i znaleźć też same pozycje jedynek. Jak sprawdzić czy w danej pozycji jest jedynka? Przyda nam się operator binarny and który pozwoli sprawdzić czy dana jedynka jest w zmiennej i oczywiście potęgi liczby 2. Zasadę działania and przedstawię tylko na przykładzie: ( 2 do 2 | 2 do 0 | 2 do 3 ) & ( 2 do 2 ) = ( 2 do 2 ) Co znaczy: ( 4 | 1 | 8 ) & 4 = 4 Co w binarnych wygląda: ( 00000100 | 00000001 | 00001000 ) & 00000100 = 00000100 Rozumiemy? Jeśli wskazanej jedynki by nie było to byśmy uzyskali po prostu 0. Teraz potrzeba nam sprawdzić w jakiej pozycji są jedynki. Możemy generować każdą potęgę liczby 2: for( n = 0; n < ilość_zapisanych_indeksów; n += 1 ) { p = power( 2, n ); if( zmienna & p ) { //Ta jedynka jest w zmiennej } } Ale dodajemy sobie dodatkową niewiadomą, czyli ilość_zapisanych_indeksów - chyba wiadomo co oznacza. Jakby ją znaleźć? Najlepiej jej w ogóle się pozbyć. Wiemy, że jeśli nie ma już żadnych jedynek w zmiennych to wartość zmiennej jest równa 0. To teraz jakby tak likwidować kolejno każdą z jedynek/zer na początku? Przyda się operator przesunięcia bitów oznaczany >> dla przesunięcia w prawo, oraz << dla przesunięcia w lewo. Ogólna zasada ich działania wygląda tak: 01010101 >> 1 = 00101010 01010101 >> 4 = 00000101 01010101 << 2 = 01010100 Rozumiemy? Nam potrzebny jest tylko ten prawy by pozbywać się pierwszej 0/1 i musimy przesuwać tylko o 1. Tak więc kod wygląda następująco: while( zmienna != 0 ) //Powtarzaj póki jest coś w zmiennej { if( zmienna & 1 ) //Sprawdzamy zawsze tylko pierwszą jedynkę { //Ta jedynka jest w zmiennej } zmienna = zmienna >> 1; //Przesuwamy o 1 } I tyle. Do określenia pozycji jedynki czyli i indeksu obiektu potrzeba nam tylko jednej zmiennej która będzie zwiększała swoją wartość co jeden krok. Czyli: pozycja = 0; //Zaczynamy od 0 while( zmienna != 0 ) //Powtarzaj póki jest coś w zmiennej { if( zmienna & 1 ) //Sprawdzamy zawsze tylko pierwszą jedynkę { //Ta jedynka jest w zmiennej } zmienna = zmienna >> 1; //Przesuwamy o 1 pozycja += 1; //Zwiększamy też wartość zmiennej przechowującej pozycję } To wszystko czego nam potrzeba. Jak mówiłem pozycja określa indeks obiektu, tak więc patrząc na podany w moim powyższym poście przykład stwierdzamy, że jest poprawny. ;) Pisałem najprościej jak umiałem i na szybko. :P
-
Jeśli chodzi o przechowywanie indeksów kilku obiektów w zmiennej i ich tworzenie GM nie oferuje czegoś takiego. Praktycznie jest to wykonalne, tak więc zapis: objects = power( 2, object3 ) | power( 2, object5 ) | power( 2, object1 ); Odczyt: n = 0; while( objects != 0 ) { if( objects & 1 ) instance_create( 0, 0, n ); objects = objects >> 1; n += 1; } Wytłumaczyć zasadę działania?
-
Ripy z Maple Story. :P Trudno będzie połączyć to w jeden tileset bo kawałki dość znacznie różnią się rozmiarami.
-
Jeden z tych obiektów czy wszystkie w zmiennej?
-
O, to ja sobie przekieruje wiadomości takiego numeranta na jego numer. :D
-
Ma. http://pix.art.pl/files/works/game_sprites.gif
-
I MSDN. Tak zmieniając lekko temat. Ogólnie rzecz biorąc trudno być teraz "programistą" znając tylko jeden język. I bym nie zabierał się za język którego istnienie nie jest jeszcze powszechnie - jak widać - znana.
-
Panowie w ogóle przykładów nie przeglądają.
-
To AŻ 30 min? :P
-
4. Sprawdzać pozycję kursora i jeśli jest w nieodpowiednim miejscu to blokować możliwość przenoszenia żetonów etc.. ;) Wystarczy zwykły warunek if( x > x_kursora ) itd..
-
Musisz go po prostu wypakować z paczki, załadować i później skasować. Muszę poprawić ten przykład.
-
action_move_to(x,y); To chyba tylko x = pozycja_x; y = pozycja_y;
-
var plik,nazwa; nazwa=get_save_filename("Pliki HTML|*.html;",""); if (nazwa=="") exit; if( filename_ext( nazwa ) == '' ) nazwa += '.html'; plik=file_text_open_write(nazwa); file_text_write_string(plik,str); file_text_close(plik);
-
Dodajesz if( filename_ext( nazwa ) == '' ) nazwa += '.html'; kryniak, ale HTMLa się nie kompiluje. Parasuje, ew po prostu analizuje. ;P