Skocz do zawartości

Problem z jednym z przykładów na forum


pankracy

Rekomendowane odpowiedzi

Cześć wszystkim i wszystkiego dobrego w Nowym Roku;)

 

mam mianowicie taki problem.

chciałem skorzystać z tego przykładu Gnyska

pole tekstowe/dialogi RPG

 

no i wywala mi taki błąd przy uruchomieniu tego dialogu

 

 

GML
FATAL ERROR in

 

action number 1

 

of Create Event

 

for object obj_room1_start:

 

 

 

 

Push :: Execution Error - Variable Get -5.textq(100212, -2147483648)

 

at gml_Script_add_text (line 11) - ds_queue_enqueue(global.textq,text);

 

################################################################################

############

 

--------------------------------------------------------------------------------------------

 

stack frame is

 

gml_Script_add_text (line 11)

 

called from - gml_Object_obj_room1_start_CreateEvent_1 (line 1) - add_text('Czesc bohaterze co slychac?!');

 

 

wychodzi na to,że skrypt odwołuje się do tych zmiennych global.textq,text,czy one nie powinny być zdefiniowane w create obiektu np obj_text?

ktoś wie jak to naprawić?

 

mam Game maker Studio

Odnośnik do komentarza
Udostępnij na innych stronach

text to zmienna lokalna czyli z tego obiektu który wykonuje kod. global.textq jest globalna. Obie muszą istnieć przed wykonaniem kodu. Oczywiście do global.textq musisz przypisać nowy ds_queue i to tylko raz!

Odnośnik do komentarza
Udostępnij na innych stronach

text to zmienna lokalna czyli z tego obiektu który wykonuje kod. global.textq jest globalna. Obie muszą istnieć przed wykonaniem kodu. Oczywiście do global.textq musisz przypisać nowy ds_queue i to tylko raz!

 

 

 

No dobra...żebym się nie pogubił Threef do obj_room1_start w create przypisuje tylko raz ds_queue?

jak to dokładnie ma wyglądać...

Odnośnik do komentarza
Udostępnij na innych stronach

To jest zmienna globalna. W dodatku przechowująca id struktury jaką jest ds_queue. ds_queue masz stworzyć tylko raz w całej grze i przypisać go do zmiennej globalnej. Jeżeli wykonasz takie przypisanie jeszcze raz gdzieś to przypiszesz nową strukturę do tej zmiennej. W ten sposób zapomnisz id starej struktury, a ona dalej będzie siedziała w pamięci jeżeli wcześniej jej nie usuniesz.

 

Więc masz się upewnić że kod global.textq=ds_queue_create() wykona się tylko raz w całej grze.

Odnośnik do komentarza
Udostępnij na innych stronach

To jest zmienna globalna. W dodatku przechowująca id struktury jaką jest ds_queue. ds_queue masz stworzyć tylko raz w całej grze i przypisać go do zmiennej globalnej. Jeżeli wykonasz takie przypisanie jeszcze raz gdzieś to przypiszesz nową strukturę do tej zmiennej. W ten sposób zapomnisz id starej struktury, a ona dalej będzie siedziała w pamięci jeżeli wcześniej jej nie usuniesz.

 

Więc masz się upewnić że kod global.textq=ds_queue_create() wykona się tylko raz w całej grze.

 

 

Dobrze...przypisze ten nowy ds_queue

 

A,dlaczego ten przykład działa bezproblemowo w gm 8.1 bo w studio właśnie ten błąd wywala.

Wybacz za głupie pytania.Po prostu chce się upewnić.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze...przypisze ten nowy ds_queue

 

A,dlaczego ten przykład działa bezproblemowo w gm 8.1 bo w studio właśnie ten błąd wywala.

Wybacz za głupie pytania.Po prostu chce się upewnić.

 

 

 

Dobra już to rozgryzłem..działa;) ale jest jeszcze jeden problem;) ok ładnie mi dialog wyświetla przy pierwszej planszy,ale w momencie,kiedy dialog sie już kończy,to znika mi cały hud gracza i obiekty,znikają niby są,ale ich nie widać:/

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra już to rozgryzłem..działa;) ale jest jeszcze jeden problem;) ok ładnie mi dialog wyświetla przy pierwszej planszy,ale w momencie,kiedy dialog sie już kończy,to znika mi cały hud gracza i część obiektów:/

 

Czasem sam siebie zaskakuje;) zaimportowałem do starej wersji gm 8.1 a potem ręcznie wszystko dodałem i utworzyłem w studio;)

działa wszystko,tyle,że w pokoju,gdzie mi się tekst wyświetla,to w momencie jak skończy się tekst wyświetlać,bo go przewinę,czy to enterem,czy spacją,to mój pasek hud miga po każdym naciśnięciu,czy to spacji,czy entera,a potem znika mi cały hud gracza,i wszystkie obiekty z planszy,zostają tylko pociski,tzn te obiekty co zniknęły one są tylko są niewidoczne..Powiedzcie mi co to może być za problem?

 

To jest dziwne,że kiedy przewijam tekst,enterem,czy spacją,to hud gracza miga za każdym naciśnięciem któregoś z tych przycisków,a jak już się tekst skończy,to zaraz hud znika z planszy i znikają obiekty..stają się niewidzialne..np elementy do zbierania znikną,ale można je zebrać ,bo słyszę tylko dźwięk,tak jak przesunąć dźwignię mogę,bo słyszę jej dźwięk jak to robię..itp..

