ZyperPL Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 Yo, ostatnio mi pomogliście i dziękuję wszystkim za pomoc :) Teraz jak widać, mam kolejny problem. Chcę zrobić platfromówkę ale chcę też tam zrobić tryb multi :P Tzw. Coop Więc zaraz wszystko wytłumaczę :P Normalnie gdy klika się "Start" w menu, gra ładuje mape z jednym graczem. Chcę aby po naciśnienciu coop było to samo ładowanie tylko, żeby obok pierwszego gracza pojawiał się drugi. Zrobiłem już, że przy naciśnięciu na Coop zmienna, zrobi się zmienna "coop" o wartości "1". Teraz tylko nie wiem jak zrobić, aby ten gracz się pojawiał. Zrobiłem if(coop=0) i teraz co wpisać, że gdy coop=0 obj_2player się usuwa? Bardzo proszę o pomoc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 Chodzi Ci o multi, na jednym kompie? Daj tak, ten kod z "if": GML if coop=0 { with(obj_2player) instance_destroy() } Pisze z głowy xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Farkraj Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 w playerze2 if coop = 0 { instance_destroy() } ? Edit: byłeś pierwszy :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 Tak, tylko wyskakuje mi: ___________________________________________ ERROR in action number 1 of Create Event for object obj_2player: Error in code at line 1: if global.coop=0 ^ at position 12: Unknown variable coop A dałem w przycisku Start (coop=0) a w przycisku Coop (coop=1) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 w create obj_2player wpisz GML global.coop=0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 ___________________________________________ ERROR in action number 1 of Create Event for object obj_2player: Error in code at line 1: if global.coop=0 ^ at position 11: Unknown variable coop Chory ten GM. Chyba się poddam... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 a w create jest coop=0 czy global.coop=0?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 Próbowałem i z global.coop w przyciskach i z coop i nigdy nic nie działa ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 walnij w menu w create globak.coop=0 i zostaw to, co masz przy wyborze Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 Bez względu na to, czy w przycisku jest global lub nie. Albo w obj_2player jest global lub nie. ZAWSZE WYSKAKUJE ERROR, że nie ma wartości "coop" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
GMTraker Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 a dałeś ten obiekt do rooma? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 Tak, jest on gdy room startuje, ale nie widać go, bo gra nie wykrywa wcale wartości "coop" ;/ W czym jest problem? :< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 Może Ci się przydać. Tutaj. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 nie chory GM, tylko niezbyt dobre metody ci dają. kiedy klikasz przycisk coop GML global.coop=1; start gry kiedy klikasz przycisk single GML global.coop=0; start gry w obiekcie drugiego gracza GML (create) if global.coop=0 instance_destroy(); cała filozofia - ustawiasz global.coop na 0 lub 1, kiedy global.coop ma wartość 0 obiektu drugiego gracza nie będzie globale nie są wykrywane jak wartości globalne, może być global.costam i costam jednocześnie sprawdź przykład osoby wyżej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 Ty mi zawsze pomożesz :) (EDIT: CANDY :), niestety Jaklub, po czasie ;) ale dziex) Dzięki, nie idzie dawać pomógł/pomogła? Dziwne, że mi wcześniej nie działało, robiłem prawie tak samo, tylko zmiane roomu dałem osobno klockiem, bo teraz nie wiem jak zrobić efekt przejścia z rooma do rooma w gmlu :< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 W pomocy GM poszukaj transition_kind (np. transition_kind=1;). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 30 Marca 2010 Autor Udostępnij Opublikowano 30 Marca 2010 transition_kind=0-13 0 = no effect 1 = Create from left 2 = Create from right 3 = Create from top 4 = Create from bottom 5 = Create from center 6 = Shift from left 7 = Shift from right 8 = Shift from top 9 = Shift from bottom 10 = Interlaced from left 11 = Interlaced from right 12 = Interlaced from top 13 = Interlaced from bottom DZIEKI :) A jak zrobić przycisk w GMLu jako zwykłą literę? Zamiast strzałek --- WSAD :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 GML keyboard_check(ord('S'))//gdy ciagle trzymamy klawsisz S keyboard_check_pressed(ord('S'))//gdy nacisniemy klawisz S</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 Zamiast funckji ord można też używać liczbowych odpowiedników. Masz je tutaj: http://en.wikipedia.org/wiki/ASCII#ASCII_p...able_characters Kolumna DEC. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 30 Marca 2010 Udostępnij Opublikowano 30 Marca 2010 jednak funkcja ord jest wygodniejsza :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 31 Marca 2010 Autor Udostępnij Opublikowano 31 Marca 2010 Eh.. Mam jeszcze małe pytanko, jak zrobić wodę? Próbowałem korzystać z kilku przykładów ale za nic nie mogę zrobić porządnej wody ... Chodzi mi, żeby była "przed" graczem, stawiała opór gdy się spada, i gdy się w niej skacze. Chcę też, żeby skoki w niej były wyższe niż normalnie ;) EDIT: PROSZĘĘęęęee... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muchaszewski Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 Robisz coś w stylu że po kolizją z wodą zmienia się jakiś parametr np: global.woda . W opcjach sterowania wpisujesz 2 rodzaje chodzenia. GML if global.woda = 1 {/*zwykłe chodzenie, skakanie etc.*/} if global.woda = 2 {/*to co chcesz żeby było w wodzie.*/} Raczej wszystkie komendy od tych rzeczy powinny być ci znane xD Edit: Jeszcze coś żebyś pamiętał że po wyjściu z wody gracz chce chodzić normalnie xD GML if !place_metting(x,y,obj_woda) {global.woda = 1} Edit2: Jeszcze coś do pierwszego pytania. Jeżeli ustawiłeś w obj_gracz zmienną globalną i ma z niej korzystać a później w roomie ustawiłeś objekt który ma go tworzyć to powstanie błąd!!! Dlaczego??? Ponieważ kompilator najpierw stworzy obiekt gracza który będzie w swoich zasobach szukał zmiennej globalnej, ale jej tam jeszcze nie ma ponieważ obiekt kontroler stworzy w tej samej klatce, lecz po wykonaniu wszystkich instrukcji dla obiektu gracz. Ten błąd można wyeliminować stosując opcje Room Start/Game Start zamiast Create. Instrukcje tam wykona zanim jeszcze utworzy obiekt gracz, i inne w roomie. Istnieje jeszcze 2 możliwość. Próbę wykonania instrukcji po utworzeniu wszystkich zmiennych, zazwyczaj po 1 klatce. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 if !place_metting(x,y,obj_woda) {global.woda = 1} Raczej: GML if place_metting(x,y,obj_woda) woda = 1 else woda = 0 Użyłem 0,1 bo wydaje mi się, że tak łatwiej rozróżnić :P . 0 - nie ma, 1 - jest woda. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 31 Marca 2010 Autor Udostępnij Opublikowano 31 Marca 2010 Znowu nie rozpoznaje variable "woda" ;/ Rozumiem, że mam zrobić, że gdy room się włącza to następnuje ta funkcja z wodą. Ale moim pierwszym roomem jest właśnie menu ;/ Edit:Nie nie, już poprawione. Objekt var ze zmienną woda. Tylko teraz mam to: ___________________________________________ ERROR in action number 1 of Create Event for object oPlayer: Error in code at line 54: if !place_meeting(x,y,obj_woda) woda = 1 else woda = 0 ^ at position 24: Unknown variable obj_woda Edit2: Teraz to też już mam, zła nazwa :P ja mam oWater :P Ale i tak nie działa, gdy wskakuje do wody, wszystko jest normalnie ;/ Wiem, powinno działać, sam nic złego w kodzie nie widze.. A jednak ;/ Help Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muchaszewski Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 Za 10 min napiszę przykład jak to powinno wyglądać. Poczekaj xD Edit: https://gmclan.org/up4308_12_O_to_ci_chodzilo.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 Bo to co podaliśmy ci, to tylko zmienna ustalająca, czy jesteś w wodzie czy nie. Teraz powinieneś napisać sobie dwa kody: gdy jesteś w wodzie i gdy nie jesteś, czyli: GML if water = 0 {/*jakiśtam kod poruszania się na powierzchni*/} else {/*kod poruszania się w wodzie*/} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 31 Marca 2010 Autor Udostępnij Opublikowano 31 Marca 2010 GML if global.woda = 0 { TU JEST WYSOKOŚĆ SKOKU TARCIE ITD. } if global.woda = 1 { TU JEST WYSOKOŚĆ SKOKU TARCIE ITD. } Może coś żle w if'ach zrobiłem? EDIT: @Muchaszewski nadal coś u mnie nie działa ;( Mam trochę więcej tych funkcji, może powiesz mi co można z tego twojego wywalić a co nie? Bo to troche zakręcone jest :8 EDIT2: Zauważyłem, że w ogole NIC nie działa z wodą. Jakby jej nie było. ;/ Dziwne... nik Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 Co jest nie tak ? Przecież wyraźnie widać w przykładzie o co chodzi. IFy są ok, chociaż ja tam wolę else :P . Co możesz zrobić... Więc tak: 1. Ustaw sobie, że jak kolidujesz z wodą, to zmienna jakaśtam woda czy cuś = 1. Potem w if woda=1 wstaw GMLgame_end() Jeśli gra się wyłączy po dotknięciu wody, to znaczy, że kolizję dobrze sprawdza. Zawsze też możesz napisać draw_text i w tym global.woda, wtedy będziesz widział czy prawidłowo ustawia się na 0/1 . 2. Jak już sprawdzanie dobrze działa, zrób w obu IFach ten sam kod, ale w tym, gdzie woda=1 zmień współczynniki - np. tarcie, grawitacja, przyśpieszenie (nie wiem jakie są u ciebie, więc wymieniłem kilka). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muchaszewski Opublikowano 31 Marca 2010 Udostępnij Opublikowano 31 Marca 2010 (edytowane) nadal coś u mnie nie działa ;( Mam trochę więcej tych funkcji, może powiesz mi co można z tego twojego wywalić a co nie? Bo to troche zakręcone jest :8 Tak naprawdę można wywalić cały kod xD Ale na co ci to. W tym kodzie ważne jest tylko sprawdzanie czy woda wynosi 1, czy 0. Żadnej wielkiej filozofii. Dobrze by było żebyś pokazał kod, albo wywalił to co nie potrzebne i dał byś linka. W twoim kodzie możliwe jest że zmieniłeś np: friction i speed. GML if woda = 0 { friction = 0.5 speed = 0.7 //Kod trochę bez sensu ale pokazuje zasadę. } if woda = 1 { friction = 0.7 speed = 0.9 } Obiekt będzie się poruszał tak samo, ale to chyba oczywiste, a ponieważ nie widzimy kodu ciężko będzie pomóc. E: A możliwe jest że twoja woda nie ma maski kolizji :o Teraz pewnie pyt. "Co to jest" xD Daj linka. Edytowane 31 Marca 2010 przez Muchaszewski Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZyperPL Opublikowano 1 Kwietnia 2010 Autor Udostępnij Opublikowano 1 Kwietnia 2010 ... No nie ma. Trochę za dużo roboty z dawaniem mojego projektu. Bo trochę już tam rzeczy porobiłem. Może ktoś mi wytłumaczy co to jest ta maska kolizji i po kłopocie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi