Skocz do zawartości

Rozmowa - rpgdialog


kowal

Rekomendowane odpowiedzi

Witam wszystkich obecnych na forum. Mam problem. jak zrobi rozmowe z kolesiem tak jak w rpg? prubowałem, i zrobiłem to tak :

 

W create lowcy - naszego rozmowcy:

global.taklowca=0
global.ble=0//wartosc ktora wplywa na to ze pisze tylko spadaj a nie od nowa tekst

 

W step gracza - tym kim gramy:

wiadomosci();

 

No i teraz gdy gadamy z kolesiem to wykonywany jest ten skrypt:

 

{
   
   global.lowca1='TAYON:
   Witam cię wędrowcze nazywam się Tayon. Czy mogłbys mi powiedźiec gdzie ja się znalazłem?'

   global.lowca2='BINABIK:
   No człowieku to z toboą musi byc naprawdę źle ,że nie wiesz gdzie jestes hehe . Glupi człowiek, głupi.'

   global.lowca3='TAYON:
   Nie jestem glupi. Płynąłem statkiem, szalała buża, i... i niepamiętam co się stało puźniej.'

   global.lowca4='BINABIK:
   A skąd ja moge wiedziec co sie stało potem?'

   global.lowca5='TAYON:
   Nie o to mi chodzi. Chciałem tylko...'

   global.lowca6='BINABIK:
   Mowiłem ,że jestes głupi - sam sobie zaprzeczasz.'

   global.lowca7='TAYON:
   Aj skończmy z tym. Powiec mi tylko jaka to kraina.'

   global.lowca8='BINABIK:
   A z czym mam niby skończy? Czy ja cie zaczepiłem i wygadywałem jakies bzdury sam sobie przecząc?'

   global.lowca9='TAYON:
   Nie.'

   global.lowca10='BINABIK:
   No a więc widzisz hehe jestes tylko głupim człowiekiem nie to co ja mysliciel trol. A powracając do tamtego pytania to znajdujesz się na wyspie Naglimund.'

   global.lowca11='TAYON:
   Było tak od razu. Ok dzięki.'

   global.lowca12='BINABIK:
   Spadaj'

   }

   {
   if (global.ble=0)
   if distance_to_object(lowca)<8
   if (keyboard_check(vk_enter))
   global.taklowca=1
   }
   {
   if (global.ble=0)
   if (global.taklowca=1)
   if distance_to_object(lowca)<8
   if (keyboard_check(vk_enter))
   show_message(global.lowca1)
   }
   {
   if (global.ble=0)
   if (global.taklowca=1)
   global.taklowca=2
   }
   {
   if (global.ble=0)
   if (global.taklowca=2)
   show_message(global.lowca2)
   }
   {
   if (global.ble=0)
   if (global.taklowca=2)
   global.taklowca=3
   }
   {
   if (global.ble=0)
   if (global.taklowca=3)
   show_message(global.lowca3)
   }
   {
   if (global.ble=0)
   if (global.taklowca=3)
   global.taklowca=4
   }
   {
   if (global.ble=0)
   if (global.taklowca=4)
   show_message(global.lowca4)
   }
   {
   if (global.ble=0)
   if (global.taklowca=4)
   global.taklowca=5
   }
   {
   if (global.ble=0)
   if (global.taklowca=5)
   show_message(global.lowca5)
   }
   {
   if (global.ble=0)
   if (global.taklowca=5)
   global.taklowca=6
   }
   {
   if (global.ble=0)
   if (global.taklowca=6)
   show_message(global.lowca6)
   }
   {
   if (global.ble=0)
   if (global.taklowca=6)
   global.taklowca=7
   }
   {
   if (global.ble=0)
   if (global.taklowca=7)
   show_message(global.lowca7)
   }
   {
   if (global.ble=0)
   if (global.taklowca=7)
   global.taklowca=8
   }
   {
   if (global.ble=0)
   if (global.taklowca=8)
   show_message(global.lowca8)
   }
   {
   if (global.ble=0)
   if (global.taklowca=8)
   global.taklowca=9
   }
   {
   if (global.ble=0)
   if (global.taklowca=9)
   show_message(global.lowca9)
   }
   {
   if (global.ble=0)
   if (global.taklowca=9)
   global.taklowca=10
   }
   {
   if (global.ble=0)
   if (global.taklowca=10)
   show_message(global.lowca10)
   }
   {
   if (global.ble=0)
   if (global.taklowca=10)
   global.taklowca=11
   }
   {
   if (global.ble=0)
   if (global.taklowca=11)
   show_message(global.lowca11)
   }
   {
   if(global.taklowca=11)
   global.ble=1
   }   
   {
   if distance_to_object(lowca)<8
   if (keyboard_check(vk_enter))
   if (global.ble=1)
   show_message(global.lowca12)
   }

 

