-
Postów
9 826 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
144
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez gnysek
-
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
-
GML var zlicz; //tymczasowa globalna zlicz = 0; with (jakisObiekt) { if zmienna == 1 zlicz +=1; } //zlicz na koncu ma liczbe tych obiektów</span>
-
Tworzenie niestandardowych obiektów 3D.
gnysek odpowiedział(a) na Zackingoo temat w Pytania początkujących
Taki problem otworzyć pomoc do programu? Nawet w edytorze kodu podpowiada, że te pozycje to X, Y i Z punktu. TRIANGLELIST oznacza, że kolejne 3 punkty stanową jeden punkt, TRIANGLEFAN oznacza, że pierwszy punkt jest wspólny, a TRIANGLESTRIP, że po pierwszym trójkącie każdy kolejny punkt jest wierzchołkiem kolejnego, który łączy się z poprzednim (harminijka?). -
Skoro znasz x i y, to możesz podzielić bez reszty przez szerokość kratki i masz indeks tablicy.
-
Tworzenie niestandardowych obiektów 3D.
gnysek odpowiedział(a) na Zackingoo temat w Pytania początkujących
Polygon (vertex), wierzchołkami odwrotnie do wskazówek zegara od najniższego punktu tegoż trójkąta. -
To też zalezy od tego, czy kamera jest pierwszym czy ostatnim obiektem stworzonym w roomie.
-
Smartgrid
gnysek odpowiedział(a) na Uzjel temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nie, tam były większe vertexy i bodaj trianglestrip. -
Smartgrid
gnysek odpowiedział(a) na Uzjel temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nie mogę znaleźć, ale to były vertexy + grid, czyli bardzo podobnie do Twojego. -
Smartgrid
gnysek odpowiedział(a) na Uzjel temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Spróbuj na vertexach, powinno przyspieszyć. -
Smartgrid
gnysek odpowiedział(a) na Uzjel temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nie, ale mielismy takie cienowanie do terenu, żeby cienie były. I kurde nigdzie tego nie mogę znaleźć :/ -
W odpowiednim momencie pojawią się artykuły na stronie ;)