Skocz do zawartości

Pytanko o akcję z textboxem


Deus

Rekomendowane odpowiedzi

Przede wszystkim pozdrawiam wszystkich GameMakerów :) adminów, moderatorów, i zwyczajnych userów tego forum. Na wstępie chciałbym zaznaczyć: Zaczynam pracę (zabawę jak kto woli) z Game Makerem 7.0 pro.

Zanim zacząłem pisać tego posta, poświęciłem ok 2 godziny na zapoznanie się z forum. Już wcześniej próbowałem sił z tym programem ale z niezadowalającym efektem. Mógłbym pisać bardzo długo więc przechodze do sedna sprawy :P

Planuję wykonać myślę że prostszą rzecz (nie tak jak większość osób - gry 3d zaawansowane rpg mmo itp) mianowicie coś w stylu talkbot'a - tzn. program w którym występuje miejsce do wpisywania tekstu i animacja postaci ;) np w gifie. Zrobiłem już kilka takich animacji (m.in. jak mówi mam na imie ... a ty?). widziałem na forum sporo postów z przykładami co trzeba poprawić aby działał textbox ale nie jak wykonać go od 0. Moje pytanie: czy się da i jak [prosiłbym o przykład] textbox w którym gdybym wpisał odpowiedź na w/w pytanie (imię) i kliknął enter aby uruchomiła się animacja i został odtworzony plik dźwiękowy np wav lub mp3 mówiące (miło mi cię poznać [wpisane do TextBoxa imię]).

<znalazłem przykład konsoli wykonanej przez pieter6 - myślę że jeśli nie można wykonać tego w TB to może w consoli: w konsoli był przykład /say ... i się wyświetlał tekst - chciałbym aby zamiast wyświetlania tekstu uruchomiła się animacja i plik dźwiękowy > podkreślony tekst to takie skrócenie postu ;) (przypominam że animacje i pliki dźwiękowe mam wykonane).

 

Przepraszam za spory pościk ale nie wiedziałem jak to skromniej napisać, z góry dziękuję za pomoc

 

(moje dotychczasowe osiągnięcia:

1) przeróbka przykładu street racing tekst grafika poprawiona animacja pojazdów itp

2) wykonanie playera mp3 pobierającego pliki z zdefiniowanej w skrypcie ścieżki, przyciski <play, stop, zmiana utworu>)

 

p.s. odpowiedzi na akcję: Text w TB + enter = akcja typu play sound lub play animation nie znalazłem a tylko o to mi chodzi :)

Odnośnik do komentarza
Udostępnij na innych stronach

do wpisywania tekstow uzyj funkcji keyboard_string i jezeli na piszesz np. Jacek to jedzie dalej :) ( wszystko za pomoca keyboard_string )

 

No tak niby to takie proste (napisałem że widziałem na forum takie wycinki - zrób to , napisz to) ale niestety jako początkujący już 2 raz ;) mógłbym cię prosić o jakiś przykładzik? wyłbym wdzięczny.

Jeżeli uda mi się osiągnąć zamierzony cel pokarzę efekty i oczywiście za pomoc (przykłady itp) umieszczę w kredytach. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Marek S. mial taki przyklad

 

chodzi ci o ten temat?

https://forum.gmclan.org/index.php?showtopic=5910&hl=

Jeśli tak to spoko, chociaż niezupełnie o to mi chodzi tzn. akcja - wpisz słowo jest ok, można dodać własne słowa. Teraz sprawa o którą mi chodzi, w tych przykładach jest "info" -otwiera się informacja :) "end" - zakoncz, a możesz ty bądź ktoś inny powiedzieć co trzeba wpisać aby odtworzyć dźwięk/animację?

 

by może było jaśniej:

 

if keyboard_string='end'
game_end()                -    (zamknij grę)

ok a co tu tzeba wpisać:

if keyboard_string='imię'
_____()                       -   (dzwiek.wav)
_____()                       -   (odegraj animację)

p.s. dzieki za wskazówkę gdzie szukać (szukałem przed napisaniem posta i nie znalazłem)

Odnośnik do komentarza
Udostępnij na innych stronach

create:
text=' ';
odpowiedz=' ';

step:
text=keyboard_string;

