Skocz do zawartości

Problem z życiami w kolejnych roomach


Milord

Rekomendowane odpowiedzi

Cześć wszystkim mam taki problem i teraz się przypatrzyłem.

opisze o co chodzi:

 

Zaczynam sobie grę plansza pierwsza z 5 życiami,bo tyle sobie ustawiłem..no i np tam stracę w tej planszy życie jedno,czy tam więcej..

przechodzę później do kolejnej planszy i zamiast mieć tą ilość żyć co w pierwszej planszy(czyli pomniejszoną o tyle ile straciłem),to ja znowu mam 5 żyć..

jak to naprawić?

 

 

mam to w tym obiekcie,co umieszczony mam na planszy tu mam i hud itp rzeczy

 

tu create obiektu kontroler,oczywiście ten obiekt mam ustawiony na persistent

create

 

 

GML
///Ustawienia globalne

image_speed = 0;

 

global.watch = 0; //Ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

global.pScore = 0;

global.life = 5;

global.coins = 0;

global.Saved = true;

globalvar spawnX, spawnY;

///Widok

globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY;

gvX = view_xview[0];

gvY = view_yview[0];

gvW = view_wview[0];

gvH = view_hview[0];

gvObj = view_object[0];

gvOffX = 0;

gvOffY = 0;

 

///HUD

hpHUD = 0;

maxHpHUD = 0;

Odnośnik do komentarza
Udostępnij na innych stronach

Obiekt zapewne masz w każdym roomie? W create jeżeli dałeś to life będzie miało z powrotem wartość 5 CO CREATE OBIEKTU, czyli przy starcie każdego roomu który ten obiekt zawiera ;) Daj to w game start, albo ew. zrób osobny obiekt który będzie tylko w pierwsze planszy ;) Kolejną opcją jest też np create code PIERWSZEGO roomu-levelu :)

 

@e: dobra, nie wiem do końca jak działa persistant obiektu, teraz dopiero doczytałem. To ciekawe trochę, bo niby w każdym roomie masz inną instancję tego obiektu :/

W każdym bądź razie wychodzi na to, że jestem nie douczony, bo kiedyś tylko roomy mogły być presistant, a nowości dopiero staram się nadrobić :P

Jedyne co mogę podpowiedzieć w takim razie to spróbuj zrobić to "staromodnie", bo przy persistant obiektu niestety zbyt wiele nie pomogę, bo dopiero teraz z Twojego postu się dowiedziałem, że takie coś istnieje xD Widzę, że muszę jeszcze wiele nowości nadrobić, choć z drugiej strony ja po prostu chyba wolę robić to starymi, sprawdzonymi metodami jeżeli nie wpływa to jakość specjalnie źle na optymalizację ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Obiekt zapewne masz w każdym roomie? W create jeżeli dałeś to life będzie miało z powrotem wartość 5 CO CREATE OBIEKTU, czyli przy starcie każdego roomu który ten obiekt zawiera ;) Daj to w game start, albo ew. zrób osobny obiekt który będzie tylko w pierwsze planszy ;) Kolejną opcją jest też np create code PIERWSZEGO roomu-levelu :)

 

@e: dobra, nie wiem do końca jak działa persistant obiektu, teraz dopiero doczytałem. To ciekawe trochę, bo niby w każdym roomie masz inną instancję tego obiektu :/

W każdym bądź razie wychodzi na to, że jestem nie douczony, bo kiedyś tylko roomy mogły być presistant, a nowości dopiero staram się nadrobić :P

Jedyne co mogę podpowiedzieć w takim razie to spróbuj zrobić to "staromodnie", bo przy persistant obiektu niestety zbyt wiele nie pomogę, bo dopiero teraz z Twojego postu się dowiedziałem, że takie coś istnieje xD Widzę, że muszę jeszcze wiele nowości nadrobić, choć z drugiej strony ja po prostu chyba wolę robić to starymi, sprawdzonymi metodami jeżeli nie wpływa to jakość specjalnie źle na optymalizację ;p

 

 

