Skocz do zawartości

Hawaxi

Użytkownicy
  • Postów

    39
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Hawaxi

  1. Okej,

    troche poczytałem bo nie zabardzo wiedziałem jak działa ten stack i jak narazie udało mi się zrobić coś takiego:

     

    obj_inv2 > Draw

     

    GML
    lista =ds_stack_create();

    with(object)

    {

    ds_stack_push(lista, id);

    }

     

    for (i=0; i<InvMax; i+=1)

    {

    draw_sprite(spr_kora, 1, x+(i*65), 64);

    ds_stack_pop(lista);

    draw_sprite(lista, 1, x+(i*65), 64);

     

    }

     

    Wyświetla jeden ten sam obiekt we wszystkich slotach, później ten obiekt zamienia się na inny i tak co chwilę.Jak już przejdzie przez wszystkie obiekty crashuje...

     

    Próbowałem też na inny sposób który też nie zadziałał:

    GML
    lista =ds_stack_create();

    with(object)

    {

    ds_stack_push(lista, id);

    }

     

    for (i=0; i<InvMax; i+=1)

    {

    draw_sprite(spr_kora, 1, x+(i*65), 64);

    wybrany = ds_stack_pop(lista);

    draw_sprite(wybrany, 1, x+(i*65), 64);

     

    }

     

    Tutaj pokazywał się jeden obiekt we wszystkich slotach.

     

    Tutaj nic się nie działo:

     

    GML
    lista =ds_stack_create();

    with(object)

    {

    ds_stack_push(lista, id);

    }

     

    for (i=0; i<InvMax; i+=1)

    {

    draw_sprite(spr_kora, 1, x+(i*65), 64);

    ds_stack_pop(lista);

    }

     

    Co zrobiłem źle?

  2. Witam,

    chce zrobić "inventory" które ma wyświetlać wszystkie obiekty dostępne w grze,

    i tu mam problem ponieważ każdy obiekt ma inną nazwę.

     

    Mam stworzone całe eq ale musze jeszcze włożyć w nie wszystkie obiekty...

     

    Mój kod:

     

    obj_inv2 > Create

    GML
    InvMax=6;

     

     

    obj_inv2 > Draw

     

    GML
    for (i=0; i<InvMax; i+=1)

    {

    draw_sprite(spr_kora, 1, x+(i*65), 64);

    }

    Ma ktoś pomysł jak to zrobić?

     

     

    Jeśli ktoś nie zrozumiał co chce zrobić to chodzi mi o inventory takie jak jest w minecrafcie na creative (widzisz wszystkie bloki dostępne w grze).

  3. Jeśli wszystkie obiekty wylosuja liczbe 1 to tylko wygląd jednego objektu się zmieni, trzeba dodać że jeśli już występiła ta liczba to pomieszaj i jeszcze raz losuj.

     

    Czyli tak jak poprzednio:

    GML
    if global.liczba1 == 1 && global.k == 0

    {

    sprite_index = spr_1

    global.k++

    }

    else if global.liczba1 == 2 && global.k1 == 0

    {

    sprite_index = spr_2

    global.k1++

    }

    else if global.liczba1 == 3 && global.k2 == 0

    {

    sprite_index = spr_3

    global.k2++

    }

    else if global.liczba1 == 4 && global.k3 == 0

    {

    sprite_index = spr_4

    global.k3++

    }

    plus:

    GML
    else if global.liczba1 == 1 && global.k1 == 1

    {

    randomize();

    }

    else if global.liczba1 == 2 && global.k2 == 1

    {

    randomize();

    }

    else if global.liczba1 == 3 && global.k3 == 1

    {

    randomize();

    }

    else if global.liczba1 == 4 && global.k4 == 1

    {

    randomize();

    }

    dobrze mysle?

     

    EDIT: i tak nie działa:

     

    FATAL ERROR in

    action number 1

    of Step Event0

    for object obj_3:

     

    Push :: Execution Error - Variable Get -5.k4(100005, 0)

    at gml_Object_obj_3_Step_0 (line 35) - else if global.liczba1 == 4 && global.k4 == 1

     

    :crying: :crying: :crying:

  4. Mam tak:

    obj_1 > create event:

    GML
    global.k=0

    global.k1=0

    global.k2=0

    global.k3=0

    obj_1 > step event:

    GML
    global.liczba1 = irandom_range(1,4);

     

    if global.liczba1 == 1 && global.k == 0

    {

    sprite_index = spr_1

    global.k++

    }

    else if global.liczba1 == 2 && global.k1 == 0

    {

    sprite_index = spr_2

    global.k1++

    }

    else if global.liczba1 == 3 && global.k2 == 0

    {

    sprite_index = spr_3

    global.k2++

    }

    else if global.liczba1 == 4 && global.k3 == 0

    {

    sprite_index = spr_4

    global.k3++

    }

     

    obj_2 obj_3 obj_4 > step event:

    GML
    if global.liczba1 == 1 && global.k == 0

    {

    sprite_index = spr_1

    global.k++

    }

    else if global.liczba1 == 2 && global.k1 == 0

    {

    sprite_index = spr_2

    global.k1++

    }

    else if global.liczba1 == 3 && global.k2 == 0

    {

    sprite_index = spr_3

    global.k2++

    }

    else if global.liczba1 == 4 && global.k3 == 0

    {

    sprite_index = spr_4

    global.k3++

    }

     

    obj_1 zmienił wygląd, pozostałe nie :P

     

    ma być step, begin step czy end step?

  5. obj_control mam w oddzienlym pokoju który odpala się przed pokojem w którym jest obj_4.

     

    wie ktoś dlaczego w tym kodzie wyglądy się powtarzają?

     

    GML
    global.liczba1 = irandom_range(1,4);

    k = 0

    k1 = 0

    k2 = 0

    k3 = 0

     

     

    if global.liczba1 == 1 && k == 0

    {

    sprite_index = spr_1

    k++

    }

    else

    randomize();

    if global.liczba1 == 2 && k1 == 0

    {

    sprite_index = spr_2

    k1++

    }

    else

    randomize();

    if global.liczba1 == 3 && k2 == 0

    {

    sprite_index = spr_3

    k2++

    }

    else

    randomize();

    if global.liczba1 == 4 && k3 == 0

    {

    sprite_index = spr_4

    k3++

    }

    else

    randomize();

  6. Okej, mam tak:

    obj_control ktory tworzy liste, dodaje dane do listy i je miesza:

     

    GML
    globalvar lista;

    lista = ds_list_create();

     

    ds_list_add(lista,spr_1);

    ds_list_add(lista,spr_2);

    ds_list_add(lista,spr_3);

    ds_list_add(lista,spr_4);

     

    ds_list_shuffle(lista);

     

    Później 4 objekty które wybierają i usuwają pozycje w tabeli:

    obj_1:

     

    GML
    sprite_index = ds_list_find_value(lista,0);

     

    ds_list_delete(lista,0);

    obj_2:

     

    GML
    sprite_index = ds_list_find_value(lista,1);

     

    ds_list_delete(lista,1);

    obj_3:

     

    GML
    sprite_index = ds_list_find_value(lista,2);

     

    ds_list_delete(lista,2);

    obj_4:

     

    GML
    sprite_index = ds_list_find_value(lista,3);

     

    ds_list_delete(lista,3);

     

    Wszystko elegancko ale powie mi ktoś dalczego wywala bład? :

     

    FATAL ERROR in

    action number 1

    of Create Event

    for object obj_4:

     

    Push :: Execution Error - Variable Get -5.lista(100000, 0)

    at gml_Object_obj_4_Create_0 (line 1) - sprite_index = ds_list_find_value(lista,3);

  7. Witam,

    Mam 4 obiekty i chcę żeby zmieniały wygląd w zależności jaką liczbe wylosuje, wyglądy nie mogą się powtarzać...

    Mam to:

     

    GML
    global.liczba1 = irandom_range(1,4);

     

    if global.liczba1 = 1

    {

    sprite_index = spr_1

    }

    if global.liczba1 = 2

    {

    sprite_index = spr_2

    }

    if global.liczba1 = 3

    {

    sprite_index = spr_3

    }

    if global.liczba1 = 4

    {

    sprite_index = spr_4

    }

    pomoże ktoś?

     

    GameMaker:Studio

  8. Siemanko,

    Ostatnio robiłem grę i postanowiłem zobaczyć jak zadziała na androidzie

    wiec zmieniłem wszystkie przyciski na myszke ale mam pewien problem

    chce aby po dotknięciu guzika ze strałką w lewo postać ruszała się w lewo:

    GML
    key_left = -keyboard_check(vk_left);

    przy klawiaturze działało to świetnie ale na myszce już nie:

    GML
    key_left = -mouse_check_button(mb_left) && position_meeting(mouse_x,mouse_y,obj_left);

     

    przy guziku w prawo wszystko działa prawidłowo:

    GML
    key_right = mouse_check_button(mb_left) && position_meeting(mouse_x,mouse_y,obj_right);

     

     

    Napisze mi ktoś dlaczego przycisk w lewo nie działa???

×
×
  • Dodaj nową pozycję...