draw:
draw_text(20,400,text);
draw_text(20,10,odpowiedz);

press enter:
if text='witaj' || text='czesc' || text='elo'
{
odpowiedz='dziendonbry'
}
if text='gupek' || text='brzydal' || text='idiota'
{
odpowiedz='nielubie cie!'
}
if text='dawaj dzwiek'
{
sound_play(sound1) //np.
}

;) plosie

 

 

Deus jestes spox nie wyglądasz na nooba xd

 

 

 

edit: kurde sory za nawiasy pisałęm z glowy i tak jakos wyszlo xd

Odnośnik do komentarza
Udostępnij na innych stronach

Btw. użyj do tego switch:

switch( keyboard_string )
{
    case 'end': game_end();
    break;

    case 'bla': //akcja
    break;

    ...
}

 

dzięki za nowy przykład jak można zamknąć, przypominam że jestem nowicjuszem w tworzeniu :( , tak więc kolejny raz zapytam, co się pisze aby uzyskać tą akcję? - na twoim przykładzie:

 

{

case 'dzwiek': //____ ( jaka?) //open_sound czy jak? wpisywałem wszystko co mi do głowy przyszło i nic

break;

}

Poza tym tamta wersja Marka jest chyba lepsza ale to nieistotne (dźwięk wav mam jak coś)

Odnośnik do komentarza
Udostępnij na innych stronach

dzięki Zychu :) wreszcie to o co mi chodziło: sound_play(moj_plik_wav).

Jak robię całość tak jak mówisz pojawia mi się:

__________________________________________
FATAL ERROR in
action number 1
of  Step Event
for object object0:

COMPILATION ERROR in code action
Error in code at line 1:
   text=keyboard_string();

at position 6: Unknown function or script: keyboard_string

 

aczkolwiek sprawa z dźwiekiem sie wyjaśniła dzięki tobie (odgrywa dźwięk po wpisaniu słowa - dźwięk)

hmm. wiesz może co trzeba napisać aby po wpisaniu słowa (np: smutny - obrazek [wesoly.bmp] zmienił się na inny [np.smutny.bmp]? tzn. w klocku to jest "change sprite into" a w skrypcie (code)?

 

Jak to wykonam jesteś w kredytach :)

Odnośnik do komentarza
Udostępnij na innych stronach

play_sound wywala błąd: sound_play jest ok

ale teraz druga część z postu została.

co zrobić bywpisze słowo (np: smutny - to obrazek [wesoly.bmp] zmienił się na inny [np.smutny.bmp]? tzn. w klocku to jest "change sprite into" a w skrypcie (code)?

Odnośnik do komentarza
Udostępnij na innych stronach

właśnie staram się unikać klocków. dzieki za wyjaśnienie <keyboard_string bez nawiasów> :) powoli coś z tego wychodzi: rozmowa, dzwiek jest, zmiana emocji jeszcze nie dokońca :P i

zmiana grafiki ---> sprite_index=mikei gdzie mikei to nowy sprite, stary to mike :) niestety nie działa. Już rozumiem to działa jeśli mamy 1 sprite a w nim kilka subimage. No a problem jest taki że te subimages za szybko (i same) się zmieniają. mi zależy aby zmienić sprite1 w sprite2 po wpisaniu słowa np. zmiana.

Jeszcze taki problem gdy mam takie pole w którym wyświetla się odpowiedź:

 

tutaj jest przykład problemu.

 

https://gmclan.org/up2099_7_problem_z_tekstem.html

Odnośnik do komentarza
Udostępnij na innych stronach

Odnośnik do komentarza
Udostępnij na innych stronach

możesz tak zmieniac dowolną grafikę...

 

 

jak robię coś źle to proszę mnie popraw

 

zapodam screenami aby było szybciej i łatwiej przeglądać

Screeny jak i co wykonałem to pliki 1-6.gif:

a drugi problem to ten osobny plik:

https://gmclan.org/up2099.html

 

/\ /\ /\ <dopisano:>

I I I

 

Dzieki za przykład PsichiX mniejwięcej do tego zmierzałem, hmm zaczynam to rozumiec tak więc został tylko problem z długością tekstu

 

Sproboje z twojego wziac tylko to ze spritami :) próbuję coś z twojego zrozumiec ale już przy tym carrate=0 zwątpiłem (jakbyś miał chwilkę to mógłbyś conieco objaśnić) Nie chcę żeby myśleli o mnie noob bo nim nie jestem (na szczęście). Nie chcę zabierać czyichś przykładów po to aby mieć coś gotowe, co najwyrzej przeglądnąć gdzie sam robie błąd i poprawić hmm tu jest trochę inaczej tak więc komentarzyk co jest co by się przydał dla nowego :). Jeszcze raz thx

 

 

p.s. aha, jak sie kończą pytania wyskakuje:

___________________________________________
ERROR in
action number 1
of Draw Event
for object object1:

Error in code at line 3:
   if!(carrate<room_speed/2)draw_text(x,y,'[bot]: '+object0.say+'#[Ja]: '+object0.text+'_')

at position 59: Wrong type of arguments to +.

 

niestety nie znam się aż tak dobrze by to rozgryźć. zły typ argumentu dla + ? szczerze całej linijki nie rozumien.

Odnośnik do komentarza
Udostępnij na innych stronach

carrate to zmienna odpowiadajaca za wyswietlanie karetki (migający znak '_')

 

na koncu akcji z pytaniami, po kodzie

pytanie+=1

daj:

if(pytanie>ds_list_size(baza_pytan)-1)pytanie=0 // po skonczeniu zaczynaj pytac od nowa

Odnośnik do komentarza
Udostępnij na innych stronach

aha czyli ta karetka to ten migajacy kursor. Początkowo robiłem bez tego znaku, jak nie masz nic przeciwko to tą karetkę wykorzystam w swoim projekcie ;)

w każdym razie wymyśliłem coś takiego:

 

W Create:

alarm[1]=5*room_speed

W alarm:
say='czekam na odpowiedź'

W tej chwili czeka na odp na 1 pytanie. Gdy zada drugie nic sie nie dzieje. (nie czeka)

 

_________________________________________________________

(1 punkt poprawiony < jak ustawić czas już wiem>)

1) co muszę zmienić i jak aby bot "czekał na odp" na każde pytanie.

 

2) co zrobić aby gdy wpisze koniec odpalił się dźwięk i dopiero po jego końcu zamknęło cały projekt?

bo jak robię tak to zamyka od razu (bez dźwięku):

if text='koniec' 
{
sound_play(sound1)
game_end() 
}

3) sprite index działa :thumbsup: a jak zrobię animację np gifa (w gimpie), 3 klatki, ustawię w nim zmiana klatki co 1000ms (1 sekunda) i bez zapętlenia (animacja rusza się tylko 1 raz) to w gimpie działa tak jak powinno. Gdy wrzucę go do GM jako sprite to zasuwa z prędkością pokoju (30) i wtedy animacja zmienia się w prędkości ok 100ms (jeden po drugim).

 

<dodano>

4) jak musi wyglądać kod na powtórzenie pytania gdy powiem np:

 

if text='nie znasz' 
{
say='może znam'
([color=#CC0000]powtórzenie pytania 2[/color])  co wpisać ?
}

Odnośnik do komentarza
Udostępnij na innych stronach

2.

create:

endgame=0

twoj kod:

if text='koniec' 
{
sound_play(sound1)
endgame=1
}

potem w stepie na koncu:

if(endgame)
if!(sound_isplaying(sound1))
game_end()

 

3.

w create:

image_speed=0
image_index=0

kod zmiany sprita w stepie w switchu wykonania instrukcji bota:

zamiast:

sprite_index=sprite0
...
sprite_index=sprite1
...
sprite_index=sprite2

daj:

image_index=0
...
image_index=1
...
image_index=2

 

4.

if text='nie znasz' 
{
say='może znam'
pytanie-=1 // chodzi o to by po przejsciu pytania, pytanie mialo ten sam indeks
}

Odnośnik do komentarza
Udostępnij na innych stronach

4) dzieki za wyjaśnienie działa :thumbsup:

2) na razie mi nie wychodzi ale prawdzę jeszcze później czy może ja robię coś nie tak (jakiś błąd logiczny)

3) sprawdze później

1) trochę się wcześniej wyraziłem - nadal mam problem (działa mi tylko przy 1 pytaniu a nie przy wszystkich)

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...