Skocz do zawartości

Dawidds

Użytkownicy
  • Postów

    1 970
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Dawidds

  1. image_speed będzie równe 1 tylko jeśli będziesz trzymał strzałkę w lewo I prawo jednocześnie.
  2. Źle. Zresztą, jak można tak bardzo zaniżyć ocenę jedynie przez viewa? Oceniać przykładu nie będę, poprzednicy już wszystko powiedzieli :P
  3. vspd += grav; if(vspd > 0) { vspd_round += vspd-floor(vspd); if(vspd_round >= 1) { repeat(floor(vspd)+1) { if(place_free(x, y+1)){ y += 1; }else{ vspd = 0; } } vspd_round -= 1; } else { repeat(floor(vspd)) { if(place_free(x, y+1)){ y += 1; }else{ vspd = 0; } } } } else if(vspd < 0) { vspd_round += abs(vspd)-floor(abs(vspd)); if(vspd_round >= 1) { repeat(floor(abs(vspd))+1) { if(place_free(x, y-1)){ y -= 1; }else{ vspd = 0; } } vspd_round -= 1; } else { repeat(floor(abs(vspd))) { if(place_free(x, y-1)){ y -= 1; }else{ vspd = 0; } } } } if(hspd > 0) { hspd_round += hspd-floor(hspd); if(hspd_round >= 1) { repeat(floor(hspd)+1) { if(place_free(x+1, y)){ x += 1; }else{ hspd = 0; } } hspd_round -= 1; } else { repeat(floor(hspd)) { if(place_free(x+1, y)){ x += 1; }else{ hspd = 0; } } } } else if(hspd < 0) { hspd_round += abs(hspd)-floor(abs(hspd)); if(hspd_round >= 1) { repeat(floor(abs(hspd))+1) { if(place_free(x-1, y)){ x -= 1; }else{ hspd = 0; } } hspd_round -= 1; } else { repeat(floor(abs(hspd))) { if(place_free(x-1, y)){ x -= 1; }else{ hspd = 0; } } } } UWAGA: Skopiowane z jakiegoś starego projektu, możliwe, że da się to zrobić wydajniej. Nie chce mi sie tego teraz sprawdzać ;d Edit: Lol, ale to żalowo napisane ;[
  4. Nie wiem do końca, o co Ci chodzi, ale spróbuj po prostu napisać własny system direction/speed/hspeed/vspeed/motion_x(). Taki, który automatycznie będzie się zatrzymywał na solidach. Choć pewnie źle zrozumiałem... :P
  5. Dawidds

    Galeria Grafik

    Jak dotąd Twoja najlepsza fotka.
  6. Odrysuj go ręcznie, że tak to nazwę. Albo zwyczajnie ustawiając warwę z tym obrazkiem poniżej wybranej, i wtedy rysować pędzlem, lub podobnie, tyle, że wektorowo.
  7. Dawidds

    procenty

    2000/(0.8*1.2) = 2083 i 1/3 Po kij tu dwa razy równanie układać :P ?
  8. Czystym GMLem nie zablokujesz klawisza. Ew. takie propozycje: 1. Po wciśnięciu klawisza P wciskaj Bckspace. 2. Po wciśnięciu P dawaj keyboard_key_release(ord("P")), i ustaw fps na duży. Choć jestem niemal pewien, że to nie zadziała, to warto spróbować... ;P
  9. Heh, rzeczywiście komputer zawsze dostaje punkty. Co nie zmienia faktu, ze gierka fajna. Trzymaj tak dalej :P 6/10, przez ten bug.
  10. Skąd żeś to noone odwalił ;x ? 2. Bądź napisać własny system odbić - lepsze, ale dla krztałtów innych niż prostokąty/kule nie takie łatwiutkie do napisania... :P
  11. Create surf = surface_create(640, 480); //Badz mniejszy - raczej nie rob surface'sow na calego rooma surface_set_target(surf); draw_clear_alpha(c_white, 1); surface_reset_target(); Step/Draw surface_set_target(surf); //Od teraz wsyzstko malujesz nie na ekranie, a na surface'sie. Surfaca mozna porownac do jakby obrazka w Paintcie - jak cos na nim namalujesz, to to tam zostanie :P draw_text(5, 5, "hello world, lol"); surface_reset_target(); //Koniec malowania po surface'sie Draw draw_surface(surf, 0, 0); //Nie jestem pewny kolejnosci argumentow Sory, nie chce mi sie gmlów dodawać :D
  12. No to napisz własny system messagów, innego wyjścia nie ma.
  13. Co w tym dziwnego O.o ? Ja tu żadnej filozofii nie widzę... :| 1. CLIENT: Jeśli gracz przesunął itemek nie dalej niż 128px od jego pierwotnej pozycji i sam jest w dystansie <=~46px, to wysyła pozycję, z której chcesz przesunąć item na pozycję, do której chcesz przesunąć item 2. SERWER: Serw sprawdza, czy na tym miejscu jest itemek, czy tam niema solida, czy gracz jest wystarczająco blisko, czy nie rzuca go za daleko, ogólnie to, co w kliencie. Jeśli tak, to wysyła do clienta info o tym, że itemek o tym id się przesunął na daną pozycję. 3. CLIENT go przesuwa.
  14. Wszystkie variable_* są mulaste... :P Już lepiej to do jakieś zmiennej zapisać, lub po prostu zwrócić tablicę.
  15. https://forum.gmclan.org/index.php?showtopi...st&p=240958 I nie udawaj, bo obaj dobrze wiemy, że Twój skrypt działa dokładnie tak, jak PsichiX napisał - ty użyłeś jego pomysłu i na jego podstawie napisałeś swój skrypt. O, inaczej - sam nie wpadłeś na pomysł z dezaktywacją instancji. Ale dobra, niczego sobie wzajemnie nie udowodnimy, także sprzeczka nie ma sensu :P
  16. Wyniki szybkiego testu: Czas wykonania 2500 razy funkcji na listach z losowymi parametrami (przy dwudziestu interesujących mnie obiektach): ~950ms To co wyżej, tyle, że na deaktywacji: ~300ms Czyli jednak różnica jest. Już teraz nie mam czasu, ale jeszcze dzisiaj chciałbym to sprawdzić - która funkcja zyskuje a która traci na zwiększonej liczbie instancji. Ed: Dobrze wiesz, o co mi chodzi. To PsichiX podsunął Ci na sposób, a Ty jedynie przerobiłeś go na funkcję.
  17. Po 1. Nobody już podał wadę. A po 2. To nie szpań tak - jedynie przepisałeś to, co powiedział PsichiX na pętlę :3 Co do tamtego kodu - sam uważam, iż jest on niewydajny, ale za chwilę to dokładniej sprawdzę.
  18. Dawidds

    Game Framework

    To dawaj go tu :) A masz może jeszcze wersję rozkładającą gmk :P ?
  19. Stary, to nie takie proste, jak sobie myślisz... :3 A, i jak chcesz pisać trojany/konwertery/etc, to zostaw GMa w spokoju.
  20. Ja nie mogę, Michał po prostu mnie dobija... :| Błąd, lol. Nie wiem, co wy do grafiki macie. Fajna jest :3 Prosta i czytelna. 7-/10
  21. Michał, jak nic nie wiesz to się ..., ok? Opiszę to na przykładzie badania kąta terenu platformówki, w td podobnie. Najprościej sprawdzić coś takiego za pomocą kilku (najprościej - 2) punktów kontrolnych. Po prostu - przesuwasz (w pętli oczywiście) obydwa punkty kontrolne, umieszczone po obu stronach bohatera (coś jakby koła :P), maksymalnie na dół, póki nie kolidują z terenem. Później obliczasz kąt pomiędzy dwoma punktami, i voila :P Choć ten sposób ma wadę - jest niedokładny. Jeśli punkty są za blisko siebie - kąt będzie wyliczany zbyt "skokowo", niedokładnie Ale z kolei jeśli będą za daleko - to jeśli np. pomiędzy punktami będzie górka - system kolizji jej nie "zauważy". Najlepiej to zrobić całą linią punktów, i odpowiednio ich pozycje przeanalizować, że tak to nazwę.
  22. A więc tak: Instance nearest zwraca id instancji, czyli jakby pojedynczego przeciwnika - nawet, jeśli w romie jest kila obj_wrog, id wskazuje zawsze na tylko jednego z nich. GML ins = instance_nearest(x, y, obj_wrog); //I teraz mozesz "kontrolowac" instancje najblizszego przeciwnika - masz jego id :D Np. //show_message(string(ins.hp)); - pokaze ci hp tego (najbliższego) gracza direction = point_direction(x, y, ins.x, ins.y); //TO juz chyba znasz - x,y to wspolrzedne pocisku, ins.x i ins.y odwoluja sie do wspolrzednych najblizszego przeciwnika</span> I ten kod MUSI działać. Jak nie działa - daj plik, naprawimy :)
  23. Photoshop. Ale w GIMPie też się da :)
  24. Dawidds

    Game Framework

    Nie. To samo mu mówilem. Ale on stwierdził, że to nie wina języka, a twórców - no i w sumie trochę racji też ma. :P I jeszcze jedno: Proszę, wymień mi 3 interpretery i 3 programy do robienia gier, które są lepsze niż GM :P
×
×
  • Dodaj nową pozycję...