Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez pankracy

  1. W drugim przypadku zrobiłem tak dałem warunek przed przejściem do pokoju highscore,ale raz to działa lub wywala mnie całkiem z gry(zbiorę 5000pkt i następuje zapis wyniku lub nie zbiorę tych punktów i pojawia się plansza game over) Miało to być tak,że wyniki do top 10 mają zaczynać się od 5000 punktów obj_game_controller step ///kontroler odpowiedzialny za giniecie bohatera if (global.life=0) { game_end(); 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) { if(global.pScore >= 5000) room_goto( rm_save_score ); } else { room_goto( rm_game_over ); } } Jeśli chodzi o pierwszy przypadek odnośnie tzw pauzy na 2-3 sekundy za nim przejdzie do pokoju highscore i pokoju game over to alarm[0] = 3*room_speed. mam dać w Create? czy w stepie?
  2. Cześć wszystkim, Mam taki nietypowy problem. Otóż..w momencie,kiedy mój bohater ginie i kończy się gra następuje zapis do tabeli wyników(gra sprawdza czy wynik nadaje się do top 10),ale dziwnie to wygląda,bo gra się kończy bohater ginie i od razu następuje zapis do tabeli wyników. Jest to za szybko..chciałbym to wydłużyć chociaż o 2-3 sekundy. Czyli bohater ginie kończy się gra...mijają 2 sekundy i pojawia się tabela wyników.. podejrzewam,że tu trzeba chyba użyć room_speed ale już mi się pierdzieli. I jeszcze jedna sprawa jak zrobić żeby był spełniony taki warunek,że musi być zebrane 5000 score żeby nastąpił zapis i od tego liczone top 10 wyników,bo teraz co chwile mi zapisuje wyniki top 10 bez względu ile mam zebranych punktów...niech jest jakaś minimalna granica obj_game_controller step ///kontroler odpowiedzialny za giniecie bohatera if (global.life=0) { game_end(); 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 { room_goto( rm_game_over ); } } obj_Player Step ///Zycia i dopalacze dodatkowo zabieranie zyc za upadek z bardzo duzej wysokosci //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); 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)/ 3//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 } Z góry dziękuje za pomoc;-)
  3. No dobra to bezpiecznie jak będę przy scenerii obecnie co mam 4096x1536 podzieloną na małe kawałki oraz texture page ustawione na 4096x4096 Tła też są podzielone,bo początkowo miały rozmiar tyle co sceneria 4096x1536,a obecnie trzy tła mają rozmiary każdy po 2048x768. Ja obecnie korzystam z GMS 1.4 jest tam interpolacja,ale kurcze nie wiem jakie wybrać najlepsze ustawienia. obecnie mam tak ustawione: Czy zawsze każde tło musi mieć rozmiar kwadratu?? 2048x2048? 1024x1024 4096x4096?
  4. Gra jest robiona na systemy Windows a później na Switcha.Nie robię na Android i IOS wiec nie powinno być problemu;-) Dzięki za informacje. To jeszcze jedno pytanie..trzymając się rozmiarów texture page 4096x4096 jeśli stworzyłbym pokoje o rozmiarach 7680x4320 oczywiście pocięte na małe fragmenty i tła pocięte na rozmiar 3840x2160(połowa scenerii 7680x4320) to tekstury zostaną przydzielone do 8194x8194 czy do 4096x4096? to jest istotne pytanie,bo w końcu zostaną podzielone żeby nie zajmowały tak wielkich rozmiarów.
  5. Mam kilka pytań... Trochę słabo,że GMS 1.4 ma ograniczenia jeśli chodzi o Backgrounds Pytanie 1 Mam teraz 3 duże tła o wymiarach scenerii 4096x1536 na każdą plansze. Nawet jak je podzielę na pół to zajmą 6 backgroundów każdy po 2048x768 to też sporo,ale chyba do przełknięcia. texture page mam ustawioną na 4096x4096 pytanie 2 Sprite wrogów i bohatera mogę spokojnie ustawić na maks 128x128? bo obecnie jest ustawiony na 50x50,ale jest zbyt mały. Pytanie 3 Możecie mi to do końca wyjaśnić odnośnie wielkości texture page. Jak mam teraz ustawioną na 4096x4096 to rozumiem,że na daną plansze nie mogę przekroczyć jej rozmiarów tak? czy bardziej tyczy się to łącznie wszystkich obiektów na danej planszy tzn że mam tła załóżmy już podzielone na te 2040x768 i na planszy jest ich trzy w takim rozmiarze do tego wszelakie sprity wrogów o rozmiarach do 128x128 i bohater w też w tych rozmiarach i podobnie pułapki przeszkody.i to może przekroczyć texture page? suma wszystkich tych obiektów na danej planszy?
  6. Dzięki Chłopaki za informacje.Przekaże mu.
  7. Mam takie pytanie do was... Kolega mój ma wersję gms 2.0 i obecnie sprzecza się ze mną,że nie da się uruchomić bezbłędnie projektu z gms 1.4 w gms 2.0 bo kolega ma problem z background i twierdzi,że tego nie da się naprawić. Jest jakaś rada na to? wszystko mu działa po za tłami.
  8. A tu...dobra teraz już wiem Gnysek Ty to jesteś Kozak bez kitu;-)
  9. Konrad-Gm wielkie dzięki..o coś takiego mi chodziło:-) PS.Fajny motyw z Jazz Jazzrabbit;-)
  10. Ok czyli trzeba ustawić x i y backgroundów ;-) przyznam,że tego jeszcze nie robiłem. pokazałbyś jakiś przykład? Kurcze zyskałbym jeszcze więcej klatek w grze. A duża sceneria taką co napisałem pocięta na małe fragmenty nie będzie stanowić przeszkody dla gms 1.4?
  11. Mam takie pytanie do was... Rozmyślam,żeby w swojej grze ustawić kamerę podążającą za graczem na full HD(1920x1080) Sama sceneria mogłaby być bardzo duża np 3840x2160 lub 7680x4320(dla zachowania proporcji obrazu) odpowiednio pocięta. Czy taka sceneria przejdzie? czy nie będzie zbyt dużym obciążeniem dla gry? I teraz tak tła jako background nie da się pociąć na małe kawałki..przynajmniej Ja tego nie wiem jak zrobić co innego scenerię.Chyba,że ktoś z was zna jakąś metodę na to;-) ewentualnie tak jak to obecnie robię stosuje tła w rozmiarach podglądu kamery view czyli obecnie mają one 1024x768,ale fajnie by było jakby mogłyby być większe. I jeśli już załóżmy byłoby wszystko w porządku to sprite bohatera i wrogów mogłyby mieć wysokość 100px lub więcej? Obecnie mają 50px i 60px wysokości Na chwilę obecną mam scenerię 4096x1536 pociętą na małe fragmenty a view kamera ustawioną mam na 1024x768
  12. Człowiek już ma zboczenie na punkcie GMS;-) racja GODOT
  13. Tak się zastanawiam,czy w GMS wersji 1.4 można uzyskać podobny efekt mgły 2d animowanej jak na tym filmiku? (wersja gms 2.0) widać ten efekt jak się przewinie do 1:03 https://www.youtube.com/watch?v=QEaTsz_0o44 Myślałem o użyciu efektu smoke i użyć alphę,ale to kiepsko będzie niestety wyglądać. Ktoś z was zrobił coś podobnego? Kurcze fajny efekt na menu główne gry.
  14. Nawiązując do tłumaczenia..Właśnie wyłączenie add_text przenosi mnie od razu do gry,a intro jest pomijane tam gdzie jest użyty ten add_text. Już kombinuje z tym na wiele sposobów..O ile menu gry bardzo ładnie tłumaczy,to już sam tekst w grze nie chce przetłumaczyć. trochę to dziwne,bo skrypt tłumaczeń działa od samego początku...jest umieszczony przy wyborze języka gry. Obecnie wygląda to tak: Mam room_intro a w nim obj_text_intro w Create add_text('Intro is the best');//próbowałem tu wstawić zamiast add_text tylko gmt w takiej formie intro=gmt("intro"); w Stepie mam tak if no_text() then room_goto( inicjacja2); teraz dwa pliki tłumaczeń angielski i polski english.lang change=Click here to change language Back=Back languageto= Load game=Load game Sound=Sound Exit=Exit menu=Main Menu gameover=Game Over! Credits=Credits quit=Quit clickquit=Do you want to quit? start=Start clickstart=You clicked start. The game should begin now current=Current language Controlls=Controlls translate=Translate! Options=Options options_difficulty=options_difficulty easy=easy medium=medium hard=hard Highscore=Highscore languagetext= New game=New Game Controll - Move left=Move left Controll - Move right=Move right Controll - Jump=Jump Controll - Action=Action Controll - Ladder up=Ladder up Controll - Ladder down=Ladder down intro=intro is the best polish.lang change=Kliknij tutaj, aby zmienić ustawienia Back=wstecz languageto= Load game=Wczytaj grę Sound=Dzwięk Exit=Wyjście menu=menu główne gameover=Koniec gry! Credits=Autorzy quit=Wyjście clickquit=Czy na pewno chcesz wyjść? start=start clickstart=Po kliknięciu przycisku start. gra powinna rozpocząć się teraz current=bieżący język Controlls=Sterowanie translate=Tłumaczenie-proces Options=Opcje options_difficulty=opcje poziomów trudności easy=Łatwy medium=Normalny hard=Trudny Highscore=Tabela wyników languagetext= New game=Nowa Gra Controll - Move left=Chodzenie lewo Controll - Move right=Chodzenie prawo Controll - Jump=Skok Controll - Action=Akcja Controll - Ladder up=Wchodzenie po drabinie Controll - Ladder down=Zchodzenie z drabiny intro=Intro jest najlepsze Menu działa idealnie..i tłumaczy mi zarówno na polski jak i na angielski całość. pewnie gdzieś literówkę robię,bo powinno to działać. obj_gmt_controller - silnik tłumaczeń od razu startuje CREATE draw_set_font(gmt_font); //startowanie silnika skryptu gmt_init(); //Ttumaczenie i pobieranie zwrotne //gmt_callback_translate(create_menu); //gmt_callback_download(create_menu); //tworzenie jezykow english = gmt_lang_create("en"); polish = gmt_lang_create("pl"); italian = gmt_lang_create("it"); spanish = gmt_lang_create("es"); french = gmt_lang_create("fr"); deutch = gmt_lang_create("de"); //dodawanie zdania do pliku gmt_lang_load_sentences(english, "english.lang"); gmt_lang_load_sentences(polish, "polish.lang"); gmt_lang_load_sentences(spanish, "spanish.lang"); gmt_lang_load_sentences(french, "french.lang"); gmt_lang_load_sentences(deutch, "deutch.lang"); //proba zaladowania lokalnego jezyka wloskiego i jesli plik nie istnieje, to tlumaczy z angielskiego if(! gmt_lang_load_sentences(italian, "italian.lang")){ //Pamietajmy zemy skopiowac projekt wczesniej //bo jesli nie ma polaczenia internetowego jezyk wloski pokaze jezyk angielski gmt_lang_copy(english, italian, true); //zapisywanie jezyka zdan z pliku zapisanego na dysku internetowym google gmt_lang_load_sentences_url(italian, "https://drive.google.com/uc?id=0B6109jBBaUmeamhrN2dJUWhXMVk&export=download" ); } //tworzenie innych jezykow do tlumaczenia z "Translated.net" gmt_lang_translate(english, polish, false); gmt_lang_translate(english, spanish, false); gmt_lang_translate(english, french, false); gmt_lang_translate(english, deutch, false); gmt_set_language(english); //Gotowy do przetlumaczenia i sciagniecia if(!gmt_is_working()){ //create_menu(); } nie chce mi też przetłumaczyć menu wyboru poziomu a analogicznie jest tak samo jak w menu opcje przykład obj_menu create //to dziala i to menu jest tlumaczone z angielskiego na polski options=ds_list_create() options[|0]=gmt("New game") options[|1]=gmt("Load game") options[|2]=gmt("Highscore") options[|3]=gmt("Options") options[|4]=gmt("Credits") options[|5]=gmt("Exit") 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); i++) { animation[i]=0 } obj_poziomytrudnosci create //tu tlumaczenie juz nie dziala jest informacja po angielsku napis nierozpoznawalny options_difficulty=ds_list_create() options_difficulty[|0]=gmt("easy") options_difficulty[|1]=gmt("medium") options_difficulty[|2]=gmt("hard") 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 }
  15. Master patrzy;-) Gnysku Piotrze Właśnie to jest to,że Ty jesteś Mentorem Gnysku;-) zminimalizowałeś kod ;-) dzięki ;-) będę musiał się tego nauczyć;-) bo mój kod jest za bardzo rozległy. dodałem też w końcu zmienna odpowiedzialną za ruch wroga. Wszystko gra jak trzeba;-) Dziękuje panowie..naprawdę dużo Mi pomogliście...nawet takiemu człowiekowi jak Mi;-)
  16. wywaliłem ze stepa wrogów tamten kod i dodałem zmieniony do kolizji bohatera z wrogami i teraz tak to wygląda obj_player kolizja z par_obrazenia if(global.difficulty == "easy") if global.zegarObrazen<0 { global.hp-=17 global.zegarObrazen=room_speed*2 } if(global.difficulty == "medium") if global.zegarObrazen<0 { global.hp-=25 global.zegarObrazen=room_speed*2 } if(global.difficulty == "hard") if global.zegarObrazen<0 { global.hp-=34 global.zegarObrazen=room_speed*2 } Obrażenia zadaje wróg w grze tyle ile jest ustawiona na danym poziomie, nie wiem jeszcze czemu nie mogę na innym poziomie np hard ustawić global,hp=80 kurcze..tego nie wiem... I akcja ze zmienną odpowiadającą za szybkość wroga na danym poziomie też się zawiesiłem:/ te enum muszę to przećwiczyć wygląda o wiele lepiej niż ja się męczę,ale Gnysku ty jesteś Gmclanowym Mentorem;-) Gdzie ja do Ciebie uuuuuuuuu bardzo daleko;-) A może wiecie co się dzieje z Damianem von Threef kurcze pisałem smsa do niego,ale cisza.
  17. Już minimalizuje kod;-) jeśli w stepie wroga mam tak: 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") && place_meeting(x,y,obj_player) then global.hp -= 10;//6 uderzen wroga if(global.difficulty == "medium") && place_meeting(x,y,obj_player) then global.hp -= 50;//4 uderzen wroga if(global.difficulty == "hard") && place_meeting(x,y,obj_player) then global.hp -= 50;//3 uderzen wroga alarm[8] = 1*room_speed; //atakuj bohatera co sekunde } I w obj_enemy mam ustawioną kolizję z bohaterem i jest taki kod obj_enemy - dodana kolizja z par_obrazenia /// Obrazenia jakie wrog zadaje Bohaterowi if global.zegarObrazen<0 { global.hp-=17 global.zegarObrazen=room_speed*2 } No to myślę,że w tym tkwi problem.. Bo w stepie jest też zmienna globa.hp i teraz co ma się wykonywać? Bo nie mogę zmiennej global.hp wyłączyć,zawsze jest i była;-) natomiast jak w stepie wroga wyłączę wyżej kod to jest wszystko tak jak było na początku gry bez błędów..Wróg zadaje obrażenia bohaterowi odejmując mu hp-=17 teraz jak to ogarnąć żeby na danym poziomie zabierał odpowiednią ilość hp zależne od tego jak ustawiliśmy. Ten STEP wroga coś tu jest nie tak...
  18. Gnysku Piotrze czyli to mogę dodać do kolizji bohatera z wrogiem? czy lepiej w stepie wroga? global.hp -= 10 * global.difficulty; //10,20,30 Zastanawia mnie co jest powodem tej sytuacji,że po zabraniu życia poprzez obrażenia od wroga bohater wariuje cały czas spada i pokazuje sie dla przykładu taka informacja x-1 x-3 x-5 x-7 x-9 x-11 to akurat przykład na poziomie hard,gdzie mam ustawione 3 życia i 80% energii w End stepie jeśli dam na końcu ifa instance_destroy(); to wtedy od razu po utracie życia jest game over...bez względu na ilość posiadanych żyć. Ja myślę,że problem jest w kolizji z wrogiem i tylko z wrogiem,bo jak całkowicie wyłączę w stepie ten kod i w Create bohatera włączę zmienna global.hp=100; to wszystko jest w porządku,ale tak jak mówię nie mogę wtedy ustawić energii mniejszej niż 100% na innym poziomie gry.
  19. Faktycznie sensu nie miał ten kod w stepie... cały czas jest po wyłączeniu zmienne global,hp w bohaterze jak wróg mnie zabije..przeniesie mnie na początek planszy i bohater obraca się do góry nogami i cały czas spada i pokazuje się taka informacja x-1 x-3 x-5 x-7 x-9 x-11 itd... Dziwne,bo nie ma tego zjawiska jak włączę zmienną global,hp w create..no,ale wtedy nie mogę ustawić energii mniejszej dla gracza na innym poziomie trudności.
  20. Dziwna sytuacja. Przypadek1. Jak wyłączę w CREATE bohatera zmienną global.hp=100; to wtedy te cyrki się dzieją.. Jest tak,że obojętnie ile żyć mam czy 7,5 czy 3 to w chwili kiedy zginę od wroga od razu zeruje mi do 0 żyć..nie odejmuje żyć np mam 3 i potem 2 itd tylko od razu z 3 żyć do 0. Oczywiście działają obrażenia ze stepu jakie zadaje mi wróg w momencie kontaktu z nim. lub odejmuje wszystkie życia i przeniesie mnie na początek planszy bo tak mam to ustawione i za chwile bohater obraca się do góry nogami i cały czas ginie i spada a na pasku HUD pokazuje się x-1 x-2 x-3 i tak cały czas nie liczyłem ale do x-9 aż doszło i wyłączyłem grę;-) Przypadek2. Jeśli mam włączoną zmienną global.hp=100 w CREATE bohatera (tak jak zawsze to było) to ze stepu wroga nie działają już te obrażenia tylko te co są przypisane w kolizji z wrogiem czyli par_obrazenia par_attack. Nie mogę wtedy też ustawić mniejszej ilości energii np na poziomie hard 80%. Wtedy też wszystko działa poprawnie. Widzę coś w END STEPIE obj_player i w STEPIE obj_game_controller jest hp <=0 ale to raczej chyba nie w tym problem Ja to myślę,że problem może być w tych obiektach kolizyjnych bohatera z wrogiem i wroga z bohaterem; par_obrazenia oraz par_attack i par_bronkulki bo tu deklarujemy zmienną global,hp i to samo robimy w stepie wroga tak myślę,że to jest ten problem. o proszę ligę oglądasz;-) to ty zapalony kibic jesteś zapewne:-) obj_player collision z par_bronkulki ///Obrazenia zadawane z bombek if other.owner == par_enemy { //jesli bomba uderzy we wroga zadaje mu obrazenia with other { instance_destroy(); } if global.zegarObrazen == 2 { global.hp -= other.sila+other.silaEksplozji; global.zegarObrazen = room_speed/2; } } obj_player collision z par_obrazenia ///Obrazenia jakie okreslone obiekty dziedziczace z tego rodzica zadaja Bohaterowi if global.zegarObrazen<0 { global.hp-=17 global.zegarObrazen=room_speed*2 } obj_player collision z par_attack ///Obrazenia if other.owner == par_enemy && zegarObrazen == 0 { global.hp -= other.sila; zegarObrazen = room_speed/2; } obj_player End Step ///Zycia i dopalacze dodatkowo zabieranie zyc za upadek z bardzo duzej wysokosci //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); 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 } //Dopalacze if pwrupSpd > 0 { //Efekty if pwrupSpd mod 2 == 0 { if image_xscale > 0 { part_type_orientation(pArrow,0,0,0,0,0); part_type_direction(pArrow,0,0,0,0); } else { part_type_orientation(pArrow,180,180,0,0,0); part_type_direction(pArrow,180,180,0,0); } part_type_colour1(pArrow,c_lime); part_particles_create(partSystem,x-image_xscale*16,y-irandom(70),pArrow,1); } //Odliczanie do konca mocy specjalnej pwrupSpd -= 1; } if pwrupStr > 0 { //Efekty image_blend = merge_colour(image_blend,c_red,0.11); //Odliczanie pwrupStr -= 1; } if pwrupJmp > 0 { //Efekty if pwrupJmp mod 2 == 0 { part_type_orientation(pArrow,90,90,0,0,0); part_type_direction(pArrow,90,90,0,0); part_type_colour1(pArrow,c_yellow); part_particles_create(partSystem,x-16+irandom(32),y,pArrow,1); } //Odliczanie pwrupJmp -= 1; } Mam jeszcze osobny obiekt na planszy utworzony obj_game_controller STEP ///kontroler odpowiedzialny za giniecie bohatera if (global.life=0) { game_end(); 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 { room_goto( rm_game_over ); } } ///monety zebranie 100sztuk doda 1 zycie bohaterowi,oraz zerowanie monet if (global.coins=100) { global.coins=0; global.life+=1; } // if (global.coins>100) { global.coins=0; global.life+=1; audio_play_sound(dzwiek_anatol_zbiera_przedmiot, 1, false); //odtwarzamy dzwiek po zdobyciu zycia } Obj_enemy CREATE ///Ustawienia event_inherited(); pointvalue=choose(10,20,30,40,50,60,70,80,90,100);//dodaje nam losowa ilosc pkt dead=false; killed=false alarm[8] = -1; movement_speed = 4; hp = 10; maxHp = 10; global.zegarObrazenWroga = 0; at=1 st=1 spd=4 //pozycje powrotu wroga po restarcie mapy start_x = x; start_y = y; widzi = 0; ///poziomy trudnosci //easy difficult if global.difficulty = "easy" { hp = 10; } //medium difficult if global.difficulty = "medium" { hp = 15; } //hard difficult if global.difficulty = "hard" { hp = 20; } obj_enemy STEP ///Poruszanie sie ///AI wroga if place_free(x,y+1) {gravity = 0.5} else {gravity = 0} if at=1 { at=2 speed=4 } if at=2 { if hspeed<0 { image_xscale = -1; if !place_meeting(x-30,y+10,par_solid ) speed*=-1 else if place_meeting(x-1,y,par_solid ) speed*=-1 st=1 } else if hspeed>0 { image_xscale = 1; if !place_meeting(x+30,y+10,par_solid ) speed*=-1 else if place_meeting(x+1,y,par_solid ) speed*=-1 st=2 } } //ginie wrog if hp<0 { instance_destroy() } killed=false //animacja image_speed=0.3 /* if hspd == 0 { image_xscale *= -1; unstick(8); } */ //Gdy wrog zostaje atakowany mruga if global.zegarObrazenWroga > 0 { visible = !visible; global.zegarObrazenWroga -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); } // poziom trudnosci //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 } obj_enemy collision z par_attack ///Obrazenia od ataku wrecz if other.owner == par_player && global.zegarObrazenWroga == 2 { hp -= other.sila; killed=true global.zegarObrazenWroga = room_speed/2; } obj_enemy collision z par_bronkulki ///Obrazenia od pociskow if other.owner == par_player { with other { instance_destroy(); } if global.zegarObrazenWroga == 0 { hp -= other.sila+other.silaEksplozji; killed=true global.zegarObrazenWroga = room_speed/2; instance_create(x+0,y+0,obj_oberwalefekt); } }
  21. Skomplikuje Ci demko;-) mam jeszcze starą grafikę,ale nie długo będzie nowa tworzy się ;-) wiadomo wszystko trwa w czasie;-) ok zerknę na ekran śmierci
  22. Mam też takie pytanie..nie wiem,czemu tak się dzieje... w chwili kiedy odkomentuje zmienną global.hp=100; (bo jest ona zadeklarowana niżej w kodzie) to jak ginę od wrogów mając np żyć obojętnie ile czy to 7 5 czy 3 od razu odejmuje wszystkie życia i przeniesie mnie na początek planszy bo tak mam to ustawione i za chwile bohater obraca się do góry nogami i cały czas ginie i spada a na pasku HUD pokazuje się x-1 x-2 x-3 i tak cały czas nie liczyłem ale do x-9 też doszło..co jest nie tak? Jak mam włączoną zmienną w Create Bohatera global.hp=100; to jest ok,ale wtedy nie mogę ustawić mniej energii na innym poziomie jakim chce np na hard chciałem 80% energii obj_player CREATE /// Glowne deklaracje zmiennych Anatola ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); zbieranie=true; eksplozja = false; zasiegEksplozji = 22; silaEksplozji = 10; global.damage=0; //zmienna odzpowiedzialna za obrazenia zadawane po upadku z duzej wysokosci global.hp = 100; global.hit=0; //zmienna odpowiada za obrazenia kuli i miganie maxHp = 100; zegarAtaku = 0; odejmij = 0; //zmienna potrzebna do przesuwanie skrzynki w end step atakBierzacy = 0; global.zegarObrazen = 0; kierunekPlywania = 0; wysKierunek = 0; silaSkoku = 0; czasSkoku = 0; drabina = false; rs_timer = 0; //licznik czasowy w grze tlen=10;//ilosc tlenu //Moce specjalne pwrupSpd = 0; pwrupStr = 0; pwrupJmp = 0; //Pozycja odrodzenia Anatola i wywolanie skryptu widoku centralnego na graczu spawnX = x; spawnY = y; centerViewOnMe(); //zachowanie pozycji gracza przy checkpointach if (global.checkpointR == room) { x = global.checkpointx; y = global.checkpointy; } start_x = x; start_y = y; //funkcja dodaje HUD gracza na planszach bossowych if instance_exists(obj_game_controller) obj_game_controller.visible=1 else instance_create(0,0,obj_game_controller); //zamrazanie bohatera zamroz = false; zamroz_x = x; zamroz_y = y; playerSlot = 1; //ustalamy slot dla gracza numer 1 kierunekPlywaniaGamepad = 0; ///poziomy trudnosci //Ustaw domyślne wartości życia i szans, gdyby nie wyszukało jaki jest poziom trudności //global.hp = 100; //global.life = 7; /// Wyszukaj poziom trudności i ustaw odpowiednio życie i szanse //easy difficult if global.difficulty = "easy" { global.hp = 100; global.life = 7; } //medium difficult if global.difficulty = "medium" { global.hp = 100; global.life = 5; } //hard difficult if global.difficulty = "hard" { global.hp = 80; global.life = 3; }
  23. Pytanie też mam do Gnyska;-) do mentora forum zawodowca niczym Leona;-) wspomniałeś,że zmienne definiujesz wcześniej , na początku gry...mam rozumieć,że tworzyć dowolny obiekt wrzucasz tam kod i umieszczasz go na danym etapie gry w roomie? SimianVirus7 i Gnysek dziękuje wam bardzo za pomoc...Kurcze żeby nie wy to leżałbym z tym jak pies na szczepieniu;-)
  24. SimianVirus7 ;-) nie mam akurat tak..jest zdefiniowany speed i przypisana prędkość w tym przypadku speed=4; hspeed jest,ale zobacz jak to wyżej wygląda w stepie wroga Obj_Enemy STEP ///Poruszanie sie ///AI wroga porusza sie i jak nas widzi to zaczyna nas gonic az znikniemy z jego pola widzenia //i powraca na miejsce,gdzie zobaczyl nas po raz perwszy //if(point_distance(xstart,0,obj_player.x,0) <= 250) if(instance_exists(obj_player) && action!=stan.patrol && collision_line(x,y,obj_player.x,obj_player.y,obj_niewidzialny,0,1)) { if(follow>room_speed/2) { follow=0 } image_speed=0 image_index=0 action=stan.wait } else if (instance_exists(obj_player) && distance_to_object(obj_player)<=250 && abs(y-obj_player.y)<64 && follow>=room_speed/2 && image_xscale-sign(obj_player.x-x)=0 && !collision_line(x,y,obj_player.x,obj_player.y-12,obj_niewidzialny,0,1)) { action=stan.follow follow=30 } if(action=stan.wait) { image_speed=0 image_index=0 follow++ if(follow>room_speed/2) { action=stan.patrol follow=0 } } else { image_speed=0.3 } if(action=stan.patrol) { follow++ } if (place_free(x,y+1)) {gravity = 0.5} else {gravity = 0} if at=1 { at=2 speed=4 } if at=2 { if (hspeed<0) { image_xscale = -1; if (!place_meeting(x-30,y+10,par_solid ) or place_meeting(x-1,y,par_solid )) { speed*=-1 st=1 if(action=stan.follow) { action=stan.wait } } } else if (hspeed>0) { image_xscale = 1; if (!place_meeting(x+30,y+10,par_solid ) or place_meeting(x+1,y,par_solid )) { speed*=-1 st=2 if(action=stan.follow) { action=stan.wait } } } } //Podazanie za graczem if(action=stan.follow && follow>0) { follow=max(0,follow-1) if(instance_exists(obj_player) && distance_to_object(obj_player)>3) { move_towards_point(obj_player.x,y,min(5,abs(obj_player.x-x))); } } else if(action=stan.patrol && distance_to_point(xstart,ystart)>2) { speed=4 } else if(action=stan.wait) { speed=0 } //ginie wrog if hp<0 { instance_destroy() } //Gdy wrog zostaje atakowany mruga if global.zegarObrazenWroga > 0 { visible = !visible; global.zegarObrazenWroga -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); dead = true; //wywolujemy alarm gdy wrog jest martwy //tworzymy losowa ilosc punktow po zabiciu wroga,oraz napis,ktory sie nad nim wyswietla z iloscia punktow losowych z = instance_create(x,y-10,obj_floating_txt); global.pScore+=pointvalue z.txt = "$" + string(pointvalue); z.yspeed = -4; //instance_create(x,y-50,choose(obj_coin,obj_diamencik,obj_trzy_poduszki,obj_serducho,obj_motyl,obj_gwiazdka,obj_ksiezyc)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) with instance_create(x,y,obj_bandyta_ginie) { //sprite_index = sprWrogGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; audio_play_sound(dzwiek_wrog_ginie, 1, false); //odtwarzamy dzwiek przy smierci wroga } } // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_bandyta); } // poziom trudnosci //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 }
  25. Ostatecznie tak musi być;-) i teraz w końcu działa;-) na poziomie easy bohater jest na 6 strzałów na poziomie medium na 4 strzały i na poziomie hard na 3 strzały Poziom energii na poziomie easy i medium 100% a na hard 80% obj_enemy CREATE alarm[8] = -1; STEP 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 } Teraz walczę z tą zmienną pomocniczą spd=8; najprościej to zdefiniować w create prędkość z jaką ma się poruszać wróg czyli: CREATE spd=4; a w stepie wroga odpowiednio dla danego poziomu ustawić spd?
×
×
  • Dodaj nową pozycję...