Ignatus Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Jak dotąd z żadnego posta Sevena nie rozumiem absoultnie nic- czarna magia.Co oczywiście świadczy o moim poziomie(czyli w okolicy 0-ale się uczel;p_):D:D Wracając do tematu Jak zrobić efekt grayscale ekranu bez użycia shaderów ?? W sensie- gracz przegrał więc ekran robi się czarno biały Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Jak dotąd z żadnego posta Sevena nie rozumiem absoultnie nic- czarna magia.Co oczywiście świadczy o moim poziomie(czyli w okolicy 0-ale się uczel;p_) :D :D Wracając do tematu Jak zrobić efekt grayscale ekranu bez użycia shaderów ?? W sensie- gracz przegrał więc ekran robi się czarno biały Wartość R = G = B Polecam przypisanie min lub max(R,G,B) dla każdego pixela. Ale bez shadera to jest bardzo ciężkie dla draw event. Chociaż wyjaśnia jak działa shader. Pobierasz to co koledzy mierzyli w poprzedniej dyskusji (pod tym hasłem w manualu masz kod jak to wymacać: application_get_position();) To Ci powie ile pixeli trzeba zbadać na ile. Ten Surface z default działa nawet jak go nie odpalasz, jego rezultat wchodzi do karty graficznej jako wsadowy 3x8bit colour codde. Tym ten_kolor = surface_getpixel(index, x, y); Macasz pixel po pixelu jaki ma kolor i przygotowujesz data structure (ds_cokolwiek dobierz sobie pod gust) z pobranych danych colour_get_ przejrzyj listę w manualu (rgb,hsv) i dalej korzystasz z jakiejś z wersji (pod guścik): Wartość R = G = B Polecam przypisanie min lub max(R,G,B) dla każdego pixela. I zapisujesz w strukturze danych. po make_colour(z czego tam chcesz) W draw event korzystając z draw_point_colour malujesz to do surface i jest szaro. Tak wyglądały shadery przed powstaniem do nich bibliotek, które to prostują to do pewnych szybkich przekształceń. Jest to nieoptymalizowana droga, i bardzo niewydajna, spodziewaj się prędkości wyświetlania klasy pocztówek z wojny. Warto przeskalować rozdzielczość na ten numer surface_resize(index, w, h); Bo inaczej emo i paczka żyletek. Oczywiście całość możesz spakować do jednej linijki jak już zrozumiesz co i jak po kolei ma być wykonane. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Jak zrobić efekt grayscale ekranu bez użycia shaderów ?? W sensie- gracz przegrał więc ekran robi się czarno biały Jeśli chcesz mieć sensowną wydajność (tzn. więcej niż 0.5 FPS), nie da rady zrobić tego efektu bez shaderów. Na szczęście z internetu można pobrać gotowe shadery, są tam też tutoriale, jak z nich korzystać. ...Jeżeli bardzo, BARDZO nie lubisz shaderów, możesz zamiast tego w prosty sposób zrobić efekt odwrócenia kolorów bez żadnych shaderów: GML draw_set_color(c_white) //ważne draw_set_blend_mode_ext(10,1) //krótko: wszystko, co namalowane na biało w tym trybie odwróci kolory tego, na czym jest rysowane draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,0) //zamalowujemy cały ekran na biało draw_set_blend_mode(bm_normal) //wracamy do normalnego trybu rysowania Należy to wrzucić do eventu Draw End w jakimś obiekcie i upewnić się, że będzie wywołany tylko raz w każdej klatce Ten kod działa, gdy korzystasz z viewów. Jeśli z nich nie korzystasz, to używasz współrzędnych (0,0,room_width,room_height) zamiast view_ . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 ... Ten kod działa, gdy korzystasz z viewów. Jeśli z nich nie korzystasz, to używasz współrzędnych (0,0,room_width,room_height) zamiast view_ . lewy górny wyznaczamy z pozycji, a prawy dolny z dodania: display_get_width(), display_get_height(); lub view_wview[0],view_hview[0] <<ten view działa nawet jak nie korzystasz z view i je odznaczysz. Chciał nie chciał, musiał. Przemalować cały room to hardcore, ludzie miewają rozmach przy kreacji ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Niektórzy robią gry, w których roomy mają rozmiary np. 800x600 i nie przesuwają nigdzie ekranu, pozostali używają viewów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Ciężka sprawa widzę... W przypadku walki o wydajność na androidzie zastosowanie application_surface_enable(false); Ma jakikolwiek sens? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 27 Września 2015 Udostępnij Opublikowano 27 Września 2015 Niektórzy robią gry, w których roomy mają rozmiary np. 800x600 i nie przesuwają nigdzie ekranu, pozostali używają viewów Na tym etapie ludzie już raczej nie stresują się shaderami przynajmniej nie fragment shaderem. Trzeba uważać bo 0,0 do końca to dla ludzi co dopiero zaczynają przygodę jest jak granat bez zawleczki. Potrafią ręcznie nadłubać cały level do super mario, bo nie wiedzą, że to się ekranami ładuje :) Dawaj ludziom zawleczki do kodów :) Kopiują, wklejają i bum :) Ciężka sprawa widzę... W przypadku walki o wydajność na androidzie zastosowanie application_surface_enable(false); Ma jakikolwiek sens? Zależy od urządzenia, jeśli możesz ładować do bufora wyświetlacza (screen buffer) to może mieć sens, ale aby utrzymać w kupie szerokość do wysokości trzeba rozgryźć każdy wyświetlacz z osobna. Tyle że wyłączanie tej opcji to początek drogi do usunięcia większej części funkcjonalności OS jako zbędnych przeszkadzajek w graniu. Uprzedzam że wymaga to wiedzy, i praktyki, wymaganej do odpalenia gry na wyświetlaczu pralki, bo też się da. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 30 Września 2015 Autor Filar Społeczności Udostępnij Opublikowano 30 Września 2015 GML if mouse_check_button_released(mb_right) && place_free(mouse_x,mouse_y) && point_distance(x,y,mouse_x,mouse_y)<=200 {x=mouse_x y=mouse_y} if mouse_check_button_released(mb_right) && point_distance(x,y,mouse_x,mouse_y)>200 && place_free(x+lengthdir_x(200,point_direction(x,y,mouse_x,mouse_y)),y+lengthdir_y(200,point_direction(x,y,mouse_x,mouse_y))) {x+=lengthdir_x(200,point_direction(x,y,mouse_x,mouse_y)) y+=lengthdir_y(200,point_direction(x,y,mouse_x,mouse_y))} pierwszy raz korzystam z lengthdirów, sprawdzają czy nic nie ma na dobrej pozycji ale teleportują zazwyczaj na złą - kilka pixeli za właściwym celem i trochę w bok. co robię nie tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 if mouse_check_button_released(mb_right) && place_free(mouse_x,mouse_y) && point_distance(x,y,mouse_x,mouse_y)<=200 {x=mouse_x y=mouse_y} if mouse_check_button_released(mb_right) && point_distance(x,y,mouse_x,mouse_y)>200 && place_free(x+lengthdir_x(200,point_direction(x,y,mouse_x,mouse_y)),y+lengthdir_y (200,point_direction(x,y,mouse_x,mouse_y))) {x+=lengthdir_x(200,point_direction(x,y,mouse_x,mouse_y)) y+=lengthdir_y(200,point_direction(x,y,mouse_x,mouse_y))} pierwszy raz korzystam z lengthdirów, sprawdzają czy nic nie ma na dobrej pozycji ale teleportują zazwyczaj na złą - kilka pixeli za właściwym celem i trochę w bok. co robię nie tak? Skąd bierzesz wejściowe x/y Jaki ma sens ten przypadek? Przeciągnięcie przed puszczeniem klawisza? Mysz jest niesynchronizowana do room_speed, mogą się wykonać oba kody jednocześnie, jeśli przesuniesz myszą. Wq przypadek przy stawianiu punktów to_go w rtsie, mnożą się wtedy jak króliki. Wyciągnij ten point direction x/y>>mysza do zmiennej lokalnej, jest rekurentny. Chcesz powiedzieć, że klikasz myszą na punkt poza pierścieniem r200 i rzuca Cię nei tam gdzie chciałeś? Czy wewnątrz pierścienia r200? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 Mysz jest niesynchronizowana do room_speed, mogą się wykonać oba kody jednocześnie, jeśli przesuniesz myszą.Nie jest synchroniczna, ale już drugi raz poprawiam Cię bo GM jest silnikiem wysokopoziomowym. Pozycje myszy pobiera na początku pętli gry i aktualizuje ją dopiero przy następnym kroku. Tutaj nic nie odbędzie się asynchronicznie. Nie ma to nic związku z problemem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 Nie jest synchroniczna, ale już drugi raz poprawiam Cię bo GM jest silnikiem wysokopoziomowym. Pozycje myszy pobiera na początku pętli gry i aktualizuje ją dopiero przy następnym kroku. Tutaj nic nie odbędzie się asynchronicznie. Nie ma to nic związku z problemem. Ustaw sobie room speed na 1 to zobaczysz synchronizację. Jak pociągniesz to będziesz miał obiekt z każdego warunku aż do zamulenia. Zrób coś - i wróć do tematu z wiedzą praktyczną. Zbliżonym kodem robiłem kiedyś pozycjonowanie i też się dziwiłem. Przecież powinno działać inaczej, a jednak działa jak widać. //a już tak w kwestii praktycznej - ładuję dane z i/o do zmiennych na początku pętli aby było tak jak piszesz, bo inaczej nie jest :) Przypominam że dyskutujemy o GMSie, w którym ostatnio poprawka popsuła floor(), no to już jest osiągnięcie w tworzeniu nowej algebry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 30 Września 2015 Autor Filar Społeczności Udostępnij Opublikowano 30 Września 2015 Skąd bierzesz wejściowe x/y Jaki ma sens ten przypadek? Przeciągnięcie przed puszczeniem klawisza? Mysz jest niesynchronizowana do room_speed, mogą się wykonać oba kody jednocześnie, jeśli przesuniesz myszą. Wq przypadek przy stawianiu punktów to_go w rtsie, mnożą się wtedy jak króliki. Wyciągnij ten point direction x/y>>mysza do zmiennej lokalnej, jest rekurentny. Chcesz powiedzieć, że klikasz myszą na punkt poza pierścieniem r200 i rzuca Cię nei tam gdzie chciałeś? Czy wewnątrz pierścienia r200? x/y są pozycją gracza, którego chcę teleportować jeśli mówisz o _release, to przy naciśnięciu gracz może sobie pokminić gdzie w ogóle mu będzie wygodnie się teleportować, przy samym pressed tylko rysuję linię wyznaczająca problem był przy klikaniu poza pierścieniem jak wątpiłem w rozwiązanie z wyciągnięciem directiona do zmiennej, tak faktycznie pomogło - dzięki wielkie! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 Wiec ja może wytłumaczę Chell z czym był problem. Sam na początku nie zauważyłem, a był dość prosty. Event wykonywał się dobrze, ale druga akcja przesunięcia y korzystała już z nowego przesuniętego x. @3r3se7ven: Nie mam pojęcia co chciałeś pokazać ostatnim postem. Jest późno i nie chce mi się zastanawiać więc ułatw mi to. Czy użyłeś argumentu potwierdzającego to co ja pisałem tylko po to aby wyszło na to że i tak masz rację, czy może po prostu starałeś się kolejny raz wywołać dyskusję nie na temat i zarobić w końcu warna? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 x/y są pozycją gracza, którego chcę teleportować jeśli mówisz o _release, to przy naciśnięciu gracz może sobie pokminić gdzie w ogóle mu będzie wygodnie się teleportować, przy samym pressed tylko rysuję linię wyznaczająca problem był przy klikaniu poza pierścieniem jak wątpiłem w rozwiązanie z wyciągnięciem directiona do zmiennej, tak faktycznie pomogło - dzięki wielkie! Synchro urządzenia, w każdym odwołaniu do myszy były nieco inne parametry i robił się kaszan. Dlatego dobrze jest ustawić bardzo wysoki room speed (powiedzmy 60 czy 100 zależnie w co celujemy na końcu). I zebrać stan maszyny przed wykonywaniem. Przy niskich room speed daje to efekt rzucania kontrolerem (a to się pojawia w takim stanie a to w innym). Dlatego warto dać wysokie. Tak żebyś miał własną "wirtualną maszynę", a nie ufał funkcjom. ... @3r3se7ven: Nie mam pojęcia co chciałeś pokazać ostatnim postem. Jest późno i nie chce mi się zastanawiać więc ułatw mi to. Czy użyłeś argumentu potwierdzającego to co ja pisałem tylko po to aby wyszło na to że i tak masz rację, czy może po prostu starałeś się kolejny raz wywołać dyskusję nie na temat i zarobić w końcu warna? Threef... skąd wziąłeś informację że cokolwiek z kontrolerów i/o w GMS jest synchronizowane z room speed? Threef.think() Co sądzimy na temat programów które robią hijack kontrolerów? W jaki sposób winda miałaby obsługiwać funkcyjne? Jak byś zwinął program do paska albo przeszedł na inny monitor myszą, jak masz kilka? Threef.think() Jak zrobisz synchronizację do programu działającego w oknie? Przecież to naprawdę wystarczy ustawić room_speed na 1, i spróbować użyć alt tab, alt f4, wyjechać myszą poza okno programu... Weź sobie przylep postit na monitor, z warnem, że od jutra im wolniej jedziesz tym samochód wolniej skręca kołami w rezultacie użycia kierownicy :) Wybaczam Ci bo pewnie byłeś w gimnazjum. Ustrój winny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 Synchro urządzenia, w każdym odwołaniu do myszy były nieco inne parametry i robił się kaszan. Dlatego dobrze jest ustawić bardzo wysoki room speed (powiedzmy 60 czy 100 zależnie w co celujemy na końcu). I zebrać stan maszyny przed wykonywaniem. Przy niskich room speed daje to efekt rzucania kontrolerem (a to się pojawia w takim stanie a to w innym). Dlatego warto dać wysokie. Tak żebyś miał własną "wirtualną maszynę", a nie ufał funkcjom. Zacytuję żebyś przypadkiem nie zedytował i się nie wykręcał. Input myszy i klawiatury (poza kilkoma specjalnymi funkcjami) odbywa się wewnątrz silnika. Jest tak jak napisałem. Problem był w banalnych obliczeniach i uważam temat za zamknięty. Dalsza dyskusja będzie juz traktowana jako off topic bo nie jest to miejsce na takie dyskusje. A żebyś mógł zobrazować:x = 1 y = 1 x = x + y //1 + 1 = 2 y = x + y//2 + 1 = 3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 Zacytuję żebyś przypadkiem nie zedytował i się nie wykręcał. Input myszy i klawiatury (poza kilkoma specjalnymi funkcjami) odbywa się wewnątrz silnika. Jest tak jak napisałem. Problem był w banalnych obliczeniach, a żebyś mógł zobrazować: W tych co zaznaczyłem na początku na zielono? Noooo... tam był... Tylko w zamyśle autora jedno było (0,200] a drugie (200,n) więc logicznie wymyślił że oba na raz nie mają prawa się wykonać. A jak wyciągnął problem przed nawias do jednego wykonania to zebrało tylko jedną wartość i ją wykonało. Piszę Ci Threef popróbuj. Trochę mi zajęło dawno temu zrobienie kasownika gliczu zanim mnie oświecono, iż owszem miało działać synchro ale wynikły obeiktywne trudności związane z użytkowaniem room_speed i rzeczywistym room_speed. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 W tych co zaznaczyłem na początku na zielono?OK, dziękuję za wyjaśnienie. Więc od początku wiedziałeś w czym jest problem ale postanowiłeś drążyć nie powiązany z tym temat. Pierwszy Warn. Witamy na forum. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 OK, dziękuję za wyjaśnienie. Więc od początku wiedziałeś w czym jest problem ale postanowiłeś drążyć nie powiązany z tym temat. Pierwszy Warn. Witamy na forum. Istotnie na policjanta najlepszy najgłupszy. To zmień rozdzielczość i zobacz czy przypadkiem widzisz dwóch wskaźników myszy. Jeden synchro a drugi z windy. Ponieważ Cię zacytowałem to widać że ustalasz sobie zasady dyskusji po fakcie. Nie życzę sobie takich szczeniackich zachowań. Wracaj do książek gimbazo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 ---DO USUNIĘCIA--- poradziłem sobie xD Pewnie wyszedł z domu po bułki i pytał jakim klawiszem się uruchamia interakcje ze sprzedawcą :V Czy seven zgłosił post Threefla do moderatorów(Threefla)? xDD BTW chyba Threef już dawno nie chodzi do gimnazjum ;) Niedługo kolega zgłosi post Ramnusa, żeby ktoś mu warna dał ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 30 Września 2015 Udostępnij Opublikowano 30 Września 2015 ... BTW chyba Threef już dawno nie chodzi do gimnazjum ;) ... Jak będzie takie kwiatki o i/o sadził w robocie to wróci do gimnazjum za karę jako nauczyciel. I będzie cudze dzieci uczył ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Czy da się jakoś szybko mnożyć znaki w stringach? W sensie: GML string="$"+"0"*(10-string_length(string(cash)))+string(cash) Chciałem żeby z przodu dopisywało zera żeby zawsze było $+10 znaków. Muszę to for/repeat robić "ręcznie", czy istnieje jakiś sposób? Ew. mam jeszcze pomysł by robić coś w stylu: GML _str=10*(10-string_length(string(cash))) i później rysować string bez pierwszego znaku(jedynki). Sposób repeat/for, czy ten drugi jest optymalniejszy, ew. czy da się jakoś w stylu pierwszego przykładu, tylko po prostu źle robię, czy mnożenie w stringach nie istnieje wgl? Założę się że ktoś z Was pewnie się już z takim problemem zmagał :P @e: Dobra, póki co zrobiłem po prostu repeat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Czy da się jakoś szybko mnożyć znaki w stringach? W sensie: GMLstring="$"+"0"*(10-string_length(string(cash)))+string(cash) Chciałem żeby z przodu dopisywało zera żeby zawsze było $+10 znaków. Muszę to for/repeat robić "ręcznie", czy istnieje jakiś sposób? Ew. mam jeszcze pomysł by robić coś w stylu: GML_str=10*(10-string_length(string(cash))) i później rysować string bez pierwszego znaku(jedynki). Sposób repeat/for, czy ten drugi jest optymalniejszy, ew. czy da się jakoś w stylu pierwszego przykładu, tylko po prostu źle robię, czy mnożenie w stringach nie istnieje wgl? Założę się że ktoś z Was pewnie się już z takim problemem zmagał :P @e: Dobra, póki co zrobiłem po prostu repeat. Autor ma na myśli żeby był 10 znaków, na przykład same zera, i zamieniały się od prawej na decymalne, coś jak obracający się licznik? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Autor ma na myśli żeby był 10 znaków, na przykład same zera, i zamieniały się od prawej na decymalne, coś jak obracający się licznik? Coś jak obracający się licznik, ale bez obracania się :P W sensie: 232 -> 0000000232 1 -> 0000000001 5555555 -> 0005555555 Póki co zrobiłem to dodając repeatem "0", ale jeżeli są jakieś o wiele lepsze pomysły to zmienię ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Coś jak obracający się licznik, ale bez obracania się :P W sensie: 232 -> 0000000232 1 -> 0000000001 5555555 -> 0005555555 Póki co zrobiłem to dodając repeatem "0", ale jeżeli są jakieś o wiele lepsze pomysły to zmienię ;p Tę funkcjonalność sponsoruje mod i div. Tak samo robi się zegarek. Wrzucę to po kolacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Jak bym zrobił jakoś tak GML string_copy(string(10000000000+cash),1,11) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 GML draw_set_colour(c_red); var tvv = 123;//number ulubiony numerek var ddl = 25;//pos length długość łańcucha zawsze będzie o jedno pole dłuższy var nsi = 10;//num size wyznacza system liczbowy, tylko //ponad 9 to musisz wyświetlać inne symbole, bo będą duble var stx = 100;//txtposx gdzie to rysować var sty = 300;//txtposy var incx = string_width("0");//char space for(p = ddl; p >= 0; p--) { var dts = floor(tvv/power(nsi, p)) mod nsi; draw_text(stx,sty, string(dts)); stx += incx; } Można to zamknąć w jednej linii, ale będzie nieczytelne. Automatycznie zamienia na wybrany system liczbowy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 GML l=10 n=123 rep=10000 //Threef timer=get_timer() repeat(rep) { draw_text(0,0,string_repeat("0",l-string_length(n))+string(n)) } show_debug_message("string_repeat(): "+string(get_timer()-timer)) //kt1117 timer=get_timer() repeat(rep) { draw_text(0,0,string_copy(string(10000000000+n),1,l)) } show_debug_message("string_copy(): "+string(get_timer()-timer)) //3r3se7ven timer=get_timer() repeat(rep) { var nsi = 10; var s=""; for(p = l; p >= 0; p--) { var dts = floor(n/power(nsi, p)) mod nsi; s+=string(dts) } draw_text(0,0,0) } show_debug_message("Seven: "+string(get_timer()-timer)) Średnie czasy wykonania każdego z proponowanych sposobów (w mikrosekundach): string_repeat(): 533634 string_copy(): 384585 Seven: 1332550 @3r3se7ven: niestety nie udało mi się zoptymalizować twojego przykładu bardziej. p.s.: Nawet nie sprawdzałem czy wyniki są poprawne. Przy sposobie kt1117 może być źle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Uważaj bo zaraz ci seven fpsy zmierzy i wyjdzie na jego korzyść :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 GML draw_set_colour(c_red); var tvv = 123;//number ulubiony numerek var ddl = 25;//pos length długość łańcucha zawsze będzie o jedno pole dłuższy var nsi = 10;//num size wyznacza system liczbowy, tylko //ponad 9 to musisz wyświetlać inne symbole, bo będą duble var stx = 100;//txtposx gdzie to rysować var sty = 300;//txtposy var incx = string_width("0");//char space for(p = ddl; p >= 0; p--) { var dts = floor(tvv/power(nsi, p)) mod nsi; draw_text(stx,sty, string(dts)); stx += incx; } Można to zamknąć w jednej linii, ale będzie nieczytelne. Automatycznie zamienia na wybrany system liczbowy. Coś ty zrobił? xD Z odpowiedzi na odpowiedź jesteś coraz lepszy xD Zaczynam podejrzewać że to Psix założył nowe konto i troluje, bo jakoś go ostatnio nie widać XD Ok czyli string_copy. Wgl fajny sposób na sprawdzenie czasu obliczeń, muszę się tym pobawić, dzięki Threef :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 1 Października 2015 Udostępnij Opublikowano 1 Października 2015 Uważaj bo zaraz ci seven fpsy zmierzy i wyjdzie na jego korzyść :D Kto robi obliczenia w draw event a nie do surface w step event sam sobie winien wyników. Coś ty zrobił? xD Z odpowiedzi na odpowiedź jesteś coraz lepszy xD Zaczynam podejrzewać że to Psix założył nowe konto i troluje, bo jakoś go ostatnio nie widać XD Ok czyli string_copy. Wgl fajny sposób na sprawdzenie czasu obliczeń, muszę się tym pobawić, dzięki Threef :D To co chciałeś robi? Robi. A że jeszcze zmywa, sprząta i gotuje... MBX jak zapytał o takie coś, to chwilę później pytał czy by się dało zrobić efekt że się to zamienia na dwójkowy. Metoda sprawdzania obliczeń o kant, bo Threef wynalazł wykonywanie obliczeń w draw event. No jak się potęgowanie z 10 przesunięciami decymalnymi wrzuca do draw event do liczenia to ja się poddaję, nie umiem tego skomentować :) Kim jest Psix? 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ę