pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 Rozumiem...ale jak to ma się do ruchu wroga?i siły obrażeń jaką ma nam zadawać na danym trudności poziomie, bo tego nie mogę zrozumieć...wiem,że mam to zdefiniować albo w osobnym obiekcie na mapie,albo jak już robię w CREATE bohatera ok to jeszcze jest zrozumiałe. Tu zablokowałem się... Teraz to co dałeś przykład wyżej to przyspieszy ruch bohatera o te 3.kiedy ruszymy w prawo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 8 Czerwca 2019 Udostępnij Opublikowano 8 Czerwca 2019 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 W stepie wroga mam zdefiniowany ruch wroga..natomiast w osobnym obiekcie przypisanym jako obiekt dziedziczący mam zdefiniowane obrażenia jakie zadaje wróg bohaterowi,ale hmmm..zastanawiam się,czy to zadziała SimianVirus7? Chociaż to ma sens przyjacielu... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 Dzięki SimianVirus7 po części już rozumiem... Pokombinuje teraz sam z szybkością poruszania się wroga. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 8 Czerwca 2019 Udostępnij Opublikowano 8 Czerwca 2019 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; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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 } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 8 Czerwca 2019 Udostępnij Opublikowano 8 Czerwca 2019 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ę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 8 Czerwca 2019 Autor Udostępnij Opublikowano 8 Czerwca 2019 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); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 10 Czerwca 2019 Udostępnij Opublikowano 10 Czerwca 2019 *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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Czerwca 2019 Administratorzy Udostępnij Opublikowano 10 Czerwca 2019 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Czerwca 2019 Autor Udostępnij Opublikowano 10 Czerwca 2019 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Czerwca 2019 Autor Udostępnij Opublikowano 10 Czerwca 2019 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Czerwca 2019 Autor Udostępnij Opublikowano 10 Czerwca 2019 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... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Czerwca 2019 Autor Udostępnij Opublikowano 10 Czerwca 2019 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Czerwca 2019 Administratorzy Udostępnij Opublikowano 10 Czerwca 2019 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Czerwca 2019 Autor Udostępnij Opublikowano 10 Czerwca 2019 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;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się