Tak wszędzie ma ten obiekt w każdym pokoju

No tak persistant,ale zawsze mogę odznaczyć;)

 

dobrze po kolei co mam zrobić stworzyć drugi pusty obiekt? i wrzucić go do drugiej planszy;)? ale co to da;)?

 

o i zauważyłem,że mam ta samą sytuacje z punktami czyli global.score z monetami global.coins tak samo jak życia..życia w nowej planszy są cały czas 5 a punkty i monety zamiast mi zliczać do kolejnej planszy,to mi je zeruje...mam na zero..no kurcze ech

MaxGaminng ratuj..mogę i twój sposób zastosować aby zadziałało..

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli zrobimy to "po staremu", bez persistant to:

1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

2. Stwórz nowy, pusty obiekt i postaw go tylko w pierwszej planszy.

3. Wklej w jego create(tego nowego obiektu) definicje zmiennych.

Lub wersja która powinna być ciut bardziej optymalna:

1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

2. Wejdź w room z pierwszą planszą.

3. Zakładka Settings>Creation Code

4. Wklej tam kod definicji zmiennych.

4.1. Nie powtarzaj dla innych roomów! Czyli wklejasz to w creation code tylko pierwszego levelu ;)

 

Persistant możesz odznaczyć, bo nie wiem jak ono wpływa na instancje. Podejrzewam, że może działać tylko wewnątrz danego roomu, jakbyś chciał do niego powrócić to instancja zachowa swoje właściwości wtedy. Ale to tylko podejrzenia, a żeby wiedzieć na pewno trzeba poczytać dokumentację ;p Dla pewności, więc odznacz lepiej, chyba że Ty wiesz jak dokładnie to działa i to wykorzystujesz..

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli zrobimy to "po staremu", bez persistant to:

1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

2. Stwórz nowy, pusty obiekt i postaw go tylko w pierwszej planszy.

3. Wklej w jego create(tego nowego obiektu) definicje zmiennych.

Lub wersja która powinna być ciut bardziej optymalna:

1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

2. Wejdź w room z pierwszą planszą.

3. Zakładka Settings>Creation Code

4. Wklej tam kod definicji zmiennych.

4.1. Nie powtarzaj dla innych roomów! Czyli wklejasz to w creation code tylko pierwszego levelu ;)

 

Persistant możesz odznaczyć, bo nie wiem jak ono wpływa na instancje. Podejrzewam, że może działać tylko wewnątrz danego roomu, jakbyś chciał do niego powrócić to instancja zachowa swoje właściwości wtedy. Ale to tylko podejrzenia, a żeby wiedzieć na pewno trzeba poczytać dokumentację ;p Dla pewności, więc odznacz lepiej, chyba że Ty wiesz jak dokładnie to działa i to wykorzystujesz..

 

 

no dobra to z tego globalnego obiektu kontroler wycinam tylko definiowanie zmiennych,a reszte zostawiam bez zmian łącznie z hud itp elementami;D?

 

czekaj podeśle Ci kod całego mojego obiektu kontroler

 

 

Create

 

GML
///Ustawienia globalne

image_speed = 0;

 

global.watch = 0; //Ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

global.pScore = 0;

global.life = 5;

global.coins = 0;

global.Saved = true;

globalvar spawnX, spawnY;

///Widok

globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY;

gvX = view_xview[0];

gvY = view_yview[0];

gvW = view_wview[0];

gvH = view_hview[0];

gvObj = view_object[0];

gvOffX = 0;

gvOffY = 0;

 

///HUD

hpHUD = 0;

maxHpHUD = 0;

 

 

End step

 

GML
///Widok

if view_wview[0] != gvW || view_hview[0] != gvH {

var tempW, tempH;

tempW = view_wview[0];

tempH = view_hview[0];

 

if gvW/view_wport[0] >= gvH/view_hport[0] {

view_hview[0] = lerp(view_hview[0],gvH,.3);

view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

} else {

view_wview[0] = lerp(view_wview[0],gvW,.3);

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

}

 

view_xview[0] -= (view_wview[0]-tempW)/2;

view_yview[0] -= (view_hview[0]-tempH)/2;

}

 

