-
Postów
9 823 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
143
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez gnysek
-
Jak obiekt jest deaktywowany, to go w ogóle nie ma - nie wiesz ile jest takich obiektów, nie sprawdzisz, czy istnieją.
-
Pytanie, gdzie ten kod wstawiłeś i co masz w draw... bo jedno od drugiego jest zależne, to nie jest tak, ze kod w jednym miejscu sprawia, że ten w innym nie działa @up ' i " to jest to samo w GML, to nie PHP gdzie w " się doszukuje wyrażeń
-
Rodzic. Trochę jak grupowanie - znaczy się masz obiekty: objTata objSyn objCorka i w dwóch ostatnich jako Parent ustawisz objTata, no to jak napiszesz instance_count(objTata) - zwróci Ci 3 - bo objSyn i objCorka dziedziczą po tacie (więc mozna się do nich dostać po jego nazwie). Dziedziczą też kod w eventach, jeśli w obiekcie - dziecku, ten kod nie zostanie niczym nadpisany (obojętnym klockiem) - aczkolwiek event_inherited() wywołuje zdarzenia z ojca w takim przypadku. Dzieci są więc jakby kilkoma obiektami na raz.
-
Nie. Dezaktywujesz wszystkie obiekty danego typu (wystarczy dać wspólnego rodzica), a aktywujesz tylko obszar. Działa całkiem znośnie.
-
Można wykonywać kod tylko w tym roomie w którym się jest. Ale... możesz ustawić sobie jakaś zmienną globalną i jak przechodzisz do tego roomu, to jeśli ona ma wartosć taką a taką, to wykonywany jest kod.
-
Nie, raczej chodzi o to, żeby dezaktywować instancje, zeby gra nie przycinała jak jest na ekranie 10 obiektów, a w roomie 10000. Takie coś mam w Almorze gdzie room ma 60000px szerokości.
-
Tilesety do tego nie służą. Tilesety są do tego, żeby układać niektóre grafiki tła które nie muszą być obiektami w celu pominięcia sprawdzania dla nich eventów (step, kolizja, alarmy, draw).
-
konwertowanie kodu dla android, ios
gnysek odpowiedział(a) na Oriental temat w Pytania początkujących
A po polsku? -
Na vertexach to by to w GM w sumie zrobił ;)
-
Może być. Ale, mi się niektóre gry GMowe tną na 1GB Radeonie 5650... na którym np. Wiedźmin 2 leci w pełnym HD.
-
Uczą na matematyce od podstawianiu liczb za zmienną?
-
Może być wina mobilnej karty.
-
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.