Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Odpowiedzi opublikowane przez pankracy

  1. Tu jest rysowany prostokąt

    I ma stała pozycję na ekranie.

    draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, false);

     

    Tu zmieniam wartości,ale jak mowie tekst mi zmienia położenie..

    Zmieniłem vx zmieniłem vy

    Zmieniłem tą wartość 586-20-100-2 i tą -1,596 i jak mówię...tekst jest zupełnie w innym miejscu

     

    draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);

     

  2. Dobra textbox jest już idealnie ustawiony..dzięki chłopaki..za pomoc zwłaszcza dla SimianVirus7:-)

    Jeszcze tylko tekstem jest problem z textboxa bo zmienia mi pozycje jak zmienię rozdzielczość z 1024x768 na 1280x720 to wtedy tekst jest nad textboxem,a nie w textboxie

    na rozdzielczości 1024x768 jest dobrze tekst usytuowany bo w textboxie,a na 1280x720 jest nad textboxem.

     

     

    Ostatecznie tak to wygląda

     

    Obj_text

     

    Draw

     

    ///ustawienie i narysowanie textboxa na planszy
    // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych
    //i tak dziala jak nalezy
    
    vx=view_xview[0];
    vy=view_yview[0];
    
    
    //teraz malujemy tlo tekstu
    draw_set_alpha(alpha/2);
    draw_set_color(c_gray);
    draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, false);  
        
        
    //teraz malujemy obwodke
    draw_set_alpha(alpha);
    draw_set_color(c_black);
    draw_rectangle(view_xview + 10, (view_yview + view_hview) - 120, (view_xview + view_wview) - 10, (view_yview + view_hview) - 30, true);    
        
        
    //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true);
    //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone
    draw_set_color(c_black);
        draw_set_font(font_text);
        draw_set_halign(fa_left);
        draw_set_valign(fa_top);
    
        draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
        
        draw_set_alpha(1);
        

     

  3. Przepraszam chłopaki,że was męczę w tej sprawie...

     

    Kombinowałem różnych rozwiązań,ale jednak zmienia swoje położenie,więc zrezygnowałem z tych rozwiązań:/

    Nie pomogło wymusić stałego położenia textboxa,bo przy zmianie rozdzielczości to i tak zmienia swoje położenie i zmniejsza się przy wyższej rozdzielczości.

    Idealnie jest na rozdzielczości 1024x768 natomiast na 1280x720 jest mniejszy i jest w złym miejscu.

    Ja rozumiem,że wyższa rozdzielczość powoduje to,że ten obiekt się zmniejsza i zmienia swoje położenie,ale jak to rozwiązać,żeby się rozciągnął/dopasował i zajął takie same lub zbliżone położenie jak na rozdzielczości 1024x768

    Tak jak na obrazku poniżej..tak to wygląda jak zmienię rozdzielczość z 1024x768 na 1280x720 to textbox zmniejsza się i położenie jego jest w innym miejscu niż na rozdzielczości 1024x768

     

    image.thumb.png.de196842ab590dd4b8e08177bfea5c32.png

     

    próbowałem też tego rozwiązania w evencie draw w obj_text

     


     

    przykład
    
    var _x = view_width/2;
    
    var _y = view_height;
    
    
    draw_rectangle(_x -100, _y - 50, _x + 100, _y + 100);
    
    ale nie rozpoznaje mi tej funkcji
    
    view_width i view_height
    
    Nie powinno być?
    
    window_get_width() i window_get_height() ?

     

     

    obj_text

     

    DRAW

     

    ///zostawilem rozwiazanie jak bylo na poczatku
    
    vx=view_xview[0];
    vy=view_yview[0];
    // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych
    //i tak dziala jak nalezy
    
    //teraz malujemy tlo tekstu
    draw_set_alpha(alpha/2);
    draw_set_color(c_gray);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,false);
      
    
    //teraz malujemy obwodke
    draw_set_alpha(alpha);
    draw_set_color(c_black);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,true);
        //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true);
    //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone
    draw_set_color(c_black);
        draw_set_font(font_text);
        draw_set_halign(fa_left);
        draw_set_valign(fa_top);
    
        draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
        draw_set_alpha(1);

     

  4. Kurcze w tym musi być problem w wyświetlaniu

     

    mam ustawiony widok w obiekcie na mapie gry

     

    obj_global_controler

     

    Begin Step

    ///Wyswietlanie widoku okna gry
    if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 {
     view_wport[0] = window_get_width();
     view_hport[0] = window_get_height();
     view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];
     surface_resize(application_surface,view_wview[0],view_hview[0]);
    display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa
    }

     

    Jak go wyłączę to texbox wraz z tekstem zmienia mi położenie

     

    Gnysek..

    tak też zrobiłem dałem w evencie draw Gui

     

     display_set_gui_size(1024, 768); 
    
     
    var _w_percentage = display_get_height()/768 * (1024/768);
    
    display_set_gui_maximise( _w_percentage, display_get_height()/768, ( 1024*_w_percentage - display_get_gui_width()) / 2, 0); 

    To mi wyśrodkowało centralnie na górze ekranie pasek HUD,który powinien być jak zawsze jest w lewym górnym rogu.

     

    Mi kurcze nie chodzi o centrowanie obrazu...

    Ja chce uzyskać taki efekt: napisze prościej bo mnie chyba nie rozumiecie.

     

    Stworzyłem sobie opcje zmiany rozdzielczości;

    1.Rozdzielczość 1024x600

    2.Rozdzielczość 1024x768

    3.Rozdzielczość 1280x720

     

    I chciałbym uzyskać taki efekt,że jak zmienię na jakąkolwiek inną rozdzielczość ekranu grę,to textbox który był na dole przy rozdzielczości 1024x600 to też chce żeby tam się znajdował.

    Nie mam być wycentrowany na środku ekranu tylko ma być na dole ekranu jak na tym obrazku na każdej z tych rozdzielczości:

     

    tak jak tu: 1024x600

     

    https://drive.google.com/file/d/1y4aiN-GNA3jEJIOnbCv5Q2m9fzD9b2CB/view

     

    Tak samo chce żeby się w tym samym miejscu znajdował w rozdzielczości

     

    1024x768 i 1280x720 właśnie o to mi chodzi..

    Nie wiem jak to nazwać skalowanie obrazu?

  5. Rozumiem,że masz na myśli GUI teraz paska HUD hmmm..ale to może bałaganu narobić Mi..

     

    pasek hud jest w obj_game_controler który jest obiektem persistent

     

     

    obj_game_controler

    draw GUI

     

    /// Wyswietlamy HUD gracza
    
    //draw_sprite(spr_glowny_hud,1,383,100);
    draw_set_color(c_white);
    draw_sprite(spr_mniejszy_hud,1,50,64);
    
    
    //draw_text(39, 68, string("    Score: " + string(global.pScore)));
    var __guiW = display_get_gui_width(), __guiH = display_get_gui_height();
    
    
    //draw_sprite(spr_healthbar,0,60,20);
    //draw_sprite(spr_hp_bar,0,120,20);
    
    
    //punkty czyli score wysrodkowalem to na HUD 
    draw_set_color(c_white);
    draw_set_valign(fa_middle);
    draw_set_halign(fa_center);
    draw_set_font(fn_punkty);
    draw_sprite(spr_score,1,310,30);
    draw_text(310,75,"$"+string(global.pScore));
    
    
    
    // Zegarki rozmieszczenie spritow i liczb
    draw_set_color(c_white);
    draw_set_valign(fa_middle);
    draw_set_halign(fa_center);
    draw_set_font(fn_punkty);
    draw_sprite(spr_watch,1,500,30);
    draw_text(480, 75," "+string(global.watch)+" / 5");
    
    // Rozmieszenie monet
    draw_set_color(c_white);
    draw_set_valign(fa_middle);
    draw_set_halign(fa_center);
    draw_set_font(fn_punkty);
    draw_sprite(spr_coins,1,400,30);
    draw_text(400, 75, string(" " + string(global.coins)));
    
    
    
    //HP HUD
    
    if instance_exists(par_player) {
    
     //hpHUD = lerp(hpHUD,par_player.hp,.5);
     hpHUD=global.hp;
     maxHpHUD = par_player.maxHp;
     
    
     //HUD dopalaczy
     
     with obj_player {
      var _offset;
      _offset = 0;
     
      draw_set_font(fnt_pwrup);
      draw_set_valign(fa_bottom);
      draw_set_halign(fa_center);
      draw_set_color(c_white);
      draw_texture_flush();
     
      if pwrupSpd > 0 {
       draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5);
       draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed)));
       _offset++;
      }
      if pwrupStr > 0 {
       draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5);
       draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed)));
       _offset++;
      }
      if pwrupJmp > 0 {
       draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5);
       draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed)));
       _offset++;
      }
     }
    } else {
     hpHUD = lerp(hpHUD,0,.5);
    }
    
    //HUD zycia
    
    //draw_sprite_part(spr_hp_bar,1,32,0,91/maxHpHUD*hpHUD,32,34,4);
    draw_sprite_part(spr_hp_bar,1,1,0,180/maxHpHUD*hpHUD,130,90,14);
    draw_set_color(c_white);
    draw_set_valign(fa_middle);
    draw_set_halign(fa_center);
    draw_set_font(fn_punkty);
    draw_text(70, 74, string("x" + string(global.life))); //rozmieszczenie wskaznika zyc
    draw_sprite(spr_glowa,1,40,1);     //sprite glowy anatola przy pasku zycia
    //draw_sprite(spr_serduszko,1,160,74);
    
    
    
    
    

     

  6. Próbowałem użyć funkcji display_set_gui_size();  w evencie draw gui w obj_textbox wpisałem wartości display_set_gui_size(600, 1024); ale kiedy pojawia mi się plansza pierwsza gry,to mam bardzo duży pasek HUD i jest bardzo rozciągnięty.

    Pasek HUD musi być w draw_gui bo cały czas występuje w grze.

     

    Użyłem też w evencie draw obj_textbox drugiego rozwiązania,ustawiłem pozycję ramki od ekranu no i sytuacja jest taka,że jak jest plansza już z textboxem to

    na planszy intro o wymiarach 1024x600  prostokąt jest pod tesktem:/,

    A na kolejnej planszy już grze o stałych wymiarach 1280x720 to prostokąt textboxa jest w podobnym położeniu co wyżej na screenie pokazałem

     

    w draw obj_textbox mam tak

     

    vx=view_xview[0];
    vy=view_yview[0];
    
    
    
    
    var w = display_get_gui_width();
    var h = display_get_gui_height();
    
    var x1 = 10;
    var y1 = h - 550;
    var x2 = w - 1000;
    var y2 = h - 460;
    
    
    //teraz malujemy tlo tekstu
    draw_set_alpha(alpha/2);
    draw_set_color(c_gray);
    draw_rectangle(x1, y1, x2, y2, false);
    
    
    var w = display_get_gui_width();
    var h = display_get_gui_height();
    
    var x1 = 10;
    var y1 = h - 550;
    var x2 = w - 1000;
    var y2 = h - 460;
    
    
    
    //teraz malujemy obwodke
    draw_set_alpha(alpha);
    draw_set_color(c_black);
    draw_rectangle(x1, y1, x2, y2, true);
    
    
    
    //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone
    draw_set_color(c_black);
        draw_set_font(font_text);
        draw_set_halign(fa_left);
        draw_set_valign(fa_top);
    
        draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
        draw_set_alpha(1);

     

     

     

     

     

     

     

     

     

  7. Kurcze..źle pytanie sprecyzowałem.

    Draw gui ustawi mi textbox na środku ekranu,a ja chce taki efekt uzyskać jak niżej na obrazku 1

     

    obrazek 1

    1024x600 - chce żeby ten textbox był na dole ekranu tak jak na tej rozdzielczości i bez względu czy ustawie rozdzielczość 1024x600 czy wyższą

    https://drive.google.com/open?id=1y4aiN-GNA3jEJIOnbCv5Q2m9fzD9b2CB

     

     

    obrazek 2

    1280x720 - tu jest na tej rozdzielczości źle..textbox mój znajduje się już wyżej na ekranie

     

    https://drive.google.com/open?id=1CUJwNXVHpfCZpWtfTFU-Fd6fI5itzq0X

     

     

  8. Cześć wszystkim.

    Właśnie jestem na etapie tworzenia menu gry w którym będę zmieniał rozdzielczość:

    Dostępne będą:

     

    1024x768

    1280x720

     

    Pytanie..bo mam textboxa...jest on dopasowany do ekranu 1024x600 i 1024x768.

    jak ustawie view na 1280x720 to cały textbox jest już w innym miejscu na planszy..

     

    Czy jest możliwość ustawić tak żebym nie musiał ręcznie zmieniać parametrów texboxa w draw? zresztą jak chce mieć dwie rozdzielczości to chciałbym żeby textbox dopasował się do rozmiaru view.

     

     

    myślałem o użyciu funkcji

     

    application_surface;

     

    Ale nie wiem czy dobrze kombinuje...

     

    tak wygląda kod obj_textbox

     

    obj_textbox

     

    Create

     

    alpha=0; //przeswitywalnosc
    step=0; //kolejne zadanie przez nas wykonywane - KROK
    text=''; //tekst jaki mamy wyswietlic
    leght = 0;

    Step

     

    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
      if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istnieje, to wykonuj ponizszy kod
      {
        if not ds_queue_empty(global.textq) and global.text_get=true
        //jezeli [kolejka] nie jest pusta i mozna [pobrac tekst]
            {
            global.text_get=false;//wylacz pobieranie tekstu, aby funkcja sie juz nie wywolala, dopuki znowu nie bedzie true
            text=ds_queue_dequeue(global.textq);//pobierz tekst z kolejki
            step=1;//ustaw zadanie na jeden
    
            leght=0;
            }
        //KROK 1
        if step=1
            {
            //zmniejszamy przeswitywalnosc az do max. widocznosci (1)
            if alpha<1 then alpha+=0.1 else
                {
                //przeswitywalnosci juz nie ma, zatem skoncz wykonywanie tego skryptu
                alpha=1;
                step=2;
                }
            }
        //KROK 2
        if step=2
            {
            if leght<string_length(string(text)) then leght += 1; // Mozesz zmienic predkosc "drukowania" testu dodajac inna liczbe do zmiennej leght
            }
    
        //KROK 3
        if step=3
            {
            //teraz zwiekszaj przeswitywalnosc az do znikniecia (0)
            if alpha>0 then alpha-=0.1 else
                {
                //przeswituje juz tak ze bardziej nie moze
                alpha=0;
                text='';
    
                global.text_get=true;//ustaw, ze mozna juz pobierac tekst
                step=0;
                }
            }
      }
    }

    Draw

     

    
    
    vx=view_xview[0];
    vy=view_yview[0];
    // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych
    //i tak dziala jak nalezy
    
    //teraz malujemy tlo tekstu
    draw_set_alpha(alpha/2);
    draw_set_color(c_gray);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,false);
      
    
    //teraz malujemy obwodke
    draw_set_alpha(alpha);
    draw_set_color(c_black);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,true);
        //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true);
    //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone
    draw_set_color(c_black);
        draw_set_font(font_text);
        draw_set_halign(fa_left);
        draw_set_valign(fa_top);
    
        draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
        draw_set_alpha(1);
        
        

     

  9. Hmmm..czyli to nie w tym problem;-)

     

    dla pewności tu cały kod jeszcze textboxa...

    są tylko trzy małe skrypty.

     

    scr_ini

     

    //po pelen opis dzialanie tego skryptu zerknij do obiektu obj_inicjowanie
    global.textq=ds_queue_create();//kolejka z tekstem
    global.text_get=true;//czy mozemy pobrac nastepny tekst, wiecej w obj_text

    add_text

     

    //dodaje tekst do kolejki
    var text;
    text=argument0;
    
    if !instance_exists(obj_text) then instance_create(0,0,obj_text); 
    //poniewaz obj rozmowa nie ma opcji persistent (dla bezpieczenstwa)
    //tworzymy go gdy nie ma go na planszy
    
    
    
    ds_queue_enqueue(global.textq,text);
    
    
    

    i nieszczęsny no_text

     

        //zwraca true, jezeli nie ma juz zadnego tekstu do wyswietlenia
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    if ( ds_queue_empty(global.textq) and global.text_get=true )
    {
    return true;
    }
    else 
    {
    return false;
    }
    }
    else
    return false;
    }
    else
    return false;  

     

  10. Teraz jak załaduje grę,to bohater fakt chodzi wszystko niby normalnie robi wykonuje..ale kiedy zginę i zacznę planszę od nowa,to stoi w miejscu i nie można nim ruszać.

    Natomiast jak wezmę zamiast load game nowa gra to napis z texboxa jak się pojawia to bohater powinien stać w miejscu,a teraz można nim chodzić i kiedy tekst sie skończy bohater zamarza tzn nic już nie można z nim zrobić;-)

  11. jeszcze chodzi w miejscu,ale obstawiam,że to wina kodu w End Step

     

    obj_player

    End Step

     

    ///Sprity
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    if(instance_number(obj_napis_plansz)=0 && no_text()) {
    if !place_meeting(x,y,obj_water)
     {
       
     if wPowietrzu == false && key_check(key.right) = key_check(key.left) && sprite_index != spr_player_stand && drabina == false {
      sprite_index = spr_player_stand;
      image_index =0;
     
     }
     if wPowietrzu == false && (key_check(key.right) || key_check(key.left)) && key_check(key.right) != key_check(key.left) && sprite_index != spr_player_run && drabina == false {
      sprite_index = spr_player_run;
      image_index = 0;
     }
     if wPowietrzu == true && drabina == false {
      sprite_index = spr_player_air;
      if vspd <= -1 {
       image_index = 0;
      } else if vspd >= 1 {
       image_index = 2;
      } else {
       image_index = 1;
      }
     }
     
     if drabina == true {
      if x == xprevious && y == yprevious {
       if sprite_index != spr_player_hang {
        sprite_index = spr_player_hang;
       }
      } else {
       if sprite_index != spr_player_climb {
        sprite_index = spr_player_climb;
       }
      }
     }
     
     if  zegarAtaku > 0 && atakBierzacy == 0 {
      sprite_index = spr_player_attack;
      image_index = 14-(zegarAtaku);
      zegarAtaku -= 1;
     }
     if zegarAtaku > 0 && atakBierzacy == 1  {
      sprite_index = spr_player_shoot;
      image_index = 6-(zegarAtaku);
      zegarAtaku -= 1;
     }
     
      if zegarAtaku > 0 && atakBierzacy == 1 && (key_check(key.right) || key_check(key.left)) {
      sprite_index = spr_anatol_przesuwa_skrzynie;
      image_index = 23-(odejmij);
      odejmij -= 1;
     }
     
     
    
     
     kierunekPlywania = point_direction(xprevious,yprevious,x,y);
     wysKierunek = kierunekPlywania;
     if image_xscale < 0 {
      wysKierunek += 180;
     }
    } else {
     if sprite_index != spr_player_water {
      sprite_index = spr_player_water;
      image_index = 0;
     }
    
     if key_check(key.right) && !key_check(key.left) && image_xscale = -1 {
      image_xscale = 1;
      wysKierunek -= 180;
     } else if key_check(key.left) && !key_check(key.right) && image_xscale = 1 {
      image_xscale = -1;
      wysKierunek += 180;
     }
     
     if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      image_index += 2;
      if image_xscale > 0 {
       wysKierunek -= angle_difference(wysKierunek,kierunekPlywania)/16;
      } else {
       wysKierunek -= angle_difference(wysKierunek,180+kierunekPlywania)/16;
      }
     }
    }
    
    
     //animacja do przesuwania skrzyni
     if wPowietrzu == false && (key_check(key.right)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia))
     {sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
      else if (key_check(key.left)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) {
      sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
    
    
    }
    
    
    
    }//dodane
    }//dodane
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

     

  12. no_text bohater na czas wyświetlania tekstu z textboxa jest zatrzymany stoi w miejscu:-)

    Nie ma już błędów,ale jak załaduje grę z save to mój bohater chodzi w miejscu...nie można nim ruszać..w złym miejscu musiałem dać te warunki:-(

    w opisie dałem przy dodanych nawiasach klamrowych komentarz  }//dodane.to są nawiasy klamrowe do tych warunków dodanych.

     

    obecnie w step i w end step obj_player mam tak dane te warunku

     

    obj_player

    step

     

    ///ustawienia ruchu Bohatera
    
    
    // gdy Bohater jest zamrozony zatrzymujemy go
    if(zamroz==true)
    {
    x = zamroz_x;
    y = zamroz_y;
    gravity=0
    vspd=0;
    hspd=0;
    }
    
    
    //licznik czasowy gry
    rs_timer ++;
    
    
    
        ///auto unstuck kiedy nam Bohater sie zaklinuje to podana nizej funkcja go odblokuje
    while(place_meeting(x,y,other))
    {
    
        dir = point_direction(x,y,other.x,other.y)
        x = x + lengthdir_x(-1,dir)
        y = y + lengthdir_y(+10,dir)
        other.alarm[0] = room_speed;
    }
    
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    
    
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage
    {
    if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0)
    {
    image_speed=1
    }else{
    image_speed=0;
    }
    
    }//dodane
    }//dpdame
    
    
    
    if (vspd > 25)  //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.)
    {global.damage+=5} //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.)
    if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia
    {
    other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen.
    global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej
    }
    
    
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    if no_text() //teraz Bohater stoi jak jest odwarzana sekwencja tekstowa textboxa
    {
    ///Kontrola
    if !place_meeting(x,y,obj_water) {
     //Normalny ruch
     if drabina == false {
      if key_check_pressed(key.jump)  && wPowietrzu == false {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 3;
       //Punkt respawnu w miejscu ostatniego skoku
       //spawnX = x;
       //spawnY = y;
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
       }
      } else if key_check(key.jump) && silaSkoku > 0 {
        audio_play_sound(dzwiek_skoku_anatolka, 1, false);   //odtwarzamy dzwiek przy skakaniu
       vspd -= 2+sign(pwrupJmp);
       silaSkoku--;
     
      } else {
       if key_check_released(key.jump) && silaSkoku > 2 {
        vspd += 2+sign(pwrupJmp);
     
       }
       silaSkoku = 0;
      }
      //Podwojny skok
     /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 0;
       czasSkoku--;
       audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu
      }*/
    
      if key_check(key.action) && zegarAtaku == false  {
       //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol
        zegarAtaku = 26;
        atakBierzacy = 1;
        with instance_create( x+(image_xscale*12), y-26, obj_projectile) { //idealnie ta funkcja obraca pocisk gracza lub wroga
       
       
         hspd = other.image_xscale*15;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         speed=4;
         owner = par_player;
         sila = 0;
         eksplozja = true;
         zasiegEksplozji = 30;
         silaEksplozji = 2+(sign(other.pwrupStr)*8);
         //image_blend = c_black; //kolor lotu pocisku
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
      }
     
     
      if key_check(key.right) && !key_check(key.left) {
       if hspd < 8+(sign(pwrupSpd)*5) {
        hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5));
       }
       image_xscale = 1;
      }
      if key_check(key.left) && !key_check(key.right)  {
       if hspd > -8-(sign(pwrupSpd)*5) {
    
        hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5));
       }
       image_xscale = -1;
      }
     
      //Drabina
     
    
        if  place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable)
        && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down))  {
       drabina = true;
       vspd = 0;
       hspd = 0;
      }
     }
    
    
     
     
    
     
     //Wspinanie sie
     if drabina == true {
      var __hsign = key_check(key.right)-key_check(key.left);
      var __vsign = key_check(key.down)-key_check(key.up);
     
      hspd = min(max(hspd+__hsign,-2),2);
      vspd = min(max(vspd+__vsign*2,-4),4);
     
      if __vsign == -1 && !place_meeting(x,y-32,par_climbable) {
       drabina = false;
       vspd = -10;
      }
     
      if __hsign != 0 {
       image_xscale = __hsign;
      }
     
      if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable)  {
       drabina = false;
      }
     }
     
    }
    
    else {
    
     //Plywanie
     kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up));
    if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      hspd += lengthdir_x(.5,kierunekPlywania);
    if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) {
       vspd += lengthdir_y(.5,kierunekPlywania);
       //audio_play_sound(dzwiek_anatol_plywa, 1, false);  //odtwarzamy dzwiek gdy anatol plywa
      }
     }
     if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory
      vspd = -12;
    
     }
    }
    }
    }
    }//dodane
    }//dpdane
    
    
    
    
    
    
     //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza
     if  place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid)
        {
        drabina=false;
        }
      
    
      
     
     //Normalny ruch
     if drabina == false {
         if key_check(key.down) && wPowietrzu == false{
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
      
       }
       }
       }
     
     if vspd>0 && place_meeting(x,y,par_climbable){drabina=true}
       if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable)
     && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) {drabina=false} 
    
    
    
      if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) {
        zegarAtaku = 16;
        atakBierzacy = 1;
        with instance_create(x+10,y-26,obj_projectile)  {
         hspd = other.image_xscale*10;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         owner = par_player;
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
    }
    
    
    
    //nabieranie powietrza
    if tlen<10
    {if distance_to_object(obj_water)>1
    {tlen+=0.2}}
    //jesli nie ma powietrza energia ucieka i bohater potem traci zycie
    if tlen<0.01
    {global.hp-=0.2}
    if global.hp<=0
    {
    global.life -= 1;
    }

    obj_player

     

    End Step

     

     

    ///Sprity
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    if(instance_number(obj_napis_plansz)=0 && no_text()) {
    if !place_meeting(x,y,obj_water)
     {
       
     if wPowietrzu == false && key_check(key.right) = key_check(key.left) && sprite_index != spr_player_stand && drabina == false {
      sprite_index = spr_player_stand;
      image_index =0;
     
     }
     if wPowietrzu == false && (key_check(key.right) || key_check(key.left)) && key_check(key.right) != key_check(key.left) && sprite_index != spr_player_run && drabina == false {
      sprite_index = spr_player_run;
      image_index = 0;
     }
     if wPowietrzu == true && drabina == false {
      sprite_index = spr_player_air;
      if vspd <= -1 {
       image_index = 0;
      } else if vspd >= 1 {
       image_index = 2;
      } else {
       image_index = 1;
      }
     }
     
     if drabina == true {
      if x == xprevious && y == yprevious {
       if sprite_index != spr_player_hang {
        sprite_index = spr_player_hang;
       }
      } else {
       if sprite_index != spr_player_climb {
        sprite_index = spr_player_climb;
       }
      }
     }
     
     if  zegarAtaku > 0 && atakBierzacy == 0 {
      sprite_index = spr_player_attack;
      image_index = 14-(zegarAtaku);
      zegarAtaku -= 1;
     }
     if zegarAtaku > 0 && atakBierzacy == 1  {
      sprite_index = spr_player_shoot;
      image_index = 6-(zegarAtaku);
      zegarAtaku -= 1;
     }
     
      if zegarAtaku > 0 && atakBierzacy == 1 && (key_check(key.right) || key_check(key.left)) {
      sprite_index = spr_anatol_przesuwa_skrzynie;
      image_index = 23-(odejmij);
      odejmij -= 1;
     }
     
     
    
     
     kierunekPlywania = point_direction(xprevious,yprevious,x,y);
     wysKierunek = kierunekPlywania;
     if image_xscale < 0 {
      wysKierunek += 180;
     }
    } else {
     if sprite_index != spr_player_water {
      sprite_index = spr_player_water;
      image_index = 0;
     }
    
     if key_check(key.right) && !key_check(key.left) && image_xscale = -1 {
      image_xscale = 1;
      wysKierunek -= 180;
     } else if key_check(key.left) && !key_check(key.right) && image_xscale = 1 {
      image_xscale = -1;
      wysKierunek += 180;
     }
     
     if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      image_index += 2;
      if image_xscale > 0 {
       wysKierunek -= angle_difference(wysKierunek,kierunekPlywania)/16;
      } else {
       wysKierunek -= angle_difference(wysKierunek,180+kierunekPlywania)/16;
      }
     }
    }
    
    
     //animacja do przesuwania skrzyni
     if wPowietrzu == false && (key_check(key.right)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia))
     {sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
      else if (key_check(key.left)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) {
      sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
    
    
    }
    
    
    
    }//dodane
    }//dodane
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

     

  13. Może lepiej te warunek wrzucić do pokoju przed rozpoczęciem gry co?

     

    mam pokój inicjowanie

    a w nim obj_inicjowanie

     

     

    w create

     

    /*ten obiekt sluzy jedynie za inicjacje pewnych zmiennych, ktore powinny
    byc zdefiniowane zanim cokolwiek jeszcze wydarzy sie w grze, dlatego tez
    dla 100% pewnosci, ze zaden inny obiekt nie uzyje tych wartosci zanim ich
    nie ustalimy, ustawilem go w pierwszym pokoju i dalem mu w create wywolanie
    skryptu scr_ini(); ktory wposmniane zmienne ustawia a nastepnie przechodzi
    do drugiego pokoju
    
    pamietaj! poza tym obiektem w roomie nie moze byc nic innego, a przed nim
    zaden obiekt nie moze zostac stworzony aby miec pewnosc, ze nie odwola sie
    do zmiennych ktore zostana za chwilke ustawione !*/
    
    scr_ini(); //to skrypt od textboxa
    
    
    room_goto(roo_world1_1);//to moja plansza pierwsza swiata

     

    scr_ini

     

    //po pelen opis dzialanie tego skryptu zerknij do obiektu obj_inicjowanie
    global.textq=ds_queue_create();//kolejka z tekstem
    global.text_get=true;//czy mozemy pobrac nastepny tekst, wiecej w obj_text

     

  14. Wyeliminowane są praktycznie wszystkie już błędy,ale jak załaduje grę z load game,to Bohater chodzi w miejscu..I nie mogę nic z nim zrobić...

    End step już ogarnięty faktycznie tam był jeden z błędów.

    wstawiłem te warunki w stepie bohatera tam gdzie był ten problem.Zaznaczyłem je są zaraz na początku kodu.

    A powiedz mi,bo myślę nad rozwiązaniem takim,żeby wstawić te warunku przed załadowaniem pierwszej planszy...

    Np jest pusty pokój gdzie są te warunki i z pustego pokoju przechodzi do planszy świata pierwszego..Tylko wtedy warunek musiałby wyglądać inaczej...

     

     

     

    obj_player

     

    Step

     

    
    
    ///ustawienia ruchu Bohatera
    
    
    // gdy Bohater jest zamrozony zatrzymujemy go
    if(zamroz==true)
    {
    x = zamroz_x;
    y = zamroz_y;
    gravity=0
    vspd=0;
    hspd=0;
    }
    
    
    //licznik czasowy gry
    rs_timer ++;
    
    
    
        ///auto unstuck kiedy nam Bohater sie zaklinuje to podana nizej funkcja go odblokuje
    while(place_meeting(x,y,other))
    {
    
        dir = point_direction(x,y,other.x,other.y)
        x = x + lengthdir_x(-1,dir)
        y = y + lengthdir_y(+10,dir)
        other.alarm[0] = room_speed;
    }
    
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////TU JEST WSTAWIONY WARUNEK!
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage
    {
    if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0)
    {
    image_speed=1
    }else{
    image_speed=0;
    }
    }//dodane
    }//dpdame
    }//dodany
    
    
    if (vspd > 25)  //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.)
    {global.damage+=5} //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.)
    if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia
    {
    other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen.
    global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej
    }
    
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////I TU JEST WSTAWIONY WARUNEK!
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    
    
    if no_text() //teraz Anatol stoi jak jest odwatrzana sekwencja tekstowa textboxa
    {
    ///Kontrola
    if !place_meeting(x,y,obj_water) {
     //Normalny ruch
     if drabina == false {
      if key_check_pressed(key.jump)  && wPowietrzu == false {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 3;
       //Punkt respawnu w miejscu ostatniego skoku
       //spawnX = x;
       //spawnY = y;
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
       }
      } else if key_check(key.jump) && silaSkoku > 0 {
        audio_play_sound(dzwiek_skoku_anatolka, 1, false);   //odtwarzamy dzwiek przy skakaniu
       vspd -= 2+sign(pwrupJmp);
       silaSkoku--;
     
      } else {
       if key_check_released(key.jump) && silaSkoku > 2 {
        vspd += 2+sign(pwrupJmp);
     
       }
       silaSkoku = 0;
      }
      //Podwojny skok
     /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 0;
       czasSkoku--;
       audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu
      }*/
    
      if key_check(key.action) && zegarAtaku == false  {
       //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol
        zegarAtaku = 26;
        atakBierzacy = 1;
        with instance_create( x+(image_xscale*12), y-26, obj_projectile) { //idealnie ta funkcja obraca pocisk gracza lub wroga
       
       
         hspd = other.image_xscale*15;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         speed=4;
         owner = par_player;
         sila = 0;
         eksplozja = true;
         zasiegEksplozji = 30;
         silaEksplozji = 2+(sign(other.pwrupStr)*8);
         //image_blend = c_black; //kolor lotu pocisku
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
      }
     
     
      if key_check(key.right) && !key_check(key.left) {
       if hspd < 8+(sign(pwrupSpd)*5) {
        hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5));
       }
       image_xscale = 1;
      }
      if key_check(key.left) && !key_check(key.right)  {
       if hspd > -8-(sign(pwrupSpd)*5) {
    
        hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5));
       }
       image_xscale = -1;
      }
     
      //Drabina
     
    
        if  place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable)
        && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down))  {
       drabina = true;
       vspd = 0;
       hspd = 0;
      }
     }
    
    
     
     
    
     
     //Wspinanie sie
     if drabina == true {
      var __hsign = key_check(key.right)-key_check(key.left);
      var __vsign = key_check(key.down)-key_check(key.up);
     
      hspd = min(max(hspd+__hsign,-2),2);
      vspd = min(max(vspd+__vsign*2,-4),4);
     
      if __vsign == -1 && !place_meeting(x,y-32,par_climbable) {
       drabina = false;
       vspd = -10;
      }
     
      if __hsign != 0 {
       image_xscale = __hsign;
      }
     
      if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable)  {
       drabina = false;
      }
     }
     
    }
    
    else {
    
     //Plywanie
     kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up));
    if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      hspd += lengthdir_x(.5,kierunekPlywania);
    if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) {
       vspd += lengthdir_y(.5,kierunekPlywania);
       //audio_play_sound(dzwiek_anatol_plywa, 1, false);  //odtwarzamy dzwiek gdy anatol plywa
      }
     }
     if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory
      vspd = -12;
    
     }
    }
    }
    }
    
    
    }//dodany
    
    
    
    
    
     //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza
     if  place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid)
        {
        drabina=false;
        }
      
    
      
     
     //Normalny ruch
     if drabina == false {
         if key_check(key.down) && wPowietrzu == false{
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
      
       }
       }
       }
     
     if vspd>0 && place_meeting(x,y,par_climbable){drabina=true}
       if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable)
     && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) {drabina=false} 
    
    
    
      if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) {
        zegarAtaku = 16;
        atakBierzacy = 1;
        with instance_create(x+10,y-26,obj_projectile)  {
         hspd = other.image_xscale*10;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         owner = par_player;
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
    }
    
    
    
    //nabieranie powietrza
    if tlen<10
    {if distance_to_object(obj_water)>1
    {tlen+=0.2}}
    //jesli nie ma powietrza energia ucieka i bohater potem traci zycie
    if tlen<0.01
    {global.hp-=0.2}
    if global.hp<=0
    {
    global.life -= 1;
    }

    obj_player

    End step

     

    ///Sprity
    
    
    if(variable_global_exists("textq")) //Jesli zmienna global.textq istenieje, to wykonuj ponizszy kod
    {
        if(ds_exists(global.textq, ds_type_queue)) //Jesli data structure istenieje, to wykonuj ponizszy kod
        {
    
    if(instance_number(obj_napis_plansz)=0 && no_text()) {
    if !place_meeting(x,y,obj_water)
     {
       
     if wPowietrzu == false && key_check(key.right) = key_check(key.left) && sprite_index != spr_player_stand && drabina == false {
      sprite_index = spr_player_stand;
      image_index =0;
     
     }
     if wPowietrzu == false && (key_check(key.right) || key_check(key.left)) && key_check(key.right) != key_check(key.left) && sprite_index != spr_player_run && drabina == false {
      sprite_index = spr_player_run;
      image_index = 0;
     }
     if wPowietrzu == true && drabina == false {
      sprite_index = spr_player_air;
      if vspd <= -1 {
       image_index = 0;
      } else if vspd >= 1 {
       image_index = 2;
      } else {
       image_index = 1;
      }
     }
     
     if drabina == true {
      if x == xprevious && y == yprevious {
       if sprite_index != spr_player_hang {
        sprite_index = spr_player_hang;
       }
      } else {
       if sprite_index != spr_player_climb {
        sprite_index = spr_player_climb;
       }
      }
     }
     
     if  zegarAtaku > 0 && atakBierzacy == 0 {
      sprite_index = spr_player_attack;
      image_index = 14-(zegarAtaku);
      zegarAtaku -= 1;
     }
     if zegarAtaku > 0 && atakBierzacy == 1  {
      sprite_index = spr_player_shoot;
      image_index = 6-(zegarAtaku);
      zegarAtaku -= 1;
     }
     
      if zegarAtaku > 0 && atakBierzacy == 1 && (key_check(key.right) || key_check(key.left)) {
      sprite_index = spr_anatol_przesuwa_skrzynie;
      image_index = 23-(odejmij);
      odejmij -= 1;
     }
     
     
    
     
     kierunekPlywania = point_direction(xprevious,yprevious,x,y);
     wysKierunek = kierunekPlywania;
     if image_xscale < 0 {
      wysKierunek += 180;
     }
    } else {
     if sprite_index != spr_player_water {
      sprite_index = spr_player_water;
      image_index = 0;
     }
     
     }
     }
    
     if key_check(key.right) && !key_check(key.left) && image_xscale = -1 {
      image_xscale = 1;
      wysKierunek -= 180;
     } else if key_check(key.left) && !key_check(key.right) && image_xscale = 1 {
      image_xscale = -1;
      wysKierunek += 180;
     }
     
     if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      image_index += 2;
      if image_xscale > 0 {
       wysKierunek -= angle_difference(wysKierunek,kierunekPlywania)/16;
      } else {
       wysKierunek -= angle_difference(wysKierunek,180+kierunekPlywania)/16;
      }
     }
    //}
    
    
     //animacja do przesuwania skrzyni
     if wPowietrzu == false && (key_check(key.right)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia))
     {sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
      else if (key_check(key.left)) && (place_meeting(x-5,y,obj_skrzynia) || place_meeting(x+5,y,obj_skrzynia)) {
      sprite_index = spr_anatol_przesuwa_skrzynie; image_index = 23 -(odejmij);
      odejmij -= 1; }
    
    
    }
    
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

     

  15. Wiem Simianie,Dlatego powoli biorę się za porządki w kodzie jak i przeanalizowanie po kolei w każdym obiekcie wszystkich funkcji kodu.

    Czytam już sobie samouczek wbudowany w GMS.

    A kciuki się bardzo przydadzą;-) Nie długo udostępnię nowe grafiki z gry.

     

    A te dwa ostatnie błędy jak wspomniałem wcześniej,to tyczą się wyłącznie obj_player

     

    poniżej ich treść

     

    1.

     

    ############################################################################################
    ERROR in
    action number 1
    of  Step Event0
    for object obj_player:
    
    Data structure with index does not exist.
     at gml_Script_no_text (line 6) - if ( ds_queue_empty(global.textq) and global.text_get=true )
    ############################################################################################
    --------------------------------------------------------------------------------------------
    stack frame is
    gml_Script_no_text (line 6)
    called from - gml_Object_obj_player_StepNormalEvent_1 (line 50) - if no_text() //teraz Bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa

     

    2.

     

    ############################################################################################
    ERROR in
    action number 2
    of  Step Event2
    for object obj_player:
    
    Data structure with index does not exist.
     at gml_Script_no_text (line 6) - if ( ds_queue_empty(global.textq) and global.text_get=true )
    ############################################################################################
    --------------------------------------------------------------------------------------------
    stack frame is
    gml_Script_no_text (line 6)
    called from - gml_Object_obj_player_StepEndEvent_2 (line 3) - if(instance_number(obj_napis_plansz)=0 && no_text()) {

     

    obj_player

     

    Step

     

    ///ustawienia ruchu Bohatera
    
    
    // gdy Bohater jest zamrozony zatrzymujemy go
    if(zamroz==true)
    {
    x = zamroz_x;
    y = zamroz_y;
    gravity=0
    vspd=0;
    hspd=0;
    }
    
    
    //licznik czasowy gry
    rs_timer ++;
    
    
    
        ///auto unstuck kiedy nam Bohater sie zaklinuje to podana nizej funkcja go odblokuje
    while(place_meeting(x,y,other))
    {
    
        dir = point_direction(x,y,other.x,other.y)
        x = x + lengthdir_x(-1,dir)
        y = y + lengthdir_y(+10,dir)
        other.alarm[0] = room_speed;
    }
    
    
    
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage
    {
    if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0)
    {
    image_speed=1
    }else{
    image_speed=0;
    }
    
    
    if (vspd > 25)  //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.)
    {global.damage+=5} //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.)
    if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia
    {
    other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen.
    global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej
    }
    
    
    if no_text() //teraz Anatol stoi jak jest odwatrzana sekwencja tekstowa textboxa
    {
    ///Kontrola
    if !place_meeting(x,y,obj_water) {
     //Normalny ruch
     if drabina == false {
      if key_check_pressed(key.jump)  && wPowietrzu == false {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 3;
       //Punkt respawnu w miejscu ostatniego skoku
       //spawnX = x;
       //spawnY = y;
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
       }
      } else if key_check(key.jump) && silaSkoku > 0 {
        audio_play_sound(dzwiek_skoku_anatolka, 1, false);   //odtwarzamy dzwiek przy skakaniu
       vspd -= 2+sign(pwrupJmp);
       silaSkoku--;
     
      } else {
       if key_check_released(key.jump) && silaSkoku > 2 {
        vspd += 2+sign(pwrupJmp);
     
       }
       silaSkoku = 0;
      }
      //Podwojny skok
     /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 0;
       czasSkoku--;
       audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu
      }*/
    
      if key_check(key.action) && zegarAtaku == false  {
       //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol
        zegarAtaku = 26;
        atakBierzacy = 1;
        with instance_create( x+(image_xscale*12), y-26, obj_projectile) { //idealnie ta funkcja obraca pocisk gracza lub wroga
       
       
         hspd = other.image_xscale*15;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         speed=4;
         owner = par_player;
         sila = 0;
         eksplozja = true;
         zasiegEksplozji = 30;
         silaEksplozji = 2+(sign(other.pwrupStr)*8);
         //image_blend = c_black; //kolor lotu pocisku
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
      }
     
     
      if key_check(key.right) && !key_check(key.left) {
       if hspd < 8+(sign(pwrupSpd)*5) {
        hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5));
       }
       image_xscale = 1;
      }
      if key_check(key.left) && !key_check(key.right)  {
       if hspd > -8-(sign(pwrupSpd)*5) {
    
        hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5));
       }
       image_xscale = -1;
      }
     
      //Drabina
     
    
        if  place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable)
        && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down))  {
       drabina = true;
       vspd = 0;
       hspd = 0;
      }
     }
    
    
     
     
    
     
     //Wspinanie sie
     if drabina == true {
      var __hsign = key_check(key.right)-key_check(key.left);
      var __vsign = key_check(key.down)-key_check(key.up);
     
      hspd = min(max(hspd+__hsign,-2),2);
      vspd = min(max(vspd+__vsign*2,-4),4);
     
      if __vsign == -1 && !place_meeting(x,y-32,par_climbable) {
       drabina = false;
       vspd = -10;
      }
     
      if __hsign != 0 {
       image_xscale = __hsign;
      }
     
      if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable)  {
       drabina = false;
      }
     }
     
    }
    
    else {
    
     //Plywanie
     kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up));
    if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      hspd += lengthdir_x(.5,kierunekPlywania);
    if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) {
       vspd += lengthdir_y(.5,kierunekPlywania);
       //audio_play_sound(dzwiek_anatol_plywa, 1, false);  //odtwarzamy dzwiek gdy anatol plywa
      }
     }
     if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory
      vspd = -12;
    
     }
    }
    }
    }
    
    
    
     //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza
     if  place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid)
        {
        drabina=false;
        }
      
    
      
     
     //Normalny ruch
     if drabina == false {
         if key_check(key.down) && wPowietrzu == false{
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
      
       }
       }
       }
     
     if vspd>0 && place_meeting(x,y,par_climbable){drabina=true}
       if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable)
     && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) {drabina=false} 
    
    
    
      if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) {
        zegarAtaku = 16;
        atakBierzacy = 1;
        with instance_create(x+10,y-26,obj_projectile)  {
         hspd = other.image_xscale*10;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         owner = par_player;
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
    }
    
    
    
    //nabieranie powietrza
    if tlen<10
    {if distance_to_object(obj_water)>1
    {tlen+=0.2}}
    //jesli nie ma powietrza energia ucieka i bohater potem traci zycie
    if tlen<0.01
    {global.hp-=0.2}
    if global.hp<=0
    {
    global.life -= 1;
    }

     

  16. Ok ten błąd z obj_textem zniknął,ale pozostał z obj_playerem i tu jest w miejscu:

     

     

    Tu fragment tych dwóch błędów jakie pozostały.

    if no_text() //teraz bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa
    {
    ///
    }
    
    
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage
    {
    if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0)
    {
    image_speed=1
    }else{
    image_speed=0;
    }

    Więcej już błędów nie wywala tylko te wyżej:

     

    cały step Bohatera w którym są te dwa błędy wygląda tak:

     

    obj_player

     

    STEP

     

    ///ustawienia ruchu Anatola
    
    
    // gdy anatol jest zamrozony zatrzymujemy go
    if(zamroz==true)
    {
    x = zamroz_x;
    y = zamroz_y;
    gravity=0
    vspd=0;
    hspd=0;
    }
    
    
    //licznik czasowy gry
    rs_timer ++;
    
    
    
        ///auto unstuck kiedy nam Anatol sie zaklinuje to podana nizej funkcja go odblokuje
    while(place_meeting(x,y,other))
    {
    
        dir = point_direction(x,y,other.x,other.y)
        x = x + lengthdir_x(-1,dir)
        y = y + lengthdir_y(+10,dir)
        other.alarm[0] = room_speed;
    }
    
    ///TU JEST TEN BLAD PIERWSZY
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage
    {
    if(vspd>0 ^^ hspd>0 ^^ vspd<0 ^^ hspd<0)
    {
    image_speed=1
    }else{
    image_speed=0;
    }
    
    if (vspd > 25)  //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.)
    {global.damage+=5} //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.)
    if not place_free(x,y+1)//Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia
    {
    other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen.
    global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej
    }
    
    
    ///TU JEST TEN BLAD DRUGI
    if no_text() //teraz Anatol stoi jak jest odwatrzana sekwencja tekstowa textboxa
    {
    ///Kontrola
    if !place_meeting(x,y,obj_water) {
     //Normalny ruch
     if drabina == false {
      if key_check_pressed(key.jump)  && wPowietrzu == false {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 3;
       //Punkt respawnu w miejscu ostatniego skoku
       //spawnX = x;
       //spawnY = y;
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,par_solid_ghost) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
       }
      } else if key_check(key.jump) && silaSkoku > 0 {
        audio_play_sound(dzwiek_skoku_anatolka, 1, false);   //odtwarzamy dzwiek przy skakaniu
       vspd -= 2+sign(pwrupJmp);
       silaSkoku--;
     
      } else {
       if key_check_released(key.jump) && silaSkoku > 2 {
        vspd += 2+sign(pwrupJmp);
     
       }
       silaSkoku = 0;
      }
      //Podwojny skok
     /* if czasSkoku > 0 && keyboard_check_pressed(kJump) && wPowietrzu == true {
       vspd = -10-sign(pwrupJmp*3);
       silaSkoku = 0;
       czasSkoku--;
       audio_play_sound(dzwiek_skoku_anatolka, 1, false); //odtwarzamy dzwiek przy skakaniu
      }*/
    
      if key_check(key.action) && zegarAtaku == false  {
       //if key_check(key.down) { //usuwany strzelanie na klawisz x + w dol
        zegarAtaku = 26;
        atakBierzacy = 1;
        with instance_create( x+(image_xscale*12), y-26, obj_projectile) { //idealnie ta funkcja obraca pocisk gracza lub wroga
       
       
         hspd = other.image_xscale*15;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         speed=4;
         owner = par_player;
         sila = 0;
         eksplozja = true;
         zasiegEksplozji = 30;
         silaEksplozji = 2+(sign(other.pwrupStr)*8);
         //image_blend = c_black; //kolor lotu pocisku
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
      }
     
     
      if key_check(key.right) && !key_check(key.left) {
       if hspd < 8+(sign(pwrupSpd)*5) {
        hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5));
       }
       image_xscale = 1;
      }
      if key_check(key.left) && !key_check(key.right)  {
       if hspd > -8-(sign(pwrupSpd)*5) {
    
        hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5));
       }
       image_xscale = -1;
      }
     
      //Drabina
     
    
        if  place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+5,par_climbable)
        && zegarAtaku <= 0 && (key_check(key.up) || key_check(key.down))  {
       drabina = true;
       vspd = 0;
       hspd = 0;
      }
     }
    
    
     
     
    
     
     //Wspinanie sie
     if drabina == true {
      var __hsign = key_check(key.right)-key_check(key.left);
      var __vsign = key_check(key.down)-key_check(key.up);
     
      hspd = min(max(hspd+__hsign,-2),2);
      vspd = min(max(vspd+__vsign*2,-4),4);
     
      if __vsign == -1 && !place_meeting(x,y-32,par_climbable) {
       drabina = false;
       vspd = -10;
      }
     
      if __hsign != 0 {
       image_xscale = __hsign;
      }
     
      if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable)  {
       drabina = false;
      }
     }
     
    }
    
    else {
    
     //Plywanie
     kierunekPlywania = point_direction(0,0,key_check(key.right)-key_check(key.left),key_check(key.down)-key_check(key.up));
    if abs(key_check(key.right)-key_check(key.left))+abs(key_check(key.down)-key_check(key.up)) != 0 {
      hspd += lengthdir_x(.5,kierunekPlywania);
    if !(kierunekPlywania > 0 && kierunekPlywania < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) {
       vspd += lengthdir_y(.5,kierunekPlywania);
       //audio_play_sound(dzwiek_anatol_plywa, 1, false);  //odtwarzamy dzwiek gdy anatol plywa
      }
     }
     if key_check(key.up) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //kierunekPlywania do gory
      vspd = -12;
    
     }
    }
    }
    }
    
    
    
     //dodane puszczanie drabiny przez bohatera przy dotknieciu podloza
     if  place_meeting(x,y,par_climbable) && drabina=true && place_meeting(x,y+2,par_solid)
        {
        drabina=false;
        }
      
    
      
     
     //Normalny ruch
     if drabina == false {
         if key_check(key.down) && wPowietrzu == false{
       //Zeskakiwanie w dol
       if key_check(key.down) && place_meeting(x,y+1,obj_zejscie_drabiny) {
        y += 4;
        vspd = 0;
        silaSkoku = 0;
        czasSkoku = 0;
      
       }
       }
       }
     
     if vspd>0 && place_meeting(x,y,par_climbable){drabina=true}
       if wPowietrzu=true && vspd = -10-sign(pwrupJmp*3) && silaSkoku = 3 && hspd>0 && place_meeting(x,y,par_climbable)
     && key_check(key.jump) && key_check(key.right) || key_check(key.jump) && key_check(key.left) {drabina=false} 
    
    
    
      if key_check(key.action) && zegarAtaku == false && place_meeting(x,y,par_climbable) {
        zegarAtaku = 16;
        atakBierzacy = 1;
        with instance_create(x+10,y-26,obj_projectile)  {
         hspd = other.image_xscale*10;
         vspd = 0; //lekko do gory -4 //mocno do gory
         g = .0; //0.2 tor lotu paraboliczny
         owner = par_player;
         audio_play_sound(dzwiek_anatol_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu
        }
    
    }
    
    
    
    //nabieranie powietrza
    if tlen<10
    {if distance_to_object(obj_water)>1
    {tlen+=0.2}}
    //jesli nie ma powietrza energia ucieka i bohater potem traci zycie
    if tlen<0.01
    {global.hp-=0.2}
    if global.hp<=0
    {
    global.life -= 1;
    }

     

×
×
  • Dodaj nową pozycję...