Skocz do zawartości

MetalowyNerd

Użytkownicy
  • Postów

    102
  • Dołączył

  • Ostatnia wizyta

O MetalowyNerd

  • Urodziny 10.03.1993

Informacje

  • Team
    Pyrite Industries
  • Użytkownik GameMaker Studio 2
    Tak
  • Użytkownik GameMaker Studio
    Tak
  • Użytkownik GameMaker 8
    Tak
  • Użytkownik GameMaker 7 i wcześniejszych wersji
    Tak
  • Użytkownik Unity
    Tak
  • Użytkownik Godot
    Nie

O mnie

  • Skąd
    Ziemia
  • Płeć
    Male
  • Adres www
  • Hobby
    -Gry komputerowe<br />-Gry mobilne<br />-Gry planszowe/karciane<br />-Muzyka metalowa, filmowa, dubstep, chiptune<br />-Pisanie opowiadań Sci Fi<br />-Tworzenie własnych wynalazków<br />-Xyridia (własna mikronacja xd)

Osiągnięcia MetalowyNerd

Cadet

Cadet (3/13)

0

Reputacja

  1. surface_save_part nie działa wcale. Próbuję wywołać funkcję zapisu obrazu, nic żadnej reakcji, żaden plik nie powstaje :(. Program jest już trochę rozbudowany, dlatego trochę ciężko mi wrzucić tu kod, ale spróbuję. W programie jest obiekt o_cursor, który jest zwyczajnie kursorem zawierającym kilka narzędzi do modyfikacji grafiki. W evencie Room Start: global.DEFAULTSURFACE = surface_create(226, 226); Jest też obiekt o_swordPreview, który służy do generowania wyglądu miecza 16x16 (w programie widoczne w powiększeniu przez viewport x4). W Draw: surface_set_target(global.DEFAULTSURFACE); draw_self();//tu wyświetla samą rękojeść ...// dalej wyświetla różne elementy przez funkcję draw_sprite_ext surface_reset_target(); I jest obiekt o_block_base, który zapisuje obszar jako grafikę w postaci pliku. Draw GUI (bez znaczenia czy Draw GUI czy zwykły Draw): surface_set_target(global.DEFAULTSURFACE); ... tu jest ustalenie daty i formatu jej zapisywania żeby nazwa pliku ją zawierała dla porządku var mult = 4;//niestety muszę mnożyć wielkość zapisywanego obszaru x4, bo inaczej obejmie tylko mały fragment miecza a nie całość... screen_save_part("swords "+string(date_get_day(date_current_datetime()))+"-"+string(monthFix)+"-"+string(date_get_year(date_current_datetime()))+"/sword_" + string(name) + ".png", (o_swordPreview.x - 8)*mult, (o_swordPreview.y - 8)*mult, (16*mult), (16*mult)); surface_reset_target(); Sporo zabawy a nadal nie działa. Teraz nawet nie zapisuje obrazu do pliku. Pamiętam, że kilka lat temu jakoś udało mi się to zrobić bez surface'ów, w sensie przezroczyste tło, tylko nie pamiętam, jak to zrobiłem, a użyłem screen_save_part wtedy. Podejrzewam, że surface'ów nie zapisuje się globalami, ale bez globala o_block_base wypluwa błąd, że DEFAULTSURFACE nie zostało zadeklarowane. A zostało, tylko w o_cursor. Ewentualnie zamiast global.DEFAULTSURFACE mogę użyć o_cursor.DEFAULTSURFACE... tylko czy to zadziała, moment sprawdzę
  2. Niestety nie działa. A w zasadzie działa identycznie co screen_save_part. Wpisuję surface_save_part(application_surface, dalej koordynaty i rozmiar...). Przezroczystości nie ma, bo tło obrazów nadal jest czarne, a rozdzielczość to 64x64, a powinna być 16x16 (4x większe piksele, a takie powinny być tylko w podglądzie w programie)
  3. Siema 🖖. Próbuję zrobić mały programik, który zapisuje fragment wybranego obszaru z podanych koordynatów i szerokości pola, jednak wymiary w roździelczościach się różnią, bo camera to 226x226 a viewport to 904x904 (viewport jest dokładnie 4x większy). I mam teraz dwa problemy. 1. Piksele w programie sa 4 razy większe (bo chcę, żeby użytkownik widział lepiej wygenerowany pixelart), jednak fragment zrzutu ekranu (czyli wybrany przeze mnie obszar) nie dososowuje się do tego rozmiaru i muszę ręcznie zwiększyć jego wielkość o 4x. To skutkuje 4x większym wygenerowanym obrazem, niż potrzeba. Chciałbym zmniejszyć wygenerowany obraz 4x, bo to pixelart, którego piksele mają być 4x większe tylko w podglądzie programu, a wygenerowane już obrazy powinny mieć piksele w skali 1, nie 4. 2. Wygenerowane obrazy albo nieposiadają kanału alpha i mają czarne tło, albo posiadają kanał alpha ale nadal mają czarne tło. Nie wiem, jak się tego tła pozbyć, żeby obrazy generowane z mojego programu miały już przezroczyste tło.
  4. O to chodzi, że nie można łamać w dowolnym miejscu, bo tylko przed kolejną przerwą/spacją, bo inaczej gra będzie niezbyt czytelna, a to będzie gra tekstowa. Żeby stworzyć taką czcionkę, w której każdy znak ma identyczną szerokość (jak w konsoli Win'a np), to pewnie trzeba stworzyć czcionkę z bitmapy, prawda? Nie ma opcji stworzenia takiej ze zwykłej czcionki?
  5. To pozostaje mi co ileś tysięcy komend wyczyścić tablicę, bo w tym projekcie utrata klatek będzie wyjątkowo głupia i nieuzasadniona patrząc z perspektywy gracza
  6. Ooo, czyli się da. Teraz muszę jeszcze rozgryźć, jak ogarnąć usuwanie od góry tylu linii i przesuwanie o tyle do góry, co będzie miało najnowsze wprowadzone zdanie. Dzięki SimianVirus7. Kodzik krótki, to powinienem ogarnąć . A z ciekawości, ile taka tablica może pomieścić takich linii?
  7. Tak, opcja super, tylko jeśli tekst w jednej linii będzie za długi? To jak go automatycznie przerwiesz, żeby reszta była w linii poniżej?
  8. Ehh, to będę musiał to inaczej ogarnąć :/, myślałem, że to w miarę proste. Chciałem zrobić okno "konsoli" w grze, żeby były widoczne ostatnie komendy wyżej i żeby z każdymi nowymi wprowadzonymi, całość szła ku górze... a nie zrobię przecież nieskończonego stringa :/
  9. Witam. Wie ktoś, jak obliczyć/pozyskać liczbę nowych linii zrobionych automatycznie w draw_text_ext()? W argumencie "w" ustawia się długość w pikselach, po ilu ma zostać wrzucona nowa linia. Chciałbym wiedzieć, ile razy została ta nowa linia wykonana w tym jednym draw_text_ext(). Manualnie tego zrobić nie mogę przez "\n".
  10. Hmm. No to teraz to wszystko wygląda tak i nadal nie działa, a dodatkowo Client wyrzuca błąd i wyłącza Server. SERVER: Create: GML ini_open("data.sav"); ini_write_real("saved","metal",500); ini_close(); network_create_server(network_socket_tcp,6510,20); Networking: GML buff = buffer_load("data.sav"); network_send_packet(sock, buff, buffer_get_size(buff)); CLIENT: Create: GML global.metal = 0; client = network_create_socket(network_socket_tcp); network_connect(client,"127.0.0.1",6510); Networking: GML if (ds_map_find_value(async_load, metal) == true)//chciałem przy okazji zrobić, żeby ustawiało wartość -666, kiedy nie odbiera pakietu ze zmienną "metal" global.metal = ds_map_find_value(async_load, metal); else global.metal = -666; Draw: GML draw_text(10,10,fps); draw_text(300,300,global.metal);//Żeby było widać, kiedy przychodzą pakiety z Server'a</span> Wiem. Ostro kaleczę, ale zawsze miałem problem z programowaniem czegoś, co działa przez neta. Chodzi mi tylko i wyłącznie o to, żebym wiedział, jak przesłać zmienną z serwera na oddzielny program klienta.
  11. Witam. Bardzo interesuje mnie Networking w GM:Studio, ale za nic nie mogę tego zrozumieć. Chcę mieć dwa programy, Server i Client. W projekcie Server mam następujący kod: Create: GML GMLglobal.metal = 500; ini_open("metal.data"); ini_write_real("saved","metal",global.metal); ini_close(); Networking: GML GMLnetwork_create_server(network_socket_tcp,6510,20); buff = buffer_load("metal.data"); network_send_packet(sock, buff, buffer_get_size(buff)); Natomiast w projekcie Client mam: Create: GML GMLglobal.metal = 0; Networking: GML GMLclient = network_create_socket(network_socket_tcp); network_connect(client,"192.134.0.1",6510); I nie rozumiem jednej rzeczy, jak Client ma odebrać pakiet z wartością zmiennej global.metal z Server'a? Chcę, żeby Client mógł ją wyświetlić w swoim okienku.
  12. Jakiś przykład? To w końcu nie jest zwykły surface, a na pewno tu na forum przyda się to wielu ludziom
  13. Chodzi właśnie o taki motyw, jak podpowiedział Dester, z tym, że bez shaderów. Dokładnie mam na myśli zamienienie wszystkich pikseli sprite'a danego obiektu na canvas, na którym będzie widoczny jakiś sprite innego obiektu (i będzie on widoczny tylko na tym canvasie/surfejsie). Ktoś coś czai xD?
  14. Witam. Jestem ciekaw, czy dałoby się zrobić tak, żeby przykładowo sprite obiektu A był rysowany nie na całym ekranie (jak to jest domyślnie), a tylko i wyłącznie na spricie obiektu/ów B. Myślę, że rozpocząłem dość ciekawy temat :). Pozdrawiam i liczę na jakieś podpowiedzi, bo jest tu masa ludzi z potężną GML'ową wiedzą.
×
×
  • Dodaj nową pozycję...