Cygnus Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 Cześć wszystkim stworzyłem sobie taki obj_przejscie i umieściłem go na końcu danej planszy,i w momencie,kiedy dojdę do końca planszy bohaterem i najadę na ten obiekt,to mnie przenosi do następnej planszy. No,ale chciałbym to trochę urozmaicić tym,że muszę jakąś część elementów z danej planszy zebrać,żeby móc przejść do kolejnej planszy,i wtedy jeśli nie miałbym tych zebranych rzeczy,to w momencie kontaktu z obj_przejście dostanę komunikat typu "przejście zablokowane brak określonej ilości rzeczy" o to kod mojego obj_przejście CREATE GML nextRoom = roo_world1_2; unlockWorld = -1; Collision par_player GML ///Koniec mapy wygrana /// room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } Mam Game Maker Studio pro Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 Mam pomysł na 2 sposoby: 1. Zrób sobie zmienną która będzie przechowywała ilość zebranych itemków(przy destrukcji tych itemków dodawaj 1 do tej zmiennej) GML if(zmienna >= ileś tam){ //Akcja przechodzenia do kolejnego roomu }else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } 2. Przejście możliwe jeśli na mapie zostało mniej niż ileś tam itemków GML if(instance_number(obj_item) < ileś tam){ //Akcja przechodzenia do kolejnego roomu }else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Lipca 2015 Autor Udostępnij Opublikowano 17 Lipca 2015 Mam pomysł na 2 sposoby: 1. Zrób sobie zmienną która będzie przechowywała ilość zebranych itemków(przy destrukcji tych itemków dodawaj 1 do tej zmiennej) GMLif(zmienna >= ileś tam){ //Akcja przechodzenia do kolejnego roomu }else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } 2. Przejście możliwe jeśli na mapie zostało mniej niż ileś tam itemków GMLif(instance_number(obj_item) < ileś tam){ //Akcja przechodzenia do kolejnego roomu }else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Czekaj chwilka Mateuszu niech to ogarne;) Czyli to tworze tą zmienną w nowym pustym obiekcie np obj_item i tam w create daje ten kod ustalam wartość po ilu itemkach ma się odblokować plansza;)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 Czekaj chwilka Mateuszu niech to ogarne;) Czyli to tworze tą zmienną w nowym pustym obiekcie np obj_item i tam w create daje ten kod ustalam wartość po ilu itemkach ma się odblokować plansza;)? tworzysz tą zmienną w obiekcie tego elementu tamten kod dajesz przy kolizji z obiektem końcowym. Tam gdzie jest komentarz //Akcja.. dajesz ten twój kod GML room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Lipca 2015 Autor Udostępnij Opublikowano 17 Lipca 2015 no dobrze,to jest jasne,ale co wpisuje w obiekcie obj_item który tworze,np sa to jakies elementy no nie wiem niech bedzie piłki,które muszę zebrać,tam też muszę coś wpisać w tym obiekcie.. bo wtym drugim co podałeś ok..to muszę wrzucić,gdzie jest akcja... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Lipca 2015 Autor Udostępnij Opublikowano 17 Lipca 2015 Mateusz zrobiłem tak: w obj_game_controller dodałem taką zmienną w create o nazwie GML global.watch = 0; w draw GUI dałem GML draw_text(36, 140, string(" Watch: " + string(global.watch))); teraz w obj_watch dałem w stepie taki kod GML if place_meeting(x,y,obj_player){ instance_destroy(); global.watch += 1; } no i w obiekcie przenoszenie to co mnie po konczeniu lewelu ten obiekt jak na niego najde przenosi do nastepnej planszy dałem to w kolizki z par_player GML ///Koniec mapy wygrana /// if(instance_number(obj_watch) < 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Sęk w tym,że jak zbiorę mniej niż 5 watchów i najade na obj_przenoszenie no to dostaje info,"przejście zablokowane brak określonej ilości rzeczy" ale mimo to i tak mnie przenosi do następnej planszy,a nie powinno:/ co jest nie tak no i druga sprawa lepiej jakby to było info bez naciskania na ok tylko samo info ,które pojawi się na 2,3 sekundy i zniknie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Mateusz zrobiłem tak: w obj_game_controller dodałem taką zmienną w create o nazwie GMLglobal.watch = 0; w draw GUI dałem GMLdraw_text(36, 140, string(" Watch: " + string(global.watch))); teraz w obj_watch dałem w stepie taki kod GMLif place_meeting(x,y,obj_player){ instance_destroy(); global.watch += 1; } no i w obiekcie przenoszenie to co mnie po konczeniu lewelu ten obiekt jak na niego najde przenosi do nastepnej planszy dałem to w kolizki z par_player GML///Koniec mapy wygrana /// if(instance_number(obj_watch) < 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Sęk w tym,że jak zbiorę mniej niż 5 watchów i najade na obj_przenoszenie no to dostaje info,"przejście zablokowane brak określonej ilości rzeczy" ale mimo to i tak mnie przenosi do następnej planszy,a nie powinno:/ co jest nie tak no i druga sprawa lepiej jakby to było info bez naciskania na ok tylko samo info ,które pojawi się na 2,3 sekundy i zniknie... instance_number to fukcja licząca ilość danych obiektów w roomie a nie ilość zebranych itemów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 No dobra,to co z tym zrobić żeby było dobrze? jakiej funkcji użyć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Pozwolę sobie: No dobra,to co z tym zrobić żeby było dobrze? jakiej funkcji użyć? instance_number to fukcja licząca ilość danych obiektów w roomie a nie ilość zebranych itemów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 GML if(instance_number(obj_watch) < 5){ Po to robiłeś globalną global.watch,zeby teraz z tego korzystać... Zacznij patrzeć na to co Ci odpowiadamy. GML If (global.watch <= 5 lub inną zebrana liczba zegarków ){ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 Czytam i słucham;) dałem w obj_przejscie ten kod: GML ///Koniec mapy wygrana if(global.watch <= 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Nadal to samo fakt,jest tak,że jak mam mniej niż 5 zebranych watch to dostaje info przy obj_przejscie,że jest ich za mało by opuścić plansze,ale i tak mnie przenosi do następnej planszy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Czytam i słucham;) dałem w obj_przejscie ten kod: GML ///Koniec mapy wygrana if(global.watch <= 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } Nadal to samo fakt,jest tak,że jak mam mniej niż 5 zebranych watch to dostaje info przy obj_przejscie,że jest ich za mało by opuścić plansze,ale i tak mnie przenosi do następnej planszy. A bez ifa puszcza. cię do następnego poziomu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 bez ifa wywala na czerwono błąd od razu... więc if chyba musi być. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 bez ifa wywala na czerwono błąd od razu... więc if chyba musi być. Nie musi być, zobacz jaki błąd i go rozwiaz, daj na chwilę resztę to komentarza. Przejście do następnego poziomu nie musi być od niczego zależne, powinieneś p tym wiedzieć, przy collision nie może być błędu przejścia do następnego poziomu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 Jasiek no przecież musi być zależne przejście do następnej planszy,o to chodzi,żeby zostało spełnione jakiś warunek po którym nastąpi to zdarzenie i ten obj_przejscie się odblokuje. Przecież tego błędu nie ma,ale jak usunę "if" to wtedy jest błąd w kompilacji...o dokładnie to jak usunę tą część.. to jest kod w obj_przejscie kolizaj z bohaterem GML ///Koniec mapy wygrana if (global.watch <= 5){ // wyalam tego if i nie kompiluje się... room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } else{ show_message("przejście zablokowane brak określonej ilości rzeczy"); } a tu Create z tego obj_przejscie GML nextRoom = roo_world1_2; unlockWorld = -1; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Bo nie możesz usunąć jednego nawiasu, zawsze jak usuwasz otwierający to zamykający też musisz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Myślałem że pomyślał o tym żeby wywalić klamre. To chyba idzie z automatu. Mówiłem że Tylko kopiujesz zamiast myśleć. Po za tym w error wszystko jest czytelnie napisane.(no prawie) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 kurcze...Chłopaki przecież wiem,że nawiasy usuwa się wszystkie aż taki ograniczony nie jestem.. klamrowe zostawiłem;) No to cię Jasiek zaskoczęnic nie jest w error opisane,bo tłumaczę,że się wtedy nie kompiluje jak if wywalę...kto tu nie słucha mnie uważnie;) nie kompiluje się czyli tłumacząc po polsku jasno i zrozumiale po młodzieżowemu dostaje czerwony komunikat error "Compile Failed-Please check the Compile window for any additional information" w samym na dole kompilatorze nie ma błędu... okienko compile i okienko source control to jest komunikat jak wywalę ten if z nawiasami oczywiście,czy zostawię bez też to samo nic się nie zmienia;) jak nie kompiluje,to logiczne jest,że się gra nie uruchamia i nie ma innego komunikatu z błędem... jak puszczę z if jak było to jest to co wcześniej opisałem w poście...zbiorę czy to więcej czy to mniej watch to przy mniejszej ilości czyli jak zbiorę 4 watch pojawia się komunikat,że za mało ich jest,ale i tak obj_przejście przepuszcza mnie do kolejnej planszy.. Myślę,że tu nie lezy problem z if...bo to nic nie daje...tylko powoduje,że się nie compiluje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Zrób po prostu: if (global.watch = 2){ room_goto(nextRoom); } I musi działać, a nie miałeś jakiegoś czerwonego kwadratu przy któreś linijce... Jak nie to to nie wiem. (edit) Jak mnie pamięć nie szwankuje to nazwa rooma musi być jako cudzysłów ponieważ to nazea nextRoom = "roo_world1_2" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Jasiek zaczuna coś tam działać teraz...no dobrze...ale i tak otrzymuje komunikat,czy chce czy nie chce jak spełniam warunek i mam 5 watchy to dostaje komunikat,ze jest ich za mało,ale przepuszcza mnie,jak mam mniej niż 5 watchy dostaje też komunikat,ale mnie już dalej nie przepuszcza,czyli prawidłowo,ale jeszcze kwestia tej wiadomości,bo teraz jest na zasadzie,że muszę kliknąć na wyskakujące się okienko z dialogiem i nacisnąć Ok,co jest uciążliwe,jak to ustawić,żeby był sam napis,który pokaże się np na 2,3 sekundy,że nie mam wystarczającej ilości watchy,żeby przejść do następnej planszy,no i też żeby się ten napis nie pojawił jak spełnie dany warunek,czyli jak będe miał 5 watchy lub więcej;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Przenieś to else po 1 ifie a nie 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Jasiek działa ,tylko pozostaje kwestia że zamiat okienka z ok,żeby na 2,3 sekundy pojawił się napis jak najadę na obj_przejscie,że za mało watchy coś w tym stylu...coś w draw trzeba zrobić...bo te okienko co jest jest kłopotliwe,trzeba non stop na ok naciskac,ale i tak blokuje ono bohatera Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Jasiek działa ,tylko pozostaje kwestia że zamiat okienka z ok,żeby na 2,3 sekundy pojawił się napis jak najadę na obj_przejscie,że za mało watchy coś w tym stylu...coś w draw trzeba zrobić...bo te okienko co jest jest kłopotliwe,trzeba non stop na ok naciskac,ale i tak blokuje ono bohatera Draw_text + draw_rectangle + alarm Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Jasiek czyli to tak w obj_przejście stworzyć DRAW a w nim GML draw_text( x, y, brak odpowiedniej ilosci watchow do opuszczenia planszy) draw_set_colour(c_white); draw_rectangle(100, 100, 300, 200, true); GML alarm0=true; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Po pierwsze nie w tej kolejności Draw o ile się nie mylę. Po 2 zrób to w GUI. Najlepiej skorzystaj z view_wview/2 jako y i view_wview/2. Oczywiście przy x1, jeszcze - 1/2 szerokości, a w x2 + 1/2 szerokości, analogicznie do y ale 1/2 rzadzanej wysokości (oczywiście szerokość i wysokość tego prostokąta. Co do textu zrób tylko xview i yview tylko nad Draw daj ustawienia halign i align jako center i middle w zależności od funkcji. Jak chcesz czas daj wszystko to ifa np. Ze zmianą show i daj GML If show>0 Później jako osobne GML If show=0{ alarm[0]=90 Show=1} W alarmie GML show=-1 Chyba bardziej niż pokazać nie mogłem. Proszę o podziękowania bo pisałem to wszystko na telefonie. (edit) Jeszcze w create show =-1 A w miejscu gdzie był show message GML If distanxe to objext (nazwa obiektu gracza)<156{ Show=0}else{show=-1} Powiadomienie będzie się pokazywało jak będziesz przy obiekcie , a jak odejdziesz przez 3 sekundy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Dziękuje Jasiu no to jestem pod wrażeniem jak z telefonu to pisałeś zdolny chłopak z Ciebie;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Dziękuje Jasiu no to jestem pod wrażeniem jak z telefonu to pisałeś zdolny chłopak z Ciebie;) Nie ma za co :-) A chociaż kod działa jak należy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Jasiek dałem tak: w obj_przejscie dalem tak w kolizji z graczem GML ///Koniec mapy wygrana if (global.watch = 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } If distance_to_object (obj_player)<156{ Show=0}else{show=-1} if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } w Create dałem GML show=-1; w Alarm0 dałem GML If show=0{ alarm[0]=90 Show=1} w Draw GUI dałem GML If show=0{ alarm[0]=90 Show=1} { draw_text(view_xview[0]+100,view_yview[0]+400,"nie ma zegarkow") } No i coś nie działa... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 20 Lipca 2015 Udostępnij Opublikowano 20 Lipca 2015 Jasiek dałem tak: w obj_przejscie dalem tak w kolizji z graczem GML ///Koniec mapy wygrana if (global.watch = 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } If distance_to_object (obj_player)<156{ Show=0}else{show=-1} if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } w Create dałem GML show=-1; w Alarm0 dałem GML If show=0{ alarm[0]=90 Show=1} w Draw GUI dałem GML If show=0{ alarm[0]=90 Show=1} { draw_text(view_xview[0]+100,view_yview[0]+400,"nie ma zegarkow") } No i coś nie działa... W alarmie już nie miało być wywołania alarmu. Tylko show=-1. Przed Draw text test daj If show>=0 Zapomniałem że to colisia, usuń distance ,tylko show =0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Lipca 2015 Autor Udostępnij Opublikowano 20 Lipca 2015 Jasiu i tak wywala błędy mase;) teraz mam tak w obj_przejscie DRAW GUI GML If show=0{ alarm[0]=90 Show=1} { if show>=0 draw_text(view_xview[0]+100,view_yview[0]+400,"nie ma zegarkow") } w Create GML show=-1; a Alarm0 GML show=-1 i w kolizji z graczem GML ///Koniec mapy wygrana if (global.watch = 5){ room_goto_transition(nextRoom,TRANS_RANDOM,10+irandom(30), choose(c_lime,c_yellow,c_white,c_black,c_gray)); } { show =0 } if unlockWorld != -1 { ds_list_add(openWorlds,unlockWorld); } no i nie działa;) 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ę