SimianVirus8 Opublikowano 30 Października 2015 Udostępnij Opublikowano 30 Października 2015 Witam. Chcę zrobić kreator postaci. Jestem na samym początku, czyli planowanie w czym trzymać wartości. Rozmyślałem nad zmiennymi globalnymi, tablicami oraz plikami .ini. To ostatnie podoba mi się najbardziej. Mam dwa pytania: a ) W czym najlepiej to zrobić, chodzi mi o waszą opinię. b ) Jak dodawać liczbę do wartości, która istnieje w pliku .ini . Mam to: GML ini_open( 'ModCharColor.ini' ) ini_write_real('Color','colorr',255); ini_write_real('Color','colorg',155); ini_write_real('Color','colorb',125); ini_close(); I chciałbym aby wartość "155" z GML ini_write_real('Color','colorg',155); zwiększyła się np. o 5. Próbowałem z GML ini_write_real('Color','colorg',+5); // Zamieniło "155" na "5" ini_write_real('Color','colorg',+=5); // Wywaliło błąd Jeszcze jedno pytanie, żeby nie robić kolejnego postu. Czy można zrobić tablice w taki sposób jak w C++ czyli tab1={2,5,4,7}; . Zamiast robić definiować każdą wartość osobno, czyli: tab1[0]=2 tab1[1]=5 tab1[2]=4 tab1[3]=7 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Października 2015 Udostępnij Opublikowano 30 Października 2015 Witam. Chcę zrobić kreator postaci. Jestem na samym początku, czyli planowanie w czym trzymać wartości. Rozmyślałem nad zmiennymi globalnymi, tablicami oraz plikami .ini. To ostatnie podoba mi się najbardziej. Mam dwa pytania: a ) W czym najlepiej to zrobić, chodzi mi o waszą opinię. b ) Jak dodawać liczbę do wartości, która istnieje w pliku .ini . Mam to: GMLini_open( 'ModCharColor.ini' ) ini_write_real('Color','colorr',255); ini_write_real('Color','colorg',155); ini_write_real('Color','colorb',125); ini_close(); I chciałbym aby wartość "155" z GMLini_write_real('Color','colorg',155); zwiększyła się np. o 5. Próbowałem z GMLini_write_real('Color','colorg',+5); // Zamieniło "155" na "5" ini_write_real('Color','colorg',+=5); // Wywaliło błąd Zacznijmy od tego że muszę wytknąć Ci użycie plików ini. Nie z tego powodu że coś robisz nie tak, a z tego że jeżeli tego nie zrobię to przyjdzie ktoś i zwróci mi uwagę na to że nie zwróciłem uwagi tobie. Ogółem pliki ini służą do przechowywanie danych konfiguracyjnych i nie powinny być używane do niczego innego. Na razie masz sobie zamiar przechowywać w nich kolor gracza, co jest ok, ale nawet nie myśl sobie że będziesz mógł tak samo zapisać ilość złota, level, tabelę wyników albo inne "ważne dane". Pliki ini są formatem czytelnym i łatwym do edycji. W skrócie do ini zapisuj tylko te dane które oczekujesz że gracz sam może sobie zmienić. Na przykład: Rozdzielczość gry, głośność muzyki, imię postaci. Więc przejdźmy do problemu. Nie możesz używać TYLKO plików ini. One, jak każde inne pliki tekstowe służą tylko do przechowywania danych. Nie możesz na nich wykonywać obliczeń i zawsze musisz pilnować aby przypadkiem nie nadpisać sobie danych. Więc musisz najpierw odczytać dane do pamięci. Tu wybierz co chcesz. Zmienna, tablica, struktura danych. Na tych danych operujesz i wykonujesz obliczenia. Dopiero potem zapisujesz ponownie dane do pliku. Użycie zmiennych globalnych nie ma sensu, chyba że maja być globalne i różne obiekty będą z nich korzystać. Ale jako że to kolor gracza, to największy sens ma przechowywanie tego jako dane gracza w jego obiekcie. Jeszcze jedno pytanie, żeby nie robić kolejnego postu. Czy można zrobić tablice w taki sposób jak w C++ czyli tab1={2,5,4,7}; . Zamiast robić definiować każdą wartość osobno, czyli: tab1[0]=2 tab1[1]=5 tab1[2]=4 tab1[3]=7 Tablic się nie da, ale już ds_list tak. ds_list_add(tab,2,5,4,7) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 30 Października 2015 Autor Udostępnij Opublikowano 30 Października 2015 Dobra, dzięki za szybkie wytłumaczenie. Myśle, że wykorzystam do tego wszystkiego tablice albo listy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 31 Października 2015 Autor Udostępnij Opublikowano 31 Października 2015 Więc próbowałem to zrobić na tablicach, ale bez zmiennych globalnych się nie obeszło. Chciałem użyć tablic globalnych ale pojawiał się błąd, prawdopodobnie dlatego, że oPlayer nie mógł zczytać wartości. Kod działa, ale wygląda pogmatwanie i znając moje sposoby "programowania", można go skrócić o ładne pare linijek, co wpłynie także na optymalizacje. Wykorzystałem: zmienne globalne, tablice. oSuwakButtonColorR: step GML if place_meeting(x,y,oMouse) and mouse_check_button(mb_left){ x = mouse_x; } wyrownanie=x //zmienna pomocnicza, zeby wyrownac do 0; bez tego, pozycja x=168 global.colorR=wyrownanie-168 global.color[0]=global.colorR if global.colorR>255 then x = oSuwakColorR.x+263 //Zabezpieczenie przed wyjechaniem znacznika if global.colorR<0 then x = oSuwakColorR.x+8 //Zabezpieczenie przed wyjechaniem znacznika if global.colorR<0 then global.colorR=0 //ustawienie granic koloru if global.colorR>255 then global.colorR=255 //ustawienie granic koloru oSuwakColorR: step GML image_blend=make_colour_rgb(global.colorR,0,0) oPlayer: step GML //kolor global.color[0]=global.colorR global.color[1]=global.colorG global.color[2]=global.colorB image_blend= make_color_rgb(global.color[0],global.color[1],global.color[2]) //Kolor skory Zdjęcie pomocnicze, ze względu na występowane obiekty: http://zapodaj.net/images/a08bee80e877e.png Pytanie, a raczej prośba. Mógłby ktoś pomóc, lub wskazać co można tutaj zmienić. 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ę