Skocz do zawartości

Przerwanie wykonywania kodu


Dawidds

Rekomendowane odpowiedzi

A mianowicie, jak zrobić własne show_message().

 

Pierwsze, o czym pomyślałem, to pętla nieskończona.

Ale... to nie to.

Wtedy gra "zamrze" dopóki nie wcisnę jakiegoś klawisza.

 

A nie ma zamrzeć, bo po najechaniu myszą na guzik OK ma się on zrobić "jaśniejszy" :P

 

Później pomyślałem, aby tworzyć obj_msg, a on by w swoim Create dezaktywował wszystkie instancje poza nim samym. Ale to też nie działa, bo najpierw skończy się wykonywać kod pierwszego obiektu, a dopiero później się deaktywuje.

 

Także pytam - jak zrobić włane show_message() :P ?

Bo te GM'owe są do bani...

Odnośnik do komentarza
Udostępnij na innych stronach

Zawsze sobie mozesz customiznac te brzydkie show_message i zrobic z nich ladniejsze, mianowicie

message_background(back) Sets the background image for the pop-up box for any of the functions above. back must be one of the backgrounds defined in the game. If back is partially transparent so is the message image (only for Windows 2000 or later).
message_alpha(alpha) Sets the alpha translucence for the pop-up box for any of the functions above. alpha must lie between 0 (completely translucent) and 1 (not translucent) (only for Windows 2000 or later).
message_button(spr) Sets the sprite used for the buttons in the pop-up box. spr must be a sprite consisting of three images, the first indicates the button when it is not pressed and the mouse is far away, the second indicates the button when the mouse is above it but not pressed and the third is the button when it is pressed.
message_text_font(name,size,color,style) Sets the font for the text in the pop-up box. (This is a normal Windows font, not one of the font resources you can out in your game!) style indicates the font style (0=normal, 1=bold, 2=italic, and 3=bold-italic).
message_button_font(name,size,color,style) Sets the font for the buttons in the pop-up box. style indicates the font style (0=normal, 1=bold, 2=italic, and 3=bold-italic).
message_input_font(name,size,color,style) Sets the font for the input field in the pop-up box. style indicates the font style (0=normal, 1=bold, 2=italic, and 3=bold-italic).
message_mouse_color(col) Sets the color of the font for the buttons in the pop-up box when the mouse is above it.
message_input_color(col) Sets the color for the background of the input filed in the pop-up box.
message_caption(show,str) Sets the caption for the pop-up box. show indicates whether a border must b e shown (1) or not (0) and str indicates the caption when the border is shown.
message_position(x,y) Sets the position of the pop-up box on the screen.
message_size(w,h) Fixes the size of the pop-up box on the screen. If you choose 0 for the width the width of the image is used. If you choose 0 for the height the height is calculated based on the number of lines in the message

:P

Odnośnik do komentarza
Udostępnij na innych stronach

Nie o to mi chodzi.

 

W tamtym przykładzie, gra się pauzuje - ale nie automatycznie.

Jeśli bym dał:

GML
add_text("msg1");

show_debug_message("code1");

add_text("msg2");

show_debug_message("code2");

, to jeszcze nawet 1. okienko by się nie skończyło wpisywać, a już zobaczyłbym obydwie wiadomości (code1 i code2) w GM'owym debugu - czyli inaczej rzecz biorąc, kod po pierwszym add_text() wykonałby się od razu.

 

A ma się zrobić dokładnie tak, jak w GM'owym show_message() - kod będzie się wykonywał dalej dopiero, jak kliknę OK.

 

Saus:

1. Nie daje mi to pełnej kontroli :P Chciałbym dawać okienka do wprowadzania 2 inputów, itp...

2. A na dodatek te okienka są... no, głupie :P Niewydajne może nawet...? :P

 

Tymon: A niby jak ^_^ ?

Odnośnik do komentarza
Udostępnij na innych stronach

GML (objwiadomosc)
instance_deactivate_all( true )

instance_activate_object( self )

 

albo lepiej:

tam gdzie masz pokazywanie tej wiadomości:

GML
instance_deactivate_all( true )

instance_create( 50 , 50 , obj_wiadomosc )

przy usuwaniu:

GML
instance_activate_all( true )
;)
Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

keyboard_wait(); lub układanie i ściąganie ze stosów etc. - innej opcji nie ma.

 

Nie da się zrobić w komputerze tak, ze on czeka na ciebie - nawet jak nic nie robi, to cały czas przerzuca jakiś kod.

Np. w assemblerze wygląda to tak:

 

    ...
    MOV R1,@A
KONIEC:
    NOP;brak operacji
    LJMP KONIEC;skacze do etykiety koniec

 

Wniosek z tego taki, że gdy program na coś czeka, tak naprawdę stoi w pętli która nic nie robi.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Ostatnia linijka mówi o pętlach :P Chodziło mi o to, że nie da się zrobić tak, żeby naprawdę nic się nie działo - zawsze musi się wykonywać jakiś kod, najwyżej nie zmienia on nic w działaniu programu i jest tylko jakąś pustą pętlą.

Odnośnik do komentarza
Udostępnij na innych stronach

Deaktywacja instancji nie działa, pisałem - GM najpierw wykona do końca event, a dopiero później zdezaktywuje instancję.

 

Chyba rzeczywiście najprościej będzie blokować obiekty zmienną...

 

Edit: Właśnie, przecież pętlę mogę dać w Drawie :P

Dzięki Snake =D

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