Skocz do zawartości

list = ds_list_create();


pankracy

Rekomendowane odpowiedzi

Mam pytanie:

 

Mam w grze save/load game zbudowany na podstawie list = ds_list_create();

problem w tym,że nie widzę skryptu w kodzie.

wiem,że zapis gry następuje do pliku save.dat. ten plik tez znalazłem jest w moim przypadku w C:\Users\laptop\AppData\Local\Moja gra

Prawdopodobnie są gdzieś dwa skrypty w kodzie jeden generuje plik save.dat a drugi Save.dat z dużej litery.

Jest jakiś sposób w GMS żeby wyszukać te skrypty lub po funkcji ds_list_create?

Save game działa,ale kiedy wychodzę z gry przestaje działać.Wiem co powoduje problem i wiem jak to naprawić..tylko muszę zlokalizować w swoim kodzie te skrypty od save i load.

Odnośnik do komentarza
Udostępnij na innych stronach

nie ma..przeszukałem wszystkie skrypty w grze...

dobra to są wbudowane..kurcze...nie dobrze..bo muszę jedną rzecz dodać,bo brak tej rzeczy powoduje problemy załadowaniem gry.

Tylko dziwna sytuacja..bo jednak save game działa wszystko zapisuje nawet jak mam mniejszą ilość energii,ale jak wyjdę już z gry i włączę ją z powrotem i wybiorę load game to wywala błąd...ale jak mówię ten błąd jestem wstanie ogarnąć,bo odwołuje się do jednego ze skryptów od textboxa...Wystarczy właśnie odszukać te nie istniejące skrypty które tworzą pliki save.dat i Save.dat z dużej litery i zainicjować tam w kodzie ten skrypt i będzie działać.

 

tu mam też info,że odczytuje zapis gry to z pliku save.dat

 

obj_menu

step

 

if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) {
    if(selected=0) {
        room_goto(rm_poziomtrudnosci)
    } else if(selected=1)  { 
     
        if(file_exists("save.dat")){
            game_load( "Save.dat" );
        } else {
          show_message("Cannot find save.dat file. Please start a new game.");//nie odnaleziono pliku
        }
        audio_stop_sound (dzwiek_menu_glowne_gry);
    } else if(selected=2) {
        room_goto(rm_highscore)
    } else if(selected=3) {
        room_goto(rm_options)
    } else if(selected=4) {
        room_goto(rm_credits)
    } else if(selected=5) {
        game_end()
    }
}

 

obj_save_game

 

Create

 

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

Kolizja z obj_player

 

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
}
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Ale co ma wspólnego ds_create z problemem, że to przeszkadza w modyfikacji kodu? Sprawdź w dokumentacji co ta funkcja robi i wtedy dopiero na nią narzekaj. Bo ona nie ma nic wspólnego z save. Służy do stworzenia listy z danymi (taka tablica w sumie).

Odnośnik do komentarza
Udostępnij na innych stronach

Masz rację Gnysek..ds_create nie ma nic wspólnego z zapisem gry.

Spojrzałem dokładnie na kod i mam taki standardowy zapis gry który zapisuje się do pliku save.dat.

Sprawdziłem ścieżkę dostępu do projektu w systemie Windows i po zapisie gry ten plik tam się znajduje.

 

Tylko problem polega na tym,że zapis i odczyt gry działa dopóki nie wyjdę całkowicie z gry.

Kiedy próbuje załadować grę to wywala mi taki niżej komunikat.

Uprościłem,żeby nie wklepywać tu bezmyślnie setki linijek kodu;-)

Widać,że odwołuje się to do Mojego skryptu textboxa.

Jak to naprawić?

 

takie są dwa błędy

 

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 51) - if no_text() //teraz Bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa

 

2.

 


___________________________________________
############################################################################################
ERROR in
action number 1
of  Step Event0
for object obj_text:

Data structure with index does not exist.
 at gml_Object_obj_text_StepNormalEvent_1 (line 1) - if not ds_queue_empty(global.textq) and global.text_get=true
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_obj_text_StepNormalEvent_1 (line 1)

obj_text

step

 

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;
        }
    }

 

 

obj_player

step

 

if no_text() //teraz bohater stoi jak jest odwatrzana sekwencja tekstowa textboxa
{
///
}

skrypt no_text

 

 

//zwraca true, jezeli nie ma juz zadnego tekstu do wyswietlenia
 
   


if ( ds_queue_empty(global.textq) and global.text_get=true )
    then return true
    else return false;
    

 

Odnośnik do komentarza
Udostępnij na innych stronach

No niby jest to jakiś sposób, ale... spróbuj może najpierw zrobić ten warunek w obiekcie, do którego ma się odwoływać, czyli obj_text

 

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 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;
            }
        }
  }
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

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;
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

