Skocz do zawartości

Cygnus

Użytkownicy
  • Postów

    330
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Cygnus

  1. Witam wszystkich

     

    stworzyłem sobie tabele wyników..i w osobnym pokoju (bo tam mam ten obiekt)wyświetla mi parę pozycji między innymi imię,ilość zabitych wrogów,ilość monet zebranych i ilość punktów zgromadzonych.

    No,ale teraz chciałbym,żebym mógł dokonywać wpisu w momencie,kiedy zginę w grze i jak osiągnę odpowiednią ilość punktów,(bo ustawione mam tak sortowanie względem punktów) to wyświetli się informacja z podaniem swojego imienia i nastąpi wpis ,który wyświetli się w osobnym pokoju,i po tym pokój game over,a jak nie będę miał wystarczającej ilości punktów,to tylko tabelka pojawi się z wynikami.a potem plansza game over.

     

    Walczę z tym i nie wiem jak to rozgryźć..

    jeśli chodzi o moje zmienne w grze to mam globalne,czyli global.life,global,coins,global.pScore

     

     

    tutaj kod mojej tabelki wyników,która jest w osobnym pokoju..

     

     

    create

     

    GML
    hiscore_list = ds_list_create();

     

    temp_hiscore_list = ds_list_create();

     

    hiscore_pos_lenthg = 4;

    hiscore_max_list_length = 10;

     

    hiscore_sort_by = 3;

     

    name = "John";

    kills = 3;

    coins = 5;

    points = 7;

    ds_list_add(hiscore_list,name);

    ds_list_add(hiscore_list,kills);

    ds_list_add(hiscore_list,coins);

    ds_list_add(hiscore_list,points);

     

     

    name = "Sean";

    kills = 3;

    coins = 11;

    points = 2;

    ds_list_add(hiscore_list,name);

    ds_list_add(hiscore_list,kills);

    ds_list_add(hiscore_list,coins);

    ds_list_add(hiscore_list,points);

     

     

     

    name = "Bob";

    kills = 17;

    coins = 5;

    points = 1;

    ds_list_add(hiscore_list,name);

    ds_list_add(hiscore_list,kills);

    ds_list_add(hiscore_list,coins);

    ds_list_add(hiscore_list,points);

     

     

    name = "Jimmy";

    kills = 3;

    coins = 3;

    points = 21;

    ds_list_add(hiscore_list,name);

    ds_list_add(hiscore_list,kills);

    ds_list_add(hiscore_list,coins);

    ds_list_add(hiscore_list,points);

     

     

    step

     

    GML
    //sortowanie tabeli osiagniec

    ds_list_clear(temp_hiscore_list);

     

     

    do

    {

    var temp_highest_points = 0;

     

    for(p = 0; p < ds_list_size(hiscore_list); p += hiscore_pos_lenthg)

    {

    points = ds_list_find_value(hiscore_list, p + 3);

     

    if points > temp_highest_points

    {temp_highest_points = points}

     

    }

     

    var highest_position = 0;

     

    highest_position = ds_list_find_index(hiscore_list, temp_highest_points);

     

     

    name = ds_list_find_value(hiscore_list, highest_position -3);

    kills = ds_list_find_value(hiscore_list, highest_position -2);

    coins = ds_list_find_value(hiscore_list, highest_position -1);

    points = ds_list_find_value(hiscore_list, highest_position);

     

    ds_list_add(temp_hiscore_list,name);

    ds_list_add(temp_hiscore_list,kills);

    ds_list_add(temp_hiscore_list,coins);

    ds_list_add(temp_hiscore_list,points);

     

    repeat (4) {ds_list_delete(hiscore_list, highest_position -3)};

    }

    until ds_list_size(hiscore_list) = 0;

     

     

    //sortowanie tabeli osiagniec

    ds_list_copy(hiscore_list,temp_hiscore_list);

     

     

    draw

     

     

    GML
    //rysowanie tabeli osiagniec

    var leftx = 20;

    var topy = 20;

    var xspacing = 200;

    var yspacing = 5;

    for(p = 0; p < ds_list_size(hiscore_list); p += hiscore_pos_lenthg)

    {

     

    name = ds_list_find_value(hiscore_list, p + 0);

    kills = ds_list_find_value(hiscore_list, p + 1);

    coins = ds_list_find_value(hiscore_list, p + 2);

    points = ds_list_find_value(hiscore_list, p + 3);

     

    draw_text(leftx + xspacing * 0, topy + yspacing * p,

    string(ceil(p/hiscore_pos_lenthg)) + ".");

    draw_text(leftx + xspacing * 1, topy + yspacing * p,

    "name : " + string(name));

    draw_text(leftx + xspacing * 2, topy + yspacing * p,

    "kills : " + string(kills));

    draw_text(leftx + xspacing * 3, topy + yspacing * p,

    "coins : " + string(coins));

    draw_text(leftx + xspacing * 4, topy + yspacing * p,

    "score : " + string(points));

    }

  2. Stwórz 2 stany i odliczaj licznikiem.

    GMLif(strzelam == true)

    {

    //kod strzelania

    licznik_czasu--

    if(licznik_czasu<=0)

    {

    strzelam=false

    licznik_czasu=200

    }

    } else {

    //Nie strzelam

    licznik_czasu--

    if(licznik_czasu<=0)

    {

    strzelam=true

    licznik_czasu=400

    }

    }

     

     

    Dziękuje Threef wszystko działa jak należy;]

     

    zrobiłem tak:

     

    w create obj rura dałem

     

    GML
    direction=180 //nadaje lewy kierunek ognia

    strzelam=true

    licznik_czasu=0

     

     

    a w stepie tak jak mi podałeś czyli

     

     

    GML
    if(strzelam == true)

    {

    scr_Fire(x,y,(direction-5)+random(10),2)

    licznik_czasu--

    if(licznik_czasu<=0)

    {

    strzelam=false

    licznik_czasu=200

    }

    } else {

    //Nie strzelam

    licznik_czasu--

    if(licznik_czasu<=0)

    {

    strzelam=true

    licznik_czasu=400

    }

    }

     

    to samo zrobiłem w drugim stanie super działa..jeszcze raz dziękuje.

  3. To daj chociaż sprite, żebym mógł odtworzyć problem :)

     

    Gnysku inaczej...poradziłem sobie z miotaczem..ale zmieniłem całkowicie kod ognia i kod rury,mam tylko jeden problem,a mianowicie taki,że chce zrobić przerwe np 2 sekundową,bo teraz non stop obiekt pali się ładnym miotaczem ognia..

     

    a,wiec tak stworzyłem skrypt

    a w nim:

     

    GML
    repeat (1+floor(random(argument3))){

    fire1=instance_create(argument0,argument1,obj_ogien1)

    fire1.direction=argument2

    fire2=instance_create(argument0,argument1,obj_ogien2)

    fire2.direction=argument2

     

    i teraz ładne z tym skryptem działa ognisty miotacz

     

    tu obiekt,z ktrego wydobywa się ogień w tym przypadku lewa rurka

     

    obj_rura_ogniowa_lewa

     

    create

     

    GML
    direction=180 //nadaje ogniu kierunek lewy</span>

     

     

    step

     

    GML
    scr_Fire(x,y,(direction-5)+random(10),2)

     

     

    no i teraz chciałbym,żeby z odstępami miotacz się palił,a nie cały czas bez przerwy

  4. Zarzuć dokładnym kodem (eksportuj do GMZ).

     

     

    Gnysek to jest właśnie wyżej cały kod tego miotacza..ja myślę,że gdzieś w stepie muszę dać warunek żeby wiązka ognia paliła się dłużej,a nie pufała..

    zrobiłem jeszcze do tego sprite w postać stożka..co nadał kształt wiązce ognia..ale jak mówię takie pufanie krótkie jest,a nie długa wiązka ognia.

  5. Cześć wszystkim chciałbym stworzyć obiekt,pułapkę,który wypuszcza ogień(taką długą strugę ognia)

     

    No i mam tutaj podobny kod,który skorzystałem z yoyogames,ale zamiast długą strugą ognia puszczać ,to obiekt pułapka puszcza mi krótko ogień...takie pufanie zamiast miotacza ognia...

    Co jest nie tak?

     

    tutaj kod ognia

     

     

    obj_ogien

     

    create

     

     

    GML
    speed=1

    size=.05

     

     

    sterp

     

    GML
    image_angle+=4

    if size<1.5

    size+=random(.01)+.01

     

    if size>1

    image_alpha-=.03

     

    if image_alpha<=0

    instance_destroy()

     

    if speed<=4

    speed+=.1

     

     

    draw

     

    GML
    draw_set_blend_mode(1)

    draw_sprite_ext(sprite_index,image_index,x,y,size,size,image_angle,c_white,image_alpha)

    draw_set_blend_mode(0)

     

     

    a tu obiekt,z którego ma wydobywać się czasowo struga ognia...

     

    obj_rura_ogniowa_lewa

     

    create

     

    GML
    strzal=1;

    image_speed =0;

    image_index =0;

     

    alarm 0

     

    GML
    strzal=1;

     

     

    step

     

    GML
    if( strzal )

    {

    var i;

    i = instance_create( x, y, obj_ogien );//tworzy ogien

    i. direction=180 //nadaje ogniowi kierunek w lewa strone

    i.speed = 5; //predkosc ognia

    strzal = 0;

    alarm[0] = room_speed * 0.4; //Odleglosc w czasie w jakim ma strzelac ogien

    }

  6. Cześć wszystkim

     

    Od paru dni próbuje ustawić tekst w textboxie,które zaimportowałem sobie ze sklepu marketplace z yoyogames.com

    Dokładnie ten

     

    link do textboxa

     

    No i problem jest taki,że jak go zaimportuje do swojego projektu,to tekst mi się w nim nakłada na siebie..dziwna to sytuacja,bo jak np zaimportuje go do nowego projektu pustego,to jest normalnie,a w moim już nie.Próbowałem i czcionkę zmienić,ale to nic nie daje..

     

    Tutaj kod textboxa

     

    obj_textbox

     

    create

     

    GML
    /*

    skrypty, zawierają wszystkie niezbędne informacje na temat

    wszystkich z poniższych funkcji.

    */

     

    // Zainicjowanie silnika CTB

    ctb_init();

     

    // Oznaczenie tego obiektu jako pole tekstowe

    ctb_create();

     

    // Dodawanie kilku ikon

    icon_typing = spr_ico_typing_small;

    icon_finished = spr_ico_continue_small;

     

    // Dodawanie kilku kolorow

    ctb_add_color( "default", c_white );

    ctb_add_color( "white", c_white );

    ctb_add_color( "blue", c_blue );

    ctb_add_color( "yellow", c_yellow );

    ctb_add_color( "red", c_red );

     

    // Dodawanie kilku czcionek

    ctb_add_font( "default", f_normal );

    ctb_add_font( "normal", f_normal );

    ctb_add_font( "other", f_other );

     

    // Dodawanie dzwieku

    ctb_add_sound( "gun", snd_gun );

     

    // Dodawanie niestandardowego polecenia, aby zmienić charakter obrazu

    char_sprite = spr_char;

    ctb_add_command( "char", command_char );

     

    //Ustawiamy dopełnienie pola tekstowego

    //Dodajemy duże lewe dopełnienie wstawiania sprite znaków w RHW tekstowym

    ctb_set_padding( 116,10,10,10 );

     

    // Ustawienie tla pola tekstowego

    sprite_index = ctb_load_subimage( spr_textbox_slice9_subimages, room_width-128, 108 );

     

    // Dodawanie tekstu w polu tekstowym

    ctb_add_text( "W[c:blue]e[c:yellow]l[c:red]c[c:default]o[c:blue]m[c:red]e[c:yellow]![c:default]" );

    ctb_add_text( "My name is John.#[pause:15]I will explain you what this textbox engine can do." );

    ctb_add_text( "First, you should know that it works using [f:other][c:yellow][tags][f:default][c:default]." );

    ctb_add_text( "Those [c:yellow]tags[c:default] will let you control some cool properties of your textbox." );

    ctb_add_text(

    "Some of them are [f:other]Fonts[f:default],[pause:30]"+

    " [c:blue]Colors[c:default],[pause:30] [speed:0.1]Speed[speed:1],[pause:30]"+

    " Sounds[sound:gun],[pause:30] pauses,[pause:30] or even custom commands that you can add!");

    ctb_add_text( "Exciting, isn't it?" );

    ctb_add_text( "All of them are available through the use of tags." );

    ctb_add_text( "For example, to use a [c:blue]Color[c:default], you would use the [tag:off][c:<color_name>] or [color:<color_name>][tag:on] tags." );

    ctb_add_text( "You can even use your own scripts in your own tags!" );

    ctb_add_text( "For example, let's change my face for a second..." );

    ctb_add_text( "[char:char2]Woah![pause:8]Woah![pause:8]Woah![pause:15]#What is going on!!!" );

    ctb_add_text( "[char:char]Gosh, thank god it was only for one moment!" );

    ctb_add_text( "Other cool features of the textbox are [c:yellow]Auto-Wrapping[c:default] and [c:blue]Auto-Overflow[c:default]." );

    ctb_add_text( "[c:yellow]Auto-Wrapping[c:default] will automatically ajust the text to fit in the textbox." );

    ctb_add_text( "You don't have to add any newline character." );

    ctb_add_text( "Be warned that the textbox uses tags for newline, but also the [c:yellow][#][c:default] character." );

    ctb_add_text( "To use the [#] character, you must use the [tag:off][#][tag:on] tag." );

    ctb_add_text( "[c:blue]Auto-Overflow[c:default] means that if you add too much text, the overflowing text will automatically be added into the next page of the dialogue for you." );

    ctb_add_text( "With those two automatic features, you don't have to worry about your text fitting in the textbox, the textbox takes care of all that for you." );

    ctb_add_text( "With all that said,[pause:15]#I hope this little textbox will fit your games!" );

    ctb_add_text( "Now I must take my leave." );

    ctb_add_text( "Thanks for trying my textbox!" );

     

     

    STEP

     

    GML
    ctb_update();

     

     

     

    DRAW

     

    GML
    ctb_draw();

    draw_sprite( char_sprite, 0, x+6, y+6 );

     

    No i parę skryptów jest jeszcze..

    Gdzieś tkwi bład..

     

     

     

    na obrazku to wygląda tak:

     

    image.png

  7. GML
    if file_exists("save.dat") {

    file=file_text_open_append("save.dat");

    } else if{ //<------ Do czego ten if?

    file=file_text_open__write("save.dat"); //<------ ok pod warunkiem że dopiszesz kod zapisu a nie tak zostawisz

    }

    Ciekawi mi jeszcze po jakiego grzyba Ci otwieranie pliku tekstowego skoro używasz game_save?

     

    EdiePL podał Ci dobre rozwiązanie oprócz tego, że piszę się show_message, ale przed tym Cię sam przestrzegł.

    Więc:

    GML
    if(file_exists("save.dat"))

    {

    game_load( "Save.dat" );

    }else{

    show_message("Nie znaleziono pliku zapisu.");

    };

     

     

    Dzieki..racja po co.mi otwieranie pliku.

    To wrzucam do kolizji bohatera

  8. Cześć wszystkim

     

    Mam taki dziwny problem z zapisem gry.

    Gdy gra nie jest zachowana przez gracza podczas gry (prościej dopóki nie zbierze się obiektu save) to wywala błąd fatalny i wyłącza grę natomiast gdy stan gry jest już zachowany i zbierzemy obiekt save to wtedy błędu nie ma. Zawsze jest ten błąd gdy nie zachowaliśmy gry, a chcemy ją wczytać w menu.

    Ja myślę,że trzeba sprawdzić czy plik jest pusty jak jest pusty to komunikat i nic nie robi, a jak pełny to wczytuje(dodać warunek)jak to zrobić?

     

    niżej kod mojego obiektu_save,który zapisuje moją grę w danym miejscu.

     

     

    CREATE

     

    GML
    licznik=x/14;

    checked = false; //sprawdzenie

    list = ds_list_create(); //lista zachowujaca stan gry

    saveInfo=false; //informacja o zachowaniu gry

    saveInfoTime=3; //infroamcja o czasie zachowania gry

     

     

     

    ALARM 0

     

    GML
    saveInfo=false;

     

     

     

    DRAW

     

    GML
    draw_self();

    if (saveInfo)

    {

    draw_text(x, y, "save game has been completed")

    }

     

     

     

    kolizja z bohaterem

     

    GML
    if( !checked )

    {

    checked = true;

    game_save("Save.dat"); //gre zachowywana pod nazwa pliku Save.dat

    if (!saveInfo)

    {

    saveInfo=true;

    audio_play_sound(dzwiek_checkpointisave, 1, false);

    alarm[0]=saveInfoTime*fps; //czas * ilosc FPS prosty wzor do zachowania stanu gry

    }

    }

     

     

     

    a tu przycisk obj_load game,który ładuje mi zapis gry

     

    STEP

     

    GML
    if (room !=roo_menu && mouse_check_button_pressed(mb_left))

    {

    //nie rob nic

    }

    else if (position_meeting(obj_cursor.x,obj_cursor.y,obj_load_game)) && mouse_check_button_pressed(mb_left) //Gra wczytuje zachpowanie dopiero gdy nacisniemy na Load Game prawym myszy** nie gdy naciskamy w wolne pole pokoju menu

    {

    game_load( "Save.dat" );

    audio_stop_sound (dzwiek_menu_glowne_gry);

    }

     

     

    teraz tak w STEP jeszcze mam:

     

    Bloczek wybrany Execute Script

     

    Applies to ustawione na Self

     

    script: scr_mouse_hover

  9. A to przypadkiem nie zależy od tego że wszystkie te spadające obiekty mają taki sam ID i jak przypisujesz nowy trigger do obiektu to zmienia się we wszystkich o tym samym ID?

     

     

     

     

     

     

     

     

     

    Niby jak mogę mieć ten samo Id skoro każdy jest rozstawiony w innej części mapy..

    ok zmieniłem zmienną teraz nazywa się spadanie

    Może to być problem w tym,że jak np kolce są pod platformą spadające to tak spadną mimo,że nie znajduje się pod nimi,a nad nimi..w czym problem jest?

    One mają spadać tylko wyłącznie jak się znajdę pod nimi,a nie nad nimi..

     

    obj_spadajace_kolce

     

    Create

     

    GML
    image_speed = 0;

    vspd = 4;

    spadanie = 0;

     

     

    Step

     

    GML
    //funkcja odpowiadajaca za spadanie obiektu

    if instance_exists(obj_player)

     

    {

    if obj_player.x>x-sprite_xoffset && obj_player.x<x+sprite_xoffset

     

     

    {

     

    spadanie = 1

     

     

    }

     

    if (spadanie == 1)

    {

    y += vspd;

    }

     

    if (place_meeting(x, y + vspd, par_solid))

    {

    instance_destroy();

    }

     

    //zderzenie gracza

    scr_death();

    }

  10. No dobra...wszystko działa bardzo dobrze..ale teraz np chcę więcej tych obiektów spadających porozstawiać na danej scenerii no i problem w tym,że do jakichkolwiek na mapie rozstawionych tych kolców spadających podejdę,to wszystkie opadają nawet te co nie widzę ich,co są w innym miejscu scenerii..A mają przecież opadać tylko te pod którymi się znajduje,a nie wszystkie na mapie.

    Jest na to inny sposób niż robić kopie tego obiektu..(bo w końcu korzysta z tego samego sprita) ,ale wtedy musiałbym dużo zrobić kopii inaczej nazwać pododawać mnóstwo kolizji do bohatera..a to bez sensu..

     

    Step

    GML
    //funkcja odpowiadajaca za spadanie obiektu

    if instance_exists(obj_player)

     

    {

    if obj_player.x>x-sprite_xoffset && obj_player.x<x+sprite_xoffset

     

     

    {

     

    trigger = 1

     

     

    }

     

    if (trigger == 1)

    {

    y += vspd;

    }

     

    if (place_meeting(x, y + vspd, par_solid))

    {

    instance_destroy();

    }

     

    //zderzenie gracza

    scr_death();

    }

     

     

    Create

    GML
    image_speed = 0;

    vspd = 7;

    trigger = 0;

  11. Dzień dobrym wszystkim

     

    Mam znikająca platformę wszystko ładnie działa,ale do platformy,która znika zrobiłem animację w paru krokach taki efekt zanikania..no i teraz...próbuje zrobić tak żeby animacja tej platformy uruchomiła się dopiero jak wskoczę na tą platformę,bo obecnie cały czas się uruchamia..

     

    o to mój kod platformy

     

     

    ALARM 0

     

    GML
    instance_change(obj_znikajacy,true);

     

     

     

     

    STEP

     

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

    {

    image_speed = 0.15;

     

    if ( alarm[0] <= 0 )

    {

    alarm[0] = room_speed*1; // tu ustawiamy czas po jakim ma platforma zniknac

    }

    }

     

     

    CREATE

     

    GML
    //image_speed = 0.15;// tu chwilowo animacje wyłączyłem,bo mi non stop bezmyślnie migało..

     

     

    Rozumiem,że w alarmie musze to ustawić?? że jak wskoczę na platformę włączy się animacja tej platformy i zniknie tak jak jest w kodzie w stepie ustawione.

×
×
  • Dodaj nową pozycję...