if view_wview[0] > room_width {

view_wview[0] = room_width;

view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

}

if view_hview[0] > room_height {

view_hview[0] = room_height;

view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

}

 

if instance_exists(gvObj) {

gvX = min(max(0,gvObj.x+gvOffX-view_wview[0]/2),room_width-view_wview[0]);

gvY = min(max(0,gvObj.y+gvOffY-view_hview[0]/2),room_height-view_hview[0]);

 

gvOffX = 0;

gvOffY = 0;

}

 

view_xview[0] = round(min(max(0,lerp(view_xview[0],gvX,.15)),room_width-view_wview[0]));

view_yview[0] = round(min(max(0,lerp(view_yview[0],gvY,.15)),room_height-view_hview[0]));

 

gvW = gvWStart;

gvH = gvHStart;

 

//Tła

/*for(i=0;i<8;i++) {

if background_visible == true || background_foreground == true {

//Horizontal

if background_width != room_width {

background_x = view_xview[0]/(room_width-view_wview[0])*(room_width-background_width);

}

//Vertical

if background_height != room_height {

background_y = view_yview[0]/(room_height-view_hview[0])*(room_height-background_height);

}

}

}</span>

 

 

 

room start

 

GML
///Widok

globalvar gvXStart, gvYStart, gvWStart, gvHStart, gvObjStart;

gvXStart = view_xview[0];

gvYStart = view_yview[0];

gvWStart = view_wview[0];

gvHStart = view_hview[0];

gvObjStart = view_object[0];

 

if instance_exists(gvObj) {

view_xview[0] = min(max(0,gvX),room_width-view_wview[0]);

view_yview[0] = min(max(0,gvY),room_height-view_hview[0]);

}

 

Draw GUI

 

GML
/// Wyswietlamy HUD gracza

 

draw_set_color(c_white);

draw_sprite(spr_mniejszy_hud,1,50,64);

 

 

 

var __guiW = display_get_gui_width(), __guiH = display_get_gui_height();

 

 

 

 

 

//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(" " + string(global.watch)));

 

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

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,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(110, 74, string("x" + string(global.life))); //rozmieszczenie wskaznika zyc

draw_sprite(spr_glowa,1,40,1); //sprite glowy bohatera przy pasku zycia</span>

 

 

teraz tak jak mówisz tworze pusty obiekt bez persistant nazywam go np global_zmienne

 

wycinam z create zmienne z tamtego starego obiektu,ale zostawiam tamten stary obiekt w pierwszym roomie..

No i teraz wklejam do create tego nowego obiektu bez persistant w create te zmienne..i potem wchodzę w ustawienia pokoju pierwszego i w creacion code wklejam to samo co w create w nowym obiekcie tak?;) tak to zrozumiałem

Odnośnik do komentarza
Udostępnij na innych stronach

Tworzysz nowy obiekt, który stawiasz tylko w pierwszym levelu i przenosisz z create tego obiektu do nowo stworzonego:

GML
global.watch = 0; //Ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

global.pScore = 0;

global.life = 5;

global.coins = 0;

global.Saved = true;

globalvar spawnX, spawnY;

Odnośnik do komentarza
Udostępnij na innych stronach

Albo mogles po prostu zostawic obiekt tylko w 1nym roomie, bo jak jest persistent to kopia z poprzedniego roomu sie "teleportuje" a nie ze jak w drugim roomie tez jest ten obiekt to poprzedni sie przenosi.

Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie tak jak pisałem, nie mam bladego pojęcia jak działa persistant w obiektach, bo kiedyś nie było tego, a dopiero dzisiaj się dowiedziałem o takiej opcji, bo wcześniej nie zauważyłem ;p Czyli persistant działa tak, że obiekt wraz ze zmianą roomu przenosi się i zachowuje wszystkie zmienne do czasu usunięcia go?

Ja podałem mu sposób "w starym stylu" jak mówiłem ;p

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ę...