Skocz do zawartości

ereg

Użytkownicy
  • Postów

    253
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez ereg

  1. nielubisz 1, animgif, albo 2,to ze ktos bedzie miec dostep do obrazkow mimo gry? 1, to mozesz sprobowac cos takiego GML sprite_index=sprite_add(working_directory+"\obrazek.png", _image_numer, _remove_back, _smooth, _xorig, _yorig); 2, file obrazek mozesz "zakodowac" modifikujoc file a v GM potem dekodujesz (GML) do prawidlowego png. (chyba nawet bez dll, ale osobisce nieprobowalem) :)
  2. ereg

    Pojedynek botów

    idealnie bylo by, jezeli gracze takie rzeczy jako strzelanie/ruch niemieli pod kontrolo tylko by uzywali przygotowane skripty :) tworcy botow niepotrzebujo miec "direct control" nad bootem, tylko majo zrobic ai boota jak pisze HuderLord + ktos musi tez sprawdzic boty jesli so wedlug regol
  3. to praca z zmiennymi by dobrac sie do zmiennej instancji A z instancji B a jest chyba popisana na GM clanie tak czy tak kazda instancja ma sve id, ktore movi GM ze chocaz v roomie jest 10 instancji objektu _nieprzyjaciel, to kazdy jest prezentovany svy unikalnym id. dostep zatem jest GML // kod w instancji gracz _id_numer=instance_create(_x,_y,o_nieprzyjacel); // gracz tworzy instancje nieprzyjaciel i zapisuje jej id do swej zmiennej _id_numer id._zmienna=_id_numer; // gracz kopijuje _id_numer do swej zmiennej _zmienna _id_numer._id_tworcy=id; // gracz do instancji nr _id_numer do jej zmiennej _id_tworcy kopijuje swe id (ta tak bezdie wiedziec ktora instancja jo stwrorzyla, v przypadku ze so 2 instancje o_gracz)</span> tak mozna sie bawic jak tylko zechcesz.
  4. piszesz o falach , ale chyba niechcesz fale spawnowac w tym samym czasie nie? by w 1 stepie naspawnowac naprzyklad 10 enemy.(to zrobi ci kod adama :) ) piszesz tez "Chciałbym, aby przeciwnicy, byli tworzeni w odstępach ok 1-2 sekund na górze ekranu" to mozesz uzyc GML alarm[0]=irandom_range(_czas_min*room_speed,_czas_max*room_speed);w alarm 0 a sam siebie bezdzie aktywowal co _czas_min az _czas_max sec dalej chces cos v rodzaju RTYPE (kdzie enemy z kazdo gro bylii na tym samym miesjcu a ruszali sie po tej samej droze) lub wystarczy random? jezeli RTYPE to mozesz uzyc do kontroli spawnu zmiennej current_time a do odzyskiwania wartosci zmiennych( _fala, ilosc_enemy, _ pozycje_x,...) czytanie z file( ini, bin) zaleznie na skomplikowanosci projektu.
  5. za czesto wolasz mp_grid_path. pierwsza czesc mp_grid_path idzie wtedy diagonalnie(jezeli sama mp_grid_path uzna za dobre) niezaleznie od ustawiena allowdiag na false
  6. uzyj tego GML if (distance_to_object(obj_player)<32){ // if (place_meeting(x+0,y+32, obj_player) || place_meeting(x-32,y+32, obj_player) || place_meeting(x+32,y+32, obj_player) ) { if ((obj_player.x+31<x && obj_player.y+31<y) || (obj_player.x+15<x && abs(obj_player.y+32-y)<80 && !place_meeting(x-32,y,obj_wall) ) || (obj_player.y+15<y && abs(obj_player.x+32-x)<80 && !place_meeting(x,y-32,obj_wall) ) ) { image_alpha=0.65; } else{ image_alpha=1; }; } else {image_alpha=1; }; obj_wall w mym przykladu ma 48x48pix origin 16,16 kolision mask rectangle 16,16,47,47 obj_player sprite 32x32 origin 0,0 - 80 prezentuje 32*2,5 by wall prezswital tez jakis blok okolo a nie v linii prostej. - place_meeting jest po to by przeswityval wall tylko na rogach. jak wytniesz z kodu to zobaczys :) zresto poexperimentuj :)
  7. wygloda niezle :) teraz zalezy na tym jak fajnie bedzie sie gralo. chyba jednak bym niedawal przezroczystosc na osi y-1 a x-1 :) jest tam zbedna
  8. sprawdz kdzie wszedzie v obiektu uzywasz alarm[0]=_costam niemozes alarm ustawiac za czesto bo sie nieaktyvuje. to mialem na mysli wyzej. jezeli niedostajes ani 1 drzewo to sugeruje ze problem kdzies tu jest, ze nieuruchomil sie alarm. mozes latwo sprawdzic przes show_message v alarmu :) klarmy so konieczne kdy za IF/FOR/etc. uzywas wiecej niz 1 linijke kodu. klamry wtedy poloczom wiecej liniek do bloku a kompiler bierze jako normalno 1 linijke nalezno do IF/FOR/etc.
  9. niestudiowalem twego kodu ale czesto ludzie robio ten blad: naprzyklad event step GML alarm[1]=50; i niekumajom dlaczego alarm sie nieuruchomil. alarmy to takie minutniky kuchienne i v chvili kdy vykonas polecenie GML alarm[1]=50;to nacingnoles minutnik na 50 cykli gry jezeli naciognies go znow przed uplywem czasu no wydluzsas czas na 50cykli a jeszeli znow pred dzwnonieniem naciogas to znow wysluzasz czas na 50 cykli a tak dalej az w nieskonczonost. jesli tak spojrzysz na alarm, to niebezdzies miec problem znalezienia bladu :)
  10. kiedy cien "wychodzi" mimo prostokot sprite (x-3,y-3) to sproboj dac w depth poziom wall od -do w ktorym bedom tylko wall nastepnie zmien depth kazdej wall w zaleznosci na x,y tak by cienie sie nakladaly prawidlowo. linie mogo miec depth+1000 ( w zaleznosci na resolution screen) colmuny dept+1 dla optimalizacji mozna minimalizovac cykle i obszar zmian depth tak jak gra pozwoli jesli niepozwoli to surface jest lepszy
  11. GM:s jest z fontami zupelnie inna sprawa, tam masz UTF8 ja odpowiadalem na prace z GM8.0 pro :) sproboj przepisac GML Information about object: object0 Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _str=""; for(iti=0;iti<255;iti+=1;){ _str+=chr(iti)+" "; } _str+="_END Mężny bądź, chroń pułk twój i flag sześć"; Draw Event: execute code: draw_set_font(font0); draw_text_ext(0, 0, _str, 20, room_width); ______________________________________________________ jesli to niedziala, to moze masz problem v win, lub bug w GM?
  12. prubowales tez? GML variable_local_array_get ds_xxx polecam
  13. Bardzo ladne :) no to u mnie bez problemu. chyba cos outlaw przeoczyles, lub jakis bug?
  14. przeciwnik zawse dopada gracza gdy go widzi bo jest za blisko? IF jest tez wolniejzsy. dore jest myslec o nim "Dobry sluga, zly pan" :)
  15. czeskie litery smigajo bez zarzutu na GM8.0 na pl fontach sie nieznam(jestli consolas jest v pelni pl font etc.) ą, ć, ę bez problemu ale nieznam polski ekvivalent czeskiego "Příšerně žluťoučký kůň úpěl ďábelské ódy" :)
  16. uzyles v eventu DRAW? GML draw_set_font(font0);
  17. nietrza uzyc sin/cos, ale jest prosciej. uzyvam cyklycznego zjaviska krzywej do generowania 0/1 by zmiescilo sie v jednym wyrazeniu bez IF idealne do klockow, ladne v GML IF/CASE duzo bardziej komplikuje klocky. nastepnie pomnazam _step by ruch byl dokladnie 16pix jezeli ma na gracza rusyc tylko jeden przeciwniki wtedy kdy oba przeciwnici so dosyc blisko to jest prawidlovo. jesli ma sie porusac zawsze tylko jeden przeciwnik to starczy pobawic sie z zmiennymi u gracza by bylo wiadomo ze ktos na niego ruszyl a nastepnky przeciwnik przed ruchem sprawdza gracza czy juz ktos na niego "poluje" :) OT TO JEST problem. jak zapamietac wstystkie klocky by ogarnoc kdzie moze byc element ktory prawdopodobnie powoduje blad. tez jest katastrofalne, kdy zechces przeprogramowac kawalek systemu gry. bez MEGA dokumentacji/schematu blokowego prawie niema szans. a w GML jak czesto dotrzymuje programator dlugosc kodu +-1strona to zawse jen barzdo proste :) na prosty przyklad vygloda klocek spoko ale dla kogos kto juz przywyczajil sie do GML jest prosty przyklad(v klockach), tak jak by mial beignoc do 4. pietra, zamiast jechac windo :twisted:
  18. a juz myslalem, ze zrezygnovales z wystrzeliwania objekt radar :) so lepsze sposoby dla inspiracji GML e=o_nieprzyjaciel; // objekty tylko dla pisannia krotszych nazw v point_direction( leniem jestem :) ) g=o_gracz; _step=16; _gracz_dir=point_direction(e.x,e.y,g.x,g.y); _gracz_dir=degtorad(_grac_dir); x+=(cos(_grazc_dir)div(1)*_step); y-=(sin(_gracz_dir)div(1)*_step); nieprzyjaciel porzusza sie tylko jak o_hrac jest na osi x lub y mozna tez przez IF lub CASE :)
  19. dziekuje :) pocieszy

  20. zabavy v klocky bywa 10x dluzsa niz v GML, ale to twa decyzja :) 1,I żeby ruszał się tylko ten przeciwnik, który widzi gracza (Ci przeciwnicy poza zasięgiem mają zostać nieruchomi) Którego klocka użyć? do action daj z control klocek test expresion a w nim uzyj GML distance_to_object(o_hrac)<100 to zapewni, ze jak o_hrac zblizi sie do przeciwnika na mniej jak 100pix to prezciwnik go rozpoznaje i moze vykonac blok klockow jest to ekvivalent do GML if (distance_to_object(o_hrac)<100) {/* blok do wykonania*/ }; 2,Teraz nie wiem jak zrobić aby przeciwnik poruszał się w kierunku gracza o jedno pole (16x16 pikseli). jesli moze ruch byc skokowy to z move klocek jump to position (16) jesli powolny po pixlach to pobaw sie s zmiennymi a znow jump to position (1) test na direction gracza jest prosty, tylko grac jak sie rusza musi zapisiwac sobie do zmiennej kierunek a nieprzyjaciel tylko podsluchuje gracza nieprzyjaciel na svym action w control do klocku test expresion moze uzyc GML o_hrac.direction o_hrac.moj_kieronek direction jest default zmienna GM jest na tobie jako wykorzystasz jakoze napisanie tego kostowalo mie duzo wiecej czasu, nierobilem przykladu a muszis prubowac, prubowac... i prubowac :) zyce milej lamiglowki szanuje two decyzje na klocki, ale jesli chces cos wiecej od GM to klocki to strata czasu :) wlasne doswiadczenie
  21. jak napisal Gnysiek to pravda, ale mozes sprobovac. :) tu so opisane ikony<=>GML, moze sie przydac jak bede miec wiecej czasu to muze poradze cos wiecej :)
  22. mozna i v GML: GML //CREATE EVENT global.Fullscreen = 1 window_set_fullscreen(true); window_set_region_scale(1,false); //LMB Pressed event switch (global.Fullscreen){ case 0: window_set_fullscreen(true); window_set_region_scale(1,false); global.Fullscreen=1; break; case 1: window_set_fullscreen(true); window_set_region_scale(-1,false); global.Fullscreen=2; break; case 2: window_set_fullscreen(false); global.Fullscreen=0; break; };
  23. ja bym sprobowal tak: GML Information about object: o_pic Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _pic_index=0; _pic_index_max=3; // moj przyklad byl dla 4 sprite, ale bezdie dzialac i dla 100 000 a wiecej Mouse Event for Glob Left Released: execute code: if (_pic_index<_pic_index_max){ _pic_index+=1; _fname="sprite"+string(_pic_index)+".gmspr"; sprite_replace_sprite(sprite0, _fname); } else {_pic_index=0; }; ______________________________________________________ wszystkie sprite powinny byc v tym samym folderze jak gmk sprite nazwij "sprite0","sprite1","sprite2","spriteX" X=_pic_index_max a tez jest ostatnim numerem sprite v folderze mozliw, ze niechciale rysowac nad 32 image bo za duze, ale to teraz juz niejest twym problemem. mozesz uzyc bardzo duzo ilosc i duze rozmiary sprite. jak by cos niezrozumialego, to dam example lub wytlumacze, teraz niemam duzo czasu :)
  24. mozna tak i tak lub pokombinovac, dzieki random a irandom komendzie
  25. moze lepiej niech program obliczy drugi numer mnozenia(_source2) . prosty sposob,lecz skuteczny: GML _target_range_min = 15; _target_range_max = 35; _target = random_range(_target_range_min, _target_range_max); _source1_range_min = 2; _source1_range_max = 8; _source1 = random_range(_source1_range_min, _source1_range_max); _source2 = _target/_source1; nastepnie zawsze _source1 * _source2 = _target mozes uzyc nawet irandom_range i pozyskac fajny efekt kdy wynik jest zawsze caly numer. vystarczy uzyc: GML _target = irandom_range(_target_range_min, _terget_range_max);
×
×
  • Dodaj nową pozycję...