Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 823
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    143

Treść opublikowana przez gnysek

  1. Nie musisz nic kodu rysowanie zmienić. Użyj: display_set_gui_size(1024, 768); czy jak tam chcesz a potem var _w_percentage = display_get_height()/768 * (1024/768); display_set_gui_maximise( _w_percentage, display_get_height()/768, ( 1024*_w_percentage - display_get_gui_width()) / 2, 0); i powinno załatwić sprawę. To wyżej przeskaluje GUI do obecnego rozmiary ekranu utrzymując proporcje i przesunie o tyle pikseli w lewo ile wynosi różnica między rozmiarami. Jakoś tak to będzie, proporcje piszę z głowy teraz - ale w tym artykule który podlinkowałem było to opisane, niepotrzebnie szukasz problemu gdzie indziej.
  2. Ale co jest złego w tym, żeby GUI zawsze ustawić na jakiś tam rozmiar i skalować oraz offsetować ? Wtedy zawsze będzie na środku jak chcesz.
  3. Użyj draw gui, wymuś rozmiar i ustaw offset. Będzie wtedy na środku. https://www.yoyogames.com/blog/65/the-basics-of-scaling-the-gui-layer
  4. Auto increment i tak można zostawić, zawsze to łatwiej intem potem pobierać rekord. Co do przerwaia requestu - musisz aktualizować jednym requestem w takim razie. Przesyłać całą tablicę. Albo jakiś JS i dla kazdego elementu wywali "błąd" gdy się nie zapisze, żeby user ponowił zapis (pętla nie ma sensu, bo jak net padnie to będzie napierdzielać co sekundę :P).
  5. Jak zmienisz liczbę pytań to diff będzie niemal niemozliwy. Jedyna opcja jaka mi przychodzi to dawać losowy numer (GUID?) Każdemu pytaniu to potem odnajdziesz starą wersję tego samego po tym nawet jak się kolejność zmieni. Zapisuj też ich pozycje to będzie widać które były gdzie przesuniete - ale idealnego diffa nie uzyskasz. Nawet w gicie jak przedstawisz tekst 5 linijek dalej to on je widzi jako usunięte i nowe a nie różnice.
  6. Ale co ma wspólnego ds_create z problemem, że to przeszkadza w modyfikacji kodu? Sprawdź w dokumentacji co ta funkcja robi i wtedy dopiero na nią narzekaj. Bo ona nie ma nic wspólnego z save. Służy do stworzenia listy z danymi (taka tablica w sumie).
  7. Zaczynam się zastanawiać, czy w ogóle rozumiesz co znaczą znaki mniejszości i większości?
  8. bo ja nie wiem gdzie Ty masz ten kod, musisz się zastanowić chwilę co robisz... myślalem, że to w jakimś evencie kolizji czy coś, gdzie bohater umiera. Jak w stepie to oczywiste, że co klatkę obrazu się wykona wiec po 3 klatkach koniec gry. Dostostuj go zatem do swojego kodu którego nie znam. Tylko nie wklejaj go całego.
  9. A co ja napisałem wyżej ? if (global.life > 0) { global.life -=1; } else { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  10. Właśnie sie zastanawiałem, dlaczego tam jest >0 ale myślałem, ze tak sobie wymyśliłeś, że 0 = żyje, 1 = nie zyje. Ale ok, w takim razie: if (global.life > 0) { global.life -=1; } else { /// kod od highscore }
  11. w respawnie daj if global.life > 0 i po sprawie. Mam wrażenie, że nie rozumiesz co robi Twój kod. Po co jakieś alarmy do respawnów, skoro to jest zmienna true/false jak mniemam ? umierasz to umierasz, wyłączasz mozliwosc respawna od razu. Możesz nawet tam, gdzie global.life pomniejszasz o 1.
  12. Nic z tego wyżej nie rozumiem. Strzelam jedynie, że gvX i gvY się resetują na 0. Co do flagi - ona nie ma nic wspólnego z game_end(). Game End robi to samo co Alt+F4, albo zakończenie procesu w menedżerze zadań. Ja zrobiłem flagę, dzięki której albo ma się 1 raz włączyć alarm, jeśli jeszcze nie leciał, albo - jeśli już się zakończył o czym mówi właśnie ta flaga - wykonał kod przejścia do następnego roomu.
  13. game_end() zamyka program. Jeśli miałeś to w pierwszej linijce tego kodu, to automatycznie po śmierci zamykała się gra na koniec obecnego stepu. Co do przesuwania sie view - nie wiem jaki masz od tego kod. Jeśli masz śledzenie obiektu i po śmierci ekran się przesuwa (nie skacze), to bym winił... drugą instancję tego samego obiektu. can_finish jest po prostu flagą, czy coś już zostało zrobione czy nie.
  14. To jest porównanie. Ale widzę mój błąd. Połączyłem dwa ify w jeden, a powinienem mieć dwa. //create can_finish = false; // w alarm 0 can_finish = true; // step if (global.life = 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 150; // 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s = highscores[ | ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[ ? "score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } } i żeby było widać, dałem teraz 5 sekund, bo 1 to może być za krótko
  15. Nie musisz ustawiać alarmu na -1, on jest tak ustawiony przez GameMakera dla każdego obiektu. I żadnego game_end() gdziekolwiek bo to wyłącza całkiem grę. //create can_finish = false; // w alarm 0 can_finish = true; // step if (global.life = 0) { if (can_finish == false and alarm[0] == -1) { alarm[0] = 30; // 1 sekunda } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s = highscores[ | ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[ ? "score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  16. Zanim pierwszy raz ustawisz alarm[0], to on ma już wartość -1 od początku gry, pewnie dlatego ? Zrób inaczej: // create can_finish = false; // gdzies tam gdzie konczy sie gra i ma poczekać if (<nie zyje>) { if (can_finish == false) { alarm[0] = 30; } else { room_goto(<higscore>); } } // w alarm 0 can_finish = true; Poza tym, game_end(); kończy grę, więc cały kod dalej się nie wykona.
  17. No to ja tu nie widzę alarmu nigdzie. W stepie, czyli kod co klatkę obrazu.
  18. No i co, nikt nie używa tych aktualizacji :( chyba je wyłączę.

    1. I am Lord

      I am Lord

      Bo to powinno być jakoś zintegrowane ze stroną główną, mało kto chyba wchodzi bezpośrednio na forum.  ?

    2. Chell

      Chell

      wrzucaj changelogi w newsy, nie sledze shoutboxa i nawet nie wiem co weszlo

  19. Pewnie nadal nie wywaliłeś kodu od highscore z innego obiektu.
  20. Potwierdzam. Trzeba chwilę poświecić na usunięcie tych funkcji które GM buduje jako kompatybilne (np. teraz instance_create wymaga podania layera, więc GM tworzy funkcję _instance_create() i zmienne globalne, z depthem itp.) - oczywiście można je zostawić, ale jak się usuwa jakiś obiekt to trzeba przepisywać tablicę z listą tych "starych". Nie mniej każda gra w 100% powinna działać w GMS2, a po optymalizacji na nowe funkcje śmigać jeszcze bardziej.
  21. Wszystko powinno działać, nawet tła. Zostaną skonwertowane do sprites i wstawione na layerze typu "background".
  22. Jaki przykład ? Pola X i Y - trzeba wpisać wartość i tyle:
  23. w GMS2 da sie bez problemu. W GMS 1.x możesz ustawić bodaj 8 różnych backgroundów, i podać ich X i Y, więc też da radę. w GMS2 nie będzie to obciążeniem, bo tam nie ma backgroundów tylko ustawiasz sprity na layerze sprite (bez obiektów)
  24. No jak przepisesz shader, to da radę, ale tutaj mało kto się na tym zna.
  25. To wyżej to jest Godot, a nie GMS 2.0
×
×
  • Dodaj nową pozycję...