I właśnie chodzi mi o to czy mozna to w jakis łatwiejszy sposob zrobi??

Pamietac nalezy także, że gdy wcisniemy ok w pojawiajacym sie message to pojawia sie nastepny message z dialogiem nazego rozmowcy i tak cały czas az skonczy sie to co zaplanowałem aby powiedzieli.

 

dziękuje za pomoc - mam nadzieje , że jest to zrozumiałe :]

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast :

{
  if (global.ble=0)
  if distance_to_object(lowca)<8
  if (keyboard_check(vk_enter))
  global.taklowca=1
  }
  {
  if (global.ble=0)
  if (global.taklowca=1)
  if distance_to_object(lowca)<8
  if (keyboard_check(vk_enter))
  show_message(global.lowca1)
  }
  {
  if (global.ble=0)
  if (global.taklowca=1)
  global.taklowca=2
  }
  {
  if (global.ble=0)
  if (global.taklowca=2)
  show_message(global.lowca2)
  }
  {
  if (global.ble=0)
  if (global.taklowca=2)
  global.taklowca=3
  }
  {
  if (global.ble=0)
  if (global.taklowca=3)
  show_message(global.lowca3)
  }
  {
  if (global.ble=0)
  if (global.taklowca=3)
  global.taklowca=4
  }
  {
  if (global.ble=0)
  if (global.taklowca=4)
  show_message(global.lowca4)
  }
  {
  if (global.ble=0)
  if (global.taklowca=4)
  global.taklowca=5
  }
  {
  if (global.ble=0)
  if (global.taklowca=5)
  show_message(global.lowca5)
  }
  {
  if (global.ble=0)
  if (global.taklowca=5)
  global.taklowca=6
  }
  {
  if (global.ble=0)
  if (global.taklowca=6)
  show_message(global.lowca6)
  }
  {
  if (global.ble=0)
  if (global.taklowca=6)
  global.taklowca=7
  }
  {
  if (global.ble=0)
  if (global.taklowca=7)
  show_message(global.lowca7)
  }
  {
  if (global.ble=0)
  if (global.taklowca=7)
  global.taklowca=8
  }
  {
  if (global.ble=0)
  if (global.taklowca=8)
  show_message(global.lowca8)
  }
  {
  if (global.ble=0)
  if (global.taklowca=8)
  global.taklowca=9
  }
  {
  if (global.ble=0)
  if (global.taklowca=9)
  show_message(global.lowca9)
  }
  {
  if (global.ble=0)
  if (global.taklowca=9)
  global.taklowca=10
  }
  {
  if (global.ble=0)
  if (global.taklowca=10)
  show_message(global.lowca10)
  }
  {
  if (global.ble=0)
  if (global.taklowca=10)
  global.taklowca=11
  }
  {
  if (global.ble=0)
  if (global.taklowca=11)
  show_message(global.lowca11)
  }
  {
  if(global.taklowca=11)
  global.ble=1
  }  
  {
  if distance_to_object(lowca)<8
  if (keyboard_check(vk_enter))
  if (global.ble=1)
  show_message(global.lowca12)
  }

daj :

for(a=1;a<=12;a+=1;)
{
var text;
text='show_message(global.lowca'+string(a)+');';
execute_string(text);
}

Powinno działać.

 

EDIT

Ok, sprawdzałem i działa.

Odnośnik do komentarza
Udostępnij na innych stronach

A no tak tak samo robi sie w c++ ;)

 

No dobze to juz mamy z głowy, a co zrobic jesli własnie po wypowiedzeniu tego dialogu chcem aby za kazdym razem gdy do tego kolesia podejde i zaczne gadac to zeby on odpowiadał tylko tym tekstem:

 

global.lowca12='BINABIK:
Spadaj'

Odnośnik do komentarza
Udostępnij na innych stronach

A to jest bardzo proste, musisz dać coś w rodzaju przełącznika czyli nowej zmiennej

 

A więc :

if rozmawial=false
{for(a=1;a<=12;a+=1;)
{
var text;
text='show_message(global.lowca'+string(a)+');';
execute_string(text); 
rozmawial=true;}}
else
show_message(global.lowca12);

 

EDIT

Pamiętaj tylko żeby dać w create :

rozmawial=false;

;) bo inaczej wyskoczy error :D

Odnośnik do komentarza
Udostępnij na innych stronach

Wielkie dzieki działa wszystko ok. zmieniłem tylko, to co jest na czerwono. wielkie dzieki.

 

if distance_to_object(lowca)<8

if (keyboard_check(vk_enter))

if rozmawial=false

{

for(a=1;a<=12;a+=1;)

{

var text;

text='show_message(global.lowca'+string(a)+');';

execute_string(text);

rozmawial=true;

}

}

