Skocz do zawartości

nomyzs

Użytkownicy
  • Postów

    15
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez nomyzs

  1. Witam!

    Chcę zrobić obiekt, który będzie znikał po stanięciu na nim graczem po sekundzie. Zrobiłem taki kod:

    CREATE

    GML
    niszczenie=false

    STEP

    GML
    if(place_meeting(x, y-1, obj_player))

    {

    alarm[0]=30

    }

    if(niszczenie=true)

    {

    instance_destroy()

    }

    ALARM 0

    GML
    niszczenie=true

    Niestety obiekt niszczy się po sekundzie, ale gdy się z niego zejdzie. Co jest nie tak?

  2. Ok, a więc kod wygląda teraz tak:

    STEP

    GML
    if(keyboard_check_pressed(global.tyl)) //WYZEROWUJE PREDKOSC PRZY COFANIU CZASU

    {

    vspd=0

    hspd=0

    }

     

    if(!keyboard_check(global.tyl)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU

    {

    ds_stack_push(stosx,x)

    ds_stack_push(stosy,y)

    }

     

    if(keyboard_check(global.tyl))

    {

    if(!ds_stack_empty(stosx))

    {

    if(keyboard_check(global.szybko)) //SZYBICIEJ

    {

    if(!keyboard_check(global.wolno))

    {

    repeat(n_razy_przys)

    {

    if(!ds_stack_empty(stosx))

    {

    xy= ds_stack_pop(stosx)

    yx= ds_stack_pop(stosy)

    }

    else

    {

    xy=xy

    yx=yx

    }

    }

    if(!ds_stack_empty(stosx))

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    else

    {

    x=xy

    y=yx

    }

    }

    }

     

    if(keyboard_check(global.wolno)) //WOLNIEJ

    {

    if(!keyboard_check(global.szybko))

    {

    i+=1

    xy=ds_stack_top(stosx)

    yx=ds_stack_top(stosy)

    if(i mod n_razy_spo=0)

    {

    x = ds_stack_pop(stosx)

    y = ds_stack_pop(stosy)

    i=n_razy_spo

    }

    else

    {

    x=(xy+x)/2

    y=(yx+y)/2

    }

    }

    }

     

    if(!keyboard_check(global.wolno)) //NORMALNIE

    {

    if(!keyboard_check(global.szybko))

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    }

     

    }

    }

    CREATE

    GML
    stosx=ds_stack_create()

    stosy=ds_stack_create()

    xy=0

    yx=0

    global.slow=true

    i=1

    n=1 //JAK DUZE SPOWOLNIENIE/PRZYSPIESZENIE(1 TO 2 RAZY WOLNIEJ/SZYBCIEJ)

    n_razy_spo=2*n

    n_razy_przys=1*n

     

    W spowolnieniu zrobiłem, tak aby liczba nie była duża. Dobrze to jest?

    Zrobiłem też wyliczanie średniej, tylko to tak średnio działa, tzn. jest lepiej jak bez tego, tylko sprite tak się "trzęsie", skacze. Czy da się to lepiej zrobić?

    I czy reszta jest ok?

  3. Teraz napotkał mnie kolejny problem, gdyż chcę dodać opcję przyśpieszenia i zwolnienia cofnięcia w czasie. Z przyśpieszeniem poradziłem sobie tak:

    GML
    if(keyboard_check(global.tyl) and !ds_stack_empty(stosx))

    {

    if(keyboard_check(global.szybko))

    {

    xy= ds_stack_pop(stosx)

    yx= ds_stack_pop(stosy)

    if(!ds_stack_empty(stosx))

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    else

    {

    x=xy

    y=yx

    }

    }

    else

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    }

    Ale nie mam pomysłu ze zwolnieniem. Kombinowałem coś z alarmami, ale nie wychodziło :/ Jak można byłoby to zrobić?

     

    I czy optymalniej byłoby najpierw sprawdzać, czy jest wciskany klawisz odpowiedzialny za cofnięcie czasu, a dopiero później czy stos nie jest pusty?

     

    Edit.

    W końcu wymyśliłem jak to zrobić i całość wygląda tak:

    STEP

    GML
    if(keyboard_check_pressed(global.tyl)) //WYZEROWUJE PREDKOSC PRZY COFANIU CZASU

    {

    vspd=0

    hspd=0

    }

     

    if(!keyboard_check(global.tyl)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU

    {

    ds_stack_push(stosx,x)

    ds_stack_push(stosy,y)

    }

     

    if(keyboard_check(global.tyl)) //COFANIE

    {

    if(!ds_stack_empty(stosx)) //CZY STOS NIE JEST PUSTY

    {

    if(keyboard_check(global.szybko)) //SZYBICIEJ

    {

    if(!keyboard_check(global.wolno))

    {

    xy= ds_stack_pop(stosx)

    yx= ds_stack_pop(stosy)

    if(!ds_stack_empty(stosx))

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    }

    }

     

    if(keyboard_check(global.wolno)) //WOLNIEJ

    {

    if(!keyboard_check(global.szybko))

    {

    if(slow=true)

    {

    slow=false

    x=ds_stack_pop(stosx)

    y=ds_stack_pop(stosy)

    alarm[1]=2

    }

    }

    }

     

    if(!keyboard_check(global.wolno)) //NORMALNIE

    {

    if(!keyboard_check(global.szybko))

    {

    x= ds_stack_pop(stosx)

    y= ds_stack_pop(stosy)

    }

    }

     

    }

    }

    CREATE

    GML
    stosx=ds_stack_create()

    stosy=ds_stack_create()

    xy=0

    yx=0

    slow=true

    Alarm zmienia jedynie wartość na true.

     

    Czy w kodzie wszystko jest ok? W grze całość działa :)

  4. Właśnie inspirowałem się twoim przykładem :) Zrobiłem coś takiego:

    GML
    //CZAS

    if(keyboard_check_pressed(vk_space)) //WYZEROWUJE PREDKOSC PRZY COFANIU CZASU

    {

    vspeed=0

    hspeed=0

    }

     

    if(!keyboard_check(vk_space)) //TWORZY DANE NA STOSIE, GDY NIE COFAMY CZASU

    {

    ds_stack_push(stosx,x)

    ds_stack_push(stosy,y)

    }

     

    if(keyboard_check(vk_space) and !ds_stack_empty(stosx) and !ds_stack_empty(stosy)) //SCIAGA DANE ZE STOSU, JESLI NIE SA PUSTE

    {

    x=ds_stack_pop(stosx)

    y=ds_stack_pop(stosy)

    }

    //END CZAS</span>

    Wszystko jest ok?

    Teraz chciałbym zrobić obrazek pokazujący, czy jest dostępna przeszłość i nie wiem jak to zrobić, żeby działało. Jak na razie stworzyłem zmienną globalna "przeszlosc" i w stepie dałem taki kod:

    GML
    //KONTROLER CZASU

    if(ds_stack_empty(stosx) and ds_stack_empty(stosy))

    {

    global.przeszlosc=false

    }

    else

    {

    global.przeszlosc=true

    }

    //END KONTROLER CZASU</span>

    I co dalej? Próbowałem stworzyć nowy obiekt, który wyświetlał by sprite'y z takim kodem:

    GML
    if(global.przeszlosc=true)

    {

    draw_sprite(spr_przeszlosc, -1, x, y);

    }

    else

    {

    draw_sprite(spr_brak, -1, x, y);

    }

    Ale po umieszczeniu go w room'ie nic się nie pojawia :/

  5. Witam! :)

    Próbuję zrobić, aby spacja cofała ruch, ale niestety gdy ją naciskam obiekt przenosi się do krawędzi ekranu(choć tam w ogóle nie stał), a nie do poprzedniej pozycji.

    GML
    stos=ds_stack_create()

    if(keyboard_check(vk_right))

    {

    x+=1

    }

    if(keyboard_check(vk_space))

    {

    x=ds_stack_pop(stos)

    }

    else

    {

    ds_stack_push(stos,x)

    }

    Co jest w tym kodzie źle?

  6. Witam!

    Chcę kupić GM'a na oficjalnej stronie. Jest tam do wyboru kraj zamieszkania. Jeśli wybieram Polskę doliczany jest podatek, a jeśli na USA to jest bez. Dlatego mam pytanie, czy mogę wybrać jako USA? Czy będzie jakaś różnica oprócz tego VAT-u? Czy będę mógł zapłacić polską kartą?

    W jaki sposób wy go kupiliście?

    Pozdrawiam!

×
×
  • Dodaj nową pozycję...