TO_mek
Użytkownicy-
Postów
346 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
1
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez TO_mek
-
Nie wyświetla mi się rysunek. ad.1. uzyj tego skryptu do sprawdzania klikniecia myszy w danym rejonie GML // mouse_region( x1, y1, x2, y2 ) return ( mouse_x > argument0 && mouse_x < argument2 && mouse_y > argument1 && mouse_y < argument3 ); //zwraca true jesli nastapi klikniece myszka we wskazanym regionie</span></span></span> i zwykłego draw_rectangle do rysowania obwódki wokół zaklęcia gdy naciśniesz klawisz 2, lub jak chcesz grubszej linii to tego skryptu GML //for(i:=0; i<argument5; i+=1) //rysowanie od wspolrzednych do srodka prostokata // draw_rectangle(argument0+i,argument1+i,argument2-i,argument3-i,argument4); for(i:=0; i<argument5; i+=1) //rysowanie od wspolrzednych na zewnatrz prostokata draw_rectangle(argument0-i,argument1-i,argument2+i,argument3+i,argument4); ad2. W zależności jak przechowujesz prędkość. Ja zazwyczaj definiuję sobie w jednym głównym obiekcie wszelkie zmienne globalne parametryzujace grę i m.in. mam global.predkosc_bohatera_normalna=10; oraz global.predkosc_bohatera_na_blocie:=5; Bohater ma zmienna krok:=global.predkosc_bohatera_normalnie i w zdazeniu sterowania bohaterem mam x:=x+/- krok I teraz w kolizji bohatera z obiektem blota podstawiam krok:=global.predkosc_bohatera_na_blocie a w step krok:=global.predkosc_bohatera_normalna ad.3. poczytaj w helpie m.in o show_menu(str,def) oraz ten wątek https://forum.gmclan.org/index.php?showtopic=26188
-
Jeden z linków na piątej stronie tego wątku yoyogames działa. Dzięki.
-
Fajnie a coś więcej mógłby ktoś napisać? Chociażby nazwę tej biblioteki.
-
Witam! Czy GM pozwala na przeźroczystość rooma? Czyli w efekcie czy da się uzyskać np. okrągły room czy też coś w rodzaju skórek z winampa "pod" którymi widać zawartość pulpitu komputera?
-
Ja bym dodał jeszcze do tego przykładu w każdej instancji kuleczki funkcję GML draw_sprite_part(bohater_sprajt,subimg,left,top,width,height,x,y) tak by każda z kuleczek zawierała zamiast sprajta kuleczki odpowiedni kawałek sprajta bohatera. Odpowiednio dobierając parametry left,top,width,height można pokusić się nawet o oddzielenie konkretnych kawałków ciała (głowy, rąk, tułowia, nóg). W efekcie uzyskasz rozpad bohatera na kawałki. Każdy kawałek byłby częścią bohatera. Bo chyba o to chodziło a nie o zwykły rozpad na "jakieś" kawałki.
-
W sumie jedna zmienna dodatkowa załatwia sprawę. A sound_isplaying w miarę ok sprawdza się u mnie do kontroli czy odtwarza się dźwięk nieco dłuższy i w momencie gdy nie jest wywoływany raz za razem - używam go do włączania/wyłączania muzyki lecącej w tle (nie mam w niej żadnych zupełnie cichych momentów).
-
Witam! Mam problem z odtwarzaniem dźwięku kroków (wav). Dla poniższego kodu dźwięk jakby się nakładał i jest taki pogłos: GML if keyboard_check(vk_left) { if !sound_isplaying(kroki_snd) then sound_loop(kroki_snd); } if keyboard_check(vk_right) { if !sound_isplaying(kroki_snd) then sound_play(kroki_snd); } natomiast wciskając (dla testów) klawisz M dźwięk odtwarza się prawidłowo GML if keyboard_check_pressed(ord('M')) { sound_play(kroki_snd); } jednak gdy dodam if !sound_check to mam ten sam efekt co przy kursorach. Kiedyś znalazłem wątek gdzie Gnysek pisał, że ta funkcja działa nieprawidłowo w nowszych GMach (https://forum.gmclan.org/index.php?showtopic=13681&hl=dzwiek). Nadal tego nie poprawili i trzeba kombinować?
-
Persistent objects - jak to w końcu działa
TO_mek odpowiedział(a) na TO_mek temat w Pytania początkujących
Dziwne jest to, że w momencie wywołania alarmu dla obiektu który jest zdezaktywowany nie jest generowany błąd. Powinien być komunikat że obiektu nie ma. -
Pozwolę się podpiąć pod temat. A w drugą stronę tzn. chcę aby rozdzielczość ekranu komputera dostosowała się do rozdzielczości gry a konkretnie chodzi mi o ekrany panoramiczne bo sama opcja full screen powoduje, że na bokach są czarne paski a ja chciałbym żeby gra się "rozciągnęła".
-
Witam! Mam 2 roomy: 1: intro/HS/menu room0 2: gra właściwa room1 W roomie mam obiekt start_obj tworzący obiekt persistent_obj w przypadku gdy on jeszcze nie istnieje. Obiekt persistent_obj ma zaznaczoną opcję persistent, posiada alarm[0] który ma ustawiać pewną zmienną która powoduje skip intra od razu do HS oraz do testow show_message('JESTEM W ALARMIE');, także posiada zmienną testową "jest:='tak'. Odpalam grę przez debugera, podglad wartości persistent_obk.jest wyświetla 'tak', wchodzę do rooma 2 czyli do gry i w debugerze persistent_obk.jest=ERROR. Wywołuję powrót do rooma nr 1 poprzez: GML persistent_obj.alarm[0]:=5; room_goto(room1); Nie pojawia się błąd, gra skacze do rooma z intrem (room0), w debugerze pojawia się ponownie zmienna persistent_obk.jest='tak', ale alarm nie zostaje wywołany. Czy tak powinien działać obiekt typu persistent? Czy może to wszystko przez to, że na roomie gry (room1) mam wywołanie instance_deactivate i obiekt persistent_obj jest nieaktywny mimo, że teoretycznie jest persistent? EDIT: OK. W sumie pisząc tego posta wpadłem sam na swój błąd i faktycznie przecież obiekty zdeaktywowane są jakby nieistniejące. Po dodaniu do powyższego kodu na początku linijki GML instance_activate_object(persistent_obj); wszystko działa tak jak powinno. Jedynie zastanawia mnie dlaczego GML nie pokazuje błędu jak wywoływałem alarm nieistniejącego a właściwie nieaktywnego obiektu?
-
To jakiś skrót myślowy? Nawias kwadratowy jest zarezerwowany dla tablic z tym, że GML potrafi obsłużyć tylko tablice dwu wymiarowe a nie czterowymiarowe jak wynika z deklaracji "posiadam".
-
Niby tak ale właśnie dopiero teraz po raz pierwszy zacząłem używać ds_list, bo są szybsze i wygodniejsze od zwykłych tablic więc nie będę z nich rezygnować tym bardziej, że praktycznie kończę grę (brakuje dźwięków, highscore i load/save).
-
Witam! Mam problem ze standardowym zapisem stanu gry. Mam globalna listę używanych slotów (na ds_list) która obsługuje 3 sloty i w której mam raptem 6 możliwych wartości (-1,0,1,2,3,4) bo mam 5 rodzajów przedmiotów + stan pusty. Po zapisaniu, zmianie wartości slotów i odczytaniu stanu gry, zawartość listy nadal jest taka jak przed wczytaniem. Druga sprawa, jak zapiszę grę po zniszczeniu kilku obiektów to gdy próbuję ją odczytać po restarcie gry zanim zniszczę jakikolwiek obiekt to gra głupieje tzn. tak jakby odczyt powodował władowanie zawartości danych do złych obiektów. Jeszcze raz przypominam, testuję standardową obsługę save i load. Szczególnie dziwi mnie nieprawidłowa obsługa ds_list bo to nie jest jedyna lista której używam a dla innych save działa prawidłowo (przynajmniej nie zauważyłem nieprawidłowości). Wiem, pewnie wszyscy napiszą aby zrobić sobie własną obsługę sava i tak się pewnie skończy ale coraz bardziej mnie zastanawia co w takim razie potrafi standardowy save/load i po jakiego grzyba w ogóle coś takiego YoYo czy Mark zapodali (mogli sobie darować jak to tak ma działać).
-
Działanie F5 i F6 mimo wyłączenia w opcjach
TO_mek odpowiedział(a) na TO_mek temat w Pytania początkujących
Sprawdzałem 3 razy. Pomogło zamknięcie edytora GM i ponowne otwarcie. -
Prawie to samo co TheMarQ ale ten powinien zadziałać: GML //step if keyboard_check_pressed(vk_control) then { speed:=100; if alarm[0]==-1 then alarm[0]:=10*room_speed; } //alarm[0] speed:=jakas_inna_predkosc_jaka_potrzebujesz;
-
Witam! Wyłączyłem obsługę F5 i F6 w GlobalGameSettings a zakładce Other a mimo to nadal te klawisze działają i obsługują standardowe save/load. Własną obsługę dopiero zaczynam robić ale to co już działa mam podpięte ale w roomie z grą bo w intrze i menu mają te klawisze nie działać. To normalne, że jak nie mam wcale obsługi tych klawiszy F5 i F6 w intrze i menu to się nadal uruchamiają domyślne komendy na save i load? W ostateczności dam dla intra i menu pseudoobsługe F5 i F6 (czyli "nie rób nic").
-
Witam! Dlaczego tak szybko zamykacie swoje tematy? Ludzie dajcie się wykazać innym szczególnie gdy pierwsza porada jaką otrzymujecie działa ale wcale nie jest optymalna jak choćby w temacie Destroy MB22 (po co używać dodatkowej zmiennej jak wystarczy if alarm[0]==-1 then alarm[]=room_speed/2).
-
Wiem ale myślałem o czymś takim co od razu wyciągałoby wszystkie zmienne jakie posiada danych obiekt bez potrzeby ręcznego wyciągania tych wartości zmiennych jakie każdy z obiektów posiada :). Coś w stylu variable_local_get(all_from_obiect) a później variable_local_set(all_to_obiect) :) Wolę zapytać bo a nuż coś takiego jest ale raczej nie ma.
-
Ze tak zapytam naiwnie :) Czy da się jakoś odczytać wszystkie zmienne lokalne czyli coś w stylu "all" dla obiektów. Czyli with (all) {get_wszystkie_zmienne_do_tablicy_albo_lepiej_do_ds_list} a następnie już tylko zapis tej listy do stringa (ds_list_write) i do pliku. Przy okazji testował ktoś ile znaków maksymalnie może mieć taki string. Druga sprawa czy w GM8.1 planują coś zmienić w sprawie save/load? PS. Wiem, że save/load działa ale takie działanie to chyba do naprawdę prostych gierek tylko wystarcza.
-
Zaczynam się zastanawiać jak rozwiązać robienie save w grze. Widziałbym to tak, że najpierw gracz uruchamia nową grę (czyli wszystkie obiekty się utworzą), podchodzi do pewnego obiektu w którym jest obsługa odczytu/zapisu gry, wczytuje stan gry i następuje porównanie ID obiektów które istnieją i tych które były zapisane a następnie nadmiarowe obiekty zostawałyby usuwane. Pewnie pomysł do bani ale to moje pierwsze przemyślenia. W jaki sposób Wy robicie obsługę zapisu stanu gry? W sumie po co w GM ma wbudowane opcje load/save jak i tak to nie działa prawidłowo.
-
Witam! Czy obiekty tworzone za pomocą instance_create zawsze otrzymują ten sam ID. Chodzi mi o to, że mam w kodzie wywoływanym na początku gry tworzenie wszystkich początkowych obiektów i czy przy każdym uruchomieniu gry zawsze nadawane są identyczne ID czy może się zdarzyć, że jednak raz nada 100123 a raz 100145 tej samej instancji obiektu przy kolejnym uruchomieniu gry?
-
Proste zabezpieczenie ładowanych grafik
TO_mek odpowiedział(a) na TO_mek temat w Pytania początkujących
Jeśli będziesz miał chwilkę to zarzuć :) Zrobiłem kodowanie i dekodowanie podobnie jak w artykule Ranma_mana ale mam jedno pytanie. Czy jest sposób na to aby nie tworzyć odkodowanego pliku tymczasowego z prawidłowym rozszerzeniem gdzieś na dysku? Czyli inaczej czy można najpierw odczytać "zakodowany" plik do pamięci i operacje zmiany zawartości pierwszych kilku bajtów zrobić bezpośrednio w pamięci a z niej "wgrać" taki odkodowany plik do zasobów (jako background)? -
Proste zabezpieczenie ładowanych grafik
TO_mek odpowiedział(a) na TO_mek temat w Pytania początkujących
To znam ale zmyliły mnie komentarze pod artykułem. W międzyczasie przeczytałem go jeszcze raz i akurat to co potrzebuję czyli zmiana nagłówka plików graficznych jest niezależna od wersji GMa bo w ósemce jest tak samo. Właśnie kończę robienie skryptu pasującego do moich potrzeb który koduje i dekoduje pliki "w locie". Ciekawe jaki to będzie miało wpływ na prędkość działania i wczytywania grafiki na starych kompach i netbookach. -
Znikanie obiektu i pojawianie się w innym miejscu
TO_mek odpowiedział(a) na TO_mek temat w Pytania początkujących
Już drugi raz w ostatnim czasie ktoś pisze że moje pytania są zaawansowane a nie początkujące co mnie cieszy bo to dla mnie oznacza, że jednak nie stoję w miejscu. Zawsze staram się przed zadaniem pytania szukać rozwiązań m.in. tu na forum. Wbrew pozorom niemal wszystkie problemy są związane z jednym projektem który jest już niemal na ukończeniu oraz z drugim który jest obecnie w fazie projektowania. Co do draw_sprite_part to nie twierdzę, że nie działa. Szukam podpowiedzi jak tego użyć dla obiektu który ma zdefiniowanego sprajta wieloklatkowego, nadaną prędkość animowania (image_speed=ilestam) i w którym nie mam odrębnej obsługi rysowania (robi to automatycznie obiekt). -
Witam! Szukam prostego rozwiązania zabezpieczenia plików graficznych ładowanych dynamicznie w trakcie gry. Szukałem też bardziej zaawansowanych ale wszelkie przykłady dotyczą GM6.1 a od tego czasu sporo się pozmieniało i przykłady w GM8 nie działają. Najprostsze co przyszło mi do głowy to zmiana rozszerzenia plików *.jpg na jakieś *.dat albo *.res albo cokolwiek innego ale niestety GM nie rozpoznaje ładowanych plików po strukturze pliku tylko standardowo po rozszerzeniu (czyli jest tak samo prymitywny jak sam windows, inne systemy m.in. Amiga OS rozpoznaje pliki po strukturze ale to już odrębny temat). Czyli taki kod: GML tlo:=working_directory+"\room\B000.jpg" background_replace(tlogm, tlo, 0, 1); po zmianie nazwy pliku B000.jpg na B000.dat i kodu na taki: GML tlo:=working_directory+"\room\B000.dat" background_replace(tlogm, tlo, 0, 1); nie działa. Macie jakiś prosty sposób na przynajmniej tak słabe zabezpieczenie ładowanej grafiki? A może coś bardziej złożonego ale nie powodującego opóźnień ładowania.