pankracy Opublikowano 31 Maja 2019 Udostępnij Opublikowano 31 Maja 2019 Cześć wszystkim, Próbuje zrobić porządek w intrze gry;-) tzn mam textboxa i z tekstem i chciałbym odpowiednio wrzucić obrazki opisujące historie bohatera,które zmieniają się po pokazaniu się odpowiedniej części tekstu. A więc tak: add_text('Czesc Bohaterze co slychac .'); obrazek 1 add_text('Wszystko w porzadku a co u ciebie? .') obrazek 2 add_text('Wszystko w porzadku jade do pracy .') obrazek 3 add_text('A Ja musze w domu zostac .') obrazek 4 Tych obrazków mam 8 w create mam tak add_text('Czesc Bohaterze co slychac .'); add_text('Wszystko w porzadku a co u ciebie? .') add_text('Wszystko w porzadku jade do pracy .') add_text('A Ja musze w domu zostac .') w Step if no_text() then room_goto( swiat1); press<space> go to room swiat1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 31 Maja 2019 Administratorzy Udostępnij Opublikowano 31 Maja 2019 OK, a co robi addtext ? buduje tablicę ? no to zrób drugą z obrazkami i wstawiaj -1 jeśli nie ma obrazka, i na tej podstawie wyświetlaj. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 1 Czerwca 2019 Autor Udostępnij Opublikowano 1 Czerwca 2019 Dobrze:-) Jakiś przykład? Tej drugiej tablicy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Czerwca 2019 Administratorzy Udostępnij Opublikowano 1 Czerwca 2019 No kod będzie taki sam jak do pierwszej chyba? Jesteś w stanie podejrzeć ten kod od rozszerzenia czy nie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 1 Czerwca 2019 Autor Udostępnij Opublikowano 1 Czerwca 2019 Tak mam możliwość podejrzenia kodu.Tak to wygląda trzy skrypty skrypt1 scr_ini global.textq=ds_queue_create(); global.text_get=true; skrypt 2 no_text if ( ds_queue_empty(global.textq) and global.text_get=true ) then return true else return false; skrypt 3 add_text //dodajemy 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 teraz tak wygląda obj_text create alpha=0; //przeswitywalnosc step=0; //kolejne zadanie przez nas wykonywane - KROK text=''; //tekst jaki mamy wyswietlic leght = 0; Step 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; } } step cd ///Sterowanie padem if(key_check_pressed(key.jump)) { event_perform(ev_keypress,vk_enter); //wykonaj event nacisniecia klawisza enter } 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); Tą nową tablice muszę stworzyć w skrypcie domyślam się,tylko dla przykładu jak ma to wyglądać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Czerwca 2019 Administratorzy Udostępnij Opublikowano 1 Czerwca 2019 Tak naprawdę tworzysz drugi raz to samo, tylko zamiast stringów podajesz obrazki Nie napiszę Ci od zera, bo raz, ze to sporo roboty a dwa, że nie korzystam z GMS 1.4 tylko 2.0, bo GMS 1.4 jest porzucony już niemal rok. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 1 Czerwca 2019 Autor Udostępnij Opublikowano 1 Czerwca 2019 ok wywalam stringi wstawiam obrazki robię kopie tego samego;D No ja póki swojej gry nie ukończę to muszę zostać na gms 1.4 A właśnie może się orientujesz...projekty z gms 1.4 można importować w gms 2.0? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Czerwca 2019 Administratorzy Udostępnij Opublikowano 1 Czerwca 2019 Tak można bez problemu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 2 Czerwca 2019 Autor Udostępnij Opublikowano 2 Czerwca 2019 Kurcze...tylko jednego nie przewidziałem...Ja tego obecnego textboxa używam w całej grze..i jak tu dodam obrazki,to te obrazki będą mi się też pojawiać w samej grze..a ja chcę żeby wyłącznie w intrze gry pojawiły się te obrazki:-( No i kicha... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 2 Czerwca 2019 Autor Udostępnij Opublikowano 2 Czerwca 2019 Gnysek można do Ciebie wysłać maila? chciałbym pogadać prywatnie;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 2 Czerwca 2019 Udostępnij Opublikowano 2 Czerwca 2019 a nie możesz zduplikować skryptu textbox i nazwać go np. textbox_intro i użyć go tylko podczas odtwarzania intro? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 2 Czerwca 2019 Autor Udostępnij Opublikowano 2 Czerwca 2019 Mogę...ale teraz walczę z tymi string..źle mi coś idzie:/ bo jak wywalę string i wstawię żeby mi się rysował obrazek to już nic nie wyświetla.. Niby ten textbox nie jest skomplikowany,ale jest zabawy z tym żeby go dostosować do wyświetlania ilustracji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Czerwca 2019 Administratorzy Udostępnij Opublikowano 3 Czerwca 2019 @pankracy ponieważ piszesz, że robisz na GMS 1.4 to średnio mogę pomóc, nie chce mi się go instalować specjalnie. Ale z głowy zrobiłbym tak: (wielokropek oznacza, że zostaje poprzedni kod). scr_ini: global.textq=ds_queue_create(); global.imageq=ds_queue_create(); global.text_get=true; add_text (od teraz ma dwa argumenty, ("tekst", -1) gdy nie ma obrazka i ("tekst", spr_jakis) gdy jest obrazek: ds_queue_enqueue(global.textq,argument0); ds_queue_enqueue(global.textq,argument1); if !instance_exists(obj_text) then instance_create(0,0,obj_text); --- obj_text create: alpha=0; //przeswitywalnosc step=0; //kolejne zadanie przez nas wykonywane - KROK text=''; //tekst jaki mamy wyswietlic image = -1 // obrazek jaki mamy wyswietlic leght = 0; step: 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 image=ds_queque_dequeue(global.imageq); .... /// KROK 3 ... text=''; image = -1; global.text_get=true;//ustaw, ze mozna juz pobierac tekst step=0; } } draw: ... // cały poprzedni kod if (image > -1) { draw_sprite(image, 0, 10, 10); // alphę itd. sobie już dopisz sam w draw_sprite_ext ;) } Jeśli dobrze liczę, dodałem raptem 7 linijek kodu. Niewiele trzeba było zmienić, żadnej zabawy, tylko druga kolejka i druga zmienna. Nie wiem dlaczego aż tyle problemu to zajęło, skoro to jest niemal skopiowanie tego samego kodu, tylko zamiast "global.textq" i "text", używasz "global.imageq" i "image". No i nie przypisujesz stringa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 3 Czerwca 2019 Autor Udostępnij Opublikowano 3 Czerwca 2019 Dzięki Piotrek Niestety nie działa Ja chyba coś spierdzieliłem... Ostatecznie wygląda to tak: scr.ini global.textq=ds_queue_create(); global.imageq=ds_queue_create(); global.text_get=true; add_text ds_queue_enqueue(global.textq,argument0); ds_queue_enqueue(global.textq,argument1); if !instance_exists(object309) then instance_create(0,0,object309); Obj_text Create alpha=0; //przeswitywalnosc step=0; //kolejne zadanie przez nas wykonywane - KROK text=''; //tekst jaki mamy wyswietlic image = -1 // obrazek jaki mamy wyswietlic leght = 0; Step 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 image=ds_queue_dequeue(global.imageq); 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=''; image = -1; 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); if (image > -1) { draw_sprite(introcolor, 3, 35, 35); // alphę itd. sobie już dopisz sam w draw_sprite_ext ;) } Coś popierdzieliłem... Tylko hmmmm...patrząc na kod to obrazki będą się po prostu same zmieniać...bez względu na treść tekstu...A zależy mi na tym żeby obrazki zmieniały się po wyświetleniu danej części tekstu zgodnego z historią na obrazku.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Czerwca 2019 Administratorzy Udostępnij Opublikowano 3 Czerwca 2019 draw_sprite(introcolor A co to jest ten introcolor ? A jak chcesz zmianę obrazka na jakimś etapie tekstu (w połowie), no to jest już naprawdę dużo roboty, cały dzień. Chyba w kodzie źródłowym cinders coś takiego bylo, masz może go z humble bundle ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 3 Czerwca 2019 Autor Udostępnij Opublikowano 3 Czerwca 2019 introcolor to obrazek pokazowy składający się z kilku obrazków;-) nie nie mam humble bundle:-( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 3 Czerwca 2019 Autor Udostępnij Opublikowano 3 Czerwca 2019 o to by było idealne coś podobnego https://www.humblebundle.com/store/cinders?hmb_source=search_bar Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Czerwca 2019 Administratorzy Udostępnij Opublikowano 3 Czerwca 2019 @pankracy To jednak Solstice było, ale obie gry są niemal identyczne. TeeGee na pewno się nie pogniewa jak się podzielę w celach edukacyjnych, skoro i tak dawał do kodu dostęp w ramach Humble. https://drive.google.com/open?id=1y9cA4R9m-KBrLuM8tHhJsTQjY5temFz1 Ostrzegam jednak, że to spory kod będzie (poznasz zmianę tła czy efekty po kodzie podobnym jak bbcode, np. [do_something=1]). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 3 Czerwca 2019 Autor Udostępnij Opublikowano 3 Czerwca 2019 Dziękuje:-) Piotrze, Podziękuje też TeeGee;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 4 Czerwca 2019 Autor Udostępnij Opublikowano 4 Czerwca 2019 Powoli rozgryzam ten kod;-) ktoś naprawdę nie źle się narobił.wszystko jest napisane w skryptach. Mam pytanie do mojego wyżej kodu. narysowałem sobie osobną grafikę textboxa..i chciałbym go wstawić zamiast tego co jest obecnie..teraz się zastanawiam której funkcji użyć i podmienić grafikę textboxa... jak najprościej to zrobić...? I jak wstawić w lewym rogu textboxa sprita? tak jak tu np https://marketplace.yoyogames.com/assets/2195/ctb-ced-s-textbox-demo Dołączyć Tag do każdego wiersza tekstu coś jak np [speaker = charactername]? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Czerwca 2019 Administratorzy Udostępnij Opublikowano 4 Czerwca 2019 Trochę tak jak ja to napisałem, dodatkowe zmienne, oznaczające własnie avatar, może imię osoby, może rodzaj tła i na tej podstawie resetować zmienne po kazdym tekście i czytać nowe. Generalnie ja napisałem coś takiego jak w solstice/cinders na swoje potrzeby w jakieś 6-8h, ale nie nadaje się do udostępnienia tak ot, bo 50% kodu jest zależna od wielu innych rzeczy w grze, a nie będę dawał połowy gry to nie jest łatwe zagadnienie i wymaga napisania niemalże parsera prostego języka programowania (taki bardziej znacznikowy w sumie, no ale jednak). Jak ma się już pierwszą komendę to potem z górki, ja mam tak zrobione nawet animacje postaci (przemieszczają sie, obracają itd.) i nawet można podawać prędkość i czas trwania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 4 Czerwca 2019 Autor Udostępnij Opublikowano 4 Czerwca 2019 Naprawdę jestem pełen podziwu dla pracy jaką włożyli chłopaki żeby coś takiego stworzyć.. Pięknie to wygląda zarówno textbox jak i prolog...wygląda to zjawiskowo na tej księdze;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się