-
Postów
9 812 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
141
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez gnysek
-
konwertowanie kodu dla android, ios
gnysek odpowiedział(a) na Oriental temat w Pytania początkujących
Ale jak najbardziej istnieje. Przykładowe gry: http://yoyogames.com/game_showcases W domowych warunkach opcja ta będzie dostępna na wiosnę. -
Crysis jest napisany w ASM/C++, GameMaker nie. GML jest tylko interpretowanym językiem odpalającym funkcje DirectDraw3D (i nie korzysta z wielu funkcjonalnosci dzisiejszych kart graficznych) - działa to trochę jak JavaScript w starszych przeglądarkach - do tego stopnia, że gry w GameMakerze HTML5 pod google chrome w niektórych przypadkach są szybsze, niż wersje windowsowe. Tak to wygląda, że gra GMowa ma wymagania z 10x większe niż ta sama gra w czystym C++
-
W takim razie musisz mieć gdzieś drugi raz tworzenie obiektów :) Sprawdź dokładnie (w GM8.1 jest opcja przeszukiwania kodu również w obiektach - Ctrl+Alt+F bodaj).
-
od środka grafiki do lufy. środka okręgu inaczej.
-
Znajdź środek sprite'a, policz ile jest pikseli w prawo, ile w górę do lufy, i otrzymasz promień oraz kąt (dla x i y powinny być takie same, inaczej nabój będzie zależnie od obrotu dalej lub bliżej się tworzył)
-
Pętla for-each
gnysek odpowiedział(a) na gnysek temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Proszę, teraz działa z tablicami, ds_list i ds_map :) https://gmclan.org/up23_3_foreach.html Zaznaczam jednak, że to wciąż bardziej ciekawostka bo te same zadania tradycyjną metodą są dużo szybsze. -
switch(hotbar.idObj[ argument0 ]) a potem: draw_sprite ( spr_sprite(i), ...
-
Pętla for-each
gnysek odpowiedział(a) na gnysek temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nigdzie nie napisałem, że dla tablic jest to szybsze. variable_local_array_get zjada większość tego czasu :) W przypadku stuktur danych (ds_) będzie to już praktycznie żadna różnica, ale za to jaka wygoda :) Będę miał dostęp do pełnego GM, dopiszę brakującą resztę i pogadamy :) -
Nie, to raczej doświadczenie. Zaskoczenie przeciwnika to najlepszy element obrony :) Mam kilku nauczycieli którzy mnie przepraszali po latach za swoje zachowanie :P
-
Pętla for-each
gnysek odpowiedział(a) na gnysek temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Z racji, że w GM nie ma tablic asocjacyjnych, to na normalnych tablicach tylko nieznacznie skraca zapis, ale w przypadku ds_list i ds_map - zaoszczędza sporo kodu - ofc tą funkcjonalność trzeba sobie dopisać, ale to zrobię dziś w domu i wrzucę na stronę jako przykład :) http://4programmers.net/C_sharp/Foreach http://php.net/manual/en/control-structures.foreach.php -
Dzisiaj na http://www.gmlscripts.com/forums/viewtopic.php?id=1911 natknąłem się na przykład pętli foreach dla GM oraz ds_list. Zaciekawiło mnie na czym polega myk i okazało się, że jest to bardzo prosta sprawa - GM działa także gdy pomijamy średniki, wiec można ten fakt wykorzystać. Zgodnie z dokumentacją Game Makera: for (<wyrazenie1>; <warunek>; <wyrazenie2>) <wyrazenie3> Jak widzicie, nigdzie nie jest napisane, że wyrazenie1 musi ustawiać jakąś zmienną, a wyrazenie2 zwiększać/zmniejszać jej wartość. Co więcej - warunek nie musi być znakiem mniejszości czy większości. Napisane jest tylko, że wykonywanie trwa tak długo, jak warunek jest prawdziwy. W takim razie, wystarczy tu wstawić coś, co będzie nam zwracać prawdę lub fałsz - zmienną, lub funkcję. W ten oto sposób powstała pętla foreach. Pomysł jak już wspomniałem nie jest mój, natomiast wersja do obsługi tablic zamiast list jest już jak najbardziej moja (ponieważ w pracy nie mam pełnej wersji Game Makera, nie miałem dostepu do ds_list). SKRYPTY Pierwszy skrypt ustawia tablicę o rozmiarze 10, a potem w pętli foreach wyświetla jej elementy. GML (test) for (i=0; i<10; i+=1) { tablica = i+1; } for( each('tablica',10) as key_value()) { show_message(string(key) + '[' + string(value) +']'); } GML (each) if !variable_global_exists('as') { globalvar as,eachVar,eachSize,key,value; //globalne as = true; } eachVar = argument0; // referencja na tablice eachSize = argument1; key = -1; key_value(); GML (keyvalue) if key < eachSize - 1 { key += 1; value = variable_local_array_get(eachVar, key); } else { as = false; key = -1; value = -1; eachVar = -1; eachSize = -1; } Ha! Jak to działa? jak widzicie, mamy pętlę: for( each('tablica',10) as key_value()) { show_message(string(key) + '[' + string(value) +']'); } Tak naprawdę jest to normalna pętla for, tylko brakuje średników (bo GM ich nie wymaga). GML for( each('tablica',10); as; key_value()) funkcja each definiuje (jeśli nie istnieje) globalną zmienną "as" (jako globalvar, dlatego nie trzeba pisać global. z przodu), oraz kilka innych globalnych zmiennych które są nam tu potrzebne - key i value będą miały aktualny klucz i wartość tablicy. Zgodnie z dokumentacją, pierwsze wyrażenie jest przetwarzane raz. Wyrażenie drugie jest sprawdzane. Nasza globalna as ma wartość true, zatem wyrażenie jest prawdziwe i wykonywane jest wyrazenie3 - czyli ciało pętli. Potem wracamy do wyrazenia2 - które zwiększa nam iterację, a przy okazji sprawdza, czy dochodzimy do konca tablicy - jeśli tak, to ustawi nam as na false. Następnie znów sprawdzany jest warunek - jeśli as == false, no to pętla przestaje działać. Takie proste, a dopiero teraz to odkryłem!
-
break nie jest potrzebny po return.
-
Ciężko stwierdzić, czy nie masz gdzieś w kodzie innego błędu, skoro nie mamy gry. Sprawdź czy left pressed ze zwykłym left nie pomyliłes.
-
GML if !position_meeting(x,y,objJakisTam) { //akcja }
-
Podać pozycję poza view? Wystarczy odjąć coś lub dodać do jednego z rogów.
-
lepiej dluzszy kod w stepie 1 obj czy rozbic na kilka obj?
gnysek odpowiedział(a) na taxi_driver temat w Pytania początkujących
Przecież ilość kodu się nie zmieni... nie ma to wpływu, więcej obiektów tylko zwalnia grę - ale tak nieznacznie, że tego akurat nie zauważysz. -
To samego opengl
-
Zaktualizuj sterowniki karty graficznej. Jak widzisz, atioglxx.dll wali błędami :)
-
jest taka funkcja degtorad... oraz lenghtdir_x/y
-
Jeśli jest pełnoletni, to palenie papierosów nie jest zakazane. Jeśli robił to w miejscu niedozwolonym, to należy wezwać policję/straż miejską. Jeśli robił to na terenie szkoły, to należy zgłosić do dyrekcji. Powinieneś porozmawiać z wychowawcą/dyrektorem na ten temat (bardzo grzecznie) zaznaczając, że było to dozwolone miejsce i masz prawo palić jako osoba pełnoletnia i nie zgadzasz się na dodatkowe zadania domowe za ten czyn - oraz, że oczywiście zrobisz je, jeśli nauczycielka wskaże inny powód, za który mogła by Cię ukarać. Ale jak chcesz jej zrobić na złość, to rozwiąż te zadania i na początku lekcji jak już wszyscy wejdą do sali wstań i na całą salę powiedz "Proszę Pani! Zrobiłem te 30 zadań które dała mi pani za palenie papierosów poza terenem szkoły poza lekcjami! Bardzo bym prosił, aby je Pani sprawdziła!". Puści buraka i więcej już nikomu takich zadań nie da, a Ty będziesz miał plus u kolegów, że jej dowaliłeś. Chyba, że to prawdziwa suka, to po prostu każe usiąść.
-
Za pierwszym razem musiałeś :) Zabezpieczone jest tak, ze steam zapamietuje komputer z którego się łączysz - ja np. jak w pracy chcę się logować, to mi wysyłają na mejla specjalny kod, żebym potwierdził, ze ja to ja i dopiero mogę się zalogować.
-
Chyba raczej chodzi o selectbox/dropdown.
-
OMG... tak btw. wiecie ile ludzi o każdym z tych nazwisk jest w Polsce?
-
Sprawdź i zobacz :) Zostanie użyta zmienna z tego obiektu.
-
Nie, bo jak widzisz w komentarzu var to tymczasowa globalna zmienna :) Pisałem już o tym https://gmclan.org/index.php?czytajart=73