Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 812
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    141

Treść opublikowana przez gnysek

  1. a++ - postikrementacja - dodaj do zmiennej 1 po obecnym wyrażeniu. ++a - preinkrementacja - dodaj do zmiennej przed obecnym wyrażeniem. tak samo z -- oczywiście (--a, a--). Wyrażenie to jest każdy kawałek kodu, który powinien kończyć się średnikiem czy nawiasem (nawet jeśli go nie Inaczej mówiąc: show_message(a++); // po kompilacji: show_message(a); a+=1; show_message(++a); // po kompilacji: a+=1; show_message(a); Oczywiście w większości przypadków wydaje się, że a++ oznacza to samo co a+=1, bowiem dodanie wykona się zawsze w następnym kroku kodu, więc takie jest wrażenie, czy też w pętlach dodanie wykona się zaraz za średnikiem - ale właśnie przykład z show message pokazuje, ze można napisać ++ a i tak dostać poprzednią wartość. Czasem wstawienie przed czy za się przydaje, żeby osiągnąć dodatkowy efekt.
  2. Zamień draw na instance create... To naprawdę tak ciężko wykumać?
  3. Zamiast stringów lepiej używać constantow/macro, kompiler wykryje błędy i podpowiadanie składni zadziała
  4. Trochę tak jak ja to napisałem, dodatkowe zmienne, oznaczające własnie avatar, może imię osoby, może rodzaj tła i na tej podstawie resetować zmienne po kazdym tekście i czytać nowe. Generalnie ja napisałem coś takiego jak w solstice/cinders na swoje potrzeby w jakieś 6-8h, ale nie nadaje się do udostępnienia tak ot, bo 50% kodu jest zależna od wielu innych rzeczy w grze, a nie będę dawał połowy gry to nie jest łatwe zagadnienie i wymaga napisania niemalże parsera prostego języka programowania (taki bardziej znacznikowy w sumie, no ale jednak). Jak ma się już pierwszą komendę to potem z górki, ja mam tak zrobione nawet animacje postaci (przemieszczają sie, obracają itd.) i nawet można podawać prędkość i czas trwania.
  5. @nowy_user Chyba nie wszystko jak w manualu, bo ja tam widzę jak do zapisywania w pliku używają zmiennej którą zwraca file_text_open_write, a Ty używasz tej od get_save_filename... var _path, _file; _path = get_save_filename("project|*.txt", ""); if (_path != "") { _file = file_text_open_write(_path); file_text_write_string(_file, _savedane); file_text_close(_file); } } Jedna funkcja zwraca ścieżkę, druga id pliku.
  6. @pankracy To jednak Solstice było, ale obie gry są niemal identyczne. TeeGee na pewno się nie pogniewa jak się podzielę w celach edukacyjnych, skoro i tak dawał do kodu dostęp w ramach Humble. https://drive.google.com/open?id=1y9cA4R9m-KBrLuM8tHhJsTQjY5temFz1 Ostrzegam jednak, że to spory kod będzie (poznasz zmianę tła czy efekty po kodzie podobnym jak bbcode, np. [do_something=1]).
  7. draw_sprite(introcolor A co to jest ten introcolor ? A jak chcesz zmianę obrazka na jakimś etapie tekstu (w połowie), no to jest już naprawdę dużo roboty, cały dzień. Chyba w kodzie źródłowym cinders coś takiego bylo, masz może go z humble bundle ?
  8. @pankracy ponieważ piszesz, że robisz na GMS 1.4 to średnio mogę pomóc, nie chce mi się go instalować specjalnie. Ale z głowy zrobiłbym tak: (wielokropek oznacza, że zostaje poprzedni kod). scr_ini: global.textq=ds_queue_create(); global.imageq=ds_queue_create(); global.text_get=true; add_text (od teraz ma dwa argumenty, ("tekst", -1) gdy nie ma obrazka i ("tekst", spr_jakis) gdy jest obrazek: ds_queue_enqueue(global.textq,argument0); ds_queue_enqueue(global.textq,argument1); if !instance_exists(obj_text) then instance_create(0,0,obj_text); --- obj_text create: alpha=0; //przeswitywalnosc step=0; //kolejne zadanie przez nas wykonywane - KROK text=''; //tekst jaki mamy wyswietlic image = -1 // obrazek jaki mamy wyswietlic leght = 0; step: if not ds_queue_empty(global.textq) and global.text_get=true //jezeli [kolejka] nie jest pusta i mozna [pobrac tekst] { global.text_get=false;//wylacz pobieranie tekstu, aby funkcja sie juz nie wywolala, dopuki znowu nie bedzie true text=ds_queue_dequeue(global.textq);//pobierz tekst z kolejki image=ds_queque_dequeue(global.imageq); .... /// KROK 3 ... text=''; image = -1; global.text_get=true;//ustaw, ze mozna juz pobierac tekst step=0; } } draw: ... // cały poprzedni kod if (image > -1) { draw_sprite(image, 0, 10, 10); // alphę itd. sobie już dopisz sam w draw_sprite_ext ;) } Jeśli dobrze liczę, dodałem raptem 7 linijek kodu. Niewiele trzeba było zmienić, żadnej zabawy, tylko druga kolejka i druga zmienna. Nie wiem dlaczego aż tyle problemu to zajęło, skoro to jest niemal skopiowanie tego samego kodu, tylko zamiast "global.textq" i "text", używasz "global.imageq" i "image". No i nie przypisujesz stringa.
  9. Czyli coś podobnego do mojego, tylko z predefiniowaną liczbą kolumn i wierszy.
  10. no to w GM tak fajnie się raczej nie da. trzeba ręcznie data[0,0] = *. Chociaż można by się pobawić w substringi... będzie mniej wiecej tak, ale piszę to "na sucho" z głowy, bez testowania: var arr = [], a = 0, b = 0,c = ""; for (i=1; i<=string_length(str); i++) { c = string_char_at(str, i); if (ord(c) == 10 or ord(c) == 12) { // znak \n lub \r if (a > 0) { a = 0; b++; /* przenosi tablicę to nowej linii, a > 0 zapobiega sytuacji gdy jest \n\r z rzędu, zamiast tylko \n albo tylko \r (obsługuje zatem windows/linux/mac) */ } // inaczej nie rób nic, trochę jak continue, ale warunki sprawiają, ze nie trzeba go pisać } else { arr[a, b] = c; } } return arr; // powinno zwrócić tablicę.
  11. Tak naprawdę tworzysz drugi raz to samo, tylko zamiast stringów podajesz obrazki Nie napiszę Ci od zera, bo raz, ze to sporo roboty a dwa, że nie korzystam z GMS 1.4 tylko 2.0, bo GMS 1.4 jest porzucony już niemal rok.
  12. No kod będzie taki sam jak do pierwszej chyba? Jesteś w stanie podejrzeć ten kod od rozszerzenia czy nie?
  13. Patrząc na liczbę FPS, najwyższe taktowanie to będzie 60Hz tak ?
  14. OK, a co robi addtext ? buduje tablicę ? no to zrób drugą z obrazkami i wstawiaj -1 jeśli nie ma obrazka, i na tej podstawie wyświetlaj.
  15. Masz zupełną rację! Przecież skoro dodałem 45, to 45 na rysunku zamieni się na 90 w kodzie. No ale udało się samemu rozwiązać, czyli będą z Ciebie ludzie Kto drąży i kombinuje ten daleko zachodzi!
  16. W sensie wgrałeś ISO na SD, czy skorzystałeś z Live Linux USB Creatora ? Bo powinieneś to drugie.
  17. var dir = (point_direction(objLew.x, obj.Lewy.y, objHerkules.x, objHerkules.y) + 45) % 360; // dodajemy 45 stopni żeby 0 oznaczało tak naprawdę -45 i bierzemy resztę z dzielenia przez 360, żeby np. 316+45 dawało nam 1 a nie 361. if (dir < 45) { /* prawo */ } else if (dir < 135) { /* góra */ } else if (dir < 225) { /* lewo */ } else { /* dół */} var dir = (point_direction(objLew.x, objLew.y, objHerkules.x, objHerkules.y) + 45) % 360; // dodajemy 45 stopni żeby 0 oznaczało tak naprawdę -45 i bierzemy resztę z dzielenia przez 360, żeby np. 316+45 dawało nam 1 a nie 361. if (dir < 45) { /* prawo */ } else if (dir < 135) { /* góra */ } else if (dir < 225) { /* lewo */ } else { /* dół */}
  18. Jak najedziesz na wykrzyknik to się dowiesz czemu - nie widać co jest wyżej, to ciężko zgadnąć, ale obstawiam brak if w 34 linijce ? btw. ten ktoś nie wie jak pisać poprawnie kod, nie ucz sie od niego poprawnie jest: if (...) { ... } if (...) { ... } else { ... } if (...) { ... } else if (...) { ... } if (...) { ... } else if (...) { ... } else if (...) { ... } if (...) { ... } else if (...) { ... } else if (...) { ... } else { ... } itp. itd. Generalnie zalecam też takie formatowanie: if (...) { .... .... .... } else { ... if (...) { .... .... .... } .... } Tak obecnie programuje większość osób (niektórzy wolą klamrę wstawiać w nowej linijce wyrównaną do klamry zamykającej, ale nigdy nie wstawiamy już za klamrą kodu).
  19. Prze chwilę myślałem że EA oznacza coś innego niż Early Access...
  20. Nie jestem pewien i nie mogę teraz sprawdzić, bo jestem na linuxie, ale zrób taki skrypt: /// SKRYPT: ds_map_find_value_default(id, key, default) var _result = ds_map_find_value(argument0, argument1); if (is_undefined(_result)) return argument2; return _result;
  21. Dlatego sugerowałem dodać to bezpośrednio jako rozszerzenie do gry w HTML5 i odpalać na jej początku. Wtedy będzie 100% pewności.
  22. No czyli GM przypisuje swój event. A spróbuj tak: <script> function myConfirmation() { return 'Are you sure you want to quit?'; } function setOBU() { window.onbeforeunload = myConfirmation; } setTimeout(setOBU, 1000); </script> To po 1 sekundzie od załadowania strony powinno przypisać funkcję. Ewentualnie spróbuj też setInterval - to będzie ciągle co 1 sekundę nadpisywać funkcję gdyby GM też to robił. (losowy ciąg to wynik obfuskacji kodu przez GMa, który zmienne i funkcje zamienia na krótkie unikalne stringi (najczęściej kolejne litery alfabetu).
  23. @nowy_user wydzieliłem Twoje pytanie o HTML5 do nowego tematu, bo to nie taka drobnostka wyszła:
×
×
  • Dodaj nową pozycję...