Skocz do zawartości

candy

Użytkownicy
  • Postów

    491
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez candy

  1. UP Nawiasy: GML ord('A') E: Nie keyboard_key_press tylko keyboard_check_pressed.
  2. Mając Muuuuczeka i mój kod, nie powinno Ci to sprawić żadnego problemu. To nie jest trudne, sam możesz to rozwiązać :). Nauczysz się czegoś nowego.
  3. Ale co masz na myśli, że do przodu? Sprecyzuj dokładnie z jakiej strony na jaką.
  4. GML (draw) draw_line(view_xview+20,view_yview+20,view_xview+szerokosc_viewa-20,view_yview+20) draw_circle(view_xview+20+(o_hero.x/room_width)*(szerokosc_viewa-40),view_yview+20,4,0) Kilka słów wyjaśnienia. Zakładam, że masz view włączony. Draw_line rysuje linię poniżej 20 px od górnej krawędzi. Jej szerokość jest mniejsza o 40 px od szerokości viewa. Teraz druga funkcja. Wyrażenie view_xview+20+(o_hero.x/room_width)*(szerokosc_viewa-40), określa położenie znacznika na linii. +20 dlatego aby wyznacznik na starcie znajdował się na samym początku linii. (o_hero.x/room_width) podaje jaki procent rooma przebył hero. (szerokosc_viewa-40) to wyrażenie równa się szerokości narysowanej linii. Więc jeżeli przemnożymy to przez wcześniejszy ułamek otrzymamy położenie znacznika na linii.
  5. Nie ma obiektu 5... Chyba nie to wrzuciłeś.
  6. Zwalnie Ci, ponieważ samochody A i B mają ciągle ze sobą kolizję. Co oznacza, że w kółko są tworzone obiekty fire. Musisz dopisać warunek, dzięki któremu akcja wydarzy się tylko raz. GML (create A) zderzenie=false;//true- ma zderzenie, false- nie ma</span> GML (step A) if(place_meeting(x,y,B))//jeżeli A ma kolizje z B... { if(!zderzenie)//... i zmienna zderzenie jest false { zderzenie=true;//zmienna zderzenie zmień na true(czyli A ma kolizje z B) instance_create(x,y,fire)//twórz fire // cała reszta kodu } } else if(zderzenie) zderzenie=false;//... a jak A miał kolizje z B i nie ma z nim teraz kolizji, zmień zderzenie na false</span>
  7. GML //Jeżeli masz view ustawiony if(x<view_xview-10) x+=view_wview; else if(x>view_xview+view_wview+10) x-=view_wview; //a jak nie if(x<-10) x+=room_width; else if(x>room_width+10) x-=room_width; //analogicznie z y</span> Te plus/minus 10 po to jest aby gracz nie zapętlił się jak dojdzie do krawędzi rooma/viewa.
  8. GML if(!place_free(x,y+vspeed)) { if(vspeed>0)//jak walnie w podłoże od góry { move_contact_solid(270,15) vspeed=0; //reszta akcji } else//jak walnie w podłoże od dołu { vspeed=1; //reszta akcji } } Zobacz czy pomoże.
  9. 30*room_speed, ale nie jestem pewien.
  10. candy

    Old Rpg

    No i co z tego? To znaczy, że gorsza? I że nie warto grać w gry z taką grafą? Ale co do gry. Za dużo rzeczy jak na tak mały obszar. Po za tym jakoś to do siebie za bardzo nie pasuje.
  11. Skorzystaj na przykład z globalnych. GML global.akcja=false; Tam gdzie ma być wykonana akcja po restarcie: GML if(global.akcja) { //akcja global.akcja=false; } Tam gdzie dajesz akcje na restart dopisz: GML { //cos tam wczesniej global.akcja=true; }
  12. GML if(room=nazwa_rooma) //akcja</span> Mogłeś już to dopisać do Swoich wcześniejszych tematów, a nie tworzyć co chwila nowe.
  13. GML draw_text_color() Argumenty znajdź w helpie.
  14. To nic nie da, bo mouse_x i mouse_y to aktualne współrzędne kursora. Zmieniają się co step.
  15. To sbróbuj jeszcze tak: GML (skok) { a=image_xscale; sprite_index=skok; image_xscale=a; }
  16. U siebie tego nie zauważyłem. Może po prostu masz sprite skoku odwrócony względem reszty spritów.
  17. Sry, to sprite_index mnie zmyliło. Ja zawsze wrzucam wszystkie sprity postaci do jednego sprita. Ale skoro używasz image_xscale, to nie powinno Ci obracać po skoku postać. Chyba, że masz gdzieś potem kod, który powoduje obrót postaci.
  18. Tworzysz sprity skoku w lewo i prawo i dopisujesz if: GML if ! place_free(x,y+1) { vspeed = -jump if(sprite_index==stoi_prawo||sprite_index==idzie_prawo) sprite_index=postac_skacze_prawo; else if(sprite_index==stoi_lewo||sprite_index==idzie_lewo) sprite_index=postac_skacze_llewo; }
  19. Wrzuć kod na skok, to zobaczymy co da się zrobić.
  20. GML if(keyboard_check(vk_down)) { if(keyboard_check(vk_right)) sprite_index=prawo; else sprite_index=dol; } Musisz dla reszty kierunków zrobić analogicznie i powinno działać.
  21. GML draw_sprite(sprite,imegesub,view_xview+costam,view_yview+costam2) Albo GML x=view_xview+costam; y=view_yview+costam2; Dopasuj sobie wartości costam do własnych potrzeb;
  22. Jest taka fajna książeczka, nazywa się słownik do języka angielskiego. Język angielski to podstawa dzisiaj, bez niego ani rusz (właśnie masz znakomity na to dowód). Włóż trochę wysiłku, nawet jeżeli nie zrozumiesz wszystkiego zawsze będziesz do przodu. A jak jednak nie chcesz się męczyć masz link do polskiej dokumentacji: dokumentacja
  23. Włączasz GM i klikasz F1. Następnie wybierasz zakładkę index i wpisujesz: keyboard_check, sprite_index, image_xscale. Poczytaj o tych funkcjach a na pewno dasz radę sam rozwiązać swój problem.
  24. A jeżeli wpiszesz 0? U Ciebie wyjdzie, że silnia z 0 to 0, co jest nie prawdą. Ma wyjść jeden. Po za tym, Ty może nie wpiszesz liczby ujemnej, ale użytkownik może wpisać. I co wtedy? Wszystko się krzaczy. Jak programujesz to musisz brać pod uwagę wszystkie możliwe przypadki. Nie możesz założyć, że użytkownik zawsze będzie wpisywał liczby z dziedziny funkcji. Więc uważam, że powinieneś włożyć trochę więcej wysiłku i przerobić kod, tak aby był odporny na "złe" liczby. Chyba, że tylko ty masz korzystać z tego programu, to wtedy zupełnie inna bajka. Widzę także błąd w dzieleniu. Sprawdź jakie wartości może przyjmować dzielnik. A co do średniej arytmetycznej. GML if(cochcesz="srednia") { srednia=0,n=0; while(n<=0)//nie możesz podawać minus n czy 0 liczb, prawda? n=get_integer('podaj ilosc liczb do sredniej',''); repeat(n) srednia+=get_integer('podaj liczbe',''); srednia/=n; aktualnaakcja=???; return srednia; } Zmienna srednia musi być na samym początku równa 0. Jak nie wpiszesz wartości pod zmienną to może kryć się w niej dowolna liczba. Mogą Ci wyjść wspaniałe krzaczki, że po wykonaniu funkcji srednia wychodzi np -2716376. Return kończy działanie funkcji, więc przestaw go na ostatnie miejsce w funkcji, aby aktualnaakcja przyjęła podaną wartość.
×
×
  • Dodaj nową pozycję...