Młody Opublikowano 20 Sierpnia 2011 Udostępnij Opublikowano 20 Sierpnia 2011 Potrzebuję generatora , który będzie "na żywo" generował room , czy jest taka możliwość w GM ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 20 Sierpnia 2011 Udostępnij Opublikowano 20 Sierpnia 2011 Kiedys robilem przyklad instance_deactivate, ktory wylacza obiekty poza viewem. Czy o takie cos ci chodzi? Powinienem go dalej miec na upie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Jest, użyj instance_create, random, choose, mózg. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Zależy jaki rodzaj gry. Ja kiedyś robiłem generator planszy 1000x1000 przy czym plansza rysowana była na spricie 100x100 i obiekty były tworzone w zależności od koloru pixela na spricie ;D Najwięcej kodzenia było do tego żeby w miarę normalnie wyglądało ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Tak, jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Chodzi o coś w stylu Minecrafta? Nie jest łatwe do implementacji, ale da się zrobić, trzeba tylko zapisać pewien zbiór reguł rządzących nad generowaniem mapy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Tak jak mówi Muuuuczek, generator musi mieć określone zasady, co może być położone obok czego, jakiej wielkości to może być maksymalnie itd. dużo nad tym roboty... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Generator w stylu minecrafta w najprostszej wersji (góry,doliny i drzewka) zajmuje kilka linijek. EDIT: Dla wyjasnienia chodzi o samą heightmape ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 21 Sierpnia 2011 Autor Udostępnij Opublikowano 21 Sierpnia 2011 Błagam @up oświeć mnie , bo za chiny nawet najprostszego generatora nie wymyśle ! Tak , chodzi o podobny do minecraft , jakoś nie bawi mnie rozstawianie w sandboxie podstawowych przedmiotów ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Ustaw warunkowo żeby od dużego y stawiało rzadkie klocki, później coraz częstsze następnie kamień a na końcu piasek, wystarczy zwykłe if Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Rysujesz sobie kodem heightmape: Potem sprawdzasz odcień (im jaśniejszy tym wyżej) i stawiasz klocki. Proste? EDIT: @Młody: 1 możliwość zrobienia generatora napisałem wyżej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Rysujesz sobie kodem heightmape: Potem sprawdzasz odcień (im jaśniejszy tym wyżej) i stawiasz klocki. Proste? EDIT: @Młody: 1 możliwość zrobienia generatora napisałem wyżej. adam, sry że pytam, ale jak sprawdzić w gm'ie odcień ? - nigdy tego nie widziałem w gm'ie prawdę mówiąc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Chyba draw_getpixel ale nie jestem pewien. EDIT:Znalazłem coś takiego http://gmc.yoyogames.com/index.php?showtopic=440049 w drugim poście jest link do dll. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Chyba draw_getpixel ale nie jestem pewien. o.O - o tej funkcji nie słyszałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 U mnie heigthmapa była w innych kolorach a funkcja okreslajaca wysokosc to: GML wysokosc =color_get_red(draw_getpixel(heightmap_x,heightmap_y))/255*global.map_z Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 W ogóle oświeć mnie po kiego grzyba rysować wygenerowaną mapkę jako grafikę tylko po to żeby potem znowu czytać z niej kolory? : / Taka tam konwersja [wartość] -> [kolor] -> [wartość], coby przypadkiem wszystko nie chodziło za szybko i żeby mieć pretekst do użycia draw_getpixel() bo to ogólnie bardzo fajna funkcja. Normalnie liczysz sobie tą heightmape niech bedzie perlin noisem do tablicy i tyle, po co rysować to na ekran i znowu czytać z tego ekranu, chyba tylko po to żeby stracić fps i trochę na precyzji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 21 Sierpnia 2011 Udostępnij Opublikowano 21 Sierpnia 2011 Mape od razu mi zrzucało do ds_grid wiec generowanie mapy trwało u mnie max 5 sekund. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 22 Sierpnia 2011 Autor Udostępnij Opublikowano 22 Sierpnia 2011 O to chodzi , że całkowicie nie potrafię wymyślić jak to w kodzie napisać , a bez tego nie chcę zaczynać projektu :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 22 Sierpnia 2011 Udostępnij Opublikowano 22 Sierpnia 2011 No to jesteś jeszcze za mało obeznany w robieniu gier zrób platformówke :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 22 Sierpnia 2011 Udostępnij Opublikowano 22 Sierpnia 2011 O to chodzi , że całkowicie nie potrafię wymyślić jak to w kodzie napisać , a bez tego nie chcę zaczynać projektu :( Najpierw wystartuj z silnikiem, potem sobie pykniesz ten swój generator... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 22 Sierpnia 2011 Autor Udostępnij Opublikowano 22 Sierpnia 2011 No rozumiem , że jak nie będę miał nic to nic mi nie wygeneruje -_- Chodzi mi o przykład generowania świata z 1/2(więcej) przedmiotów , tak na później , skończę kodzić silnik , bach , używam przykładziku i jedziemy dalej ;) No ok , jak coś zrobię to powiem , OK ? P.S. Ale grad ! P.S.S. Nie dawajcie warna jak napiszę post pod postem , bo to przecież będzie oznaczać , że już potrzebuję generatora ;) Jak zrobić , żeby rysował siatkę 32x32 bo co tyle tworzę jeden obiekt ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 22 Sierpnia 2011 Udostępnij Opublikowano 22 Sierpnia 2011 ---Nieważne już--- Zmęczony jestem, źle przeczytałem, sry :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 23 Sierpnia 2011 Autor Udostępnij Opublikowano 23 Sierpnia 2011 Help ! Jak zrobić , że jak zniszczę klocek wskakuje mi do inv ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 A masz inv? jak masz to podaj kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 23 Sierpnia 2011 Autor Udostępnij Opublikowano 23 Sierpnia 2011 Tak na szybko zrobiłem , chodzi mi o to wypadanie , jak je załapie to się zagłębie w eq ... to jest chyba nawet to od ciebie xD : create : GML item=0 var i,j; for (j=0;j<=7;j+=1;){ for (i=0;i<=3;i+=1;){ inventory[i,j] = 0 // pelny inventory_stack[i,j] = 0 // Ilość przedmiotów inventory_x[i,j] = x+1+(32*i)// x inventory_y[i,j] = y+1+(32*j)// y } } globalvar ds_obj_name; ds_obj_name = ds_map_create(); Step : GML if item!=0{ item.x=mouse_x-(sprite_get_width(item.sprite_index)/2) item.y=mouse_y-(sprite_get_height(item.sprite_index)/2) } Global Left Pressed : GML var i,j,temp; temp=0 //łapanie itemu if item=0 && collision_point(mouse_x,mouse_y,parent,1,1){ for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if collision_mouse(inventory_x[i,j],inventory_y[i,j],inventory_x[i,j]+32,inventory_y[i,j]+32) { if inventory_stack[i,j]>1 { for (d=0; d<16384; d+=1){if object_exists(d) {ds_map_add(ds_obj_name,object_get_name(d),d)}} temp=inventory[i,j] item=instance_create(mouse_x,mouse_y,ds_map_find_value(ds_obj_name,string(object_get_name(temp.object_index)))) inventory_stack[i,j]-=1 temp=0 exit; }else{ item=inventory[i,j] item.visible=true inventory[i,j]=0 inventory_stack[i,j]-=1 exit; }}}} item=collision_point(mouse_x,mouse_y,parent,1,1) } //dodawanie itemu if item!=0 { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if collision_mouse(inventory_x[i,j],inventory_y[i,j],inventory_x[i,j]+32,inventory_y[i,j]+32) { if inventory[i,j]=0 { //jeśli kratka jest pusta wsadza item inventory_stack[i,j]+=1 inventory[i,j]=item item=0 exit; }else{//jeśli jest stackowalny if object_get_name(inventory[i,j].object_index)=object_get_name(item.object_index) { inventory_stack[i,j]+=1 with (item) {instance_destroy()} item=0 } }}}}} Draw : draw_sprite(s_plecak,0,x,y); var i,j; for (j=0;j<=7;j+=1;){ for (i=0;i<=3;i+=1;){ if inventory[i,j]!=0 { inventory[i,j].x=inventory_x[i,j] inventory[i,j].y=inventory_y[i,j] inventory[i,j].visible=false draw_sprite(inventory[i,j].sprite_index,inventory[i,j].image_index,inventory_x[i,j],inventory_y[i,j]) if inventory_stack[i,j]>1 { draw_set_font(font) draw_set_color(c_white) draw_text(inventory_x[i,j]+23,inventory_y[i,j]+10,string(inventory_stack[i,j])) } }}} To był o_plecak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 Destroy: GML o_plecak.visible = true; with(o_plecak) { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory[i,j].visible = true; } } } for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory_stack[i,j] += 1; inventory[i,j] = id; exit; } } } } with(o_plecak) { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory[i,j].visible = false; } } } } o_plecak.visible = false; EDIT: Poprawiłem, ale nie testowałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 Wytłumacz mi jaki sens ma kod, gdzie istnieją dwa identyczne bloki "with(o_plecak)" i dwie identyczne pętle "for(...)" zagnieżdżone w tym samym bloku. Z serii "wskaż 10 różnic": GML with(o_plecak) { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory[i,j].visible = true; if inventory[i,j] = 0 { inventory_stack[i,j] += 1; inventory[i,j] = id; exit; if inventory[i,j] = 0 { inventory[i,j].visible = false; } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 Ponieważ funkcja exit przerywa eventa więc reszta kodu nie będzie wykonana, dla tego muszę wykonać with jeszcze raz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 Wytłumacz mi jaki sens ma kod, gdzie istnieją dwa identyczne bloki "with(o_plecak)" i dwie pętle "for(...)" zagnieżdżone w tym samym bloku. Tru, ten kod się powtarza - bezsens, musisz go zredukować troszku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Sierpnia 2011 Udostępnij Opublikowano 23 Sierpnia 2011 Sernat masz źle ponieważ jak już mówiłem exit przerywa wykonywanie dalszego kodu(pomija go) GML o_plecak.visible = true; with(o_plecak) { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory[i,j].visible = true; inventory_stack[i,j] += 1; inventory[i,j] = id; exit; } } } } with(o_plecak) { for(j=0;j<=7;j+=1) { for(i=0;i<=3;i+=1) { if inventory[i,j] = 0 { inventory[i,j].visible = false; } } } } o_plecak.visible = false; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się