Skocz do zawartości

MetalowyNerd

Użytkownicy
  • Postów

    102
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez MetalowyNerd

  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ą.
  15. Okej. Dzięki. Wygląda na to, że działa, a "wygląda", bo sprawdziłem na szybko eksportem na fona z 30fps. Dzięki za pomoc ;).
  16. Fervi - 200 to na dzień dzisiejszy ;). Uzjel - Nie bardzo, bo to musi być niezależny czat
  17. Dobra. Na dziś oferuję 200PLN za to zlecenie.
  18. Witam. Mam niby drobny problem z szybkim tappingiem. Chodzi o to, że w grze trzeba "klikać" możliwie najszybciej, jak tylko gracz potrafi. Problem z tym jest taki, że nawet, jeśli dodam do startowego obiektu w Create Event linię: "device_mouse_dbclick_enable(false);", to fon i tak łapie lagi po krótkim czasie i gdy przestanę szybko "klikać", gra jeszcze przez kilka sekund "zbiera" (jakby z opóźnieniem) dotyki na ekranie. Nie wiem już, jak to mogę naprawić. Myślałem o tym, żeby program (jeśli nie nadąża), pomijał dotyki, ale nie mam pojęcia, jak tego dokonać. Niby pierdoła, a jednak nigdzie nie znalazłem na to odpowiedzi. W kodzie dodałem też jakby limit obiektów, odpowiadających za dotknięcia (jeśli jest mniej, niż 8 takich obiektów, przy dotknięciu, utwórz kolejny), ale i to nie pomaga. Obiekty takie znikają zaraz po wykonaniu poleceń ze swojego Create Event. Pomóżcie, bo projekt stoi przez pierdołę, a nigdzie (czy to po angielsku, czy polsku) nie mogę znaleźć pomocy...
  19. Witam. Potrzebuję programu stworzonego w GM:S'ie. Program ten musi działać podobnie, jak LANchat, z tym, że nie przez sieć LAN, a powinien mieć zasięg globalny. Zlecenie obejmuje klienta i serwer. W kliencie będzie można szukać, dodawać i pisać ze znajomymi w dwie osoby, będzie można także tworzyć własne pokoje, które każdy będzie mógł wyszukać i jeśli twórca pokoju będzie chciał, ograniczy do niego dostęp hasłem. W serwerze natomiast muszą się znajdować: podgląd wszystkich konwersacji wszystkich użytkowników, jakie kiedykolwiek miały miejsce. Powinna być też opcja ustalenia, po jakim czasie najstarsze wiadomości mają być usuwane z pamięci serwera (w celu optymalizacji). Proszę o wycenę takiego programiku. Nie wymagam tworzenia grafiki, ponieważ sam ją wykonam w dalszym etapie rozwoju tego komunikatora. Dźwięki identycznie. Mile widziane posiadanie modułu dla Androida ;), ale nie jest to warunek konieczny. Osoba, która najbardziej mnie przekona treścią i cenowo, zostanie wybrana do wykonania tego zlecenia. Dowiedziałem się niedawno, że taki prosty czat to kwestia kilku linijek kodu, dlatego liczę na to, że są tu osoby, które dobrze to wykonają. Pozdrawiam serdecznie.
  20. Oks, założę już niebawem. Dzięki za odpowiedź ;)
  21. Witam. Nie będę się tu rozpisywał, bo na razie tylko pytam. Czy można na tym forum zamieszczać zlecenia? Przydałby się taki specjalny dział do tego, bo niektórzy na przykład są mało doświadczeni w jakimś temacie GM'a, a nie chcą tracić czasu na naukę i googlowanie wszystkiego, tylko wolą się nauczyć z produktu, jaki zamówili. :).
  22. ediepl, nadal wywala mi ten błąd: ERROR in action number 1 of Async Event: Networking for object oServer: Attempting to read from outside the buffer, returning 0 at gml_Object_oServer_Other_68 I am Lord, Tu znowu nie mogę wejść, jako client, bo nie może się połączyć, a tylko server działa. Niech mi ktoś podrzuci możliwie najprostszego clienta i server do czatowania w postaci projektu. Wiem, że jesteście w stanie to zrobić, bo macie doświadczenie w Networkingu.Chodzi mi tylko o to, żebym to zrozumiał w pełni
  23. No więc chodzi mi właśnie o te parę linijek kodu. W pierwszym linku, który podałeś, jest tutorial do prostej gierki, nie czatu. W drugim dokumentacja, a szukam banalnego przykładu w postaci projektu, albo jak to zrobić krok po kroku. W trzecim linku jest już to, co mnie właśnie interesuje, ale akurat po wybraniu opcji "C - Client", wyskakuje błąd i nie wiem, dlaczego (bo to dla mnie czarna magia, nie zwykłe pisanie gierki). Nie wiem, o co w tym chodzi, bo się na Networkingu kompletnie nie znam, ale taki wyrzuca błąd: ERROR in action number 1 of Async Event: Networking for object oServer: Attempting to read from outside the buffer, returning 0 at gml_Object_oServer_Other_68 Ten błąd znajduje się w tej wersji: https://gmclan.org/up7589_4_Przyk_ad.html
  24. Witam. Jak zawsze jestem zielony w sprawach gier online. Dla mnie to zawsze było czarną magią i nigdy nie potrafiłem zapamiętać czegokolwiek z tematu programowania gier online. Jednak chciałbym spróbować stworzyć coś banalnego, co mógłbym później rozwijać dla ludzi. Na początek chciałbym stworzyć jedynie klienta i serwer dla na przykład czatu. Po odpaleniu serwera, w kliencie pokazywałaby się lista osób, które są na czacie i oczywiście rozmowa. Bardzo mi zależy na tym, żeby skrypty były możliwie jak najprostsze, bo serio to dla mnie czarna magia, a mam fajny pomysł na przekształcenie tego czatu w grę. Jeśli ktoś się zna na Networkingu w GM:S'ie, to bardzo proszę o odpowiedź ;). Pozdrawiam wszystkich serdecznie.
×
×
  • Dodaj nową pozycję...