Skocz do zawartości
  • 0
LolikZabijaka

Pole tekstowe - gryzie się z panelem.

Pytanie

Joł! Problem wygląda tak, skorzystałem z pola tekstowego RPG od Gnyska, wszystko elegancko, ale kiedy wyświetla mi się tekst, po przewinięciu i zamknięciu go, znika mi z ekranu także HUD.

Pytanie brzmi: Dlaczego ? Dam tu kody z obiektów odpowiedzialnych za to :

 

DRAW PANELU

<code> 

with o_gracz{

draw_set_font( font0 ) ; draw_set_color( c_white ) ; draw_set_halign( fa_center  )
xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu
yy = view_yview[ 0 ] + view_yport[ 0 ] +1

 if ( bron !=  luj ) //jezeli aktualna bron != nic
{
    draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni
    draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo
}      

if bron=  luj {
 draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni
 }

 draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_teal,0,1,1); 
   draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,make_color_rgb(0,90,0),0,1,1);   
if armor>0{
draw_healthbar(view_xview+32,view_yview+32,view_xview+150,view_yview+36,armor,c_white,c_gray,c_gray,0,1,1); 
}
if misja0=0{
 
 draw_set_font(f_misje) make_color_rgb(221,221,221);draw_set_halign( fa_left  ) ;draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Znajdź broń!' ) 
}
if misja0=1{
 
 draw_set_font(f_misje) make_color_rgb(221,221,221) ;draw_set_halign( fa_left  );draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Dostań się do rezydencji!' ) 
}
if misja0=2{
 
 draw_set_font(f_misje) make_color_rgb(221,221,221) ;draw_set_halign( fa_left  );draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Zabij Schumanna, oraz odbierz plany "Transferu Wschodnio-Niemieckiego"!' ) 
}

if misja0=3{
 
 draw_set_font(f_misje) make_color_rgb(221,221,221) ;draw_set_halign( fa_left  );draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Wezwij pomoc przez radiostację!' ) 
}
if misja0=4{
 
 draw_set_font(f_misje) make_color_rgb(221,221,221) ;draw_set_halign( fa_left  );draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Bierz dupę w troki Ty przebrzydły kurwiarzu!' ) 
}
}
with o_boh_trup
{

draw_set_font(f_misje) make_color_rgb(221,221,221) ;draw_set_halign( fa_left  );draw_text( view_xview[ 0 ] + 32 , view_yview[ 0 ] + 50 , 'Nie żyjesz...' ) 
}
 

</code>

 

 

 

Create o_text:

 

<code> alpha=0; //przeswitywalnosc
step=0; //kolejne zadanie przez nas wykonywane - KROK
text=''; //tekst jaki mamy wyswietlic
leght = 0;</code>

 

STEP:

 

<code>

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.2 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 += 5; // 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.2 else
        {
        //przeswituje juz tak ze bardziej nie moze
        alpha=0;
        text='';
        global.text_get=true;//ustaw, ze mozna juz pobierac tekst
        step=0;
        }
    }

</code>

 

DRAW:

<code>

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_yellow);
    draw_rectangle(vx+20,vy+600,vx+1260,vy+700,false);

//teraz malujemy obwodke
draw_set_alpha(alpha);
draw_set_color(c_black);
    draw_rectangle(vx+20,vy+600,vx+1260,vy+700,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+22,vy+720-20-100-2,string_copy(string(text),1,round(leght)),-1,596);

</code>

 

Press Space:

 

<code>

if leght!=string_length(string(text))
    {
    leght=string_length(string(text));
    exit;
    }

if step=2 then step=3;/*jezeli KROK jest rowny 2
(czyli wsyzstko zostalo rozjasnione) to przejdz do KROKU 3 - zwiekszaj
przezroczystosc*/

</code>

 

Co się ze sobą gryzie, gdzie może być babol? Pozdrawiam.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Daj na samym końcu eventu Draw:

draw_set_alpha(1)

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Dokładnie, w nowych wersjach GMS, draw_set_alpha() wpływa też na draw_sprite, więc może znikać dużo rzeczy. Ogólnie, draw_sprite korzysta z draw_get_alpha() zamiast z image_alpha. Z tego drugiego korzysta draw_self().

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×