Daj treść tych błędów, bo nie wiem w czym problem.
 

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 odwatrzana sekwencja tekstowa textboxa
		{
		///
    	}	
    }
}


PS: kopiowanie bezmyślnie kodu i wklejanie do swojego projektu nie nauczy Cię wiele :/ trzymam kciuki za skończenie twojego magnum opus ale później radziłbym powtórzyć podstawy. 

Odnośnik do komentarza
Udostępnij na innych stronach

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;
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

Error1: //już Ci go dałem wyżej ._.
 

///TU JEST TEN BLAD DRUGI
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
		{
		/// dodaj reszte kodu


Error2 jest wykonany w endstepie, ale prawdopodobnie robisz te same ify co powyżeć, zagnieżdzając w nie tego ifa z błędem

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()) {

 

Miej na uwadze to, że ta naprawa błędu może nie być zbyt dobra, bo to może być pominięcie ważnych linijek kodu dla załadowania się gry (może, nie musi). Wydaje mi się, że powinieneś jakoś zainicjować ds_queue_empty(global.textq) przed załadowaniem gry, żeby mógł sobie doczytać wszystko. Aczkolwiek to tylko domysły, bo to wszystko zależy jak wygląda cały kod z nimi związane, a tego raczej nie ogarnę.

Odnośnik do komentarza
Udostępnij na innych stronach

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; }


}

}














































 

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

Odnośnik do komentarza
Udostępnij na innych stronach

Kilka zasad rozwiązywania problemu:
1. Kombinuj
2. Jeśli masz jakiś pomysł, nie pytaj na forum czy jest dobry, tylko go wypróbuj.
3. Rób backupy, jeśli zmieniasz dużo kodu i boisz się, że później nie wrócisz do punktu startowego, jeśli coś nie wyjdzie
4. Ogólnie rób backupy :P
5. Co robi funkcja no_text()? Po if'ie z tą funkcją masz napisany cały kod na poruszanie się, a skoro global.textq nie istnieje, to no_text() się nie wykonuje, a z tym cały kod chodzenia i animacji

Odnośnik do komentarza
Udostępnij na innych stronach

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












































 

Odnośnik do komentarza
Udostępnij na innych stronach

Okej, trochę mi to zajęło, przez organizacje twojego kodu, który jest pisany makabrycznie, bez żadnego schematu. Musisz trochę nad tym popracować, bo wtedy łatwiej wyłapać błędy.

Na początek, zmieniamy skrypt 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;

 

i zmieniony cały step (zobacz sobie, jak on teraz wygląda. Widać, który if jak zagnieżdżony w którym ifie. Widać gdzie dana klamra otwiera kod a gdzie go zamyka. Nigdy nie możesz mieć dwóch klamer zamykających w tej samej linii, w tym samym pionie.

 

///@desc pankracy
///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
	}
}

// ***********************************************************************************************************************************
/// ------------------ tutaj tak jak mowiłem, że mogą być konsekwencję naprawiania tego błedu na skróty. Jestem pewien, że no_text() *
// ------------------- zwraca wartość true albo false, jeśli tekst jest albo go nie ma. Tutaj tego nie sprawdza, bo nie ma w ogóle   *
// ------------------- zmiennejpozwalającej to sprawdzić, dlatego omija calutki kod													 *
// ------------------- ROZWIĄZANIE: przerobienie funkcji no_text()                                                                   *
// ***********************************************************************************************************************************

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 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) then 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) then 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;
}

Miejmy nadzieje, że się nigdzie nie kopnąłem.

PS: trochę się te nawiasy porozjeżdżały, gdy je wkleiłem na forum (?)

Odnośnik do komentarza
Udostępnij na innych stronach

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












































 

Odnośnik do komentarza
Udostępnij na innych stronach

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; }


}

 

Chodzi w miejscu, znaczy, że chodzi bez animacji, tak?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie nie...

nie mogę nim poruszać...

on stoi i animacja chodzenia jest aktywna  cały czas przebiera nogami.Nie reaguje na przyciski żadne..nie mogę chodzić skakać itp..

 

 

To tak wygląda jakbyś kogoś trzymał w miejscu,a ktoś nogami tylko przebierał w miejscu:)

Odnośnik do komentarza
Udostępnij na innych stronach

Zmień tu warunki. Co prawda, będzie to działać odwrotnie do nazwy funkcji, ale może o to chodzi.

//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 false;
		}
		else 
		{
			return true;
		}
	}
	else
		return true;
}
else
	return true;

edit: Ok, czyli nazwa funkcji jest odwrotna do opisu, czyli powinno to działać

edit2: A nie czekaj, opis do nazwy się zgadza... coś mi dzisiaj mózg szwankuje 

Odnośnik do komentarza
Udostępnij na innych stronach

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ć;-)

Odnośnik do komentarza
Udostępnij na innych stronach

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;  

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...