Skocz do zawartości
pankracy

Highscore- kolejny wpis nadpisuje mi stary wpis

Rekomendowane odpowiedzi

 

Cześć wszystkim,

 

Próbuje rozwiązać problem z nadpisującym się wynikiem do highscore po ukończeniu gry.

Wygląda to tak,że cały czas jest tylko jeden wpis,a powinno być top 10 najlepszych wyników.

Dziwna sytuacja...bo np jeśli zapisze grę i załaduje z load game gre i nastepnie jak skończe grę i nastąpi zapis do highscore to tworzy się niżej nowy rekord zapisu...

Tylko dlaczego przy wyborze gry od nowa nadpisuje się rekord w highscore?

Nie będę tu wszystkiego wklejał żeby nie robić bałaganu.

 

 

obj_game_controller

step

 

if (global.life <= 0) 


{


    if (can_finish == false) 
     { 
      
     

    if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza
        alarm[0] = 120; // 150 to 5 sekund
 
  
}



    } else {
        if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy
        {
            var s=highscores[| ds_list_size(highscores) - 1];
            
            //Czy punkty kwalifikuja sie na top 10
            if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) {
                    room_goto(rm_save_score);
                    exit; // zakoncz wykonywanie eventu step w tej klatce
            }
        }
        room_goto(rm_game_over);
    }
}

obj_highscore

 

create

 

global.pScore=0

globalvar highscores;
highscores=ds_list_create()

//Wczytaj punkty z dysku
var f=file_text_open_read("highscore.dat")
if(f>-1) {
    var s=file_text_read_string(f)
    //show_debug_message(s)
    s=json_decode(s)    
    if(s!=-1 && ds_exists(s, ds_type_map) && ds_map_exists(s,"default")) {
        var m=s[?"default"];
        for(var _i=0; _i<ds_list_size(m); _i++) {
            if(ds_exists(m[|_i], ds_type_map)) {
                var _m=ds_map_create();
                ds_map_copy(_m, m[|_i])
                ds_list_insert(highscores, _i, _m)
                ds_list_mark_as_map(highscores, _i)
            }
        }
    }
    ds_map_destroy(s)
    file_text_close(f)
}

scrypt

score_add

 

///score_add(name,score)
if(ds_exists(highscores, ds_type_list)) {
    var m=ds_map_create();
    m[?"name"]=argument0
    m[?"score"]=argument1
    ds_list_add(highscores, m)
    ds_list_mark_as_map(highscores, ds_list_size(highscores)-1)
    score_sort()
    
    if(ds_list_size(highscores)>10) {
        ds_list_delete(highscores,10)
    }
}

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×