Pomóżcie proszę:/

Odnośnik do komentarza
Udostępnij na innych stronach

Miałem dziś zły dzień w pracy, jest mi zimno i mam sraczkę wiec uwaga: wchodzi "Nega-Threef".

 

Postaram się dość krótko, bez zbyt dużej ilości bezpotrzebnego tłumaczenia, bo najnormalniej nie mam na to dziś siły. Twój problem wynika z nie zrozumienia słowa przykład. Często zdarza się ten problem więc nie martw się. Przykład ma Ci pokazać jakieś rozwiązanie danego problemu. Swoja nazwę wziął od tego że pokazuje przykładowe rozwiązanie i służy za przykład do nauki.

Ty pomyliłeś przykład z silnikiem. Silnik możesz podpiąć pod projekt i z niego korzystać. Silnik będzie ładnie udokumentowany i przystosowany do użycia w projekcie.

 

Gdybyś zabrał się za naukę i sprawdził jak działa ten przykład to wiedziałbyś jak jest zbudowany i co jest problemem. Przykład zmienia Ci przezroczystość rysowania wszystkich grafik w grze.

Odnośnik do komentarza
Udostępnij na innych stronach

Miałem dziś zły dzień w pracy, jest mi zimno i mam sraczkę wiec uwaga: wchodzi "Nega-Threef".

 

Postaram się dość krótko, bez zbyt dużej ilości bezpotrzebnego tłumaczenia, bo najnormalniej nie mam na to dziś siły. Twój problem wynika z nie zrozumienia słowa przykład. Często zdarza się ten problem więc nie martw się. Przykład ma Ci pokazać jakieś rozwiązanie danego problemu. Swoja nazwę wziął od tego że pokazuje przykładowe rozwiązanie i służy za przykład do nauki.

Ty pomyliłeś przykład z silnikiem. Silnik możesz podpiąć pod projekt i z niego korzystać. Silnik będzie ładnie udokumentowany i przystosowany do użycia w projekcie.

 

Gdybyś zabrał się za naukę i sprawdził jak działa ten przykład to wiedziałbyś jak jest zbudowany i co jest problemem. Przykład zmienia Ci przezroczystość rysowania wszystkich grafik w grze.

 

 

Pewnie coś zeżarłeś niestrawnego;-)

 

To,wiem,że ten przykład zmienia mi przezroczystość obiektów,czy można to w jakiś sposób zatrzymać ?

Czy nie da się z tym nic zrobić?

Odnośnik do komentarza
Udostępnij na innych stronach

Pewnie coś zeżarłeś niestrawnego;-)

 

To,wiem,że ten przykład zmienia mi przezroczystość obiektów,czy można to w jakiś sposób zatrzymać ?

Czy nie da się z tym nic zrobić?

 

 

zrobiłem tak w stepie tego obiektu

 

co prawda teraz mi obiekty już nie znikają z planszy,ale za to po skończonym tekście,textbox nie znika z planszy...

 

GML
if not ds_queue_empty(global.textq) and global.text_get=true

//jezeli kolejka nie jest pusta pobieramy tekst

{

global.text_get=false;//wylaczamy pobieranie tekstu

text=ds_queue_dequeue(global.textq);//pobieranie tekstu z kolejki

step=1;//ustawia wykonanie zadania na jeden

leght=0;

}

 

 

 

//KROK 1

if step=1

{

//zmniejszamy widocznosc az do (1)

if alpha<1 then alpha+=0.1 else

{

//brak widocznosci

alpha=1;

step=2;

}

}

//KROK 2

if step=2

{

if leght<string_length(string(text)) then leght += 0.3; // szybkosc pojawiania sie tekstu

}

 

//KROK 3

if step=3

{

//zwiekszamy widzialnosc obiektu (0)

if alpha>0 then alpha-=0.1 else

{

//wylaczenie widzialnosci

alpha=1; //tu zmieniłem z 0 na 1 przezroczystość boxa,jak było na 0,to po skończonym tekście znikały mi wszystkie obiekty z planszy

text='';

global.text_get=true;//ustawiamy,ze mozemy pobierac tekst

if step=0 then instance_destroy() //ale nie znika textbox po skończonym tekście,tylko miga

 

}

 

}

Odnośnik do komentarza
Udostępnij na innych stronach

a ustawiasz gdzieś step = 3? Bo to on powoduje że tekst zacznie znikać

 

tak mam go pod eventem klawisza enter

 

GML
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 przechodzimy do kroku 3 zwiększając przezroczystość

Odnośnik do komentarza
Udostępnij na innych stronach

tylko że exit; w GMS inaczej teraz działa, i zamiast kończyć działanie jednego kolcka kodu to kończy działanie wszystkich klocków w evencie. Może to jest problem.

 

 

Dzięki

spróbuje bez exit zobaczę jaka reakcja będzie...

problem jest ten,że udało mi się zatrzymać po skończonych akacjach zanikanie wszystkich obiektów łącznie z hudem na planszy,ale teraz pozostaje pusty textbox..rozmowa się kończy,obiekty są wszystkie na planszy,a textbox nie znika mimo,że dodałem funkcję instance_destroy()

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