Skocz do zawartości

Opisek

Użytkownicy
  • Postów

    72
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Opisek

  1. @Elevetor (i @reszta_którzy_nie_umieją_zrobić_tego)

    Ok mam szybką i prostą odpowiedź: Zrób tak:

    (Step gracz)

    GML
    if global.enter=true && distance_to_object(obj_car)<=50 && keyboard_check_pressed(vk_enter);

    {

    global.enter=false instance_change(obj_graczauto,false);

    with (obj_car) instance_destroy();

    }

    (Step auta z graczem)
    GML
    if global.enter=true && keyboard_check_pressed;(vk_enter);

    {

    global.enter=false instance_change(obj_gracz,false);

    instance_create(obj_gracz.x+10,obj_gracz.y+10,obj_car);

    }

    (Event Game Start u gracza)

    GML
    global.enter=true;

    (U gracza i w aucie z graczem event relase Enter)

    GML
    global.enter=true;

    I tutaj wszystko powinno działać ^^^

    A tutaj masz przykład:

    http://www.mediafire.com/download/r0zctdrg...radnik+0004.gmk

  2. ereg ma bardzo dobry pomysł z plikami binarnymi :) Jednak, będą one [bardzo] łatwe do przerobienia, więc przed odczytaniem / zapisem moim zdaniem trzeba by to było potraktować jakimś prostym szyfrem, np. XOR przez dowolną sól. Zapobiegnie to trochę oszukiwaniu.

    Można wiedzieć gdzie dokładnie ereg to trzyma? przeszukuję go i nic...

  3. No faktycznie bo ta funkcja nie działa z tego co podaje dokumentacja: "WARNING!: This function has been deprecated and will no longer work! "

    To znaczy, że w żaden sposób nie da się tego zrobić?

    -----------------------------------------------------\

    Pytanko da się zrobić coś takiego:?

    GML
    show_messege('Put your music into the folder with the game.') sou_szuk=get_string("Enter the name of music. (Tip, for example, e.g. .mp3)","Music.mp3") sou_new=sound_add(sou_szuk,1,1) sound_loop(sou_new)

    EDIT:

    Ok to na górze działa, można zaprzestać odpisywania :D

  4. Bez wstępów chodzi o to co w tytule.

    Mam taki kod:

    GML
    sou_szuk=get_open_filename( 'mp3|*.mp3|All files|*.*','' ) sou_new=sound_add(sou_szuk,1,1) sound_loop(sou_new)

    (Ten na górze jest wyrwany z całego kodu.)

    I chodzi mi o to:

    - Gracz wykonuje akcję w której jest zamieszczony ten kod

    - Wybiera plik z komputera

    - Odpala mu się muzyka którą wybrał

    Jak to zrobić? Czy dobrze kombinuję? Proszę o szybką odpowiedź.

  5. dokladnie :)

     

    tez pisalem bys uzyl help a w nim vystarczy napisac file_ i mozes dowoli wybierac wedlog tego co cie interesuje.

     

    mysl o mnie ze jestem za leniwy by napisac calo komende, kdyz kopiowanie helpu uwazam za zbedne

     

    ja zawse o dobrych programatorach myslalem, ze to lenie.

    bo zamiast pisac dlugie pentle zmieniajo algorytm, skracajoc tym kod z kilkuset linijek na zaledwie dziesec :thumbsup:

    W moim help nie wyszukuje "file_" :( Jest to gdzieś w internecie o przeczytania?

    -----

    I jakby się dało. Jest jakiś poradnik przykład?

  6. Błagam ciebie, nie stosuj tego wraz z resztą jego kodu :|

     

    GML
    kLeft = vk_left; // lewa strzałka

    kRight = vk_right; // prawa strzałka

    movementActive = false; // czy gracz się porusza

    if keyboard_check(kLeft) {

    // tutaj twoj kod poruszania w lewo, przykladowy:

    hspeed = -4;

    movementActive = true; // linijka potrzebna

    }

    if keyboard_check(kRight) {

    // tutaj twoj kod poruszania w prawo, przykladowy:

    hspeed = 4;

    movementActive = true; // linijka potrzebna

    }

    if movementActive == false {

    hspeed = 0; // neguje predkosc w wypadku braku nacisnietych klawiszy

    }

     

    Walnij to w stepie, i pamiętaj aby pozamieniać twój ruch w prawo/lewo na własny :)

    Widzę, że już użytkownik sobie poradził, to nie ma co zmieniać.

  7. Jeśli nie masz odpowiedzi to się udzielę.

     

    Create:

     

    GML
    prawo = false;

    lewo = false;

     

     

    Kliknięcie w prawo:

     

    GML
    prawo = true;

     

    Kliknięcie w lewo:

     

    GML
    lewo = true;

     

    Puszczenie w prawo:

     

    GML
    prawo = false;

     

    Puszczenie w lewo:

     

    GML
    lewo = false;

     

    Step:

     

    GML
    if prawo == true

    {alarm[1] = 1;

    prawo = false;}

     

    else

     

    {alarm[3] = 1}

     

    if lewo == true

    {alarm[2] = 1;

    lewo = false'}

     

    else

     

    {alarm[3] = 1}</span></span>

     

    Alarm 1:

    Bloczek Move Fixed = Prawa strzałka i prędkość

     

    Alarm 2:

    Bloczek Move Fixed = Lewa strzałka i prędkość

     

    Alarm 3:

    Bloczek Move Fixed = Bloczek między wszystkimi strzałkami, czyli stop

     

     

     

    Ok odpowiedź na górze jest extra! Lepsza od tej.

    @up Ej to nie fair! Ciągle mnie uprzedzasz w odpowiedziach :D

  8. Instalowałeś, czy Exeka pobierałeś?

    Pobrałem exeka, spróbuję zainstalować.

    A tak w ogóle... Czym zrobiłeś instalatora?

    Program czy programowanie ręczne?

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

    Nie... nadal wyskakuje:

    ___________________________________________

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

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

    FATAL ERROR in

    action number 1

    of Draw Event

    for object o_HUD_AppControl:

     

    Fatel Error: Can not create vertex buffer

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

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

  9. 1, zapis objektu do file

    -mowis sobie struktura file bedzie taka:

    -- id_objektu(1byte), x(2byte), y(2byte), hp(1byte), direction(8 axis ... 1byte), speed (1byte) . 8 byte na jeden objekt a na 9. byte jest drugi objekt. i tak dalej.

    - otwierasz file_xxx_open (xxx = bin/text/ini. bin jest fajny)

    - zapisujesz wszystkie objekty wedlog struktury ktoro sobie ustaliles.

    - zamykasz file_

     

    do rooma by wczytac takto zapisane objekty robisz to samo, ale zamiast zapisiwac zmienne objektu do file, to je wczytujes z file do zmiennych _id, _x, _y, _hp, _direction, _speed.

    te uzyjesz do stwrorzenia instancji v roomie

    -- id_instancji=instance_create(_x,_y,_id_objektu)

    -- id_instancji.hp=_hp

    -- id_instancji.direction=_direction

    -- id_instancji.speed=_speed

     

    2, no to fajnie :)

     

    3, podobno jak objekty tylko zapisujesz inne zmienne

    poczytaj o:

    room_add()

    room_instance_add(ind,x,y,obj)

    room_set_

    Gdzie jest to całe bin??????!!!!!!!!!!!!!!!!

  10. fajne jest miec swoj editor ktory zapisuje roomy i objekty do pliku.

    zapis do pliku (wybieracie bin/ini/txt) w formacie ktory wy wymyslicie.

    format ulozienia danych moze byc dowolny bo to zas wy bedziecie odczytywac ten format w samej grze.

     

    mysle ze niepisalisce nic o GM:S a to dobrze bo tak to zupelnie inna sprava. v gm8 niema problemu

     

    zapisujecie wzystkie wazne parametry i zmienne.

    to dotyczy jak zapisu rooma, tak zapisu objektu.

    jezeli ma byc w roomie nowy objekt, ktory w grze niema, to musicie go zbobic znow przez:

    - objekt_add

    - event_add

    widz help

     

    jezeli objekt jest juz w gre to tylko zapisujecie do pliku jego id, x, y, i to co jest inne od originalnego objektu.

    by potem moc poprawnie odtworzyc objekt w roomie.

     

    doteraz mailem bardzo malo czasu, ale moze po nowym roku sie to poprawi( obi :) )

    to jak by bylo cos niejasnego, to moze pozniej pokaze jakis przyklad

    No właśnie w tym problem!

     

    1. Jak zapisywać te obiekty?

    2. Mam GM 8.0 Pro, więc bez obaw :)

    3. A jak zapisywać roomy do pliku i odtwarzać je z folderu?

  11. Nie bardzo o to mi chodzi...

    Chodzi mi o to, że gracz ma moją grę. Pobiera folder z roomami. Gra wczytuje roomy z tego folderu.

    Chyba, że to o to chodzi...

    Nie rozumiem :huh:

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

    EDIT:

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

    Ok, zaczynam powoli rozumieć tylko jeszcze popróbuję jak to działa w praktyce... |Edit:| Tylko jeszcze nie wiem jak zapisać obiekt do pliku (używałbym tego jako dodatki do gry, więc jak to zrobić?)

    (Tylko, że z tego co piszecie wychodzi jak dodać obiekty z osobnego pliku do roomu. Ja chcę dodać room do gry z osobnego pliku. Jest to możliwe?)

  12. Mam pytanie do tego, jak sprawić, aby wszystko co jest w notatniku do którego się dopisujemy, przed dopisem zostało usunięte?

    Próbowałem już:

    GML
    file_text_open_write("Kody.txt");

    dopis = get_string("Plesa enter mode","");

    uchwyt = file_text_open_append('Kody.txt');

    file_text_write_string(uchwyt, string(dopis));

    file_text_writeln(uchwyt);

    file_text_close(uchwyt);

    Ale coś mi błędy wyskakują.

    Co robić?

  13. ################################################################################

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

    FATAL ERROR in

    action number 1

    of Draw Event

    for object o_HUD_AppControl:

     

    Fatel Error: Can not create vertex buffer

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

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

  14. Nie ucz paskudnych nawyków.

    1. W warunkach pętli if, używamy == zamiast =.

    2. Po linijkach stawiamy średniki.

    3. Formatujemy kod.

    4. Nie używamy krótkich nazw zmiennych, z których nie można się nic domyśleć.

    5. Należy używać else if bądź pętli switch (jeśli takowa istnieje w gml, nie pamiętam).

    Poprawiłem ten kod trochę:

     

    GML
    wybor = 0;

    menu = show_message_ext("Co chcesz kupić?","Broń?","Teren?","Nic?");

     

    if menu == 1 {

    wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");

    if (wybor == 1) and (score>20) and (bron == 0) {

    bron = 1

    wybor = 0

    score -= 20;

    }

    }

    else if menu == 2 {

    wybor = show_message_ext("To będzie kosztowało 10 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");

    if (wybor == 1) and (score > 10) and (global.teren < 3) {

    global.teren += 1;

    wybor = 0;

    score -= 10;

    }

    }

     

    Dzięki postaram się poprawić.

  15. Do dupy. Nic się nie trzyma kupy. Przyciągasz napisem "sztuczna inteligencja wrogów" a jedyne co robisz to sterowanie w 4 kierunkach i to na klockach nie tłumacząc nic. Nawet czemu robisz to sterowanie. Potem robisz odbijanie od obiektu... Przypominam przed chwilą że zrobiłeś poruszanie top-down w 4 kierunkach. Odbijanie od obiektów przy takim sterowaniu jest głupie, nawet jak dla początkujących.

     

    Użycie show_message_ext jest idiotyczne. Nie używa się tego do takich rzeczy. Jest to bardzo proste, ale jeżeli masz zamiar 'robić sklep' w swojej grze, to może warto nauczyć się robić to w jakikolwiek dobry sposób.

     

    Nazwałeś to "Początki z game maker", a to nie są żadne początki. Nic nie wytłumaczyłeś, a od razu wyjaśniasz kod.

    Napisałem DOKOŃCZĘ

  16. Witam w tym poście chciałbym zrobić poradnik, a w tym poradniku chciałbym wprowadzić nowych do gm'a.

    W tym poradniku pokażę wam sztuczną inteligencję, pieniądze oraz wszystkie możliwości okien dialogowych.

    A więc zaczynajmy!

     

    Po pierwsze tworzymy obiekt Gracz i dajemy mu jakiś obrazek.

     

    [Tworzymy 5 eventów w obiekcie Gracz

    Key Press Left

    Key Press Right

    Key Press Up

    Key Press Down

    Key Relase Any Key

     

    W Left wkładamy pierwszy klocek z zakładki Move w dziale Move czyli Move Fixed.

    Skoro to przycisk strzałki w lewo to w tym co nam się pokaże po przesunięcia klocka Move Fixed do eventu zaznaczamy strzałkę w lewo i pod tym ustalamy prędkość, ja ustalę 3.

    Z resztą eventów Key Press robimy to samo, w Right poruszanie się w prawo, w up w górę, a w down w dół.

     

    W event Key Relase Any Key wkładamy ten sam klocek, ale klikamy w nim klocek po środku strzałek, a prędkość ustalamy na 0.

     

    W ten sposób uzyskujemy podstawowe chodzenie]

     

    [Teraz tworzymy obiekt Kamien a w nim trochę pod nazwą klikamy Solid W obiekcie Gracz tworzymy event Colision -> Kamien. W tym evencie wstawiamy klocek z zakładki Move, z działy Jump czyli Bounce

    W ten sposób uzyskujemy odbijanie się od skały]

     

    [Teraz stworzymy mini-sklepik. U bohatera tworzymy event kliknięcia jakiegoś przycisku, a w nim z zakładki Control, z działu Code wybieramy Execute Code i do niego wklejamy to:

    GML
    wybor = 0;

    menu = show_message_ext("Co chcesz kupić?","Broń?","Teren?","Nic?");

     

    if menu == 1 {

    wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");

    if (wybor == 1) and (score>20) and (global.bron == 0) {

    global.bron = 1

    wybor = 0

    score -= 20;

    }

    }

    else if menu == 2 {

    wybor = show_message_ext("To będzie kosztowało 10 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");

    if (wybor == 1) and (score > 10) and (global.teren < 3) {

    global.teren += 1;

    wybor = 0;

    score -= 10;

    }

    }

     

    W evencie create bohatera do Execute Code wklejamy to:

    GML
    global.odstep=get_integer("Jaki ma być odstęp między strzałami wroga?","100")

    global.bron=0

    wybor=0

    global.teren=0

    global.strzal

     

    Teraz tłumaczenie!

     

    get_integer to pytanie o numerek

    global.odstep,wybor, global.teren i global.bron to zmienne z początkową wartością 0

    Gdy klikniemy przycisk sklepiku pojawi się pytanie z trzema przyciskami.

     

    Co chcesz kupić?

    [broń?] [Teren?] [Nic]

     

    Wywołuje to kod show_message_ext("","","","")

    Przed nim mamy menu= z czego wychodzi menu=show_message...

    To sprawia, że zmienna menu dostanie wartość po kliknięciu przycisku.

    [broń?] - 1

    [Teren?] - 2

    [Nic?] - 3

     

    Po tym jest napisane if menu=1 {wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie")

    If oznacza jeżeli, więc kod oznacza jeżeli menu=1....

    if to komenda menu=1 to tekst logiczny a po tekście logicznym stawiamy akcję w tych nawiasach {}

    W nawiasach mamy ten sam kod, który nas pyta o to co chcemy kupić, ale tutaj mówi do nas To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup? i mamy dwa przyciski:

     

    Czy potwierdzasz zakup?

    [Tak] [Nie]

     

    W kolejnym if'ie game maker sprawdza czy mamy powyżej 20 monet oraz czy nie zakupiliśmy już tego produktu. Jeżeli wszystko się zgadza, kod odbiera nam 20 monet, a zmianną bron zamienia na 1.

    Dalej mamy tak samo tylko tym razem game maker sprawdza czy mamy ponad 10 krzyształów i czy nie mamy maksymalnego poziomu terenu. ]

     

    [ Skoro mamy sklepik, to czas na walutę.

    Tworzymy obiekt i dajemy mu obrazek.

    Tworzymy także drugi obiekt, ale jego teksturka powinna być nie widoczna, lecz jednak istnieć. U mnie to jest czarny piksel.

    W obiekcie punktu tworzymy event Colision --> Gracz, a do niego wsadzamy klocek z zakładki main1 z działu Objects na pierwszej pozycji z drugiego rzędu czyli Change Instance ---> Zamiennik_Kryształu (czyli ten piksel) oraz Execute Code w którym wpisujemy po prostu

    GML
    score+=1;

    W zamienniku kryształu dajemy natomiast Colision ---> Wrog, a w tym Change Instance --> Kryształ

    W ten sposób tworzymy kryształ, który po wejściu na niego znika i dodaje punkt, a gdy najedzie na niego wróg znów się pojawia ]

     

    [Czas na wrogów!

    Pierwszy krok sztucznej inteligencji, czyli chodzenie za graczem omijając przeszkody.

    GML
    mp_potential_step_object (Gracz.x, Gracz.y, 1, Kamien)

    Ten kod ^^^ wstawiamy do step.

    Słowo potential niektórym kojarzy się z inteligenncją. Kod mp_potential_step_object to podążanie do danego punktu omijając przeszkody.

     

    Pierwszy argument (Gracz.x) - koordynat x, do której ma podążać obiekt.

    Drugi argument (Gracz.y) - koordyt y, do której ma podążać obiekt.

    Trzeci argument (1) - prędkość z jaką ma podążać obiekt.

    Czwarty argument (Kamien) - obiekt, który ma omijać podczas podążania do podanej koordynacji.

     

    Teraz drugi stopień sztucznej inteligencji.

    Tworzymy event Begin Step, a w nim w Execute Code:

    GML
    if global.strzal == 1&&global.bron == 1&&distance_to_object(Gracz)<=100;

    {

    alarm[4]=1;

    }

     

    To spowoduje nam nadanie alarmowi 4 wartości 1, kiedy broń będzie aktywna, a gracz będzie przybliżony do wroga o minimum 99.

    Tworzymy event alarm 4 a w nim kod:

    GML
    global.strzal=2 alarm[4]=global.odstep;

    oraz alarm 5:

    GML
    instance_create(Wrog.x,Wrog.y,Strzal_Zly) global.strzal=1

     

    Teraz tworzymy obiekt Strzal_Zly, a w nim dajemy to:

    Event Create > Zakładka main2 > Dział Timing > 1 czyli Set Alarm

     

    Pierwsze okienko - 100

    Drugie okienko - Alarm 3

     

    Alarm 3 > Zakładka main1 > Dział Objects > 2 w 2 rzędzie czyli Destroy the instance

     

    To wszystko spowoduje usunięcie się z planszy strzału po minięciu 100 kroczków.

     

    Step > Execute Code

    GML
    mp_potential_step_object (Gracz.x, Gracz.y, 2, object2)

     

    Zderzenie z obiektem t1,t1,t1 > odbicie * Te obiekty w następnych nawiasach

     

    W ten sposób uzykujemy sztuczną inteligencję wrogów! ]

     

     

    [Tworzymy jeszcze trzy obiekty; t1,t2 i t3, każdy z nich ma mieć zaznaczone solid, a ich tekstura, najlepiej żeby była taka sama jak kamień.

     

    W t1, w evencie Step, w Execute Code dajemy:

    GML
    if global.teren == 1 {instance_destroy();}

    To spowoduje czekanie aż zmienna global.teren będzie miała wartość 1 i wtedy usunięcie się z planszy.

    W t2 i t3 robimy to samo, lecz tym razem global.teren == 2, a w t3 == 3.

     

    U gracza i wroga robimy eventy Zderzenia z każdym z tych bloczków, a w nich odbicie jak w drugich nawiasach.]

     

    [

    Tworzymy obiekt pocisk, a w nim:

     

    Create>Move>Move>Pierwsze czyli Move Fixed

    Zaznaczamy wszystkie strzałki i ustalamy prędkość.

     

    Colision ---> Kamien>main1>Objects>Destroy the instance

    ^^^

    Robimy tak samo jak tutaj ^^^ przy zderzeniu z t1,t2,t3

     

    Obiekt Gracz>Przycisk do strzału>Control>Code>Embed Code

    GML
    if global.bron == 1 {instance_create(Gracz.x,Gracz.y,pocisk)}

     

    I mamy strzelanie i tym samym całą grę! Jeszcze tylko u gracza przy zderzeniu ze złym pociskiem w kodzie score-=10, a u wroga przy zderzeniu z pociskiem score+=10

    ]

     

    Przykład: (Oczywiście całkowity zakaz udostępniania projektu[chyba, że dosyć go przerobiliście, ale i tak dajecie mnie i ten post w creditsach]bez mojej wiedzy, zgody i w waszym imieniu)

    Klikunio :D

    P.S. Wprowadziłem sobie jeszcze prostą konsolkę do kodów pod eventem Key Relase Ctrl u Gracza, można sobie zobaczyć :)

  17. Thx, tylko musiałem jeszcze trochę pozmieniać, nie wszystkie get_string trzeba było zmienić o czym się domyśliłem, a w room'ach nie potrzeba było previous i next, ale dzięki za ten get_integer!

    A oto kod :) :

    GML
    global.pas = get_string("Please a password","")

    if global.pas = "Money&Lives"

    {global.ml = get_integer("Please a number","")

    score+=global.ml; lives+=global.ml}

     

    if global.pas = "Previous"

    {global.rp = get_integer("Please a number","")

    room-=global.rp}

     

    if global.pas = "Next"

    {global.rn = get_integer("Please a number","")

    room+=global.rn}

     

    if global.pas = "Money"

    {global.m = get_integer("Please a number","")

    score+=global.m}

     

    if global.pas = "Lives"

    {global.l = get_integer("Please a number","")

    lives+=global.l}

  18. Witam!

    Mam pewien problem, ale opiszę go po kodzie;

    GML
    global.pas = get_string("Please a password","")

    if global.pas = "Money&Lives"

    {score+=1000000; lives+=1000000}

     

    if global.pas = "Previous"

    {global.rp = get_string("Please a number","")

    room_goto_previous=global.rp}

     

    if global.pas = "Next"

    {global.rn = get_string("Please a number","")

    room_goto_next=global.rn}

    Powyższy kod jest w evencie Relase backspace,

    pierwszy if działa czyli kod na dodawnie monet i żyć,

    ale drugi i trzeci nie działają.

     

    Wygląda to tak:

     

    1) Puszczam Backspace

    2) Pojawia się napisz "Please a password"

    3) Wpisuję

    a ) Next

    b ) Previous

    4) Pojawia się napis "Please a number"

    5) Wpisuję jakiś numerek

    6) Nic się nie dzieje, a powinno

    a ) Przejść o taki numerek jaki dałem plansz do przodu

    b ) Przejść o taki numerek jaki dałem plansz do tyłu

     

    O co tutaj chodzi? Proszę o jak najszybszą pomoc, a z góry dzięki B)

     

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

     

    Zmieniłem to tak:

    GML
    global.pas = get_string("Please a password","")

    if global.pas = "Money&Lives"

    {global.ml = get_string("Please a number","")

    score+=global.ml; lives+=global.ml}

     

    if global.pas = "Previous"

    {global.rp = get_string("Please a number","")

    room_goto_previous=global.rp}

     

    if global.pas = "Next"

    {global.rn = get_string("Please a number","")

    room_goto_next=global.rn}

     

    if global.pas = "Money"

    {global.m = get_string("Please a number","")

    score+=global.m}

     

    if global.pas = "Lives"

    {global.l = get_string("Please a number","")

    lives+=global.l}

    i taka sama sytuacja w Money, Lives oraz Money&Lives

     

    Jakby co to mam Game Maker 8.0 Pro

×
×
  • Dodaj nową pozycję...