Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 823
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    143

Treść opublikowana przez gnysek

  1. Master? Patrz na to. 12 linijek kodu zmniejszone do 4. //zakładając, ze global.difficulty ma wartosci 0,1,2 var _hp_loose = [17, 25, 34]; if (global.zegarObrazen < 0) { global.hp -= _hp_loose[global.difficulty]; global.zegarObrazen = room_speed*2; } no i jak enum nie znasz, to mozesz: #macro d_easy 0 #macro d_medium 1 #macro d_hard 2 // potem global.difficulty = d_easy; // mozna tez bez d_, ale wtedy zablokujesz opcje nazywania tak zmiennych :P
  2. Teraz sztuczka: enum difficulty { easy = 1, medium = 2, hard = 3 }; /// gdzies tam indziej w kodzie global.hp -= 10 * global.difficulty; //10,20,30 alternatywnie enum difficulty { easy, medium, hard }; /// gdzies tam indziej w kodzie global.hp -= 10 + (15 * global.difficulty); // 10, 25, 40 dlatego poziom trudności jako string jest bez sensu
  3. Może być. Ja akurat takie zmienne definuję wcześniej, na początku gry, to wtedy można je przenosić pomiędzy poziomami.
  4. Global oznacza , że taka zmienną jest jedna współdzielona na całą grę. Jak ja dasz w przeciwnikach, to wszystkim na raz zmienisz, to bez sensu. A hspeed czy vspeed są zależne od speed i direction, więc jak zmieniasz tamte zmieniają się te (albo jak jakoś kod powoduje ich zmianę). To są współbieżne zmienne - zmiana jednych zmienia drugie i vice versa.
  5. zamiast "easy" itp. możesz też enuma zrobić. Bo potem łatwo o literówkę, a tak kompilator/sprawdzanie składni wykrywa błąd.
  6. gnysek

    Szukam programu

    Microsoft Remote Desktop 10 ? darmowy, w appstore, oficjalna apka MS.
  7. gnysek

    pytanie o prawa autorskie

    Generalnie to będzie złamanie praw autorskich, jesli będzie bardzo podobny. Pytanie, czy Nintendo na to trafi, bo ja widziałem firmy hydrauliczne które mają mario na samochodzie i nikt im nic nie zrobił - ale w sieci by już tak fajnie nie mieli. Natomiast nie powinna być problemem "parodia" postaci - czyli np. postać podobna do mario, w stylu innych postaci w grze, i nie mająca na imię mario. W żadym też wypadku z charakterystycznym "M" na głowie - Ubisoft dla Raymana czy Raving Rabbidsów z czapką Mario też pozyskiwał licencję. Dobry przykład bez licencji - Asterix i Obelix XXL:
  8. No to chyba logiczne, co robisz źle tu cyfry, tu tekst
  9. W 7:17 nie ma nic z roomem. Jeśli chodzi o speed, to jest w global game settings, a reszta powinna być w roomie normalnie.
  10. hit miesiaca, ustawiać w kodzie po kolei każdy poziom trudności tak, że ustawi się zawsze ostatni. Pomyśl na spokojnie co tam piszesz, linijka po linijce mów na głos - to jest dokładnie to co gra zrobi w jedną klatkę obrazu.
  11. ds_list to nie tablica i nie kasuje sie automatycznie, więc memory leak jak nic.
  12. Kod powinien znajdować sie tam, gdzie go potrzebujesz. Nie wiem jak tworzysz przeciwników, czy stawiasz ich w roomie, czy tworzy ich jakiś obiekt-nadzorca. Musisz sobie sam odpowiedzieć na swoje pytanie bo to Ty wiesz jak robisz grę i co w niej jest, my nie będziemy zgadywać, a ściany kodu nie pomagają. Trzeba zawsze minimalizować problem, a nie po prostu wklejać kod który nic nie mówi, albo nie jest potrzebny.
  13. 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.
  14. Zamień draw na instance create... To naprawdę tak ciężko wykumać?
  15. Zamiast stringów lepiej używać constantow/macro, kompiler wykryje błędy i podpowiadanie składni zadziała
  16. 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.
  17. @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.
  18. @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]).
  19. 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 ?
  20. @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.
  21. Czyli coś podobnego do mojego, tylko z predefiniowaną liczbą kolumn i wierszy.
  22. 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ę.
  23. 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.
×
×
  • Dodaj nową pozycję...