Jaklub Opublikowano 26 Kwietnia 2006 Udostępnij Opublikowano 26 Kwietnia 2006 Nie wiem, czy to jest odpowiednie forum na ten temat. Pobrałem wasz przykład edytora plansz. Chciałem go użyć, ale mam pewien błąd. Chciałem zmienić rozmiar kratki edytora z 32*32 na 16*16. W związku z tym: Skrypt wczytywania planszy działa poprawnie. Ale w skrypcie zapisywania jest jakiś błąd. A mianowicie to nie chce zapisywać! :boxed: Skrypt file_open_write("plansza.txt"); for(a=0;a<15;a+=1) { for(i=0;i<20;i+=1) { if(place_meeting(i*32,a*32,blok))file_write_string('1'); //aby dodac nowy obiekt trzeba skopiowac else //te dwie linijki if(place_meeting(i*32,a*32,mis))file_write_string('2'); else if(place_meeting(i*32,a*32,klucz))file_write_string('3'); else file_write_string('0'); file_writeln(); } } file_close(); zmieniłem na: fiel='plansza.lev' file_open_write(fiel); file_write_string(global.skin); file_writeln(); file_write_string(background_color); file_writeln(); for(a=0;a<30;a+=1) { for(i=0;i<40-16;i+=1) { if(place_meeting(i*16,a*16,obj_playermap))file_write_string('1'); //aby dodac nowy obiekt trzeba skopiowac else //te dwie linijki if(place_meeting(i*16,a*16,obj_floor))file_write_string('2'); else if(place_meeting(i*16,a*16,obj_clangfloor))file_write_string('3'); else if(place_meeting(i*16,a*16,obj_metalfloor))file_write_string('4'); else file_write_string('0'); file_writeln(); } } file_close(); Jest to skrypt zapisywania mapy. Zapisuje on, prócz objektów, wybrany skin postaci i kolor tła. Czy ktoś może pomóc? :( PS. Jeśli ktoś myśli, że to skrypt wczytywania jest niepoprawny, jest w błędzie - edytowałem plik samodzielnie, by to sprawdzić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 26 Kwietnia 2006 Udostępnij Opublikowano 26 Kwietnia 2006 Nie lubię takich skryptów jak ten którego używasz :P Dlatego napisałem własny: Wszystko w scripts: zapisz //zapisz(nazwa_mapy); //UWAGA! //Wykonywac tylko 1 raz na 1 step! //Nazwa pliku: file_name = argument0; zmienne_n = 0; obiekty_n = 0; //Lista obiektow do zapisania: dadaj_obiekt('ob_gracz'); dadaj_obiekt('ob_przeciwnik'); dadaj_obiekt('ob_platforma'); dadaj_obiekt('ob_data'); //Lista zmiennych obiektow (wszystkich) do zapisania: dodaj_zmienna('x',0); dodaj_zmienna('y',0); dodaj_zmienna('sprite_index',0); dodaj_zmienna('image_index',0); dodaj_zmienna('direction',0); //Tylko dla obiektu 'ob_data': dodaj_zmienna('skin','ob_data'); dodaj_zmienna('tlo','ob_data'); //Reszta Cie nie interesuje :P instance_deactivate_all(1); instance_activate_all(); file_open_write(file_name); for(n=0;n<instance_count;n+=1;) { i = instance_id[n]; if instance_exists(i) { for(a=0;a<obiekty_n;a+=1;) { if obiekty[a] = string(object_get_name(i.object_index)) { file_write_string('['+string(object_get_name(i.object_index))+';'); for(b=0;b<zmienne_n;b+=1;) { dd=false; if zmienne[b,1] != '0' { if zmienne[b,1] != string(object_get_name(i.object_index)) { dd=true; } } if dd=false { execute_string('val = i.'+string(zmienne[b,0])+';'); if is_string(val) { val = '"'+string(val)+'"'; } file_write_string(string(zmienne[b,0])+';'+string(val)+';'); } } file_write_string(']'); break; } } } } file_close(); dadaj_obiekt //dadaj_obiekt(nazwa_obiektu); obiekty[obiekty_n] = string(argument0); obiekty_n += 1; dodaj_zmienna //dodaj_zmienna(nazwa_zmiennej,nazwa_obiektu); zmienne[zmienne_n,0] = string(argument0); zmienne[zmienne_n,1] = string(argument1); zmienne_n += 1; odczytaj //odczytaj(nazwa_mapy); //UWAGA! //Wykonywac tylko 1 raz na 1 step! //Uzywac tylko w pustym roomie :) Wiadomo dlaczego. file_name = string(argument0); file_open_read(file_name); map_str = file_read_string(); file_close(); dt = string_count('[',map_str); dt2 = string_count(']',map_str); if dt != dt2 { show_error('To nie plik mapy!',1); exit; } repeat(dt) { temp = string_replace_all( string_replace_all( string_copy(map_str,0,string_pos(']',map_str)-1),'[',''),']',''); map_str = string_replace(map_str,'['+temp+']','') obiekt=string_copy(temp,0,string_pos(';',temp)-1); temp=string_replace(temp,obiekt+';',''); dt3 = string_count(';',temp)/2; n = 0; repeat(dt3) { zmienna[n] = string_copy(temp,0,string_pos(';',temp)-1); temp = string_replace(temp,zmienna[n]+';',''); wartosc[n] = string_copy(temp,0,string_pos(';',temp)-1); temp = string_replace(temp,wartosc[n]+';',''); n += 1; } execute_string('i=instance_create(0,0,'+obiekt+');'); n=0; repeat(dt3) { execute_string('i.'+zmienna[n]+'='+wartosc[n]+';'); n+=1; } } I tyle. Działa to trochę powoli ale sprawnie :) Liczę że pojawię się w creditsach jeśli wasze gry się ukażą ;) EDIT Jeszcze przykład: https://gmclan.org/up152_11_mapa.html Dodać na GMC? ;] HamsterMan i alkapivo 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Vianom Opublikowano 26 Kwietnia 2006 Udostępnij Opublikowano 26 Kwietnia 2006 Jasne że dodać !!! :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
alkapivo Opublikowano 22 Stycznia Udostępnij Opublikowano 22 Stycznia (edytowane) @Tymon <przeciera oczy> czy Ty popełniłeś ECS w prehistorycznym GMie? ENTITY Przy użyciu dadaj_obiekt zarządzasz tablicą stringów, którą wykorzystujesz potem jak tablicę wskaźników. if obiekty[a] = string(object_get_name(i.object_index)) COMPONENT //Lista zmiennych obiektow (wszystkich) do zapisania: dodaj_zmienna('x',0); dodaj_zmienna('y',0); dodaj_zmienna('sprite_index',0); dodaj_zmienna('image_index',0); dodaj_zmienna('direction',0); SYSTEM for(n=0;n<instance_count;n+=1;) { i = instance_id[n]; if instance_exists(i) { for(a=0;a<obiekty_n;a+=1;) { if obiekty[a] = string(object_get_name(i.object_index)) { file_write_string('['+string(object_get_name(i.object_index))+';'); for(b=0;b<zmienne_n;b+=1;) { dd=false; if zmienne[b,1] != '0' { if zmienne[b,1] != string(object_get_name(i.object_index)) { dd=true; } } if dd=false { execute_string('val = i.'+string(zmienne[b,0])+';'); if is_string(val) { val = '"'+string(val)+'"'; } file_write_string(string(zmienne[b,0])+';'+string(val)+';'); } } file_write_string(']'); break; } } } } to jest Entity Component System 😆😆 😆 Edytowane 22 Stycznia przez alkapivo Fragmenty z kodem powinny być poprawnie sformatowane przy użyciu tagów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 18 Marca Udostępnij Opublikowano 18 Marca Raczej naiwna implementacja serializacji obiektów. gnysek i I am Lord 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę