Skocz do zawartości

pankracy

Użytkownicy
  • Zawartość

    241
  • Rejestracja

  • Ostatnia wizyta

Reputacja

0 Neutralny

O pankracy

  • Tytuł
    Major User

Profile Fields

  • Płeć
    Male

Ostatnie wizyty

1827 wyświetleń profilu
  1. Dzięki za odpowiedź Gnysku. Kurcze szkoda:-(
  2. Cześć wszystkim, Zastanawiam się,czy można w GMS 1.4 wrzucić gotową animację(wcześniej przygotowaną w innej aplikacji),która będzie intrem gry.Jest taka możliwość? Czy GMS jest wstanie odtworzyć animacje? jeśli tak to w jakim formacie powinna być ona zapisana?
  3. Cześć wszystkim, Mam prymitywny pasek ładowania, który opiera się na animacji sprita...która jest zdefiniowana w evencie Create,ale to nie jest dobre rozwiązanie.Używam go w Splash screen. Czy ktoś z was ma przykład bardziej złożonego paska loading bar(np wskaźnik w procentach), który ładuje się a po załadowaniu przechodzi do kolejnego roomu? Z góry dziękuje.
  4. Dzięki Konrad;-) podejmę odpowiednie kroki;-)
  5. Cześć wszystkim, Mam takie pytanie, Chciałbym zastrzec nazwę swojej gry jak i scenariusz do gry oraz logo firmy w jaki sposób to zrobić? Co do loga to rozumiem,że w w urzędzie patentowym? Jak nabyć prawa autorskie do swojej gry?
  6. Cześć wszystkim, Próbuje rozwiązać problem z nadpisującym się wynikiem do highscore po ukończeniu gry. Wygląda to tak,że cały czas jest tylko jeden wpis,a powinno być top 10 najlepszych wyników. Dziwna sytuacja...bo np jeśli zapisze grę i załaduje z load game gre i nastepnie jak skończe grę i nastąpi zapis do highscore to tworzy się niżej nowy rekord zapisu... Tylko dlaczego przy wyborze gry od nowa nadpisuje się rekord w highscore? Nie będę tu wszystkiego wklejał żeby nie robić bałaganu. obj_game_controller step if (global.life <= 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 120; // 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); } } obj_highscore create global.pScore=0 globalvar highscores; highscores=ds_list_create() //Wczytaj punkty z dysku var f=file_text_open_read("highscore.dat") if(f>-1) { var s=file_text_read_string(f) //show_debug_message(s) s=json_decode(s) if(s!=-1 && ds_exists(s, ds_type_map) && ds_map_exists(s,"default")) { var m=s[?"default"]; for(var _i=0; _i<ds_list_size(m); _i++) { if(ds_exists(m[|_i], ds_type_map)) { var _m=ds_map_create(); ds_map_copy(_m, m[|_i]) ds_list_insert(highscores, _i, _m) ds_list_mark_as_map(highscores, _i) } } } ds_map_destroy(s) file_text_close(f) } scrypt score_add ///score_add(name,score) if(ds_exists(highscores, ds_type_list)) { var m=ds_map_create(); m[?"name"]=argument0 m[?"score"]=argument1 ds_list_add(highscores, m) ds_list_mark_as_map(highscores, ds_list_size(highscores)-1) score_sort() if(ds_list_size(highscores)>10) { ds_list_delete(highscores,10) } }
  7. Maska kolizji ataku bohatera

    A nie będzie tak,że jak użyje show_debug_message() to na końcu kodu może mi się wyświetlić bardzo dużo informacji związanych z image_speed=0 ? Ale przecież zmiana sprita bohatera i jego ramki animacji mam w obj_player bo gdzie indziej mógłbym mieć? przecież nie w obiektach wrogów czy w pułapkach ani w kolizjach. To są wyżej moje eventy Step i Step End..więcej nie mam.
  8. Maska kolizji ataku bohatera

    Szukam przyczyny... To jest mój caly kod ze Step i End Step bohatera oraz Create tak automatycznie pokazuje Mi zerową klatkę:-/ Kod w obj_player wygląda u mnie następująco Obj_player Step ///ustawienia ruchu Bohatera // gdy Bohater jest zamrozony zatrzymujemy go if(zamroz==true) { x = zamroz_x; y = zamroz_y; gravity=0 vspd=0; hspd=0; } //licznik czasowy gry rs_timer ++; ///auto unstuck kiedy nam Bohater sie zaklinuje to podana nizej funkcja go odblokuje while(place_meeting(x,y,other)) { dir = point_direction(x,y,other.x,other.y) x = x + lengthdir_x(-1,dir) y = y + lengthdir_y(+10,dir) other.alarm[0] = room_speed; } if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod { if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod { if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage { if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0) { image_speed=1 } else { image_speed=0; } if (vspd > 25) //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.) { global.damage+=5 } //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.) if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia { other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen. global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej } } if(no_text()) //teraz Bohater stoi jak jest odwarzana sekwencja tekstowa textboxa { ///Kontrola if !place_meeting(x,y,obj_water) { //Normalny ruch if drabina == false { if key_check_pressed(key.jump) && wPowietrzu == false { vspd = -10-sign(pwrupJmp*3); silaSkoku = 3; //Zeskakiwanie w dol if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } else if key_check(key.jump) && silaSkoku > 0 { audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu vspd -= 2+sign(pwrupJmp); silaSkoku--; } else { if key_check_released(key.jump) && silaSkoku > 2 { vspd += 2+sign(pwrupJmp); } silaSkoku = 0; } if key_check(key.action) && zegarAtaku == false { //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol zegarAtaku = 26; atakBierzacy = 1; with instance_create( x+(image_xscale*12), y-26, obj_projectile) //idealnie ta funkcja obraca pocisk gracza lub wroga { hspd = other.image_xscale*15; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny speed=4; owner = par_player; sila = 0; eksplozja = true; zasiegEksplozji = 30; silaEksplozji = 2+(sign(other.pwrupStr)*8); //image_blend = c_black; //kolor lotu pocisku audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu } } if key_check(key.right) && !key_check(key.left) { if hspd < 8+(sign(pwrupSpd)*5) { hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5)); } image_xscale = 1; } if key_check(key.left) && !key_check(key.right) { if hspd > -8-(sign(pwrupSpd)*5) { hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5)); } image_xscale = -1; } //Drabina if place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable) && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Wspinanie sie if drabina == true { var __hsign = key_check(key.right)-key_check(key.left); var __vsign = key_check(key.down)-key_check(key.up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-32,par_climbable) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable) { drabina = false; } } } else { //Plywanie kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up)); if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 { hspd += lengthdir_x(.5,kierunekPlywania); if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) { vspd += lengthdir_y(.5,kierunekPlywania); //audio_play_sound(dzwiek_anatol_plywa, 1, false); //odtwarzamy dzwiek gdy anatol plywa } } if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory vspd = -12; } } } //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza if place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid) { drabina=false; } //Normalny ruch if drabina == false { if key_check(key.down) && wPowietrzu == false { //Zeskakiwanie w dol if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } } if vspd>0 && place_meeting(x,y,par_climbable) then drabina=true; if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable) && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) then drabina=false; if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) { zegarAtaku = 16; atakBierzacy = 1; with instance_create(x+10,y-26,obj_projectile) { hspd = other.image_xscale*10; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny owner = par_player; audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu } } //nabieranie powietrza if tlen<10 { if distance_to_object(obj_water)>1 { tlen+=0.2 } } //jesli nie ma powietrza energia ucieka i bohater potem traci zycie if tlen<0.01 { global.hp-=0.2 } if global.hp<=0 { global.life -= 1; } Obj_player End Step ///Sprity if(instance_number(obj_napis_plansz)=0 && no_text()) { if !place_meeting(x,y,obj_water) { if wPowietrzu == false && key_check(key.right) = key_check(key.left) && sprite_index != spr_player_stand && drabina == false { sprite_index = spr_player_stand; image_index =0; } if wPowietrzu == false && (key_check(key.right) || key_check(key.left)) && key_check(key.right) != key_check(key.left) && sprite_index != spr_player_run && drabina == false { sprite_index = spr_player_run; image_index = 0; } if wPowietrzu == true && drabina == false { sprite_index = spr_player_air; var cmin = 0, cmax = 0; if vspd <= -1 { cmin = 0; cmax = 5; } else if vspd >= 1 { cmin = 5; cmax = 10; } else { cmin = 5; cmax = 5; } klatkaAnimWPowietrzu = clamp(klatkaAnimWPowietrzu + 0.1, cmin, cmax); image_index = klatkaAnimWPowietrzu; } if drabina == true { if x == xprevious && y == yprevious { if sprite_index != spr_player_hang { sprite_index = spr_player_hang; } } else { if sprite_index != spr_player_climb { sprite_index = spr_player_climb; } } } if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_index = 89-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 && (key_check(key.right) || key_check(key.left)) { sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23-(odejmij); odejmij -= 1; } kierunekPlywania = point_direction(xprevious,yprevious,x,y); wysKierunek = kierunekPlywania; if image_xscale < 0 { wysKierunek += 180; } } else { if sprite_index != spr_player_water { sprite_index = spr_player_water; image_index = 0; } if key_check(key.right) && !key_check(key.left) && image_xscale = -1 { image_xscale = 1; wysKierunek -= 180; } else if key_check(key.left) && !key_check(key.right) && image_xscale = 1 { image_xscale = -1; wysKierunek += 180; } if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 { image_index += 2; if image_xscale > 0 { wysKierunek -= angle_difference(wysKierunek,kierunekPlywania)/16; } else { wysKierunek -= angle_difference(wysKierunek,180+kierunekPlywania)/16; } } } //animacja do przesuwania skrzyni if wPowietrzu == false && (key_check(key.right)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) {sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij); odejmij -= 1; } else if (key_check(key.left)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) { sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij); odejmij -= 1; } } Obj_player Create /// Glowne deklaracje zmiennych Bohatera ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); zbieranie=true; eksplozja = false; zasiegEksplozji = 22; silaEksplozji = 10; klatkaAnimWPowietrzu = 0; 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 bohatera 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;
  9. Maska kolizji ataku bohatera

    if image_index = 88 then image_speed=0; Kurcze nie pomaga;/ powinno zatrzymać sprita ataku na ostatniej ramce... rozwiązanie poprzednie,ale nie działa: Step obj_player if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; if image_index == 88 { image_speed = 0; } image_index = 89- (zegarAtaku); attClock -= 0.5; pomysły już mi się kończą;/ nadal nie działa nie chce zatrzymywać się na ostatniej ramce animacji. edit. próbowałem jeszcze czegoś takiego w evencie other animation end dałem tak if (sprite_index == spr_player_attack) { image_index = image_number - 1; // zatrzymuje sie na ostatniej ramce image_speed = 0; // stop animacja } Niestety to też nie pomaga i dalej kurcze problem jest,że nie chce zatrzymać się na ostatniej ramce animacji..kurcze:/
  10. Maska kolizji ataku bohatera

    dodanie takiego warunku też nic nie daje if image_index = 89 then image_speed=0;
  11. Maska kolizji ataku bohatera

    Dzięki chłopaki.. Dziękuje Konrad:-) Kurcze zupełnie inaczej to wygląda niż w ifach.. W przypadku pierwszym ten sposób pomógł..i bohater jak skacze są odtwarzane z odpowiednią prędkością ramki obrazu i jak zetknie się z podłożem to wszystko wraca do normy. Natomiast przypadek z ramkami animacji ataku jest nadal ten sam...nie pomaga te wyżej rozwiązanie.. nie dość,że animacja się nie zatrzymuje na ostatniej ramce to tu też image_speed spowodował,że animacja bohatera kiedy biegnie to szuranie po planszy. if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = clamp(89-(zegarAtaku), 0, 89); zegarAtaku -= 0.5; }
  12. Maska kolizji ataku bohatera

    Staram się Gnysek, Też się za to już wziąłem zmniejszyłem zegarAtaku na wartość 0.5 jest lepiej,ale zastanawiam się,czemu animacja ataku sprite_index = spr_player_attack się zapętla? wciskam klawisz X i puszczam i animacja ataku mi się zapętla zamiast zatrzymać się na ostatniej ramce animacji to wraca do początkowej... obj_player end step if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = 89-(zegarAtaku); zegarAtaku -= 0.5; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_speed = 0; image_index = 6-(zegarAtaku); zegarAtaku -= 0,5; } druga sprawa... Zmieniłem kod dla animacji skakania. Teraz wyświetla mi 10 ramek. Ale problem polega na tym,że dzieje się to tak szybko,że nie widać kilku ramek. Więc dodałem image_speed=0.5 teraz przy skoku działa to idealnie.. ale jak już bohater wyląduje na podłożu,to animacja biegania nie działa.Bohater się szura po planszy.. te image speed obstawiam,że muszę dać warunek który sprawdzał by podłoże? że jak jest w powietrzu to image_speed=0.5 a jak na ziemi to jest tak jak było wcześniej. if inAir == true && climbing == false { sprite_index = spr_player_air;// wyswietlaj animacje skakania } event-other-animation end if(sprite_index == spr_player_air) { image_index = image_number - 1; }
  13. Maska kolizji ataku bohatera

    Nic to nie daje..nadal ta sama sytuacja..zastanawiam się co jest tego powodem..skoro image_speed=0; powinno zatrzymać animacje sprita. step if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_speed = 0; image_index = 89-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_speed = 0; image_index = 6-(zegarAtaku); zegarAtaku -= 1; }
  14. Maska kolizji ataku bohatera

    Próbowałem też użyć wartości mniejszej od 1 Nie widać tego momentu jak bohater wyciąga za pleców broń..tylko od razu przyjmuje pozycje ataku. Mask_player mam ustawiony ten sam sprite z tyloma ilościami ramek co niżej ma spr_player_attack I powiedzcie Mi bo meczę się z tymi ifami. W nowym spricie ilość ramek skoku ma 10,a tu mam na starym spricie ustawione zaledwie 2. Jak to ustawić,że przy skoku bohatera będzie wyświetlone te 10 ramek animacji? w end stepie obj_player mam tak if wPowietrzu == true && drabina == false { sprite_index = spr_player_air; if vspd <= -1 { image_index = 0; } else if vspd >= 1 { image_index = 2; } else { image_index = 1; } } if zegarAtaku > 0 && atakBierzacy == 0 { sprite_index = spr_player_attack; image_index = 89-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 1; } a tu niżej w stepie obj_player mam tak if key_check(key.action) && zegarAtaku == false { //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol zegarAtaku = 26; atakBierzacy = 1; with instance_create( x+(image_xscale*12), y-26, obj_projectile) //idealnie ta funkcja obraca pocisk gracza lub wroga { hspd = other.image_xscale*15; vspd = 0; //lekko do gory -4 //mocno do gory g = .0; //0.2 tor lotu paraboliczny speed=4; owner = par_player; sila = 0; eksplozja = true; zasiegEksplozji = 30; silaEksplozji = 2+(sign(other.pwrupStr)*8); } }
  15. Maska kolizji ataku bohatera

    To akurat już przerabiałem image_speed...:-) to nie pomaga...
×