
ereg
Użytkownicy-
Postów
253 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez ereg
-
moze sproboj odwrotnie: jezeli nasz objekt=o_kolo musi miec do zicia kilka obiektow=o_kwadrat to: o_kwadrat moze mowic o_kolo ze jest v poblizu v eventu(begin STEP). GML if (distance_to_object(o_kolo)<_max_odleglosc) {o_kolo._ilocs_kwadratow+=1; }; o_kolo natomisat v eventu(STEP) GML if (_ilocs_kwadratow<_min_ilosc_kvadratow && xprevious==x && yprevious==y) {instance_destroy(); } else {_ilocs_kwadratow=0; }; co to robi: 1, o_kolo zeruje ilocs_kwadratow v event create 2, kazdy o_kwadrat zapisuje sie do o_kolo jesli jest zablisko v event begin STEP 3, o_kolo v event STEP nisci sie jesli niema dosyc p_kwadrat albo o_kolo sie rusza, jestli nie to zeruje ilocs_kwadratow dla novego begin STEP mozna uzyc sztuczky z vykonaniem tego kodu raz na sekunde albo jaksi tam maly czas.
-
jesli dobrze rozumiem, chcesz aby obiekt ruszal sie po krawedzi prostokota? to proponuje prosty sposob(mozna STEP, DRAW albo kdziekolwiek) GML //sc_square_move(_idx, _idy, _xoff, _yoff, _spdx) var __xst, __yst, __xoff, __yoff, __spd, __x, __y; __xst=argument0; //x start __yst=argument1; __xoff=argument2; //offset __yoff=argument3; __spd=argument4; x+=(__spd*(x<__xst+__xoff)*(y=__yst))- (__spd*(x>__xst)*(y=__yst+__yoff)); y+=(__spd*(y<__yst+__yoff)*(x=__xst+__xoff))- (__spd*(y>__yst)*(x=__xst)); kod mozna poszerzyc o rozny speed dla roznych kierokow i test na speed ktory niekonczy sie dokladnie na scianie prostokota :) GML //sc_square_moveE( _idx, _idy, _xoff, _yoff, _spdx1, _spdy1, _spdx2, _spdy2) var __xst, __yst, __xoff, __yoff, __xspd1, __yspd1, __xspd2, __yspd2, __x, __y; __xst=argument0; __yst=argument1; __xoff=argument2; __yoff=argument3; __xspd1=argument4; __yspd1=argument5; __xspd2=argument6; __yspd2=argument7; x+=(__xspd1*(x<__xst+__xoff)*(y=__yst))- (__xspd2*(x>__xst)*(y=__yst+__yoff)); y+=(__yspd1*(y<__yst+__yoff)*(x=__xst+__xoff))- (__yspd2*(y>__yst)*(x=__xst)); // for situations when multiply of _spd don´t give __x+__xoff if (x>__xst+__xoff) {x=__xst+__xoff}; if (x<__xst) {x=__xst}; if (y>__yst+__yoff) {y=__yst+__yoff}; if (y<__yst) {y=__yst}; zamiast if mozna by bylo dac jesce cos innego, ale niechcialem zabardzo komplikovac sprave :) pred wykonaniem scritpu nalezy RAZ ustavic zmienne _idx, _idy a potem ich uzywac tak: GML sc_squaremove(_idx, _idy, 500, 20, 5); //albo sc_squaremoveE(_idx, _idy, 400, 225, 5, 15, 10, 7); WAZNE: niemozna umiescic instancje wenotrz prostokota. to jest problem programisty. z zevnostr prostokota jak sie oddali od krawedzi, to script sc_square_moveE sobie poradzi :) mala modifikacja dla ruchu w oddwrotnym kierunu :) GML x+=+(__xspd1*(x<__xst+__xoff)*(y=__yst+__yoff))- (__xspd2*(x>__xst)*(y=__yst)); y+=+(__yspd1*(y<__yst+__yoff)*(x=__xst))- (__yspd2*(y>__yst)*(x=__xst+__xoff));
-
na milisec to chyba niejest, ale room_speed jest zmienna ktora mowi grze ile cykli (step) my wykonac jesli zdozi. :thumbsup:
-
sproboj sobie poczytac
-
i v gml mozes ominoc potrzebe alarmu programujoc test na uplyw czasu. -zapisujesz czas do zmiennej xy_czas. -i testujes te zmienno xy_czas + wielkosc_czasu _do vykonania_akcji jesli jest vieksa niz aktualny czas. --jestli jest wieksza to odpalasz akcje :thumbsup: --jesli nie to czekas dalej moze jest cos wiecej przydatnego v v C# albo .NET, ale tyle sie na tym nieznam :)
-
@PaladynXD: to jest zabawa w zgadywanie" jaki bug dzisaj wymyslilem, bez podani kodu"? -jezeli zaklecie umie trafic Mag-a to jest pozliwosc, ze zaklecie trafia Mag-a zaraz po zrobienu instance ze tylko v jednym kieronku, to moze byc za sprawo u sprite (origin x) u Mag-a a Zaklecie albo cos podobnego co chlopaki pisali albo zupelnie cos innego :) co do strzelania bez serii sztrzalow, to czesto uzyva sie: - keyboard_key_release - alarm - current_time - mozna i jesce inaczej, ale bez specjalnego powodu nietrzeba
-
jak bys czytal GML to bedziesz wiedzal, ze stzrelanie jes dozwolone tylko kdy... jest event keyboard CTRL + left mouse tak mozna kdy chcesz alternatyvne strzelanie:) jak ma strzelac tylko na CTRL to wyrzuc if(mouse_check_button_pressed(mb_left))
-
no to trzymam kciuki. jak by cos, to spoko pytaj.
-
show_message(string) to znaczy, ze mozesz zrobic wszystko co zechces s string za pomocy komendy string_... GM help ci poda wszystkie mozliwosci. do dobrego programu naucznego to jest podstawowa rzecz. co do promotora to chyba za proste, ale zawse mozna zrobic duzo lepszy, ale nieznam sie na znaczeniu samego programu v twym przypadku. jesli to tylko 1/10 ilustracyjna czesc to moze spoko. jak bym cos takiego dal u nas na informatice to chyba by ze smiechu pekli ;)
-
GML show_message(string(A*B));
-
1, jak sprobojesz v realu, to nieskodzi zabardzo. generstor przewaznie zdoza davac nowe numerky :) jakoze nieznam poziomu zdolnosci Luvaca, to raczej dalem najprostsy sposob.
-
niedobrze, niemozna porownywac strig z integer :)
-
tak proste ze az balem sie ze czy dobrze rozumiem :) stworz wedlud tego schematu v eventu na przyklad klik mouse na button_mnozenia 1, losuj A, B (irandom_range() ) 2, pokaz przyklad A*B= ?. do c umiesc winik (c=get_integer("Pomnoz: "+string( A ) +" * "+string( B )+" = ?",""); ) 3, porownasz jesli A*B==c (if) 4, wedlug wyniku 4 wysvietl komunikat kliknieciem na button_mnozenia masz jeden przyklad. nastempne dalszy. prostym sposobem mozesz zapisowac wyniky i dawac stopnie jeszli nieznasz jakies commendy to na F1 jest help chyba o to chiales nie?
-
script intercept_course(id_strzelajocej_wiezy,_wrog,p_speed) zwraca direction dla wiezy strzelajocej do wroga pociskami o p_speed. script sam sobie sprawdzi pozicje obj i wykalkuluje dla speed przyslom pozycje wroga. z tej pozycji nastepnie sprawdzi direction a zwroci jako resultat :) co do x, y sproboj aplikovac lenghdirx (odleglosc_calkulovana_z_speed, direction) najlepiej Twierdzenie cosinusów dowod2
-
niewiem jak v polsce, ale niedawno czytalem o czeskim projekcie, ktory autorzy(GM) byli i v tv i moze miesiac przed wydaniem gry sie poklocili i gra niewyjdzie. mysle wiec, ze nielatwo jestopierac sie na drugich, zwlasca jesli w grze so pienodze
-
GM:S widze u kolegy, i niebarzdo mi sie podoba ( moze za rok,dwa ) dlatego zamalo czasu na oglodanie kodu, ale daj v spr_player dla ORIGIN x=23.
-
nie jest zle, ALE jesli C++ nie jest problemem, to daj v GM odnowa na GML :thumbsup: przerabianie to strata czasu, mozno na czystym polu zbudowac 10 razy lepszo verzje. lubie gry co majo 2pl na jednym PC, warto takie robic.
-
AI - wyszukiwanie kolizji drogi z kołowym zasięgiem strzału
ereg odpowiedział(a) na TO_mek temat w Pytania początkujących
zycze sczescia przy lowu BUGow :thumbsup: -
AI - wyszukiwanie kolizji drogi z kołowym zasięgiem strzału
ereg odpowiedział(a) na TO_mek temat w Pytania początkujących
jest mozlive ze origin vojska jest na 0,0? to by linia drogi szla o jakies kilka pixeli v gore. moze sproboj wyrysovac ktoredy script spravdza droge? niech ci vyrysuje, bywa to pomocne. nielatwo osodzic, co i kdzie jescze moze byc zle -
no taak :) zle sporzalem. GMS ma prostszy sposob. uzyj ten sam kod (klawisz END), ale v definicji fontu naucz GMS jakie nove znaky ma umiec pisac. v oknie FONT jest button "+", ten nacisnij i: 1, napisz vszystkie nowe znaky ktore ma umiec 2, albo uzyj button FROM CODE, GMS spravdzi sam v programu 3, albo uzyj button FROM FILE, GMS wczyta znaki z file calkiem ladnie to vymyslili :thumbsup:
-
zyje z nim dzien co dzien :) ale ze mowicie "czeski" to jest dla mnie nowosc :D. u nas chyba blad to blad. ja czasami movie "chybka se vloudila"=drobnutki bledzik sie wkradl... tak nie poetyczne
-
ktos juz to zaprogramoval, to nie krepoj sie i uzyj ten script: GML /* ** Usage: ** intercept_course(origin,target,speed) ** ** Given: ** origin instance with position (x,y) ** target instance with position (x,y) and (speed) ** speed speed of the projectile ** ** Returns: ** course direction required to intercept ** a moving target at a given speed, ** or (-1) if no solution found ** ** GMLscripts.com */ { var origin,target,pspeed,dir,alpha,phi,beta; origin = argument0; target = argument1; pspeed = argument2; dir = point_direction(origin.x,origin.y,target.x,target.y); alpha = target.speed / pspeed; phi = degtorad(target.direction - dir); beta = alpha * sin(phi); if (abs(beta) >= 1) { return (-1); } dir += radtodeg(arcsin(beta)); return dir; } poprav GML direction = point_direction(x,y,_wrog.x+lengthdir_x(_droga_wroga,_wrog.direction),_wrog.y+lengthdir_y(_droga_wroga,_wrog.direction)) //korekta kierunku uwzgledniajaca przesuniecie obcego</span></span></span> na GML direction= intercept_course(id_strzelajocej_wiezy,_wrog,p_speed);i jak mas detekcje wroga v porzodku, to bedzie swietne robic swoje :)
-
nieznam polskich keymap ascii, i jakie normy uzyva sie, ale dla LATIN2 w zakresu 0-255: ą =177 ć =230 Ć =198 ę =234 dla vyprobovania mozesz uzyc 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: _poc=0; _string="nic"; Draw Event: execute code: // uzyj font0 definowany w GM draw_set_font(font0); // pokaz char numer _poc if (keyboard_check_released(vk_end)) {_poc=get_integer("numer",""); }; if (keyboard_check_released(vk_space)) {_poc+=1; }; if (_poc>400){_poc=0; }; draw_text(10,10," show nr:"+string(_poc)+" key:"+string(chr(_poc))); // pokaz ostatnio vcisniety key if (keyboard_check(vk_anykey)) {_string=keyboard_lastchar; }; draw_text(10,50,"presed key:"+string(_string)); ______________________________________________________ jak bedzie trza uzyc CTRL+key, lub SHIFT to uzyj kod powyzej + keyboard_check_direct(vk_control) v testu nacisniecia klawisu EDIT: font0 musi miec zakres v 0-255 tak aby pojol wszystkie polskie litery.
-
bardzo sie cziesze kolego :thumbsup: radze trzymaj sie GML, mozna z nim bardzo duze cuda zrobic! czycie udanej gry.
-
sprawdz w GM / sprite czy mas aktiwowany precise collision