Skocz do zawartości

gnysek

Administratorzy
  • Zawartość

    9318
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    41

Zawartość dodana przez gnysek

  1. list = ds_list_create();

    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).
  2. Zaczynam się zastanawiać, czy w ogóle rozumiesz co znaczą znaki mniejszości i większości?
  3. 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.
  4. 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); } }
  5. 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 }
  6. 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.
  7. 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.
  8. 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.
  9. 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
  10. 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); } }
  11. 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.
  12. No to ja tu nie widzę alarmu nigdzie. W stepie, czyli kod co klatkę obrazu.
  13. 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.  😉

  14. Pewnie nadal nie wywaliłeś kodu od highscore z innego obiektu.
  15. Game Maker Studio 2

    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.
  16. Game Maker Studio 2

    Wszystko powinno działać, nawet tła. Zostaną skonwertowane do sprites i wstawione na layerze typu "background".
  17. Jaki przykład ? Pola X i Y - trzeba wpisać wartość i tyle:
  18. 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)
  19. Animowana mgła 2D

    No jak przepisesz shader, to da radę, ale tutaj mało kto się na tym zna.
  20. Animowana mgła 2D

    To wyżej to jest Godot, a nie GMS 2.0
  21. poziomy trudności w grze

    Master? Patrz na to. 12 linijek kodu zmniejszone do 4. //zakładając, ze global.difficulty ma wartosci 0,1,2 var _hp_loose = [17, 25, 34]; if (global.zegarObrazen < 0) { global.hp -= _hp_loose[global.difficulty]; global.zegarObrazen = room_speed*2; } no i jak enum nie znasz, to mozesz: #macro d_easy 0 #macro d_medium 1 #macro d_hard 2 // potem global.difficulty = d_easy; // mozna tez bez d_, ale wtedy zablokujesz opcje nazywania tak zmiennych :P
  22. poziomy trudności w grze

    Teraz sztuczka: enum difficulty { easy = 1, medium = 2, hard = 3 }; /// gdzies tam indziej w kodzie global.hp -= 10 * global.difficulty; //10,20,30 alternatywnie enum difficulty { easy, medium, hard }; /// gdzies tam indziej w kodzie global.hp -= 10 + (15 * global.difficulty); // 10, 25, 40 dlatego poziom trudności jako string jest bez sensu
  23. poziomy trudności w grze

    Może być. Ja akurat takie zmienne definuję wcześniej, na początku gry, to wtedy można je przenosić pomiędzy poziomami.
  24. poziomy trudności w grze

    Global oznacza , że taka zmienną jest jedna współdzielona na całą grę. Jak ja dasz w przeciwnikach, to wszystkim na raz zmienisz, to bez sensu. A hspeed czy vspeed są zależne od speed i direction, więc jak zmieniasz tamte zmieniają się te (albo jak jakoś kod powoduje ich zmianę). To są współbieżne zmienne - zmiana jednych zmienia drugie i vice versa.
  25. poziomy trudności w grze

    zamiast "easy" itp. możesz też enuma zrobić. Bo potem łatwo o literówkę, a tak kompilator/sprawdzanie składni wykrywa błąd.
×