LolikZabijaka Opublikowano 19 Listopada 2012 Udostępnij Opublikowano 19 Listopada 2012 Cześć, jakiś czas tamu pisałem tutaj temat o zachowaniu położenia po przejściu z rooma 1 do do 2 czyli np z ulicy do budynku. Wszystko działa, problem zaczyna się jednak, gdy chcę przejść z rooma 2 do 3 i tak dalej :) czyli np. z budynku do jego kolejnej części, próbowałem kombinować, niestety nie wiem jakbym się starał, postać nie zachowuje położenia z rooma 2 po wyjściu z rooma 3. Jakiego kodu mam użyć w tym przypadku? @EDIT - dodam że kod po części działa, przenosi mnie z roomów, ale nie do końca zachowuje wyjściowe położenie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 19 Listopada 2012 Udostępnij Opublikowano 19 Listopada 2012 Niewiem, jak ty to robisz, ale ja bym po prostu ustawił "Persistent" w roomie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Listopada 2012 Autor Udostępnij Opublikowano 19 Listopada 2012 nie mam tego ustawionego w żadnym, a jak odpalam, to błędy niektórych obiektów wyskakują. EDIT - Rozrysuję jak to ma być. Stoję przed blokiem, wchodzę: Stoję na klatce: Jestem koło drzwi do piwnicy, wchodzę: Jestem w piwnicy, wychodzę i chcę być w tym samym punkcie, w którym wszedłem: A Ląduję albo gdzieś na schodach, albo tu: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 22 Listopada 2012 Udostępnij Opublikowano 22 Listopada 2012 Zrób listę, będziesz potrzebować 3. 1 ma ID rooma, 2 ma X a 3 Y. Działanie w następujący sposób: 1.Chcesz wejsc w inny room 2.Kod szuka czy na liscie jest info z tego roomu, jesli tak to je usuwa. 3.Nastepnie tworzy nowe info dla tego roomu z obecną pozycją. 4.Przechodzisz do następnego rooma, do tego który chciałeś odwiedzić. 5.Sprawdza liste w poszukiwaniu id rooma 6.Jesli znajdzie to ustawia cie na odczytanej pozycji x i y. GML (create) roomList=ds_list_create(); roomX=ds_list_create(); roomY=ds_list_create(); GML (przejsciedoinnegorooma) for(i=0;i<ds_list_size(roomList);i+=1) { if ds_list_find_value(roomList,i) = room { ds_list_delete(roomList,i); ds_list_delete(roomX,i); ds_list_delete(roomY,i); } } ds_list_add(roomList,room); ds_list_add(roomX,x); ds_list_add(roomY,y); // Tutaj robisz przejscie do nastepnego rooma</span></span> GML (kodprzynowymroomie) for(i=0;i<ds_list_size(roomList);i+=1) { if ds_list_find_value(roomList,i) = room { x=ds_list_find_value(roomX,i); y=ds_list_find_value(roomY,i); } } Pisane z głowy w szkole, kod niekoniecznie musi działać, ale idea sama w sobie powinna działać. Problem moze sie pojawic jedynie w sytuacji w ktorem mozesz np. wejsc w room drzwiami z lewej, wyjsc srodkowymi a nastepnie spowrotem wejsc jakims wejsiem dodatkowym z prawej, wtedy cie wrzuci w te na srodku.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Listopada 2012 Administratorzy Udostępnij Opublikowano 22 Listopada 2012 Proszta wersja: kolizja z drzwiami/czymstam co ma prowadzić do następnego roomu: GML global.initX = 10; global.initY = 20; i potem w obiekcie player, w evencie room start: GML x = global.initX; y = global.initY; Nie zapomnij przed pierwszym etapem ustalić tych zmiennych, może być np. w menu gdy klikasz "nowa gra", lub w pustym roomie który ustawi te zmienne i wykona room_goto_next(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Listopada 2012 Autor Udostępnij Opublikowano 22 Listopada 2012 hmm nie bardzo ogarniam, używałem tego silnika od Cordoby, czy mam wstawić tylko to co dał mi Gnysek ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Listopada 2012 Administratorzy Udostępnij Opublikowano 22 Listopada 2012 To co ja podałem, nie wymaga niczego więcej - tylko dwie zmienne - przy zmianie etapu (przed room_goto(xxx)) dajesz to pierwsze, w room start to drugie i jeszcze w GameStart (jeśli w pierwszym roomie jest postać) lub w pierwszym roomie jeśli gra zaczyna się od drugiego ustawiasz gdzie zacznie się gra. Tyle. Prościej się nie da i używam tego sposobu już od 9 lat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 22 Listopada 2012 Udostępnij Opublikowano 22 Listopada 2012 Jesli wejdziemy w pokoj w pokoju w pokoju to nie zapisze nam odpowiednich drzwi przez ktore tam weszlismy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Listopada 2012 Autor Udostępnij Opublikowano 22 Listopada 2012 czyli nie da się zrobić tego co ja bym chciał? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Listopada 2012 Administratorzy Udostępnij Opublikowano 22 Listopada 2012 znaczy co, chcesz wejsc jednymi drzwiami, a wychodzac stać przy innych? myślalem, ze wracasz do tych samych, a wtedy wystarczy tylko dobre x i y dać w obiekcie. Hint Creation code może ustalić te pozycje i wystarczy wtedy tylko jeden obiekt. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Listopada 2012 Autor Udostępnij Opublikowano 22 Listopada 2012 właśnie chcę wejść jednymi, wejść do kolejnego rooma i wychodząc stać przy innych, jak na obrazkach, które dołączyłem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 22 Listopada 2012 Udostępnij Opublikowano 22 Listopada 2012 A może tak: 'Create' w obiekcie 'objPlayer'. GML if( variable_global_exists( "door" ) ) with( objDoor ) { if( global.door == door_id ) { other.x = x; other.y = y; break; } } 'Create' w obiekcie 'objDoor'. GML // door_id = 0; - nie należy ustawiać tej zmiennej w evencie 'Create' obiektu, ponieważ będzie ona przypisywana w roomie poprzez "Ctrl+PPM >> Creation code..." dla każdej instancji oddzielnie // taki bug-tracer do zapobiegania braku wymaganej zmiennej if( !variable_local_exists( "door_id" ) ) { show_message( "Zmienna door_id jest wymagana do zdefiniowania#ID instancji: "+string(id) ); door_id = 0; } Wejście do drzwi, w jakimś evencie 'objPlayer' np. poprzez collision with ... GML global.door = other.door_id; room_goto( roomGarden ); Jak to działa? Przy evencie 'Create' obiektu 'objPlayer', skrypt sprawdza, którymi drzwiami weszliśmy - dzięki lokalnej zmiennej 'door_id' każdej instancji 'objDoor'. Ta zmienna lokalna powinna być taka sama dla obu drzwi którymi wchodzimy i wychodzimy - można ją ustawić w room edytorze poprzez "Ctrl+PPM" na instancji i wybrać opcję "Creation code...". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Listopada 2012 Autor Udostępnij Opublikowano 22 Listopada 2012 cofa mnie w dziwne punkty, kompletnie nie związane z miejscem w którym chciałbym się znaleźć. dla wszystkich drzwi zrobiłem parent bo jest ich kilka rodzajów, co wpisać w creation code ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Listopada 2012 Administratorzy Udostępnij Opublikowano 22 Listopada 2012 No np. zdefiniuj xxx i yyy które potem przy kolizji przypiszesz: global.initX = xxx; itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Listopada 2012 Autor Udostępnij Opublikowano 22 Listopada 2012 nadal nie czaję, nigdy nie używałem tej funkcji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 23 Listopada 2012 Administratorzy Udostępnij Opublikowano 23 Listopada 2012 To jest po prostu kod wykonany po evencie create, dla jednej tylko instancji. Zresztą jest to opisane w manualu ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 24 Listopada 2012 Autor Udostępnij Opublikowano 24 Listopada 2012 nie wiem jak to zrobić :/ próbowałem tyle razy nadal nic nie idzie, nie ogarniam tego :/ tutaj wrzucam taki jakby silnik żeby pokazać jak to zrobiłem :/ https://gmclan.org/up2808_12_xxxxx.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cordoba Opublikowano 24 Listopada 2012 Udostępnij Opublikowano 24 Listopada 2012 Zrobiłem to po swojemu i działa: https://gmclan.org/up6767_12_xxxxx.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 24 Listopada 2012 Autor Udostępnij Opublikowano 24 Listopada 2012 Jesteś Z A J E B I S T Y stary, buziaczki :D 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ę