Skocz do zawartości

SimianVirus7

Użytkownicy
  • Zawartość

    140
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    7

Zawartość dodana przez SimianVirus7

  1. Znana gra w innym wydaniu

    Cześć Wszystkim! Dzisiaj po południu dostałem zgodę, a więc organizuje konkurs! Zadaniem jest stworzyć odmienną wersję gry, którą wszyscy znają, np. Skyrim jako strategia/karcianka. Gry nie będą monetyzowane w żaden sposób, a więc nikt nie powinien przyczepić się do praw autorskich. Możecie używać dowolnego silnika oraz technologii, ważne, abyście robili to w pojedynkę, ponieważ przewidziane są nagrody! 1 Miejsce - zwycięzca może wybrać nagrodę z miejsca 1, 2, 3; Human: Fall Flat - Steam Life is Strange Complete edition - Steam Company of Heroes 2 - Steam 2 Miejsce - zwycięzca może wybrać nagrodę z miejsca 2, 3; Random Premium Key - Steam Gothic Universe Edition (1-3) - Steam Minecraft Windows 10 edition - Microsoft 3 Miejsce; Grid 2 - Steam Dirt 3 - Steam Lego LoTR - Steam Lego Batman - Steam Pojedynkują się: Wszyscy którzy maja chęć, nie trzeba się nigdzie zapisywać. Temat: Znana gra w innym wydaniu. Zasady - Gra musi być tworzona w pojedynkę - Projekt tworzony od podstaw - Wybór silnika dowolny - Dozwolona gra 2D jak i 3D Zakończenie: 30 czerwca 2019 (niedziela), godzina 19:00. Ocenia/ją: zostanie założona ankieta dla ogółu - demokracja. PS: Użytkownik o nicku SimianVirus7 ma bana na nagrodę ale także może brać udział w konkursie. Głosy na jego pracę nie będą wliczane w ranking.
  2. list = ds_list_create();

    ds_list - są to skrypty wbudowane, możesz je znaleźć w dokumentacji game makera Jeśli masz jakieś skrypty zewnętrzne od kogoś, to zapewne są w zakładce skrypty. A jak nie tam, no to sam musiałeś je gdzieś wkleić.
  3. A spróbuj wywalić ten kod na kończenie gry. Daj jakiś warunek, który nigdy się nie spełni albo po prostu zakomentuj to wszystko. Jeśli nadal będzie ten błąd to masz coś zdublowane. Skoro te wszystkie przykłady, które Ci dajemy nie działają to musisz się pobawić w debugowanie. O! I jeszcze możesz spróbować dać: if (global.life > 0) { global.life -=1; show_debug_message("Sie wykonalem"); // Dodaj wpis do konsoli, w celu debugowania } 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); } } I zależnie ile masz ustawionych global.life tyle razy powinieneś dostać w konsoli tekst o treści "Sie wykonalem"
  4. No i wkleił xD Ogólnie, jeśli ten kod: 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); } } Masz w stepie, to Gnysek ma rację. Twój główny if "if (global.life > 0)" wykonuje się co jedną klatkę gry - bardzo bardzo szybko - dlatego musisz go zaimplementować tak, aby był sprawdzany TYLKO RAZ na jedną śmierć w rundzie. Albo daj coś takiego, chociaż wydaje mi się, że może to wprowadzić mały galimatias: obj_game_controler Create: SprawdzTylkoRaz = true; Step: if (global.life > 0 and SprawdzTylkoRaz == true) { global.life -=1; SprawdzTylkoRaz = false; } else { SprawdzTylkoRaz = false; if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund SprawdzTylkoRaz = false; } } else { SprawdzTylkoRaz = false; if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { SprawdzTylkoRaz = false; 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 } } SprawdzTylkoRaz = false; room_goto(rm_game_over); } } (Masz tak bardzo nieczytelny kod, że nie wiem, czy we wszystkich miejscach w if'ach dałem "SprawdzTylkoRaz = false;" PS: To jest jak na razie moja najbardziej wyczekiwana gra tego roku
  5. Znana gra w innym wydaniu

    Spoko, ja też za dużo czasu nie mam, spędziłem łącznie może z 3 godziny. W takie buble też się fajnie gierczy, szczególnie jeśli to gry na konkurs
  6. Znana gra w innym wydaniu

    To nie moja gierka xD tylko chodzi mi o to, że wbił się w temat konkursu zrobił Age od empires w pierwszej osobie
  7. Znana gra w innym wydaniu

    Ja robię. Jak na razie pracę idą pomału, ale coś tam powstaje. Mam nadzieje, że nie jestem jedyny, bo jestem ciekawy tych gierek. Wczoraj wpadłem nawet na takie coś https://www.youtube.com/watch?v=tPaF7nEFW_k
  8. A w obj_game_controller dodałeś alarm[0] jako event? Bo inaczej (przynajmniej kiedyś tak było) alarm[0] jest nieaktywny. Musisz dać alarm[0] jako event, a w nim jakąś akcję np. skrypt w którym jest zamieszczona jakakolwiek linijka kodu, może być sam komentarz "//cześć jestem komentarzem i podtrzymuje alarm[0] przy życiu"
  9. Może źle użyłeś alarmu, albo nadpisałeś jakiś. Jak chcesz zrobić po swojemu, czyli zmiennymi, to zrób tak: Create: czas = 3*room_speed; //mnożenie wartości przez room_speed daje Ci sekundy Step: ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and czas==0) { game_end(); 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 ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); } } czas = max(0, czas-1); //odliczaj do zera I rozumiem, że obj_game_controller jest cały czas aktywny, tak? no, bo jeśli nie, to odliczanie też nie jest aktywne, wtedy musisz to zrobić w innym, aktywnym obiekcie
  10. Raczej coś takiego: obj_player_ginie Create: obj_game_controller.alarm[0] = 3*room_speed; //Nastaw alarm dla obj_game_controller obj_game_controller Create: alarm[0] = -1; Alarm[0]: //Jestem komentarzem w kodzie, aby alarm zostal aktywny Step: ///kontroler odpowiedzialny za giniecie bohatera if (global.life==0 and alarm[0] = -1) // wlacz kontroler gdy alarm[0] wylaczy sie (przedtem nastaw go, na odliczanie) { game_end(); if(global.pScore >= 5000) //Sprawdz czy wynik nadaje sie do highscore { 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 ); } else //jesli nie kwalifikuje sie na top 10 { room_goto( rm_game_over ); } } else //jesli nie kwalifikuje sie do highscore { room_goto( rm_game_over ); }
  11. No na te dwa problemy są bardzo proste rady. 1. Żeby od razu nie przechodził do tablicy wyników, stwórz alarm 2-3 sekundowy, który będzie robił za pause. "If (global.life == 0 and alarm[0] = -1) {//kod}". Przed tym sprawdzeniem musisz dać gdzieś alarm[0] = 3*room_speed. 2. A tutaj sam sobie odpowiedziałeś w pytaniu. Skoro ma być spełniony warunek, że od 5000 scoruf ma się dodawać wynik, no to daj ten warunek gdzieś. Warunki to if'y. If(score >= 5000)
  12. Animowana mgła 2D

    Z tego co widzę, to koleś zwyczajnie piszę shadera, a shadery są możliwe w game maker 1.4 / 2.0
  13. Szukam programu

    Microsoft remote desktop będzie działać tylko wtedy, kiedy masz stałe/zewnętrzne IP. Jeśli Twój dostawca Ci tego nie oferuje, musisz otworzyć port 3389 na routerze oraz dostawcą też musi go otworzyć na serwerze, niektórym to robią darmowo a niektórzy za opłatą. A sprawdzałeś steam moonlight? Ale musisz mieć w kompie kartę od nvidia
  14. poziomy trudności w grze

    *Obj_enemy* - Step //obrazenia jakie zadaje nam wrog na danym poziomie if(place_meeting(x, y, obj_player) and alarm[8] == -1) { if(global.difficulty == "easy") && obj_player then global.hp -= 10;//6 uderzen wroga if(global.difficulty == "medium") && obj_player then global.hp -= 40;//4 uderzenia wroga if(global.difficulty == "hard") && obj_player then global.hp -= 30;//3 uderzenia wroga alarm[8] = 1*room_speed; //atakuj bohatera co sekunde } odp. Albo czegoś nie wiem, albo ten kod po prostu nie ma sensu. Przetłumacz go sobie powoli - jeśli poziom trudności na easy/medium/hard oraz obiekt gracz (ale co obiekt gracz?) to global.hp odejmij 10/40/30. Zapewne, choć nie jestem jasnowidzem, chodzi Ci o kolizjie, czyli musisz dać: if(global.difficulty == "easy") && place_meeting(x,y,obj_player) then global.hp -= 10;//6 uderzen wroga *obj_player* - end step (w ogóle nie wiem po co używasz end step, ja go nigdy nie używałem xD) if (global.hp <= 0) { global.life-- instance_destroy(); // <--------------------------------------- Teoretycznie, dalszy kod od tej linijki się nie kompiluje, iż aż ponieważ obiekt jest niszczony; instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie } odp. dałem Ci komentarz w kodzie ale z drugiej strony, mówisz, że bohater obraca się nogami i ginie, to tak, jakby jednak instance_create(x,y,obj_player_ginie) się wykonał. Niemniej przenieś instance_destroy();na sam koniec if'a PS: dajesz tyle kodu do przetworzenia, że równie dobrze, możesz zapodać projekt Musisz nauczyć się minimalizować problem.
  15. poziomy trudności w grze

    Ginie, bo pewnie hp ma cały czas na 0. Ale w sumie nie wiem jaki argument przypada za tym, że wyświetla się ekran śmierci, także zobacz czy ten argument czasem nie jest zapętlony w jakiś sposób. Coraz bardziej chce zagrać w ten Twój twór. Przez weekend mnie nie ma w domu, a na telefonie ciężko jest rozczytać kod, a poza tym jest jeszcze liga. Także na razie Ci nie pomogę.
  16. poziomy trudności w grze

    Tak, a create ustawiasz spd=4. Teraz w step wszędzie tam gdzie masz definiowaną szybkość poruszania się np. hspeed = 6 to zamieniasz cyfrę (tutaj 6) na zmienną spd czyli hspeed = spd. I tak w całym kodzie. Teraz możesz komfortowo zmieniać szybkość poruszania się wroga tylko w jednym miejscu. Mianowicie na samym początku w step robisz tak: "If(global.dificulty=="easy") then spd=3; If(global.dificulty=="medium") then spd=5; If(global.dificulty=="hard") then spd=7;
  17. poziomy trudności w grze

    Bo dałem tylko przykład. Analogicznie do tego przykładu robisz ruch wroga i siłę obrażeń. Nie definiujesz tego w osobnym obiekcie (możesz ale po co?). Piszesz to w obiekcie wroga, prawdopodobnie w stepie, lub gdziekolwiek masz napisany kod ruchu i zadawania obrażeń. Spróbuje napisać coś z pamięci: obj_enemy //Create alarm[8] = -1; //Step if(place_meeting(x, y, obj_Player) and alarm[8] == -1) { if(global.dificulty == "easy") then obj_Player.hp -= 10; if(global.dificulty == "medium") then obj_Player.hp -= 20; if(global.dificulty == "hard") then obj_Player.hp -= 30; alarm[8] = 1*room_speed; //atakuj bohatera co sekunde } //Alarm[8] /*komentarz tylko po to, aby alarm był włączony*/ Co do szybkości chodzenia wroga, to możesz tylko zdefiniować zmienną pomocniczą spd i przypisujesz wszędzie tak, gdzie masz hspeed, a później tylko zmieniasz spd co do poziomu trudności
  18. poziomy trudności w grze

    Create - wszystko co tam napiszesz jest wykonywane przy pojawieniu się instancji (każdego obiektu na mapie nawet jeśli jest taki sam). Także hp, zmienna dla speed, energia może tam być zdefiniowana. Step - kod wykonywany przy każdej klatce gry (fps). Czyli, cały kod poruszania się, zadawania obrażeń itp Jeśli masz w kodzie napisane tak że "If(keyboard_check(vk_right)) { hspeed = 3 } " To musisz zrobić tam to samo sprawdzenie co przy definiowaniu hp, czyli " If(global.difficulty == "easy") { If(keyboard_chceck(vk_right)) { hspeed = 3 } } "
  19. poziomy trudności w grze

    Tak, o to chodzi Panie gamoniu
  20. poziomy trudności w grze

    Dobrze, błąd widać od razu, ale teraz dam Ci pogłówkować, tak minimalnie. Zobacz sobie, co przypisujesz do zmiennej global.difficulty w obj_poziomtrudnosci, a co sprawdzasz w obj_bohater. ps: i może rzeczywiście, tak jak mistrzu Gnysek napisał, powiedz to sobie głośno. Ja tak też czasami muszę robić, kiedy nie mogę znaleźć błędu.
  21. poziomy trudności w grze

    O Matko Boska Elektryczna, coś Ty za młyn tam narobił. Wybieranie Ci nic nie da, skoro za każdym tworzeniem bohatera, ustawiasz global.difficulty = 2; W obiekcie bohatera, masz mieć skrypty tylko z kodem, który sprawdza jaki jest poziom trudności. Do tego w większości używasz if'a. Żadnych global.difficulty = cokolwiek! Przed rozpoczęciem gry (a przynajmniej tak mi się wydaje, że taki masz zamiar) gracz ma określić jaki ma być poziom trudności, a później dopiero ma się zacząć gra. Czyli: Menu gry -> wybierane trudności -> rozgrywka (pojawienie się bohatera) Ten cały kod który Ci napisałem (a raczej przerobiłem twój), masz dać do innego obiektu, choćby obiekt_poziomytrudnosci. Pamiętaj, że kod wybierania trudności gry, ma być przed pierwszym pojawieniem się bohatera w grze, bo inaczej wywali błąd. Oczywiście możesz się przed tym zabezpieczyć. ///Create bohatera - kod na sprawdzanie poziomu gry ///poziomy trudnosci /*tutaj wyrzuciłem Ci to, co przeszkadzało*/ //Ustaw domyślne wartości życia i szans, gdyby nie wyszukało jaki jest poziom trudności global.hp = 100; global.live = 7; /// Wyszukaj poziom trudności i ustaw odpowiednio życie i szanse //easy difficult if(global.difficulty == "easy") { global.hp = 100; global.live = 7; } //medium difficult if(global.difficulty == "medium") { global.hp = 80; global.live = 5; } //hard difficult if(global.difficulty == "hard") { global.hp = 50; global.live = 3; }
  22. poziomy trudności w grze

    w obj_poziomtrudnosci w nowym roomie (nie rób w tym samym pokoju, gdzie masz obj_menu, czy cokolwiek co Ci rysuje menu) ///Create (nie mam pojęcia co robi gmt, jak nie zadziała, to spróbuj usunąć ten wyraz sprzed nawiasu) options_difficulty=ds_list_create() options_difficulty[|0]=gmt("Łatwy") options_difficulty[|1]=gmt("Normalny") options_difficulty[|2]=gmt("Wysoki") selected=0 gp_up=false gup_down=false gp_left=false gp_right=false //Używane do animacji menu animation_speed=room_speed/4 for(var i=0; i<ds_list_size(options_difficulty); i++) { animation[i]=0 } ///Step if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey)) { gp_up=0 gp_down=0 } if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey)) { gp_left=0 gp_right=0 } if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) { selected++ if(selected>=ds_list_size(options_difficulty)) { selected=ds_list_size(options_difficulty)-1 } gp_up=true } if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) { selected-- if(selected<0) { selected=0 } gp_down=true } if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) { if(selected == 0) then global.difficulty = 0; //ustaw latwy if(selected == 1) then global.difficulty = 1; //ustaw sredni if(selected == 2) then global.difficulty = 2; //ustaw trudny } ///Draw draw_set_valign(1) draw_set_halign(1) draw_set_font(fontIntro) var line_height=ceil(string_height("M")*1.1) for(var i=0; i<ds_list_size(options_difficulty); i++) { if(i=selected) { //Wybrana opcja animation[i]=clamp(animation[i]+(1/animation_speed),0,1) } else { animation[i]=clamp(animation[i]-(1/animation_speed),0,1) } var color=merge_colour(c_black,c_red,animation[i]) draw_text_transformed_color(x,y+(line_height*i),options_difficulty[|i],1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1) }
  23. w 34 linijce masz średnik przy if'ie if md= true; na if (md==true) { //kod }
  24. Tablice odczyt,zapis

    ++ oznacza dodanie jedynki do zmiennej liczbowej; a = 3; a++; // da wynik a = 4;
  25. poziomy trudności w grze

    Zapewne jest mnóstwo sposobów aby to zrobić. Niemniej jednak, użycie globalnej zmiennej według mnie, będzie dla Ciebie najłatwiejszym (ale możliwe, że najbardziej pracochłonnym) sposobem. Przy każdej akcji, która ma kilka wariantów (łatwy, średni, wysoki - poziom), daj if'a, który będzie odpowiedzialny, jaka wariacja się wykona, np. [Object Enemy1] ///Create /// ------------------------------------------------------------------------ SPOSOB 1 //Deafult values //Zabezpieczenie, na wypadek gdyby zaden wariant sie nie wykonal, to wtedy mob dostanie ponizsze wartosci max_hp = 100; attack_damage = 5; movement_speed = 3; //Gdy poziom bedzie ustawiony na latwy if(global.difficult == "easy") { max_hp = 80; attack_damage = 3; movement_speed = 2; } //Gdy poziom bedzie ustawiony na sredni if(global.difficult == "medium") { max_hp = 100; attack_damage = 5; movement_speed = 3; } //Gdy poziom bedzie ustawiony na trudny if(global.difficult == "hard") { max_hp = 120; attack_damage = 7; movement_speed = 4; } /// ------------------------------------------------------------------------ SPOSOB 2 //Albo mozesz to zrobic na switch'u, wtedy bedzie bardziel klarownie switch(global.difficult) { case "easy": max_hp = 80; attack_damage = 3; movement_speed = 2; break; case "medium": max_hp = 100; attack_damage = 5; movement_speed = 3; break; case "hard": max_hp = 120; attack_damage = 7; movement_speed = 4; break; deafult: max_hp = 100; attack_damage = 5; movement_speed = 3; break; } Pewnie bardziej doświadczeni, będą mieli inne sposoby
×