-
Postów
264 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
31
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez SimianVirus7
-
Intro obrazkowe+wyświetlający się pod obrazkiem tekst
SimianVirus7 odpowiedział(a) na pankracy temat w GM:Studio 1.x
Pewnie, że jest taka możliwość, a nawet i pewnie multum możliwości Jednak ja tutaj nie pomogę, bo nigdy tego nie robiłem. Jednym ze sposobów byłoby rozdzielenie całego stringa w tablicy, na tablice ze znakami (char), a później w pętli for, która wykonywała by się w jakimś interwale czasowym, wypisywać po kolei literki. Niemniej to jest pomysł, który jako pierwszy i od razu przychodzi mi na myśl. Jak jest z jego wykonaniem to nie wiem. Na pewno nie jest on najlepszym pomysłem, z pewnością są lepsze i bardziej optymalne rozwiązania. -
Intro obrazkowe+wyświetlający się pod obrazkiem tekst
SimianVirus7 odpowiedział(a) na pankracy temat w GM:Studio 1.x
Ale co Ty tu za bezeceństwa napisałeś Nawet nie wiem jak to wytłumaczyć Generalnie, to, kiedy masz przejść do następnego pokoju, sprawdzasz jednym ifem, na podstawie dwóch zmiennych "index" i "czego_wiecej". Jeśli "index" będzie większy, niż klatki z intro (tekst/obrazki) to przejdź do następnego pokoju. Czyli if index > czego_wiecej to goto_room_next(); //Najpierw zwiększaj index if(keyboard_check_pressed(vk_enter)) then index+=1; //Zwiększyć ten indeks o jeden, jeśli naciśne Enter //a dopiero później sprawdzaj var czego_wiecej = max(array_length_1d(msg), sprite_get_number(spr_intro1)); //zobacz, czy jest więcej obrazków czy tekstu i wpisz maks. liczbę if (index >= czego_wiecej-1) // możliwe, że będziesz musiał dać też -1, czyli index == czego_wiecej-1 { //W tym bloku wypisujesz akcje, które mają być spełnione po zakończeniu intra room_goto_next(); } /* TEGO TU NIE MA BYC, WYTNIJ TO, TO JEST POPSUTE I NIEDOBRE if (index == sprite_get_number(spr_intro1)) //teraz możesz tego używać, bo spr_intro1 zawiera cztery klatki { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec } */ -
Intro obrazkowe+wyświetlający się pod obrazkiem tekst
SimianVirus7 odpowiedział(a) na pankracy temat w GM:Studio 1.x
1. No to zrób if'a :V Znaczy masz już tam jednego co to sprawdza, wystarczy go przerobić pod siebie, nie będzie to trudne. Jedynym minusem tej metody jest to, że masz jedną sprawdzającą "index" na dwie sytuacje, czyli tekst i obrazki. Dlatego zawsze i tekst i obraz musi mieć taką samą pulę, czyli np. 5 obrazków to 5 tekstów (msg[5]). Ale jak masz np. więcej tekstu, to dajesz puste obrazki png, a jak masz więcej obrazków niż tekstu to dajesz pusty tekst msg[] = ""; 2. Zamień kolejność rysowania w draw xD głupol ze mnie. Najpierw niech rysuje obraz, a później tekst. PS: W sumie możesz jeszcze założyć blokadę w draw przy użyciu zmiennej "index", żeby nie wyleciała poza tablice, to wtedy nie będziesz musiał dawać pustych obrazków/tekstu DRAW //Rysuj tekst msg[i] oraz ilustracje z blokadą na tablice //Wskaźnikiem jaki ma być teraz rysowany tekst/obraz, jest zmienna "index", która zmienia się wraz z przyciskiem ENTER draw_sprite(spr_intro1, min(index, sprite_get_number(spr_intro1)-1), x+640, y+360); //najpierw (pod spodem) rysuj obrazek var dl_tablicy = array_length_1d(msg); //zobacz jaka jest dlugosc tablicy, aby zaznaczyc końcową wartosc przy rysowaniu draw_text(x+200, y+750, msg[min(index, dl_tablicy-1)]); //później (nad obrazkiem) rysuj tekst) a w stepie zobaczysz czego jest więcej i do tego się odwołać w ifie var czego_wiecej = max(array_length_1d(msg), sprite_get_number(spr_intro1)); if (index == czego_wiecej) // możliwe, że będziesz musiał dać też -1, czyli index == czego_wiecej-1 { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec } -
Intro obrazkowe+wyświetlający się pod obrazkiem tekst
SimianVirus7 odpowiedział(a) na pankracy temat w GM:Studio 1.x
if (index == sprite_get_number(spr_ilustracja4)) { // Slajd kończy się, gdy osiągnie numer obrazu spr_ilustracja4 lub długość tablicy msg // to koniec } Pomyśl, jakie są wartości ukryte pod tymi nazwami: Index = zainicjowałeś go w postaci liczby "0" i domyślam się, że wcisnąłeś enter 3 razy, żeby przejść do msg[3]. Teraz index = 3; Sprite_get_number(spr_ilustracja4)) - ta funkcja, tak jak napisał Konrad, zwraca ilość klatek w obrazie. Domyślam się (znowu :V), że jest tam tylko JEDNA klatka, więc Sprite_get_number(spr_ilustracja4)) = 1 i zawsze tam będzie jeden, jeśli obrazek nie jest animacją. Tak więc, warunek zawsze będzie prawdziwy, kiedy po raz pierwszy naciśniesz enter, bo wtedy index = 1; Możesz to zrobić poprzez array_length_1d a jakże, bądź, w taki oto fajny sposób (coś może się nie zgadzać, bo piszę z pamięci): 1) Robisz jeden sprite, o nazwie np. spr_intro1 2) W tym sprite dodajesz spr_ilustracja1, spr_ilustracja2, spr_ilustracja3, spr_ilustracja4 itd. tak, żeby powstała Ci animacja. 3) Create masz dobrze, a w Stepie coś takiego: if (keyboard_check_pressed(vk_enter))//Zwiększyć ten indeks o jeden, jeśli naciśne Enter index+=1; if (index == sprite_get_number(spr_intro1)) //teraz możesz tego używać, bo spr_intro1 zawiera cztery klatki { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec } 4) Draw: //Rysuj tekst msg[i] oraz ilustracje //Wskaźnikiem jaki ma być teraz rysowany tekst/obraz, jest zmienna "index", która zmienia się wraz z przyciskiem ENTER draw_text(x+200, y+750, msg[index]); draw_sprite(spr_intro1, index, x+640, y+360); Pamiętaj, że msg[] i ilość klatek w spr_intro1 musi być taka sama, bo inaczej indeksowanie tablicy Ci się wysypie, ale możesz to zabezpieczyć, np za pomocą funkcji clamp() albo po prostu jak masz więcej obrazków niż tekstu, to daj pustą tablicę, czyli msg[42] = ""; -
Strasznie klimatyczna świetne! Niestety umarłem przy drugim robocie Kolejna gra która udowadnia mi, że nie musi być wodotrysków, żeby dobrze się bawić.
-
Halo Halo, Trochę nieładnie zrobiłem, że zniknąłem, przepraszam @exp dziękuje za wzięcie udziału Chciałem popykać w tego quake'a ale link wygasł. Niemniej jednak, wygrałeś. Wygrałeś i obiecałem nagrodę, także proszę, wybierz sobie coś Poczytałem o tej twojej gierce i jeszcze bardziej chcę zagrać.
-
#gra na lige Kiedy w wiedźminie Geraltowi rośnie broda z czasem, tak w moim świecie roślinki usychają bez podlania :>
-
Dobrze, a więc 1 września (Niedziela) zakończenie konkursu^^ Przypominajmy sobie nawzajem, bo ja też lubię zapominać
-
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
Używając show_debug_message() sam decydujesz co ma Ci wypisać. Możesz tam wprowadzić zmienną, albo dać jakiś string typu show_debug_message("Ta linijka kodu wykonała się - system poruszania") albo coś w ten deseń. Pomaga odkryć to, gdzie program liczy coś inaczej niż mieliśmy to w głowie. A dlaczego nie? animacja otrzymania obrażeń, albo animacja utknięcia w jakieś pułapce. Musisz wiedzieć podstawowe rzeczy: sprite_index - obraz bądź animacja, który dany obiekt aktualnie wyświetla image_index - klatka animacji; Jeśli sprite_index posiada np. 13 klatek, to image_index ustala która z nich dokładnie ma być wyświetlona image_speed - prędkość odtwarzanej animacji Generalnie te trzy funkcję będą Ci potrzebne przy manipulacji animacją. No może jeszcze to: image_number - zwraca liczbę klatek w animacji; Czyli jeśli masz 13 klatek, to image_number zwróci liczbę 13 -
Pasowałoby zakończenie konkursu koniec sierpnia/września? Tylko czy wtedy wszyscy o tym nie zapomną Czy lepiej może przesunąć termin, a czas konkursu znowu wyniósłby dwa tygodnie?
-
No ja się sam wyłamałem, także miejmy nadzieję, że druga edycja wypali @exp Znaczy kiedy? Przyszłe wakacje?
-
a więc, ktoś coś zrobił?
-
dopasowanie textboxa do rozmiaru kilku view
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
Nie wiem jak operujesz rozdzielczością, ale może spróbuj tak: draw_rectangle(view_xview + 200, (view_yview + view_hview) - 400, (view_xview + view_wview) - 200, (view_yview + view_hview) - 100, false); albo draw_rectangle(view_xview + 200, (view_yview + view_hport) - 400, (view_xview + view_wport) - 200, (view_yview + view_hport) - 100, false); Napisałem z pamięci, nie testowałem. -
gm:s posiada jeszcze current_day i current_month. Myślę, że sczytanie daty do zmiennych przy pierwszym uruchomieniu i później sprawdzanie czy minęło 14 dni, jest jakimś rozwiązaniem Tylko, że jeśli chcesz ominąć spryt użytkowników, musiałbyś sczytywać datę z internetu, bo tak lokalnie mogą sobie zmienić
-
Chyba kumam, aczkolwiek mam dziś mózg na wstrzymaniu. Zrób coś takiego w 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 true; } else return true;
-
Na górze zrobiłem Ci poprawioną wersję no_text. Pozamieniaj true na false, a false na true.
-
Zmień tu warunki. Co prawda, będzie to działać odwrotnie do nazwy funkcji, ale może o to chodzi. //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 false; } else { return true; } } else return true; } else return true; edit: Ok, czyli nazwa funkcji jest odwrotna do opisu, czyli powinno to działać edit2: A nie czekaj, opis do nazwy się zgadza... coś mi dzisiaj mózg szwankuje
-
albo robisz w if'ie if(!no_text()) {} albo zmień skrypt no_text() aby zwracał wynik odwrotnie
-
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; } } Chodzi w miejscu, znaczy, że chodzi bez animacji, tak?
-
Okej, trochę mi to zajęło, przez organizacje twojego kodu, który jest pisany makabrycznie, bez żadnego schematu. Musisz trochę nad tym popracować, bo wtedy łatwiej wyłapać błędy. Na początek, zmieniamy skrypt 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; i zmieniony cały step (zobacz sobie, jak on teraz wygląda. Widać, który if jak zagnieżdżony w którym ifie. Widać gdzie dana klamra otwiera kod a gdzie go zamyka. Nigdy nie możesz mieć dwóch klamer zamykających w tej samej linii, w tym samym pionie. ///@desc pankracy ///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 } } // *********************************************************************************************************************************** /// ------------------ tutaj tak jak mowiłem, że mogą być konsekwencję naprawiania tego błedu na skróty. Jestem pewien, że no_text() * // ------------------- zwraca wartość true albo false, jeśli tekst jest albo go nie ma. Tutaj tego nie sprawdza, bo nie ma w ogóle * // ------------------- zmiennejpozwalającej to sprawdzić, dlatego omija calutki kod * // ------------------- ROZWIĄZANIE: przerobienie funkcji no_text() * // *********************************************************************************************************************************** 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 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; } Miejmy nadzieje, że się nigdzie nie kopnąłem. PS: trochę się te nawiasy porozjeżdżały, gdy je wkleiłem na forum (?)
-
zapodaj cały kod, który mieści skrypt no_text(), bo jestem pewien, że zwraca true albo false i chce wiedzieć, jakie argumenty za tym stoją
-
Kilka zasad rozwiązywania problemu: 1. Kombinuj 2. Jeśli masz jakiś pomysł, nie pytaj na forum czy jest dobry, tylko go wypróbuj. 3. Rób backupy, jeśli zmieniasz dużo kodu i boisz się, że później nie wrócisz do punktu startowego, jeśli coś nie wyjdzie 4. Ogólnie rób backupy 5. Co robi funkcja no_text()? Po if'ie z tą funkcją masz napisany cały kod na poruszanie się, a skoro global.textq nie istnieje, to no_text() się nie wykonuje, a z tym cały kod chodzenia i animacji
-
Error1: //już Ci go dałem wyżej ._. ///TU JEST TEN BLAD DRUGI 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 { /// dodaj reszte kodu Error2 jest wykonany w endstepie, ale prawdopodobnie robisz te same ify co powyżeć, zagnieżdzając w nie tego ifa z błędem 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()) { Miej na uwadze to, że ta naprawa błędu może nie być zbyt dobra, bo to może być pominięcie ważnych linijek kodu dla załadowania się gry (może, nie musi). Wydaje mi się, że powinieneś jakoś zainicjować ds_queue_empty(global.textq) przed załadowaniem gry, żeby mógł sobie doczytać wszystko. Aczkolwiek to tylko domysły, bo to wszystko zależy jak wygląda cały kod z nimi związane, a tego raczej nie ogarnę.
-
Daj treść tych błędów, bo nie wiem w czym problem. 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 odwatrzana sekwencja tekstowa textboxa { /// } } } PS: kopiowanie bezmyślnie kodu i wklejanie do swojego projektu nie nauczy Cię wiele :/ trzymam kciuki za skończenie twojego magnum opus ale później radziłbym powtórzyć podstawy.
-
to zrób na odwrót