Fervi_ Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 Witajcie! Pracuję nad silnikiem OpenDave (klonem dla Dave Dangerous dla systemów Windows, Linux, OS X) i mam pewien problem z chodzeniem http://www.gmclan.org/up6184_14_opendave.html De facto nie mogę odkryć jak zrobić chodzenie, według mnie powinno działać, ale coś nie działa No i jakby ktoś opracował jakiś dobry skok (teraz jest wieloskok :P) Fervi PS. Wystarczy sam kod gdzie umieścić, przeanalizuje (jak będę w stanie :D) i dodam najwyżej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 if(place_free(x-4,y)) { x=-4 } Podopisuj wszędzie x i y Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 3 Marca 2013 Autor Udostępnij Opublikowano 3 Marca 2013 A działa tobie z tym kodem? Bo mi niezbyt i tak się pytam :P (tzn. efekt ten sam jaki był) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 Powinno być x-=4 Niby nic a jednak zmienia sens kodu :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 W place_free w kodzie na grawitacje zmień minus na plus. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 3 Marca 2013 Autor Udostępnij Opublikowano 3 Marca 2013 Wrzucam aktualną wersję, gdyby ktoś mógł poprawić, bo ja poprawiam według waszych porad i nic :| Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 https://gmclan.org/up7221_14_opendave.html wywala mi blad przy starcie, ze zmienna key zla jest, zamienilem jej nazwe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 3 Marca 2013 Autor Udostępnij Opublikowano 3 Marca 2013 Działa, dzięki :P Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 3 Marca 2013 Autor Udostępnij Opublikowano 3 Marca 2013 Dobra, inne pytanie :P 1) SCORE: 0 Jak w jednej linijce zrobić coś takiego (na pewno jest źle, ale ktoś poprawi) draw_text(10,10,"SCORE:" + score); 2) Jak pogrubić czcionkę (z draw_text) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 1) draw_text(10,10,"SCORE:" + string(score)); 2) zrob nowa czcionke i daj draw_set_font(czcionka_z_bold_czy_z_czymkolwiek) draw_text(0,0,"asdfasdfasdf") draw_set_font(normalna_czcionka) ale od 2 jest pewnie funkcja. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 3 Marca 2013 Udostępnij Opublikowano 3 Marca 2013 Nie, nie ma funkcji do fontów, możesz albo ustawić nową czcionkę z pogrubieniem, albo rysować ze skalą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 3 Marca 2013 Autor Udostępnij Opublikowano 3 Marca 2013 Inne pytanie :P Robię level 2 (room 3) [ustawiony teraz jako 1 :D] http://www.gmclan.org/up6184_14_opendave.html I coś czego nie rozumiem (dlatego zresztą piszę) - Postać (obj_dave) ześlizguje się z obj_violetfloor, mimo, że nie powinien :P (Powinien albo odbić się, albo ustać na tym, albo się zablokować - a on spada, mimo vspeed=0) Proszę o pomoc :) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
M@ILOSZ Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 Nie pobierałem, ale z twojego opisu to może być tak, że najpierw masz vspeed= 0; a potem gdzieś w kodzie masz zrobioną grawitację, czyli np. vspeed += 0.1; I wtedy vspeed pod koniec stepa wynosi 0.1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 No tak, tylko tutaj jest inne pytanie Czemu przy takim samym kodzie dla obiektu obj_wall jest ok. Wielkość obiektu ma znaczenie? Nie powinna według mnie Fervi PS. Idź być Fervi'm gdzieś indziej - SOLID :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 Dobra, inne pytanie, dość teoretyczne W oryginale jest, że plansza (zazwyczaj) składa się z czegoś co można nazwać kilkoma roomami, jest ona długa, jak się kończy jeden ekran, przeskakuje na drugi (czyli view nie jest ustawiony na obj_dave) I tu pytanie jak to zrobić. Najprościej jest dać opcję persistant i zrobić room_goto, ale prawdopodobnie obj_dave musiałby być wcześniej gdzieś rzucony (w grze de facto jesteśmy w miejscu, gdzie jesteśmy na osi X,Y) i nie wiem czy robić wtedy room_goto, a operować view'ami (tylko musiałyby być wyzwalacze - obiekty? event?) Chodzi mi o pomysł jakiś, jak wy to widzicie (od biedy potem będę błagał o kod :D) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 Chodzi ci o to, że jak x gracza jest większe niż view_width, to x viewa ma się wtedy ustawiać na x gracza? (analogicznie z y) Nie wiem czy dobrze zrozumiałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 view_xview =( obj_dave.x div view_wview) * view_wview; view_yview analogicznie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 @szmalu Chyba tak, jeśli Player.X jest większe niż 640, to przesuń o trochę postać Zaraz oblookam w praktyce Fervi PS. Dobra, Enigma chyba takich rzeczy nie rozumie, to inne zadanie Jak jest zmiana room'a, to można ustawić, żeby Y dla Playera z room1 był przekazywany Y room'a2? (Coś jak zmienne globalne chyba, ale ręki nie dam uciąć :D) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 Globalne, albo presistanc( czy jakoś tak :P ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 @EDIT Up szybszy Persistent bodajże, ale IMO lepiej zrobić w Create obiektu playera GML y = global.oldY; I w room end dać GML global.oldY = y; Pewnie jest jeszcze jakieś lepsze rozwiązanie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 global.yy=y room_goto_next() EVENT ROOM_START y=global.yy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 Ok, zmienna global.yy przechowuje prawdopodobnie dobry Y, jednak tam nie idzie (wygląda na to, że ROOM_START nie działa poprawnie (?) albo coś pominąłem Więc dodałem do Create taki kod if(global.yy=0) { } else { y=global.yy } a w obiekcie "linia teleportacyjna" (tak można to nazwać) jest global.yy=y room_goto_next() Jednak mimo wszystko obj_dave startuje z pozycji X,0 (w pierwszym roomie, a nie tam gdzie jest zaznaczony na roomie) Ma ktoś jakiś pomysł? Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 Zepsułeś coś! projekt daj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 http://www.gmclan.org/up6184_14_opendave.html Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 1.zadekladur zmienna w game start, albo daj w create if! variable_global_exists("global.yy") global.yy=0 . jesli dales w game_start to daj GML if(global.yy<>0){ y=global.yy } w room_start, a jak w create to możesz gzdie chcesz, bo create zawsze wykonuje sie pierwsze, co jest idiotyzmem ze strony tworcow GM. I włącz opcje do sprawdzania zmiennych, to ci errory wywali, a nie będzie zle dzialac. global game settings -> errors -> treat cośtam na nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 Niestety, variable_global_exists nie ma w Enigmie - Jakiś inny sposób? Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 4 Marca 2013 Udostępnij Opublikowano 4 Marca 2013 daj w game_start, a global.yy sprawdzaj w room_start Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 4 Marca 2013 Autor Udostępnij Opublikowano 4 Marca 2013 To chyba za trudne dla mnie, zobaczę z rana, jak odpocznę, bo kombinuję z różnymi sposobami, a to nic nie działa poprawnie :[ Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 5 Marca 2013 Udostępnij Opublikowano 5 Marca 2013 to zostaw tak jak masz, a zadeklaruj sobie zmienna w creation code pierwszego roomu w grze 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ę