else

show_message(global.lowca12);

 

A teraz drugi problemik <_< Mam takie cos ze jesli mam odpowiednią iloś np. many, i gdy klikam na dany obiekt to kolo myszki pojawia mi sie inny obiekt - jakas tam strefa. No i mam kłopot z tym, ze ona zamiast raz zostac stworzona to cały czas tworza sie nowe obiekty strefy. Chodzi mi o to aby powstała tylko jedna taka strefa :D

 

Ty pewnie to w jednej linijce zrobisz ;) Z góry dziekuje za odpowiedz.

 

a to fragment mojego kody - niedopracowanego bo obiekty strefy cały czas sie tworza nowe zamiast jednego.

 

To w step przycisku:

 

x=view_xview+150
y=view_yview+450//obiekt zawsze stoi w 1 miejscu


{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
with(piorun)image_single=2
}
{
with(myszka) if not position_meeting(x,y,piorun)
with(piorun)image_single=1
}
{
with(myszka) if not position_meeting(x,y,piorun)//jeseli mana jest mniejsza niz 10 wtedy animacja 0
if (global.mana<10)
with(piorun)image_single=0
}
{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
if mouse_check_button(mb_left)
global.obszarc=1
}
{
if (global.obszarc=1)
instance_create(mouse_x,mouse_y,obszar)
}
{
if (global.obszarc=1)
with(obszar)x=random(10)
with(obszar)y=random(38)
}
{
if (global.obszarc=1)
global.obszarc=0
}

 

 

A to w create przycisku:

global.przycisk=0
global.obszarc=0

 

Edit

 

dopiero zauwazylem :rolleyes:

moj numer gg to : 9313186

Odnośnik do komentarza
Udostępnij na innych stronach

x=view_xview+150
y=view_yview+450//obiekt zawsze stoi w 1 miejscu


{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
with(piorun)image_single=2
}
{
with(myszka) if not position_meeting(x,y,piorun)
with(piorun)image_single=1
}
{
with(myszka) if not position_meeting(x,y,piorun)//jeseli mana jest mniejsza niz 10 wtedy animacja 0
if (global.mana<10)
with(piorun)image_single=0
}
{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
if mouse_check_button(mb_left)
global.obszarc=1
}
{
if (global.obszarc=1)
&& obszar.instance_count<1 // stprawdza ilość obiektów
instance_create(mouse_x,mouse_y,obszar)
}
{
if (global.obszarc=1)
with(obszar)x=random(10)
with(obszar)y=random(38)
}
{
if (global.obszarc=1)
global.obszarc=0
}

Może wyskoczyć error.

 

EDIT

A jak nie działa to spróbuj :

x=view_xview+150
y=view_yview+450//obiekt zawsze stoi w 1 miejscu


{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
with(piorun)image_single=2
}
{
with(myszka) if not position_meeting(x,y,piorun)
with(piorun)image_single=1
}
{
with(myszka) if not position_meeting(x,y,piorun)//jeseli mana jest mniejsza niz 10 wtedy animacja 0
if (global.mana<10)
with(piorun)image_single=0
}
{
if (global.mana >10)//musi byc wieksze od 10 aby ta animacja dzialala
with(myszka) if position_meeting(x,y,piorun)//gdy najedziemy myszką na obiekt to zmienia on animacje
if mouse_check_button(mb_left)
global.obszarc=1
}
{
if (global.obszarc=1)
var id_obszar;
id_obszar=instance_create(mouse_x,mouse_y,obszar);
with (id_obszar) instance_destroy();
}
{
if (global.obszarc=1)
with(obszar)x=random(10)
with(obszar)y=random(38)
}
{
if (global.obszarc=1)
global.obszarc=0

Odnośnik do komentarza
Udostępnij na innych stronach

Probowałem tego co napisałeś ale nie działało i zrobiłem tak ( jakos wymysliłem :P )

Troszke zmieniłem

To jest fragment:

 

{
if (global.obszarc=1)
instance_create(mouse_x,mouse_y,obszar);
global.obszarc=3
}



{
if (global.obszarc=3)
with(obszar)x=mouse_x

}
{
if (global.obszarc=3)
with(obszar)y=mouse_y
}

Odnośnik do komentarza
Udostępnij na innych stronach

{
if (global.obszarc=1)
instance_create(mouse_x,mouse_y,obszar);
global.obszarc=3
}

{
if (global.obszarc=3)
{with(obszar)x=mouse_x
with(obszar)y=mouse_y}
}

Tak jest łatwiej ;) No i czytelniej xD

 

EDIT

Widze że masz przyzwyczajenie do innego języka programowania ;)

 

EDIT 2

To ma być jakiś powarzniejszy projekt czy tylko nauka GMa ?

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