Skocz do zawartości

Nie pojawiają się instancja


Rekomendowane odpowiedzi

Witam, mam problem zrobiłem taki kod w obiekcie skrzynka:

 

create:

GML
image_speed=0

 

otwarte=0

 

blokada=0

 

wybor=random(1)

 

step:

GML
if otwarte=1 { image_index=1

 

if blokada=0{

 

if wybor=1 {instance_create(x,y+128,potionhp) blokada=1}

if wybor=0 {instance_create(x,y+128,potionmana) blokada=1}

 

}}

 

if otwarte=0{

if distance_to_object(obohater) < 64{

if keyboard_check_pressed(ord("E")){

otwarte=1

}}}

 

Problem jest taki, że jak podchodzę do skrzynki, naciskam E to skrzynka zmienia sprite, a żadny potion nie wychodzi.

Jeżeli usunę if wybor, np. samo create potion hp, potion się pojawia.

Nie rozumiem czemu to nie chce działać...

Odnośnik do komentarza
Udostępnij na innych stronach

ja bym zrobił tak:

create:

GML
image_speed=0

otwarte=0

blokada=0

wybor=random(1)

GML
if !otwarte

{

if distance_to_object(obohater) < 64 and keyboard_check_pressed(ord("E")

otwarte=1

}else if !blokada

{

image_index=1

if wybor=1 {instance_create(x,y+128,potionhp) blokada=1}

else {instance_create(x,y+128,potionmana) blokada=1}

}

Odnośnik do komentarza
Udostępnij na innych stronach

ja bym zrobił tak:

create:

GML
image_speed=0

otwarte=0

blokada=0

wybor=random(1)

GML
if !otwarte

{

if distance_to_object(obohater) < 64 and keyboard_check_pressed(ord("E")

otwarte=1

}else if !blokada

{

image_index=1

if wybor=1 {instance_create(x,y+128,potionhp) blokada=1}

else {instance_create(x,y+128,potionmana) blokada=1}

}

 

Coś znowu jest nie tak zobacz :

 

ddouav.png

Odnośnik do komentarza
Udostępnij na innych stronach

dobra poprawka:

GML
if !otwarte

{

if point_distance(x,y,obohater.x,obohater.y) < 64 and keyboard_check_pressed(ord("E")) and !blokada

{

otwarte=1

image_index=1

if wybor=1 {instance_create(x,y+128,potionhp) blokada=1}

else {instance_create(x,y+128,potionmana) blokada=1}

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

dobra poprawka:

GML
if !otwarte

{

if point_distance(x,y,obohater.x,obohater.y) < 64 and keyboard_check_pressed(ord("E") and !blokada

{

otwarte=1

image_index=1

if wybor=1 {instance_create(x,y+128,potionhp) blokada=1}

else {instance_create(x,y+128,potionmana) blokada=1}

}

}

 

Dalej nie działa:

nx5eyr.png

Odnośnik do komentarza
Udostępnij na innych stronach

GML
wybor=irandom(1)

A najlepiej używaj do czegoś takiego choose()

Edit: A jeszcze lepiej naucz się debugować. show_message(wybor) przy otwarciu i już wiedziałbyś że wyskakują ci wartości zmiennoprzecinkowe (np.: 0.315).

Odnośnik do komentarza
Udostępnij na innych stronach

jasiek_209: tak naprawde jedyny blod byl, jak piszo chlopaki v zamianie irandom za random. jak bys dal irandom to twoj pierwotny kod jest sprawny.

 

bezdie dzialac, ale mozna go ulepszyc jak juz jest pokazane :)

 

niema tylko verzji s choose, to podam jak bym ja napisal:

GML
//CREATE

otwarte=0;
GML
//STEP

if (!otwarte && keyboard_check_pressed(ord("E")) ) {

if (distance_to_object(obohater) < 64 ) {

instance_create(x, y+128, choose(potionmana, potionhp));

otwarte=1;

};

};

Odnośnik do komentarza
Udostępnij na innych stronach

GML
wybor=irandom(1)

A najlepiej używaj do czegoś takiego choose()

Edit: A jeszcze lepiej naucz się debugować. show_message(wybor) przy otwarciu i już wiedziałbyś że wyskakują ci wartości zmiennoprzecinkowe (np.: 0.315).

 

Co do edit, to w najbliższym czasie się postaram nauczyć...

Muszę jakiś poradnik czy coś znaleźć... Z dokumentacji próbowałem ale nie zrozumiałem :D

 

jasiek_209: tak naprawde jedyny blod byl, jak piszo chlopaki v zamianie irandom za random. jak bys dal irandom to twoj pierwotny kod jest sprawny.

 

bezdie dzialac, ale mozna go ulepszyc jak juz jest pokazane :)

 

niema tylko verzji s choose, to podam jak bym ja napisal:

GML
//CREATE

otwarte=0;
GML
//STEP

if (!otwarte && keyboard_check_pressed(ord("E")) ) {

if (distance_to_object(obohater) < 64 ) {

instance_create(x, y+128, choose(potionmana, potionhp));

otwarte=1;

};

};

 

Działa, jeszcze tylko dorzucę zmianę grafiki:

vwx1n8.png

 

EDIT: Jeszcze takie pytanko jak zrobię instance_create(x, y+128, choose(potionmana, potionhp, potionhp));

Szansa na wybranie potionhp jest 2/3 ?

Odnośnik do komentarza
Udostępnij na innych stronach

tak

instance_create(x, y+128, choose(potionmana, potionhp, potionhp)) ma szanse 30% poitonmana i 60% poitonhp

 

choose ma limit argumentov 16, ale niema problemu zrobic choose(a, b, b, c, c , c, d, d, e, e, e, e, e, e, e, choose(f, g, g, h, h, h) ) taka ciekawostka :)

 

co do debugowania:

-run debbug mode fajna zrec jak jest problem z instancjami, zmiennymi itp

-show message jak jest problem z zmiano zmienne przy akcji lub mniemanym niewykonaniem akcji

-draw_text na kontynualno kontrole zmiannej v step/draw

-show_debug_message niebardzo uzywam, bo wyzej mianowane mi zawse starczyly, ale ma swe mozliwosci.

Odnośnik do komentarza
Udostępnij na innych stronach

Troche cofając się o pare postów nie polecam irandom bo za każdym razem losuje tą samą liczbe. Polecam round ( random (x) )
z tego co mi wiadomo podczas testowania gm:studio zawsze startuje z tym samym seedem aby ułatwić wykrywanie błędów, więc nie. odpal sobie komendę randomize lub random_set_seed i zobacz.
Odnośnik do komentarza
Udostępnij na innych stronach

tak

instance_create(x, y+128, choose(potionmana, potionhp, potionhp)) ma szanse 30% poitonmana i 60% poitonhp

 

choose ma limit argumentov 16, ale niema problemu zrobic choose(a, b, b, c, c , c, d, d, e, e, e, e, e, e, e, choose(f, g, g, h, h, h) ) taka ciekawostka :)

 

co do debugowania:

-run debbug mode fajna zrec jak jest problem z instancjami, zmiennymi itp

-show message jak jest problem z zmiano zmienne przy akcji lub mniemanym niewykonaniem akcji

-draw_text na kontynualno kontrole zmiannej v step/draw

-show_debug_message niebardzo uzywam, bo wyzej mianowane mi zawse starczyly, ale ma swe mozliwosci.

 

Dobrze wiedzieć, mogę zrobić

GML
instance_create(x, y+128, choose(choose(malapotionhp,sredniapotionhp,duzapotionhp), choose(malapotiomana,sredniapotionmana,duzapotionmana)) :D

 

Pokąbinujecoś z tym debugowaniem, widziałem gdzieś taki bardzo przejrzysty debuger w GM:S, to chyba w EUP czy jakoś tak :)

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