-
Postów
1 970 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Dawidds
-
Jak patrzę na takie kody, to mi się niedobrze robi. Kurde, jak można mając 18 lat tego nie wiedzieć :| ? Toż tu nie ma wcale programowania - toż to matma jest. I to taka KOMPLETNIE PODSTAWOWA. 1. Zamiast choose(32, 64, 96, 128): round(random(4))*32; Nie lepiej? (żeby nie było, ten kod może wylosować także 0) 2. instance_create(kratka,kratka...) Ten kod wylosuje ci potworka na linii prostej skierowanej pod kątem 45 stopni do osi. A jestem pewien, że to nie jest zamierzone. instance_create(JEDEN LOS, DRUGI LOS, ...); Inna metoda: GML r = 5; rnddir = random(360); rndlen = random(r*32); rndx = lengthdir_x(rnddir, rndlen); rndy = lengthdir_y(rnddir, rndlen); instance_create(round(rndx/32)*32, round(rndy/32)*32, ...); Masz losowane w kole, a nie w przekątnej... ;/
-
marker, to nie to... xd To był kod na sprawdzanie kliknięcia, a nie na zaznaczanie. Co do zaznaczania - niedawno robiłem komuś taki przykładzik, chyba jeszcze mam. O, mam :P http://eportal.boo.pl/upload/file.php?id=select.gmk Ale nawet tego nie ściągałem, także nie wiem, co tam jest... :D Co do mouse_on() - zjadłeś trochę kodu :P Ma być tak: GML if(mouse_x>=x && mouse_y>=y && mouse_x<x+sprite_width && mouse_y<y+sprite_height){ return 1; }else{ return 0; } Ed: :|
-
przyklad GPS + Przyklad labiryntu xd
Dawidds odpowiedział(a) na pivot18 temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Sory, że zaspamię, ale muszę odpowiedzieć. A bo nie. Np. ja jak przeglądam forum, to lecę tak: 1. Wchodzę w Pytania Początkujących 2. Jak zawsze jest tam masa tematów, a, że nie chce mi się wszystkich czytać, to przeglądam tylko te. które mają mało (do 3) odpowiedzi, ew. jakiś fajny, intrygujący temat :P 3. Wchodzę w pytania zaawansowane. 4. A, że tam jest b. mało tematów, przeglądam wszystkie. Co z tego, że Pytania Początkujących czyta więcej osób - nie dziw się. W PP jest 20-30x więcej tematów niż w PZ, na dodatek osoby, które go przeglądają są raczej tymi osobami, które nie pomagają, a same potrzebują pomocy :) A teraz już zamknij ten temat, bo jeszcze ktoś będzie chciał wrzucić swoje 10 groszy :P -
1. Coś zrypałeś. 2. Do identyfikowania instancji, lol. I zobaczcie, jak przykłady ogłupiają ludzi. Na pewno Michał wie, że skasować najbliższy obiekt może tak: ins = instance_nearest(...); with(ins){ instance_destroy(); } Ale o tym, że inst_near zwraca waśnie id nie ma pojęcia. Ba, pewnie nawet nie myślał o tym, jak taki kod działa... 3. Daj treść tego błędu, a nie... 4. W jakim sensie przezroczystości rooma? Jeśli po prostu Windowsowe okienko ma być półprzezroczyste - bez problemu znajdziesz to na gmc.yoyomames.com Łączenie w avi - nie wiem. 5. Ciekawe, czy w ogóle się da... :P Nawet jeśli się da, na pewno nie ma takiego DLLa, musisz sobie sam napisać... :)
-
Tak. Ale to rozwiązanie jest idiotyczne, ponieważ wstrzymujesz kod - jeśli size będzie >=0 dopiero za minutę, to gra ruszy się dopiero za minutę. Na pewno takich rozwiązań nie można stosować w grach online. Choć przyznaje, kodu nie czytałem... :P
-
Sposób PsichiXa działa, ale jak dla mnie wygodniej jest skorzystać z tego: GML // INSTANCE_NEAREST_EXT // ============== // Same like instance_nearest only you can get the #th nearest instance. // ============== // Arguments: // 0 (int) : x. // 1 (int) : y. // 2 (id) : objecttype. // 3 (int) : #th instance to find. // ============== // Returns: // instance_id or noone loc_x = argument0; loc_y = argument1; obj_type = argument2; obj_num = argument3; wds = ds_list_create(); wds2 = ds_list_create(); count = instance_number(obj_type); for (iii=0;iii<count;iii+=1) { cobj = instance_find(obj_type,iii); if (instance_exists(cobj)) { new_dist = point_distance(loc_x,loc_y,cobj.x,cobj.y); if (ds_list_empty(wds)) { ds_list_add(wds,cobj); ds_list_add(wds2,new_dist); } else { dss = ds_list_size(wds2); added=false; for (iiii=0;iiii<dss;iiii+=1) { if ( new_dist < ds_list_find_value(wds2,iiii) ) { ds_list_insert(wds2,iiii,new_dist); ds_list_insert(wds,iiii,cobj); added=true; break; } } if (!added) { ds_list_add(wds2,new_dist); ds_list_add(wds,cobj); } } } } if (ds_list_size(wds) >= obj_num) result = ds_list_find_value(wds,obj_num); else result = noone; ds_list_destroy(wds); ds_list_destroy(wds2); return result;
-
chodzenie na boki wedle direction.
Dawidds odpowiedział(a) na pivot18 temat w Pytania początkujących
Chodzi Ci o to, żeby bohater chodził na boki względem myszki, czyli jakby robił kółka wokół niej...? Jak tak, no to poczytaj o lengthdirach... :P Ew. jeśli masz wrodzony wstręt do lengthdirów, to możesz dodawać/odejmować 90 od aktualnego kąta bohatera do myszki... :P -
W ankiecie jest ponad 2x więcej głosów na izometrię, także robię izometrię... :P Ale póki nie wymyślę, jak by liczyć te pozycje w iso, to nic nie zrobię - bo to jest tak: muszę móc z pozycji [x,y] wyznaczyć pozycję w siatce, ale jednocześnie muszę też móc z pozycji w siatce wyznaczyć pozycję [x,y]. I przez to mój pomysł z "ręcznym" zwiększaniem wartości współrzędnych odpada... ;| Ehhh... mam ochotę zrobić system różnych wysokości bloczków, już mam to wszystko ładnie zaplanowane, ale bez tych pozycji nie mogę nawet zacząć... ;/ Edit: Jeah! :) Oto i moje dzieło: GML //convert(x, y); // Konwertuje normalne pozycje x,y na wspolrzedne iso. // Wynik zapisuje do zmiennej global.iso_x i global.iso_y var ix; ix = 0; while(argument0<argument1) { argument0 += 1; argument1 -= 1; ix -= 1; } while(argument0>argument1) { argument0 -= 1; argument1 += 1; ix += 1; } global.iso_x = ix; global.iso_y = argument0; Męczyłem się nad tym prawie godzinę :P A wystarczyło namalować sobie na kartce grida, zapisać kilka par współrzędnych, i zapisać zauważoną zależność w GMie... :D No, to pozostaje mi tylko napisać funkcję odwrotną, i można robić system wysokości bloczków =D Ed2: Kolejny screen. Jak sądzicie, co zrobi pokazany kod :D ?
-
Najlepszy pomysł z tej listy to przesuwalne elementy - można go wykorzystać na wiele sposobów, np. przesunięcie jakieś skrzynki w dziurę (poziom niżej), aby można było po niej przejść. Choć, kuchnia, powoli zaczynamy odchodzić od głównego założenia gry... xP Kurna, ciągle mi chodzi po głowie, w jaki by tu cudowny sposób sprawdzać tą pozycję robota w siatce. Zrobiłem to na razie na chama, jak pisałem, ale wcale mnie to nie satysfakcjonuje :P A wręcz przeciwnie - np. w roomie, w Cereation Code muszę walnąć aktualną pozycję gracza - no chyba, że zawsze zaczynało by się w tym samym miejscu. Już nawet przez myślałem, czy by nie zrobić każdej możliwej pozycji [if(x==liczba && y==liczba2){ grid_x=cos; grid_y=cos }]... :P Ed: Rozwiń myśl.
-
Hmmm... alieny to oczywiście sience-fiction, ale jakieś wysuwające się w ustalonym rytmie ostrza mogą być ciekawe. :P I jeszcze jedno: funkcje typu: sleep, max/min, sqrt/sin/power, mod/div, lengthdir_x/y (choć go raczej nazwę ldir_x i ldir_y - krócej)(ogólnie głównie matma) będą działały i tutaj.
-
lol :D Akurat teraz piszę silnik, a nie robię grafiki... ;/ Zresztą, od tematu odjechaliście. Piszcie jakieś super propozycje lepiej :D A ja chyba będę musiał zrobić określanie współrzędnych "na chama" - po prostu, jeśli przesuwam gracza w prawo, to zwiększam wartość jakieś tam zmiennej grid_x o 1... ;/ Ale to jakieś takie, ee, nie satysfakcjonujące rozwiązanie... :P Ed: Już nie będę kolejnego postu pisał: Ale jaki ja screen mam jeszcze dać niby :P ? Dałem tyle, ile mam. Teraz pracuje nad jakimś systemem wysokości poszczególnych bloczków, jak skończę, dam screena.
-
Ale robot jest :| Na obu screenach. Jako, że nie chciało mi się robić super grafiki robota w izometrii, to robot wygląda jak klocek, tylko ma strzałkę mówiącą, w którym kierunku patrzy :D
-
Się screena czepiacie. A co miałem na nim niby pokazać :P ? Ew. mogłem dać z napisanym jakimś kodem, ale chyba każdy tu piszący ma GMa, i widział kiedyś na oczy GMLa - to jest to samo, tyle, że dostępne funkcje są trochę inne. :P
-
Lol, to mnie zaskoczyłeś. Ja tu się męczę nad iso, a tu mi piszą, że top-down lepsze :D Zaraz ankietę zrobię.
-
No, mam już izometrię. Teraz tylko zrobić jakiś system współrzędnych w tej izometrii (narazie nie ma funkcji: robot_x/y oraz free_pos (ale kolizje są - nie da się wejść w ścianę)) A po tym przyjdzie pora na zrobienie systemu wysokości tych bloczków... to dopiero będzie jazda :D Co do chwytaka - całkiem dobry pomysł, ale jeszcze zobaczę. 47x8 - a żeś się czepił... xP To i tak nazwa tymczasowa. O, właśnie. Możecie się wykazać. Kto wymyśli najlepszy tytuł będzie w creditsach, lol :D Nie no, serio. Dajcie jakiś dobry pomysł, bo ja zbyt twórczy pod tym względem nie jestem... :P Nie do końca zrozumiałeś. Cała składnie "języka" jest identyczna, jak w GMLu (bo właścicie to to jest gml...). Jedynie jest zablokowana większość funkcji typu: instance_create, game_end, sprite_create_x etc. I kilka elementów składni - zmienne globalne (skoro sterujemy jednym robotem (patrz: instancją) to po co nam one :P ?) oraz "with(obj/ins)". Ed: Kurna, za cholerę nie mogę wymyślić, jak by tu określić współrzędną obiektu w siatce iso :P Jeśli przesuwam obiekt jakby w prawo (dir==0), to w rzeczywistości przesuwam go tak: x+=24; y-=12; I powiedzcie mi teraz, jakby tu poznać pozycję obiektu w takiej "krzywej" siatce ;/ ? Jakieś propozycje :D ?
-
O.o ? Weź rozwiń tą wypowiedź, bo nie mam pojęcia, o co Ci chodzi. Zostało mi do zrobienia naprawdę niewiele, za tydzień spokojnie będę miał zrobiony engine, to dam demo, i zostanie mi (według moich rozważań... ^_^) miesiąc-dwa na zrobienie leveli, tutoriala, i ogólnie rzecz biorąc doprowadzenie gry do końca. Kuchnia, chyba zrobię od razu tą izometrię. Jest ktoś chętny na zrobienie graficzek chociaż ściany i robota (izometrycznych) ^_^ ? Ed: Lol... nie wiem, jak mogłem napisać 2009... :D
-
Kod to po prostu swykłe execute_string(), wcześniej przepuszczone przez pseudo-parser, aby np. nie używać GMowych funkcji, a jedynie te, które są stworzone przeze mnie, jako funkcje obsługiwane przez robota. Co do colobota - grałem w niego, ale te gry mają trochę inne założenia. :P Tutaj mamy po prostu pojedyncze levele - a na każdy określoną ilość linii kodu (tylko muszę skończyć ten parser, aby nie można było całego kodu ująć w jednej linii). Robota programujemy raz, i odpalamy kod przez F9. Zawsze możemy wcisnąć F8 - otworzy nam się systemowy Notepad z aktualnym kodem - możemy sobie wpisać nasz kodzik w Notatniku, i wczytać do gry przez F6. Skoro na kod mamy ograniczoną liczbę kodu, to chyba logiczne, że kod wykonujemy raz... :P Jeśli się nam nie uda - F2 to nowa gra. Prosiłem Bagna, żeby napisał mi jakiś edytor kodu pod moje potrzeby, ale jedyne, co mu się chciało zrobić to jakiś "Bitch Editor v666", na dodatek źle działający :3 Muszę jakoś rozbudować wbudowany edytor. O, wiem. Zrobię wcięcia (Tabulatory) :D Hmmm... Jeśli Notepad++ jest open source, to mogę go wsadzić do gry?
-
Albo użyj gotowego DLLa. Zgaduję, że nazywa się GMFTP, ale nie sprawdzałem... :P
-
Tytuł: Robotix (nazwa, ekhem, "kodowa") Gatunek: logiczna, z elementami programowania :P Opis: W grze sterujemy robocikiem, którego celem jest zberanie wszytskich monet/diamentów/czy czegoś w tym stylu na planszy, uważając, a by przy tym nie skończyła nam się bateria. Proste, nie :) ? Dobrze myślisz - nie do końca. Robicikiem nie sterujemy strzałkami, tylko kodem skryptowym - taki GML, tyle, że inne funkcje :P Oczywiście, kod nie będzie się ograniczał do "ręcznego" przekazania robotowi dokładnej trasy wędrówki, robocik musi sam za pomocą swojego AI wynaczyć sobie trasę wędrówki. Myślałem również nad wprowadzeniem robocika w izometrię, i, chyba, tak właśnie zrobię :P (wtedy plansze nie musiały by być dwuwymiarowe - robocik mógłby spadać z wyższych poziomów na niższe, wchodzić na większe używając jakiegoś pola "windy", lub po prostu wjeżdżając na nie po pochyłych platformach - tu możliwości były by większe) Autorzy: Kod: Dawidds Grafika: Dawidds GMThreads: Snake Przewidywana data premiery: Demo: 8 maj 2009 Pełna wersja: czerwiec/lipiec 2009 Co zostało do zrobienia: 1. Pisanie własnych funkcji 2. Jakiś "normalny" edytor kodu 3. Ograniczenia (HDD/BATERIA) 4. Pseudo-parser, który z takiego kodu: if(...){ ... } zrobi mi taki: if(...) { ... } 5. Menu, lvle, itd. Komendy go(n) - porusza robota o n miejsc do przodu. dir_set(angle) - ustawia robota, aby patrzył na podany kąt (0/90/180/270. Jeśli wpiszemy np. -90 - oczywiście będzie to rozumiane jako 270) dir_upp(angle) - dodaje do kątu robota [angle]. Czyli np. kod dir_upp(90) obróci naszego robota w lewo (względem tego kierunku, w który aktualnie patrzy) free_pos(x, y) - sprawdza, czy pozycja x,y nie jest zajęta przez ścianę *free_left() - sprawdza, czy pozycja po lewej stronie od robota (względem tego, gdzie aktualnie patrzy) ie jest zajętaprzez ścianę. *free_right() - analogicznie do powyższego, tyle, że w prawo robot_dir() - zwraca aktualny kąt patrzenia robota robot_x() - zwraca pozycję x robota robot_y() - zwraca pozycję y robota * - te funkcje chyba wycofam, ponieważ zbytnio ułatwiają one grę. Jeśli ktoś ich potrzebuje, może je sobie sam napisać - ale będzie go to kosztowało kilka kolejnych linii kodu :) Dlaczego zbytnio ułatwiają grę? Ano dlatego, że dzięki nim napisanie kodu, za pomocą którego robot przejdzie pokazany na screenie korytarz, jest banalnie proste - ogranicza się do napisania 12 linii kodu... ;/ A tak, to ktoś będzie musiał sam sopbie napisać taką funkcję, a, żeby nie zajmowała za dużo linii, będzie musiał pomysleć, że w tym przypadku przydatny będą lengthdiry ^_^ Screen(y) SCREEN 1 - pierwsza wersja SCREEN 2 - izometria SCREEN 3 - system kolizji Po co piszę ten temat? A w sumie to sam nie wiem :P Piszcze jakieś propozycje, czy coś.
-
[Przykład] AI Bota
Dawidds odpowiedział(a) na XxMichałxX temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Pała. No sory, tu nie ma czego wyjaśniać... :| Po prostu - przykład tragiczny i tyle. -
Wyświetlacz "pinballowy"
Dawidds odpowiedział(a) na Shockah temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
A kijek prawda. Mogłeś zrobić osobny "konwerter", który by konwertował wybrany przez nas obrazek na kod - czytanie tego z tablicy na pewno było by wydajniejsze. -
Wyświetlacz "pinballowy"
Dawidds odpowiedział(a) na Shockah temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
To co to za przykład, skoro nawet sam autor wie, że jest niewydajny... ;| Liczba instancji też rox. Efekt: 8/10 Działanie: 5-/10 -
Jak dalej nie rozumiesz, to rozpisz to sobie na 3 pętle for - wtedy już musisz zrozumieć :P
-
Hmmm... Btw PsichiX, skąd Ty bierzesz to swoje YXE? Masz zapisane w pliku i zawsze kopiujesz, czy może jakieś bardziej rozwinięte rozwiązanie :P ?
-
A ja nie mam takich bogatych wspomnień, po prostu imię+inicjały... ;( Też bym tak chciał :|