3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Nie. Działało jak używałem if(keyboard_check_pressed(vk_left)). Tylko vk_left o ile się nie mylę przechowuje tylko id przycisku(int). Dlaczego więc nie działa po mojemu? Owszem przechowuje tylko, że w device keyboard w systemie operacyjnym i tylko stamtąd pobiera tę zmienną jako rezultat odczytu i/o device. Właśnie dlatego ma funkcję co się nazywa oddzielnie, inaczej byś mógł po prostu zadać variable_N = vk_left i też by grało :) Właśnie dlatego jest keyboard_key_press(key); Podejrzewam, że chciałeś przypisać własną tablice konfigurowania znaków. To niestety musisz stworzyć tablicę wczytującą z klawiatury do Twojej array[key], a później z tej macierzy pobierać rezultat. Właściwie to tak działają przyciski joysticków, pady, więc tam znajdziesz rozwiązania lepsiejsze i gorsiejsze. Na szczęście klawiatura podaje znaki właśnie jako int, więc w ds_list możesz sobie wrzucić w pola wartość jest/nie ma, i przypisać rezultaty do innej ds_list z której czytasz wejście dla fizyki gry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 utwórz ten sam obiekt od nowa (w sensie new object, i wklej to samo), wylacz i wlacz jeszcze raz gma Wczoraj miałem taki problem :D ale ze skryptem, widział jakiś błąd w składni którego nie było. crtl+A kopiuj, wklej do nowego skrytpu i już błędu nie miałem. Magia GMa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Wracając do optymalizacji - czy rozciągnięcie obiektu (mam na myśli teraz "gotową" fizykę w GM) nie wpływa na kolizje z tym obiektem?Chyba "collision box" trochę nie nadąża za takimi zmianami, w każdym razie jak rozciągnąłem prostokąt x10 to jego kolizje były totalnie nie pasujące do realnego rozmiaru (coś tam się zwiększyło ale mniej niż powinno)Jak to ominąć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Z tego co pamiętam, rozciąganie obiektu za pomocą image_xscale/yscale rozciąga też maskę, a zatem i obszar kolizji w tym obiekcie, natomiast nie dzieje się tak z image_angle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Wracając do optymalizacji - czy rozciągnięcie obiektu (mam na myśli teraz "gotową" fizykę w GM) nie wpływa na kolizje z tym obiektem?Chyba "collision box" trochę nie nadąża za takimi zmianami, w każdym razie jak rozciągnąłem prostokąt x10 to jego kolizje były totalnie nie pasujące do realnego rozmiaru (coś tam się zwiększyło ale mniej niż powinno)Jak to ominąć? Poziom rozciągnięcia maski nie ma wpływu na optymalizację. w sumie xscale i yscale to tylko wartość przez którą mnoży wymiary boxa, anwet z xscale i yscale = 1 będzie mnożyć...przez 1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Poziom rozciągnięcia maski nie ma wpływu na optymalizację. w sumie xscale i yscale to tylko wartość przez którą mnoży wymiary boxa, anwet z xscale i yscale = 1 będzie mnożyć...przez 1. Tyle że mnożenie *1 jest bardzo szybkie, *2 *4 itd całkiem szybkie, a mnożenie *math.pi *cos *tan bardzo nieszybkie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Owszem przechowuje tylko, że w device keyboard w systemie operacyjnym i tylko stamtąd pobiera tę zmienną jako rezultat odczytu i/o device. Właśnie dlatego ma funkcję co się nazywa oddzielnie, inaczej byś mógł po prostu zadać variable_N = vk_left i też by grało :) Właśnie dlatego jest keyboard_key_press(key); Podejrzewam, że chciałeś przypisać własną tablice konfigurowania znaków. To niestety musisz stworzyć tablicę wczytującą z klawiatury do Twojej array[key], a później z tej macierzy pobierać rezultat. Właściwie to tak działają przyciski joysticków, pady, więc tam znajdziesz rozwiązania lepsiejsze i gorsiejsze. Na szczęście klawiatura podaje znaki właśnie jako int, więc w ds_list możesz sobie wrzucić w pola wartość jest/nie ma, i przypisać rezultaty do innej ds_list z której czytasz wejście dla fizyki gry. Czyli co, mam co włączenie wczytywać wszystkie klawisze? Nie rozumiem o co chodzi trochę :/ Może daj przykład jak będzie działało :/ Ale dla mnie to jest proste skoro vk_left dajmy na to załóżmy że to liczba 36, i nic innego. To co za różnica jak wpiszę 36 osobno? :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 @3r3se7ven: nie w Gamemakerze, tutaj każda liczba jest traktowana jako liczba 64-bitowa, więc nieważne, co przez co mnożysz. Nawet gdyby mnożenie przez 1 było szybsze niż 1,61803..., to zmniejszenie dzięki temu liczby obiektów będzie nieporównywalnie bardziej optymalne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 @3r3se7ven: nie w Gamemakerze, tutaj każda liczba jest traktowana jako liczba 64-bitowa, więc nieważne, co przez co mnożysz. Nawet gdyby mnożenie przez 1 było szybsze niż 1,61803..., to zmniejszenie dzięki temu liczby obiektów będzie nieporównywalnie bardziej optymalne. Ale procek nie mnoży ich softwearowo, ma wbudowany moduł sine, square, add. Dlatego takie krzaczki jak x2 idą szybko, a pi czy sine nie. Przetestuj wydajność i zobaczysz. Nawet bez obiektów ^^ Czyli co, mam co włączenie wczytywać wszystkie klawisze? Nie rozumiem o co chodzi trochę :/ Może daj przykład jak będzie działało :/ Ale dla mnie to jest proste skoro vk_left dajmy na to załóżmy że to liczba 36, i nic innego. To co za różnica jak wpiszę 36 osobno? :/ Dobrze kombinujesz. Tworzysz sobie wirtualną klawiaturę/pada. key_detected[num] i przypisujesz kolejnym komórką rezultat dla wybranego klawisza. To odwołanie keyboardc_cokolwiek jest odwołaniem do urządzenia. Odwołuj się później do swojego array key_detected[num]. Tak jakbyś czytał klawisze pada do array. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 @3r3se7ven: już sprawdziłem, wydajność jest identyczna @MaxGaming: to co miałeś było od początku dobrze, coś innego powoduje, że kod nie działa. Zamiast: GML globalvar a,b; a[0] = liczba b[0] = liczba spróbuj: GML global.a = 0 global.a[0] = liczba global.b = 0 global.b[0] = liczba i zamiast keyboard_check_pressed(b[0]), keyboard_check_pressed(global.b[0]), może teraz zadziała Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Zrobiłem tak: GML globalvar KEY_LEFT, KEY_UP, KEY_DOWN, KEY_RIGHT; KEY_LEFT=0; KEY_UP=0; KEY_DOWN=0; KEY_RIGHT=0; KEY_LEFT[0]=vk_left; KEY_UP[0]=vk_up; KEY_DOWN[0]=vk_down; KEY_RIGHT[0]=vk_right; To samo. A global. działa tak samo jak globalvar :/ @seven - nie rozumiem wgl o co Ci chodzi, daj może przykład. Sprawdzam i vk_left/right itp ZAWSZE mają tą samą wartość, nie możliwe, żeby wczytywało coś tam z klawiatury. Co zawierają te zmienne? W ostatniej sekcji odczytuje mi. Co włączenie jest tak samo, więc to są stałe, a nie zmienne ustalane na podstawie jakiegoś układu wejścia :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Jak najszybciej sprawdzić w debugerze co pobiera najwięcej zasobów? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 @MaxGaming: czasem, jak nie wiem, co jest nie tak, używam show_message tuż przed niedziałającym kodem, aby sprawdzić, jaką wartość ma zmienna tuż przed wykonaniem kodu walnij show_message(KEY_LEFT[argument0])) tuż przed ifem, który z tego korzysta i sprawdź, co wychodzi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Uzyskany rezultat jest stałą, podaną z klawiatury. Gdyby to było pudełko ze zmiennymi to byś się dowoływał do nie go pudełko_ze_zmiennymi.vk_left Ale nie jest, jest urządzeniem i dlatego ma taką funkcję device/keyboard/mouse. Z musu. robisz tak... tworzysz array pełen zer o rozmiarze tablicy znaków przy użyciu for używasz for na keyboard_check(i) i przypisujesz true/false do swojej tablicy(i) odwołujesz się do swojej tablicy dla każdego rezultatu z klawiatury przypisujesz w swojej array w numeze dla znaku wartość wciśnięty/niewciśnięty I co step jedziesz przez tablicę. Zresztą i tak jest to jechane, więc nie zaboli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 @MaxGaming: czasem, jak nie wiem, co jest nie tak, używam show_message tuż przed niedziałającym kodem, aby sprawdzić, jaką wartość ma zmienna tuż przed wykonaniem kodu walnij show_message(KEY_LEFT[argument0])) tuż przed ifem, który z tego korzysta i sprawdź, co wychodzi Wychodzi to co na SSie. Wiem ja też często tak robię, ale tym razem taki mini silniczek do debugu mam i mi pokazuje wszystkie ważne dla mnie aktualnie zmienne ;p Zrobiłem jeszcze tak: GML if(keyboard_check_pressed(38)) i niestety nie działa, czyli jakoś inaczej trzeba :/ Nikt nigdy nie robił key mappingu w gierce w GMie? @e: Już wiem. Wszystko było ok tylko źle inicjowałem skrypt(jeden if zły) i skrypt w ogóle nie sprawdzał xDD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Wychodzi to co na SSie. Wiem ja też często tak robię, ale tym razem taki mini silniczek do debugu mam i mi pokazuje wszystkie ważne dla mnie aktualnie zmienne ;p Zrobiłem jeszcze tak: GML if(keyboard_check_pressed(38)) i niestety nie działa, czyli jakoś inaczej trzeba :/ Nikt nigdy nie robił key mappingu w gierce w GMie? @e: Już wiem. Wszystko było ok tylko źle inicjowałem skrypt(jeden if zły) i skrypt w ogóle nie sprawdzał xDD Przecież klawiatura w GMS jest wirtualna ^^ Jeśli Ci wczytuje poprawne wartości to masz szczęście, mi z kilku klawiatur tylko jenda na ps2 tak robi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 Przecież klawiatura w GMS jest wirtualna ^^ Jeśli Ci wczytuje poprawne wartości to masz szczęście, mi z kilku klawiatur tylko jenda na ps2 tak robi. ALE MÓWIMY CAŁY CZAS O GAME MAKERZE xDDDDDD Tak podejrzewałem, że Twoje informację mają się ni jak do GMSa :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 ALE MÓWIMY CAŁY CZAS O GAME MAKERZE xDDDDDD Tak podejrzewałem, że Twoje informację mają się ni jak do GMSa :P To sprawdź jak to działa na kilku klawiaturach z różnymi sterownikami. Teraz jest dużo egzotyki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 To sprawdź jak to działa na kilku klawiaturach z różnymi sterownikami. Teraz jest dużo egzotyki. W GMSie działa tak samo... Nie wiem jak GMS sobie sam odczytuje, ale vk_left działa zawsze jako w lewo, na każdej klawiaturze.. Brakuje tu Gnyska, bo on by Ci to potłumaczył jak działa od kuchni pewnie ;p Ja nie wiem jak, wiem, że GMS zawsze ma te same ID ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 24 Września 2015 Udostępnij Opublikowano 24 Września 2015 W GMSie działa tak samo... Nie wiem jak GMS sobie sam odczytuje, ale vk_left działa zawsze jako w lewo, na każdej klawiaturze.. Brakuje tu Gnyska, bo on by Ci to potłumaczył jak działa od kuchni pewnie ;p Ja nie wiem jak, wiem, że GMS zawsze ma te same ID ;) Nocturne mi to przetłumaczył jak kilka lat temu chciałem klawisze zmapować kiedy jeszcze z windy w global_key były wczytywane :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Wytłumaczył by mi ktoś mod i div proszę? Niebyt rozumiem zastosowanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Jak najszybciej sprawdzić w debugerze co pobiera najwięcej zasobów?Nie potrafię łatwo wytłumaczyć. Musisz gdzieś kliknać prawym przyciskiem na okienko i wybrać Profiler. Wtedy klikasz czerwoną kropkę nagrywania i grasz element w grze którzy chcesz zbadać. Lista pokarze Ci wszystkie funkcje jakie się. przez ten czas i ile zabrały czasu. Tyle że mnożenie *1 jest bardzo szybkie, *2 *4 itd całkiem szybkie, a mnożenie *math.pi *cos *tan bardzo nieszybkie. @3r3se7ven: nie w Gamemakerze, tutaj każda liczba jest traktowana jako liczba 64-bitowa, więc nieważne, co przez co mnożysz. Nawet gdyby mnożenie przez 1 było szybsze niż 1,61803..., to zmniejszenie dzięki temu liczby obiektów będzie nieporównywalnie bardziej optymalne. Dyskusja jest bezsensowna bo samo sprawdzenie kolizji jest funkcją o wiele bardziej wymagającą obliczeniowo od obliczeń arytmetycznych. A to nie są najcięższe akcje GMa. To sprawdź jak to działa na kilku klawiaturach z różnymi sterownikami. Teraz jest dużo egzotyki. Nie ma najmniejszej różnicy. GM jest silnikiem wysokiego poziomu. Nie ma żadnej funkcji która odnosi się do sprzętu. Wszystkie informacje są odczytywane ze stanów systemu operacyjnego. Edit: Moze shadery? Bo nawet bufory są obsługiwane przez system. Wytłumaczył by mi ktoś mod i div proszę? Niebyt rozumiem zastosowanie. 5 / 2 = 2.5 5 div 2 = 2 5 mod 2 = 0.5 A mod Q = (A / Q) - (A div Q) Wzór w rzeczywistości jest zupełnie inny ale tak zrozumiesz. Div to dzielenie bez ułamków, mod to reszta z dzielenia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Aaaah, ok rozumiem :D Zawsze używałem floor(5/2) w takich wypadkach hah A jak się używa || ? Zapomniałem co oznacza :c Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 A jak się używa || ? Zapomniałem co oznacza :c to jest OR. AND to &&. Skoro jesteśmy przy temacie to zwrócę uwagę że teraz w Global Game Settings jest opcja włączenia w grze testu Short Circuit Evaluation. Dzięki temu warunki przestają się wykonywać gdy już jest wiadome że jeden z warunków oznacza nie wykonanie. Czyli: if(vspeed>0 and place_free(x,y+1)){} Ten kod optymalizuje się. Drugi warunek będzie sprawdzony tylko gdy pierwszy będzie miał true. if(instance_exists(gracz) && gracz.hp<0){} To jest proste zapobieganie błędów. Nawet nie będzie w room instance gracz (bo np został zniszczony) to nie wyskoczy błąd o odniesienie się do nie istniejącego obiektu bo pierw nie udał się test czy ten obiekt istnieje. if(godmode || (jakieś skomplikowane obliczenia)){} Tutaj dzięki ustawieniu godmode=true reszta obliczeń nie będzie musiała być brana pod uwagę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
lenin Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 mam pytanko co do wbudowanej fizyki. Czy jest jakiś sposób na poruszanie się obiektu po pathu bądź z wykorzystaniem mp_ bez tworzenia obiektu za którym by podążał? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
H2S04 Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Witam. Mam problem ze skalowaniem obiektu. Mój pocisk jest długości 256 pixeli i chciał bym go zmniejszyć do 0 gdy zbliży się do obiektu o_Zombie ponieważ punkt x na tym spricie jest równy 0 by podczas tworzenia nie przechodził przez postać. GML (End Step) var near; near = instance_nearest(x,y,o_Zombie) if collision_line(x,y,xprevious,yprevious,o_Zombie,0,1){ near.hp -= global.dm[o_Player.wm]; image_xscale = point_distance(x, y, o_Zombie.x, o_Zombie.y) / 256 // <<<<<<<< Próbowałem tak ale nie działa :/ repeat(5 + random(30)) with (instance_create(near.x,near.y,o_bloodhit)){ direction = (other.image_angle) - 15 + random(30) } instance_destroy(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Przypinam i pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Witam. Mam problem ze skalowaniem obiektu. Mój pocisk jest długości 256 pixeli i chciał bym go zmniejszyć do 0 gdy zbliży się do obiektu o_Zombie ponieważ punkt x na tym spricie jest równy 0 by podczas tworzenia nie przechodził przez postać. GML (End Step) var near; near = instance_nearest(x,y,o_Zombie) if collision_line(x,y,xprevious,yprevious,o_Zombie,0,1){ near.hp -= global.dm[o_Player.wm]; image_xscale = point_distance(x, y, o_Zombie.x, o_Zombie.y) / 256 // <<<<<<<< Próbowałem tak ale nie działa :/ repeat(5 + random(30)) with (instance_create(near.x,near.y,o_bloodhit)){ direction = (other.image_angle) - 15 + random(30) } instance_destroy(); } Możęsz użyć draw_sprite_part lub draw_sprite_part_ext aby rysować tylko część sprite'a której Ci trzeba. Długość sprite ustaw na: "min(256,point_distance(x,y,x_celu,y_celu);" Min wybierze mniejszą wartość, jeżeli pocisk jest ponad 256 pikseli od celu narysuje całego sprite'a, a jeżeli jest bliżej tylko tyle ile trzeba. Zastanawiają mnie motywy tego, co robisz, ale nie będę krytykował. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
H2S04 Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 Możęsz użyć draw_sprite_part lub draw_sprite_part_ext aby rysować tylko część sprite'a której Ci trzeba. Długość sprite ustaw na: "min(256,point_distance(x,y,x_celu,y_celu);" Min wybierze mniejszą wartość, jeżeli pocisk jest ponad 256 pikseli od celu narysuje całego sprite'a, a jeżeli jest bliżej tylko tyle ile trzeba. Zastanawiają mnie motywy tego, co robisz, ale nie będę krytykował. Jak Cię zastanawiają to już daję odpowiedź :) Jest to pocisk, chodzi tylko o wizualizację. Po co mi mały pixel lecący do celu. Jak dla mnie lepiej wygląda lecąca taka jak by smuga, lecz nie chcę by ta smuga przechodziła też przez zombiaka :) Robiłem wcześniej to na draw_line lecz efekt był mizerny :) Zabieram się do pracy nad tym i idę spać bo nie spałem od... wczoraj.. GameMaker jakoś mnie pochłonął :D PS. Coś nie idzie :/ draw_sprite_part_ext nie ma rotacji i jest to problem. Kle lecą poziomo zamiast pionowo do celu oraz zauważyłem, że nie bardzo to idzie. Idę spać bo już padam przed lapkiem. Może jak ktoś będzie miał chwilę to jakoś lepiej wytłumaczyć to się na przyszłość nauczę lecz teraz jestem wrakiem i niczego nie zrobię w GMie :D Pozdrawiam. GML (Draw) var ps; if instance_exists(o_Zombie){ ps = min(256,point_distance(x,y,o_Zombie.x,o_Zombie.y)); draw_set_blend_mode(bm_add); draw_sprite_part_ext(sprite_index,sprite_index,sprite_index,sprite_index,ps,sprite_index,x,y,1,2,c_yellow,0.5) draw_set_blend_mode(bm_normal); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
lenin Opublikowano 25 Września 2015 Udostępnij Opublikowano 25 Września 2015 A skorzystaj sobie z particle może hmm? :) 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ę