Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez pankracy

  1. Tu jest rysowany prostokąt I ma stała pozycję na ekranie. draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, false); Tu zmieniam wartości,ale jak mowie tekst mi zmienia położenie.. Zmieniłem vx zmieniłem vy Zmieniłem tą wartość 586-20-100-2 i tą -1,596 i jak mówię...tekst jest zupełnie w innym miejscu draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
  2. Ale jednak trzyma się tej pozycji dla rozdzielczości 1024x768 i jest w boksie.. testowałem i jest na innej pozycji jak zmienie rozdzielczość na 1280x720 obrazek to ilustruje: rozdzielczość 1024x768 i rozdzielczość 1280x720
  3. Konradzie;-) ja wiem,że mam problem z draw_text_ext tylko,że jak zmienię położenie tekstu i dopasuje go do rozdzielczości 1280x720 to wtedy Jego położenie na rozdzielczości 1024x768 będzie w innym miejscu.. A tekst ten ma być przecież w tym samym miejscu zarówno dla 1024x768 jak jest obecnie i dla 1280x720;-)
  4. Dobra textbox jest już idealnie ustawiony..dzięki chłopaki..za pomoc zwłaszcza dla SimianVirus7:-) Jeszcze tylko tekstem jest problem z textboxa bo zmienia mi pozycje jak zmienię rozdzielczość z 1024x768 na 1280x720 to wtedy tekst jest nad textboxem,a nie w textboxie na rozdzielczości 1024x768 jest dobrze tekst usytuowany bo w textboxie,a na 1280x720 jest nad textboxem. Ostatecznie tak to wygląda Obj_text Draw ///ustawienie i narysowanie textboxa na planszy // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych //i tak dziala jak nalezy vx=view_xview[0]; vy=view_yview[0]; //teraz malujemy tlo tekstu draw_set_alpha(alpha/2); draw_set_color(c_gray); draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, false); //teraz malujemy obwodke draw_set_alpha(alpha); draw_set_color(c_black); draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, true); //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true); //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone draw_set_color(c_black); draw_set_font(font_text); draw_set_halign(fa_left); draw_set_valign(fa_top); draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596); draw_set_alpha(1);
  5. Tak Gnysku widziałem...napisałeś pseudokod...zgadza się dlatego zapytałem się,czy nie powinno być użyte window_get_width() i window_get_height()?
  6. Przepraszam chłopaki,że was męczę w tej sprawie... Kombinowałem różnych rozwiązań,ale jednak zmienia swoje położenie,więc zrezygnowałem z tych rozwiązań:/ Nie pomogło wymusić stałego położenia textboxa,bo przy zmianie rozdzielczości to i tak zmienia swoje położenie i zmniejsza się przy wyższej rozdzielczości. Idealnie jest na rozdzielczości 1024x768 natomiast na 1280x720 jest mniejszy i jest w złym miejscu. Ja rozumiem,że wyższa rozdzielczość powoduje to,że ten obiekt się zmniejsza i zmienia swoje położenie,ale jak to rozwiązać,żeby się rozciągnął/dopasował i zajął takie same lub zbliżone położenie jak na rozdzielczości 1024x768 Tak jak na obrazku poniżej..tak to wygląda jak zmienię rozdzielczość z 1024x768 na 1280x720 to textbox zmniejsza się i położenie jego jest w innym miejscu niż na rozdzielczości 1024x768 próbowałem też tego rozwiązania w evencie draw w obj_text przykład var _x = view_width/2; var _y = view_height; draw_rectangle(_x -100, _y - 50, _x + 100, _y + 100); ale nie rozpoznaje mi tej funkcji view_width i view_height Nie powinno być? window_get_width() i window_get_height() ? obj_text DRAW ///zostawilem rozwiazanie jak bylo na poczatku vx=view_xview[0]; vy=view_yview[0]; // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych //i tak dziala jak nalezy //teraz malujemy tlo tekstu draw_set_alpha(alpha/2); draw_set_color(c_gray); draw_rectangle(vx+10,vy+550,vx+1000,vy+460,false); //teraz malujemy obwodke draw_set_alpha(alpha); draw_set_color(c_black); draw_rectangle(vx+10,vy+550,vx+1000,vy+460,true); //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true); //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone draw_set_color(c_black); draw_set_font(font_text); draw_set_halign(fa_left); draw_set_valign(fa_top); draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596); draw_set_alpha(1);
  7. Kurcze w tym musi być problem w wyświetlaniu mam ustawiony widok w obiekcie na mapie gry obj_global_controler Begin Step ///Wyswietlanie widoku okna gry if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa } Jak go wyłączę to texbox wraz z tekstem zmienia mi położenie Gnysek.. tak też zrobiłem dałem w evencie draw Gui display_set_gui_size(1024, 768); var _w_percentage = display_get_height()/768 * (1024/768); display_set_gui_maximise( _w_percentage, display_get_height()/768, ( 1024*_w_percentage - display_get_gui_width()) / 2, 0); To mi wyśrodkowało centralnie na górze ekranie pasek HUD,który powinien być jak zawsze jest w lewym górnym rogu. Mi kurcze nie chodzi o centrowanie obrazu... Ja chce uzyskać taki efekt: napisze prościej bo mnie chyba nie rozumiecie. Stworzyłem sobie opcje zmiany rozdzielczości; 1.Rozdzielczość 1024x600 2.Rozdzielczość 1024x768 3.Rozdzielczość 1280x720 I chciałbym uzyskać taki efekt,że jak zmienię na jakąkolwiek inną rozdzielczość ekranu grę,to textbox który był na dole przy rozdzielczości 1024x600 to też chce żeby tam się znajdował. Nie mam być wycentrowany na środku ekranu tylko ma być na dole ekranu jak na tym obrazku na każdej z tych rozdzielczości: tak jak tu: 1024x600 https://drive.google.com/file/d/1y4aiN-GNA3jEJIOnbCv5Q2m9fzD9b2CB/view Tak samo chce żeby się w tym samym miejscu znajdował w rozdzielczości 1024x768 i 1280x720 właśnie o to mi chodzi.. Nie wiem jak to nazwać skalowanie obrazu?
  8. Rozumiem,że masz na myśli GUI teraz paska HUD hmmm..ale to może bałaganu narobić Mi.. pasek hud jest w obj_game_controler który jest obiektem persistent obj_game_controler draw GUI /// Wyswietlamy HUD gracza //draw_sprite(spr_glowny_hud,1,383,100); draw_set_color(c_white); draw_sprite(spr_mniejszy_hud,1,50,64); //draw_text(39, 68, string(" Score: " + string(global.pScore))); var __guiW = display_get_gui_width(), __guiH = display_get_gui_height(); //draw_sprite(spr_healthbar,0,60,20); //draw_sprite(spr_hp_bar,0,120,20); //punkty czyli score wysrodkowalem to na HUD draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_sprite(spr_score,1,310,30); draw_text(310,75,"$"+string(global.pScore)); // Zegarki rozmieszczenie spritow i liczb draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_sprite(spr_watch,1,500,30); draw_text(480, 75," "+string(global.watch)+" / 5"); // Rozmieszenie monet draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_sprite(spr_coins,1,400,30); draw_text(400, 75, string(" " + string(global.coins))); //HP HUD if instance_exists(par_player) { //hpHUD = lerp(hpHUD,par_player.hp,.5); hpHUD=global.hp; maxHpHUD = par_player.maxHp; //HUD dopalaczy with obj_player { var _offset; _offset = 0; draw_set_font(fnt_pwrup); draw_set_valign(fa_bottom); draw_set_halign(fa_center); draw_set_color(c_white); draw_texture_flush(); if pwrupSpd > 0 { draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed))); _offset++; } if pwrupStr > 0 { draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed))); _offset++; } if pwrupJmp > 0 { draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed))); _offset++; } } } else { hpHUD = lerp(hpHUD,0,.5); } //HUD zycia //draw_sprite_part(spr_hp_bar,1,32,0,91/maxHpHUD*hpHUD,32,34,4); draw_sprite_part(spr_hp_bar,1,1,0,180/maxHpHUD*hpHUD,130,90,14); draw_set_color(c_white); draw_set_valign(fa_middle); draw_set_halign(fa_center); draw_set_font(fn_punkty); draw_text(70, 74, string("x" + string(global.life))); //rozmieszczenie wskaznika zyc draw_sprite(spr_glowa,1,40,1); //sprite glowy anatola przy pasku zycia //draw_sprite(spr_serduszko,1,160,74);
  9. Próbowałem użyć funkcji display_set_gui_size(); w evencie draw gui w obj_textbox wpisałem wartości display_set_gui_size(600, 1024); ale kiedy pojawia mi się plansza pierwsza gry,to mam bardzo duży pasek HUD i jest bardzo rozciągnięty. Pasek HUD musi być w draw_gui bo cały czas występuje w grze. Użyłem też w evencie draw obj_textbox drugiego rozwiązania,ustawiłem pozycję ramki od ekranu no i sytuacja jest taka,że jak jest plansza już z textboxem to na planszy intro o wymiarach 1024x600 prostokąt jest pod tesktem:/, A na kolejnej planszy już grze o stałych wymiarach 1280x720 to prostokąt textboxa jest w podobnym położeniu co wyżej na screenie pokazałem w draw obj_textbox mam tak vx=view_xview[0]; vy=view_yview[0]; var w = display_get_gui_width(); var h = display_get_gui_height(); var x1 = 10; var y1 = h - 550; var x2 = w - 1000; var y2 = h - 460; //teraz malujemy tlo tekstu draw_set_alpha(alpha/2); draw_set_color(c_gray); draw_rectangle(x1, y1, x2, y2, false); var w = display_get_gui_width(); var h = display_get_gui_height(); var x1 = 10; var y1 = h - 550; var x2 = w - 1000; var y2 = h - 460; //teraz malujemy obwodke draw_set_alpha(alpha); draw_set_color(c_black); draw_rectangle(x1, y1, x2, y2, true); //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone draw_set_color(c_black); draw_set_font(font_text); draw_set_halign(fa_left); draw_set_valign(fa_top); draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596); draw_set_alpha(1);
  10. Kurcze..źle pytanie sprecyzowałem. Draw gui ustawi mi textbox na środku ekranu,a ja chce taki efekt uzyskać jak niżej na obrazku 1 obrazek 1 1024x600 - chce żeby ten textbox był na dole ekranu tak jak na tej rozdzielczości i bez względu czy ustawie rozdzielczość 1024x600 czy wyższą https://drive.google.com/open?id=1y4aiN-GNA3jEJIOnbCv5Q2m9fzD9b2CB obrazek 2 1280x720 - tu jest na tej rozdzielczości źle..textbox mój znajduje się już wyżej na ekranie https://drive.google.com/open?id=1CUJwNXVHpfCZpWtfTFU-Fd6fI5itzq0X
  11. Cześć wszystkim. Właśnie jestem na etapie tworzenia menu gry w którym będę zmieniał rozdzielczość: Dostępne będą: 1024x768 1280x720 Pytanie..bo mam textboxa...jest on dopasowany do ekranu 1024x600 i 1024x768. jak ustawie view na 1280x720 to cały textbox jest już w innym miejscu na planszy.. Czy jest możliwość ustawić tak żebym nie musiał ręcznie zmieniać parametrów texboxa w draw? zresztą jak chce mieć dwie rozdzielczości to chciałbym żeby textbox dopasował się do rozmiaru view. myślałem o użyciu funkcji application_surface; Ale nie wiem czy dobrze kombinuje... tak wygląda kod obj_textbox obj_textbox Create alpha=0; //przeswitywalnosc step=0; //kolejne zadanie przez nas wykonywane - KROK text=''; //tekst jaki mamy wyswietlic leght = 0; Step 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 istnieje, to wykonuj ponizszy kod { if not ds_queue_empty(global.textq) and global.text_get=true //jezeli [kolejka] nie jest pusta i mozna [pobrac tekst] { global.text_get=false;//wylacz pobieranie tekstu, aby funkcja sie juz nie wywolala, dopuki znowu nie bedzie true text=ds_queue_dequeue(global.textq);//pobierz tekst z kolejki step=1;//ustaw zadanie na jeden leght=0; } //KROK 1 if step=1 { //zmniejszamy przeswitywalnosc az do max. widocznosci (1) if alpha<1 then alpha+=0.1 else { //przeswitywalnosci juz nie ma, zatem skoncz wykonywanie tego skryptu alpha=1; step=2; } } //KROK 2 if step=2 { if leght<string_length(string(text)) then leght += 1; // Mozesz zmienic predkosc "drukowania" testu dodajac inna liczbe do zmiennej leght } //KROK 3 if step=3 { //teraz zwiekszaj przeswitywalnosc az do znikniecia (0) if alpha>0 then alpha-=0.1 else { //przeswituje juz tak ze bardziej nie moze alpha=0; text=''; global.text_get=true;//ustaw, ze mozna juz pobierac tekst step=0; } } } } Draw vx=view_xview[0]; vy=view_yview[0]; // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych //i tak dziala jak nalezy //teraz malujemy tlo tekstu draw_set_alpha(alpha/2); draw_set_color(c_gray); draw_rectangle(vx+10,vy+550,vx+1000,vy+460,false); //teraz malujemy obwodke draw_set_alpha(alpha); draw_set_color(c_black); draw_rectangle(vx+10,vy+550,vx+1000,vy+460,true); //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true); //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone draw_set_color(c_black); draw_set_font(font_text); draw_set_halign(fa_left); draw_set_valign(fa_top); draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596); draw_set_alpha(1);
  12. Działa! Jesteś wielki Simonie przez duże S;-) Wielkie dzięki..
  13. Już to zrobiłem i to jest ten efekt co się dzieje jaki opisałem w poprzedniej wiadomości;-) dlatego powróciłem do poprzedniego kodu;-) i wrzuciłem całe trzy skrypty od textboxa;-)
  14. Hmmm..czyli to nie w tym problem;-) dla pewności tu cały kod jeszcze textboxa... są tylko trzy małe skrypty. scr_ini //po pelen opis dzialanie tego skryptu zerknij do obiektu obj_inicjowanie global.textq=ds_queue_create();//kolejka z tekstem global.text_get=true;//czy mozemy pobrac nastepny tekst, wiecej w obj_text add_text //dodaje tekst do kolejki var text; text=argument0; if !instance_exists(obj_text) then instance_create(0,0,obj_text); //poniewaz obj rozmowa nie ma opcji persistent (dla bezpieczenstwa) //tworzymy go gdy nie ma go na planszy ds_queue_enqueue(global.textq,text); i nieszczęsny no_text //zwraca true, jezeli nie ma juz zadnego tekstu do wyswietlenia 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 ( ds_queue_empty(global.textq) and global.text_get=true ) { return true; } else { return false; } } else return false; } else return false;
  15. Teraz jak załaduje grę,to bohater fakt chodzi wszystko niby normalnie robi wykonuje..ale kiedy zginę i zacznę planszę od nowa,to stoi w miejscu i nie można nim ruszać. Natomiast jak wezmę zamiast load game nowa gra to napis z texboxa jak się pojawia to bohater powinien stać w miejscu,a teraz można nim chodzić i kiedy tekst sie skończy bohater zamarza tzn nic już nie można z nim zrobić;-)
  16. Nie nie... nie mogę nim poruszać... on stoi i animacja chodzenia jest aktywna cały czas przebiera nogami.Nie reaguje na przyciski żadne..nie mogę chodzić skakać itp.. To tak wygląda jakbyś kogoś trzymał w miejscu,a ktoś nogami tylko przebierał w miejscu
  17. jeszcze chodzi w miejscu,ale obstawiam,że to wina kodu w End Step obj_player End Step ///Sprity 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 && 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; if vspd <= -1 { image_index = 0; } else if vspd >= 1 { image_index = 2; } else { image_index = 1; } } 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 = 14-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 1; } 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; } } }//dodane }//dodane
  18. skrypt no_text //zwraca true, jezeli nie ma juz zadnego tekstu do wyswietlenia if ( ds_queue_empty(global.textq) and global.text_get=true ) then return true else return false;
  19. no_text bohater na czas wyświetlania tekstu z textboxa jest zatrzymany stoi w miejscu:-) Nie ma już błędów,ale jak załaduje grę z save to mój bohater chodzi w miejscu...nie można nim ruszać..w złym miejscu musiałem dać te warunki:-( w opisie dałem przy dodanych nawiasach klamrowych komentarz }//dodane.to są nawiasy klamrowe do tych warunków dodanych. obecnie w step i w end step obj_player mam tak dane te warunku 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; } }//dodane }//dpdame 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(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 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; //Punkt respawnu w miejscu ostatniego skoku //spawnX = x; //spawnY = y; //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; } //Podwojny skok /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true { vspd = -10-sign(pwrupJmp*3); silaSkoku = 0; czasSkoku--; audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu }*/ 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 }//dpdane //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){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) {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(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 && 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; if vspd <= -1 { image_index = 0; } else if vspd >= 1 { image_index = 2; } else { image_index = 1; } } 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 = 14-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 1; } 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; } } }//dodane }//dodane
  20. Może lepiej te warunek wrzucić do pokoju przed rozpoczęciem gry co? mam pokój inicjowanie a w nim obj_inicjowanie w create /*ten obiekt sluzy jedynie za inicjacje pewnych zmiennych, ktore powinny byc zdefiniowane zanim cokolwiek jeszcze wydarzy sie w grze, dlatego tez dla 100% pewnosci, ze zaden inny obiekt nie uzyje tych wartosci zanim ich nie ustalimy, ustawilem go w pierwszym pokoju i dalem mu w create wywolanie skryptu scr_ini(); ktory wposmniane zmienne ustawia a nastepnie przechodzi do drugiego pokoju pamietaj! poza tym obiektem w roomie nie moze byc nic innego, a przed nim zaden obiekt nie moze zostac stworzony aby miec pewnosc, ze nie odwola sie do zmiennych ktore zostana za chwilke ustawione !*/ scr_ini(); //to skrypt od textboxa room_goto(roo_world1_1);//to moja plansza pierwsza swiata scr_ini //po pelen opis dzialanie tego skryptu zerknij do obiektu obj_inicjowanie global.textq=ds_queue_create();//kolejka z tekstem global.text_get=true;//czy mozemy pobrac nastepny tekst, wiecej w obj_text
  21. Wyeliminowane są praktycznie wszystkie już błędy,ale jak załaduje grę z load game,to Bohater chodzi w miejscu..I nie mogę nic z nim zrobić... End step już ogarnięty faktycznie tam był jeden z błędów. wstawiłem te warunki w stepie bohatera tam gdzie był ten problem.Zaznaczyłem je są zaraz na początku kodu. A powiedz mi,bo myślę nad rozwiązaniem takim,żeby wstawić te warunku przed załadowaniem pierwszej planszy... Np jest pusty pokój gdzie są te warunki i z pustego pokoju przechodzi do planszy świata pierwszego..Tylko wtedy warunek musiałby wyglądać inaczej... 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 { /////////////////////////////////////////////////////////////////////////////////////////////////////////TU JEST WSTAWIONY WARUNEK! 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; } }//dodane }//dpdame }//dodany 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 } /////////////////////////////////////////////////////////////////////////////////////////////////////////I TU JEST WSTAWIONY WARUNEK! 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 no_text() //teraz Anatol stoi jak jest odwatrzana 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; //Punkt respawnu w miejscu ostatniego skoku //spawnX = x; //spawnY = y; //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; } //Podwojny skok /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true { vspd = -10-sign(pwrupJmp*3); silaSkoku = 0; czasSkoku--; audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu }*/ 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; } } } } }//dodany //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){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) {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(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 && 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; if vspd <= -1 { image_index = 0; } else if vspd >= 1 { image_index = 2; } else { image_index = 1; } } 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 = 14-(zegarAtaku); zegarAtaku -= 1; } if zegarAtaku > 0 && atakBierzacy == 1 { sprite_index = spr_player_shoot; image_index = 6-(zegarAtaku); zegarAtaku -= 1; } 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; } } }
  22. Wiem Simianie,Dlatego powoli biorę się za porządki w kodzie jak i przeanalizowanie po kolei w każdym obiekcie wszystkich funkcji kodu. Czytam już sobie samouczek wbudowany w GMS. A kciuki się bardzo przydadzą;-) Nie długo udostępnię nowe grafiki z gry. A te dwa ostatnie błędy jak wspomniałem wcześniej,to tyczą się wyłącznie obj_player poniżej ich treść 1. ############################################################################################ ERROR in action number 1 of Step Event0 for object obj_player: Data structure with index does not exist. at gml_Script_no_text (line 6) - if ( ds_queue_empty(global.textq) and global.text_get=true ) ############################################################################################ -------------------------------------------------------------------------------------------- stack frame is gml_Script_no_text (line 6) called from - gml_Object_obj_player_StepNormalEvent_1 (line 50) - if no_text() //teraz Bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa 2. ############################################################################################ ERROR in action number 2 of Step Event2 for object obj_player: Data structure with index does not exist. at gml_Script_no_text (line 6) - if ( ds_queue_empty(global.textq) and global.text_get=true ) ############################################################################################ -------------------------------------------------------------------------------------------- stack frame is gml_Script_no_text (line 6) called from - gml_Object_obj_player_StepEndEvent_2 (line 3) - if(instance_number(obj_napis_plansz)=0 && no_text()) { 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(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 Anatol stoi jak jest odwatrzana 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; //Punkt respawnu w miejscu ostatniego skoku //spawnX = x; //spawnY = y; //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; } //Podwojny skok /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true { vspd = -10-sign(pwrupJmp*3); silaSkoku = 0; czasSkoku--; audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu }*/ 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){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) {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; }
  23. Ok ten błąd z obj_textem zniknął,ale pozostał z obj_playerem i tu jest w miejscu: Tu fragment tych dwóch błędów jakie pozostały. if no_text() //teraz bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa { /// } 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; } Więcej już błędów nie wywala tylko te wyżej: cały step Bohatera w którym są te dwa błędy wygląda tak: obj_player STEP ///ustawienia ruchu Anatola // gdy anatol 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 Anatol 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; } ///TU JEST TEN BLAD PIERWSZY 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 } ///TU JEST TEN BLAD DRUGI if no_text() //teraz Anatol stoi jak jest odwatrzana 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; //Punkt respawnu w miejscu ostatniego skoku //spawnX = x; //spawnY = y; //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; } //Podwojny skok /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true { vspd = -10-sign(pwrupJmp*3); silaSkoku = 0; czasSkoku--; audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu }*/ 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){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) {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; }
  24. Ok Simianie sprawdzę;-) dzięki Ale spójrz są dwa błędy..jeden to skrypt odwołuje się do obj_text,a drugi do obj_player;-) I najpierw pojawia się błąd z obj_player ,a potem dopiero z obj_tekst
  25. kurcze to nie wiem,gdzie dać ten warunek skoro nie w nowym obiekcie.. może jakiś skrypt utworzyć który by startował razem z load game i tam umieścić ten warunek???
×
×
  • Dodaj nową pozycję...