Skocz do zawartości

Wczytywanie mapy/roomu z zewnętrznego pliku.


bobo

Rekomendowane odpowiedzi

Czy da się zrobić coś takiego żeby roomy/mapy były wczytywane z zewnętrznego pliku i była możliwość dodawania map po przez wrzucanie takiej mapy do danego folderu w którym znajdowały by się wszystkie mapki?

Odnośnik do komentarza
Udostępnij na innych stronach

Mam problem z edytorem romów stworzonym przez ranme:

Mam taki kod:

file_open_read("plansza.txt");
for(a=0;a<15;a+=1)
   {
   for(i=0;i<20;i+=1)
      {
      obiekt=file_read_real();
      if(obiekt=1)instance_create(i*32,a*32,obj_blok);  //aby dodac nowy obiekt trzeba skopiowac
      else                                          //te dwie linijki
      if(obiekt=2)instance_create(i*32,a*32,obj_czolg1);
      else
      if(obiekt=3)instance_create(i*32,a*32,obj_czolg2);
      else
      file_readln();
      }
   }
file_close();

Tyle że to powoduje że jak wczytuje ten room to co prawda tworzą mi sie te objekty lecz paro krotnie obok siebie.Domyślam się że liczba wartosci a i i za to odpowiadam, próbowałem to pozmieniać ale co prawda był inny efekt niż ten opisany powyżej, ale także nie satysfyakcjuący mnie. Moje pytanie brzmi jak to przerobić żeby tworzyły się te objekty pojedynczo? Nie jest pewien czy moje przypuszczenia są dobre jak nie to mi powiedziec w czym leży problem. Mam nadzieje ktoś mi pomoże :P

Sorry za 2 posty pod żąd ale tak wyszło :rolleyes:

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm, powinno działać.

 

Spróbuj tak:

 

global.fname=file_text_open_read("plansza.txt");
for(a=0;a<15;a+=1)
   {
   for(i=0;i<20;i+=1)
      {
      obiekt=file_text_read_real(global.fname);
      if(obiekt=1)instance_create(i*32,a*32,obj_blok);  //aby dodac nowy obiekt trzeba skopiowac
      else                                          //te dwie linijki
      if(obiekt=2)instance_create(i*32,a*32,obj_czolg1);
      else
      if(obiekt=3)instance_create(i*32,a*32,obj_czolg2);
      else
      file_text_readln(global.fname);
      }
   }
file_text_close(global.fname);

Odnośnik do komentarza
Udostępnij na innych stronach

Kod zapisu:

mapa = file_text_open_write('mapa.map');

for (i = 0; i < instance_count; i += 1)
{
if // zapisywanie pozycji tylko podanych obiektow wg. schematu
(instance_id[i].object_index == object0) ||
(instance_id[i].object_index == object1) ||
(instance_id[i].object_index == object2)
{
file_text_write_string(mapa, string(instance_id[i].x));
file_text_writeln(mapa);
file_text_write_string(mapa, string(instance_id[i].y));
file_text_writeln(mapa);
file_text_write_string(mapa, string(instance_id[i].object_index));
file_text_writeln(mapa);
}
}

file_text_close(mapa);

 

Kod odczytu:

mapa = file_text_open_read('mapa.map');

while (!file_text_eof(mapa))
{
xx = file_text_read_real(mapa);
file_text_readln(mapa);
yy = file_text_read_real(mapa);
file_text_readln(mapa);
obj = file_text_read_real(mapa);
file_text_readln(mapa);
instance_create(xx, yy, obj);
}

file_text_close(mapa);

Odnośnik do komentarza
Udostępnij na innych stronach

Odczyt:

get_open_filename('Jpg|*.jpeg;*.jpg;|Gif|*.gif;|Wszystkie pliki|*.*', 'domyslna_nazwa.jpg');

Zapis tak samo, tyle że funkcja get_save_filename() zamiast get_open_filename(). To jest tylko przykład zastosowania, jak chcesz filtrować pliki *.map to dajesz 'Mapy programu|*.map'.

Odnośnik do komentarza
Udostępnij na innych stronach

To sobie zrób tablicę:

plik[0]='c:\plik1.bmp';
plik[1]='c:\plik2.bmp';
plik[2]='c:\plik3.bmp';
plik[3]='c:\plik4.bmp';

o. I potem wyświetl sobie tą listę za pomocą pętli for.

 

EDIT

https://gmclan.org/up152_11_map.html

10zł się należy :P

 

EDIT 2

Tyle razy pisałem kod dla zapisu/odczytu map. Nie chce mi się już pisać po raz N-ty.

 

https://forum.gmclan.org/index.php?showtopi...223entry23223

Odnośnik do komentarza
Udostępnij na innych stronach

Ok. Zakol czy ktoś inny. Mam 1 problem bo te roomy ktore chce wczytywać są podzielone na pół. Są 2 czogłi i jeden view podąża za 1 czolgiem a 2 za drugim czołgiem. Ale jak teraz odczytuje to robi się jeden cały (nie podzielony room). Jak to zmienić? Domyślam sie ze cos z kodu zapisu ale co i na co to zamienic?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Normalnie, wylistować wszystkie pozycje z aktualnej ścieżki i sprawdzić które są katalogami. Chyba jest przykład listowania katalogów. Potem do ścieżki dodajesz wybrany katalog i już. Ścieżkę przechowywać najlepiej w zmiennej. Miłego pisania skryptu.

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