Skocz do zawartości

romowa z NPC - problem


sagi

Rekomendowane odpowiedzi

na podstawie algorytmów wyżej wymienionych autorów próbuję zrobić rozmowę z "botem", w zależności od tego co wybiorę to bot odpowiada, oczywiście to działa tylko w teorii. Próbuję to zrozumieć już od tygodnia i jako tako zrozumiałem zasadę działania skryptów a kod w step bota wygląda tak:

 

GML
depth=-y;

 

if distance_to_object(obj_hero)<10 and no_text() and keyboard_check(vk_space)

{

 

 

status=1;// w create jest status=0

speed=0;

 

 

if status=1

{

add_text('Czesc! pogadamy?');

status=2;

}

if status=2

{

wyb_odp('pogadamy?','tak','nie','','');

status=3;

}

if status=3 and global.odp=2

{

add_text('to nie');

//status=-3

}

if status=3 and global.odp=1

{

add_text('jestem franek');

status=4;

}

if status=4

{

wyb_odp('odp:','milo mi','jestem mariusz','ale masz smieszne imie','bywaj');

status=5;

}

if status=5 and global.odp=4

{

add_text('nie przedstawiles sie ale dobra NARA');

//status=-3;

}

if status= 5 and global.odp=3

{

add_text('ciekawe jakie jest twoje');

status=6;

}

if status=5 and global.odp=2

{

add_text('milo mi');

}

if status=5 and global.odp=1

{

add_text('mi rowniez, ale jak sie nazywasz?');

status=7

}

if status=6

{

wyb_odp('odp do 3','nie takie smieszne','twoje i tak smieszniejsze','','');

status=8;

}

if status=8 and global.odp=2

{

add_text('spierdalaj');

}

if status = 8 and global.odp=1

{

add_text('nie odzywaj sie do mnie');

}

if status=7

{

wyb_odp('odp do 1','mariusz','wybacz musze juz isc','','');

status=9;

}

if status =9 and global.odp=1

{

add_text('no to czesc');

}

if status=9 and global.odp=2

{

add_text('to fajnie ale musze juz isc');

}

 

 

 

 

 

 

 

 

}

if speed=0 and no_text()

{

speed=0.5;

}

 

 

nie mam pojęcia jak to ugryźć a bez tego ani rusz. jeśli ktoś nie wie o co mi chodzi to proszę zadawać pytania, a jak ktoś zna rozwiązanie to będę wdzięczny za podzielenie się tą wiedzą.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

GML
if status=1

{

add_text('Czesc! pogadamy?');

status=2;

}

if status=2 //jest prawdziwe, ustawione dwie linijki wcześniej

{

 

Zauważ, że ustawiasz status = 2, a za chwilę go sprawdzasz (skrypt wykonuje się dalej!), co powoduje, że warunek if status=2 jest prawdziwy. Powinno być chyba tak:

 

GML
if status=1

{

add_text('Czesc! pogadamy?');

status=2;

}

else if status=2

{

Odnośnik do komentarza
Udostępnij na innych stronach

spróbowałem wprowadzić else i wyskoczył mi kolejny problem

 

GML
ERROR in

action number 1

of Step Event

for object obj_ncp_1:

 

Error in code at line 26:

if status=3 and global.odp=1

^

at position 29: Unknown variable odp

 

 

a global.odp mam zadeklarowane w create innego obiektu odpowiedzialnego za wybór odpowiedzi którego instancja tworzona jest przez skrypt:

GML
if !instance_exists(obj_wyb_odp) then instance_create(20,20,obj_wyb_odp);

obj_wyb_odp.pyt = argument0

obj_wyb_odp.op1 = argument1

obj_wyb_odp.op2 = argument2

obj_wyb_odp.op3 = argument3

obj_wyb_odp.op4 = argument4

 

wrzuciłem plik:

http://www.gmclan.org/up7678_12_teksty_rob.html

Odnośnik do komentarza
Udostępnij na innych stronach

może nie jestem dobry w gml, ale powiedz mi co Twoim zdaniem oznacza ta linia:

GML
if !instance_exists(obj_wyb_odp) then instance_create(20,20,obj_wyb_odp);

 

bo według mnie: jeżeli nie prawda że instancja_istnieje(obiekt) to instancja_stwórz(x,y,obiekt);

 

a właśnie w obiekcie obj_wyb_odp jest zadeklarowanie zmiennej, czyli jeżeli w graczuNPC odwołuje się do skryptu wyb_odp() to ten skrypt automatycznie tworzy obiekt czyli również zmienną global.odp.

 

jeśli coś źle rozumuje proszę o poprawienie mnie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

witam

mam jeszcze jeden problem, a dokładniej chodzi o wciskanie klawisza enter, gdy rozmawiam to jest taki moment w dialogu że nie wyświetla tekstu i żeby zaczeło tekst wyświetlać nalezy kliknąć 2 razy enter, może to nie jest taki wielki problem ale jednak nie wiem jak go usunąć czy przerobić coś w obj_text w evencie wciskania klawisza enter, żeby mi nie likwidowało tej ramki tylko żeby wyświetlało cały czas tekst, a po wybraniu odpowiedzi likwidowało tekst a wyświetlało tekst odpowiedzi. mam nadzieję że nie piszę zbyt zagmatwanie.

 

oto plik:

http://www.gmclan.org/up7678_12_teksty_rob1ee5b3.html

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

przepraszam że dawno sie nie odzywałem, ale mam mnóstwo pracy na głowie.

dziękuję za pomoc, choć nie jest to do końca rozwiązane ale jak zrobię krótszy dialog to będzie wyglądało jakby działało prawidłowo,

plik z dialogiem narazie zostawię(może akurat komuś się przyda) chyba że pierwotni autorzy będą chcieli aby go usunąć.

 

jeszcze raz dziękuję i przepraszam za opuszczenie tematu na tak długo.

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Mozesz zrobic tez cos takiego

 

GML
pytanie = show_message_ext('Witaj','Siemka','Witaj jestem Mariusz','Nara');

 

switch (pytanie)

{

case 1:

{

pytanie2 = show_message_ext('Co u Cb?','Dobrze','Njapierw powiedz co u Cb','A po co ci to??');

}

 

{

case 2:

{

pytanie3 = show_message_ext('Ja jestem Adam, co u Cb slychac??','Dobrze','Njapierw powiedz co u Cb','A po co ci to??');

}

}

 

{

case 3:

{

spier*****

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

też pomyślałem o wykorzystaniu tego okienka, ale już zrozumiałem działanie tamtego skryptu więc zostane przy nim, po za tym mam już go użytego w 6 room'ach więc nie chciałbym teraz wszystkiego zmieniać, ale dziękuję za Twoją odpowiedź.

 

pozdrawiam

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ę...