Skocz do zawartości

ereg

Użytkownicy
  • Postów

    253
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez ereg

  1. mieskazm niedaleko granicy i polski uczylem sie tylko na TV i kdy czytalem v ksiozkach.... bardzo davno temu. dlatego tez "w" kontra "v" mi vychodzi czesto bo to jest poprostu czeskie :) jak mie zrozumiecie to vsystko gra. (moj englisch jest duzo gorzsy <_< ) tutaj pisze, bo jest zabavne czytac i pisac po polsku i starac sie pomoc. sproboj zrozumiec co sie robi v tym kodu i niebedziesz miec problem.
  2. v przykladu jest origin uzyty. jak nievies, to jest v GM klavisz F1 a tam odszukasz origin a bedzies viedziel, ze origin to jest punkt v sptrie do ktorego jest przyciepoina instance (x,y bo instance niema v roomie zaden rozmiar) a tez vokol ktorego sie sprite obraca nic v zlem ,ale ja cie nieucze GM, ale tylko radze skroty jakie commands uzyvac by osiognoc cel jak mozna najlatviej :thumbsup: co do to "colt", to zartovalem, ale doopravdy nierozpoznaje kdze by mial miec origin= punkt vokol ktorego sie ma obracac. zapevne czesc problemu jest tam. jak spravdisz origin to mozna dalej video jest dobre, ale davaj prosze i slovny popis problemu "kdzie" no tak przeoczylem :) przepraszam
  3. ta bron to jakas proca czy co? nieidentyfikuje kdzie ma byc przednia strona i kdzie ma byc os(origin sprite) obracania sprite broni. na videu to cos obraca sie jakby mial origin na 0,0. sprawdz to a jak bedzie problem pokumaj nad mym postem z 13:29(przyklad)
  4. mno podany sposob: GML Information about object: o_hrac Sprite: s_player Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: // instance_create(x,y+22,o_vecL); instance_create(x,y-22,o_vecP); Step Event: execute code: // direction=point_direction(x,y,mouse_x, mouse_y); image_angle=direction; ______________________________________________________ Information about object: o_vecL Sprite: s_colt Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Step Event: execute code: delka=22; //delka-dlugosc od osy trza zmierzyc. uhel=degtorad(o_hrac.direction); // "-" leva strona x=o_hrac.x-sin(uhel)*delka; y=o_hrac.y-cos(uhel)*delka; if (!keyboard_check(ord("Q")) ) {image_angle=o_hrac.direction; }; // tylko dla pokazania mozliwosci ______________________________________________________ Information about object: o_vecP Sprite: s_colt Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Step Event: execute code: // delka=22; //delka-dlugosc od osy trza zmierzyc. uhel=degtorad(o_hrac.direction); // "+" prava strona x=o_hrac.x+sin(uhel)*delka; y=o_hrac.y+cos(uhel)*delka; if (!keyboard_check(ord("E")) ) {image_angle=o_hrac.direction; };// tylko dla pokazania mozliwosci ______________________________________________________ Information about object: o_info Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Draw Event: execute code: draw_text(10,10,"Left hand Q#Right hand E"); ______________________________________________________ sprite s_player: w=32 h=32 originx=16 originy=6 sprite s_colt: w=32 h=16 originx=4 originy=7
  5. aby bron celowala v kierunku vidzenia gracza to uzyj GML draw_sprite_ext(bron_sprite,image_index,x,y,image_xscale,image_yscale,_gracz.direction,image_blend,image_alpha)//rysujemy bron ludka</span></span> jak ma sie porusac po obvodu kregu to jak pisze Lechu4444, albo tez moznaGML delka=20; //delka-dlugosc od osy trza zmierzyc. uhel=degtorad(raketka.direction); x=_gracz.x-sin(uhel)*delka; y=_gracz.y-cos(uhel)*delka;
  6. troche mi trwalo zanim ogarnolem wszystike zmienne i ogole. twoj problem jest v ignoraci roznych rozmiarow sprite i pomiaru dlugosci stron A i B ten script akceptuje inne rozmiary: GML //SCRIPT DrawMinimap() _sca=sprite_get_width(sprite0) /room_width; _scb=sprite_get_height(sprite0)/room_height; _scale=2 _scv_x=(view_xview[0])*_sca; _scv_y=(view_yview[0])*_scb; _scv_w = view_wview[0]*_sca; _scv_h = view_hview[0]*_scb; _mx = oUI.x+800-250+2; _my = oUI.y+61; draw_set_color(c_red); draw_sprite_part_ext( sprite0,0, _scv_x, _scv_y, _scv_w, _scv_h, _mx, _my,_scale,_scale,c_yellow,.8); _px=(( oP.x*_sca)-_scv_x)*_scale; _py=(( oP.y*_scb)-_scv_y)*_scale; draw_set_color(c_red); draw_rectangle( _mx+_px-1,_my+_py-1,_mx+_px+1,_my+_py+1,0 ); jak bedzie trza, to dam popatrzec na gmk :)
  7. chyba bedzie to tylko ciekavostka, ale co :) mozna i tak GML //EVENT create _left_x_border=100; _right_x_border=500; _speed=3; GML //EVENT STEP _speed*=sign(.1 + (_speed*(x<_left_x_border)) - _speed*(x>_right_x_border) ); x+=_speed; robi mniej-wiecej co napisal Ninja i jego kiearunek jest u mnie + lub - v _speed .1 jest tylko poto by _speed nieopadl do zera
  8. zobacyles moj przyklad? v nim mouse vybiera direction a nastepnie liczy(po pixelach) ile przesedl mimo zasieg W i ile pixeli byl v wszystkich W circle niejest to za szybkie, ale pare razy na step niema problemu po nacisniecu SPACE emitue solidery ktorzy liczo natomiast czas(step=punkt) spedzony v zasiegu W.
  9. jesli chcesz testovac trojkot KNN po pixelach v kazdym STEP, to masz problem. jak vystarczy czas od czasu przetestovac KNN to moze byc cos takiego
  10. rad pomoge jesli moge :) $FFF0 masz tutaj princip gnyska jest ladny i prosty. pakovanie: 1-255 decymalnie jest 00000000 - 11111111 bitowo do Bajtu walk zapisuje 4 xxxx bity speed ( zapis jest od pravej strony) 0000xxxx presuva o 4 bity do leva xxxx0000 i zapisuje ctery yyyy bity znow od prava( najmien znacoce bity so od prava) xxxxyyyy teraz walk ma v polovie bajtu speed a v polovie direction(max 16 direction, bo wiecej sie niezmiesci v 4 bite) i wysylasz. odwrotnie: do speed zapisujesz walk po przesunieciu 4 bite v pravo. xxxxyyyy>>>> 0000xxxx. speed=0000xxxx do direction zapisujesz walk , ale dzieki bitovej masce 00001111 i operacji bite AND( | ) nulujesz bity xxxxx i pozostaje tylko yyyy direction = xxxxyyyy | 00001111 = 0000yyyy moj stary przyklad bral pod uwage twe zodanie na "case musi byc" :) ale gnysek jest bardziej efektivny.
  11. dlatego ze || jest logic or a | jest bit or. sproboj GML walk = (_speed << 4) | (_dir div 45); a tak przy okazji, chyba lepiej bedzie popravic: GML kierunek = (walk & $FFF0) * 45; na GML kierunek = (walk & $0F) * 45; przeciez majo pozostac 4 nejmiej vazne bity ;)
  12. tak jestem z czech. przepraszam za bledy v polskim, nieuzyvam translatora bo robi duzy balagan i sam pak nierozumiem co on pisze :) kod vyzej jest v pelni funkcjonalny. event mouse click vystarczy. bedzie on ruszac x, y obiektem. tylko walk wprovadzam przez get_integer. case teraz niejest vogole potrzebne. //a 1 jest zamiast case 1 etc. jezeli jednak volisz case mozes dac do scriptu i v case podavac mu 4 argumenty GML //script _script_case_jaki_zrobis() ldir[1,0]=argument0; ldir[1,1]=argument1; walk_name[1]=argument2; walk_var[1]=argument3; if (!place_meeting(x+lengthdir_x(ldir[walk, 0], ldir[walk, 1]), y+lengthdir_y(ldir[walk, 0], ldir[walk, 1]), obj_solid) ) { variable_local_set(walk_name[walk], variable_local_get(walk_name[walk])+walk_var[walk] ); }; case 1 moze byc ot tak GML case 1://a _script_case_jaki_zrobis(1, 180, "x", -1); break;
  13. mozna oto tak, dla inspiracji: GML //a 1 ldir[1,0]=1; ldir[1,1]=180; walk_name[1]="x"; walk_var[1]=-1; //w 2 ldir[2,0]=1; ldir[2,1]=90; walk_name[2]="y"; walk_var[2]=-1; //s 3 ldir[3,0]=1; ldir[3,1]=270; walk_name[3]="x"; walk_var[3]=1; //d /* ... dodaj dalse dane dla inne kieronki ... */ // //d 12 ldir[12,0]=3; ldir[12,1]=0; walk_name[12]="x"; walk_var[12]=3; walk=get_integer("input numer 1-12",""); if (!place_meeting(x+lengthdir_x(ldir[walk, 0], ldir[walk, 1]), y+lengthdir_y(ldir[walk, 0], ldir[walk, 1]), obj_solid) ) { variable_local_set(walk_name[walk], variable_local_get(walk_name[walk])+walk_var[walk] ); }; jesli nadal volisz case to mozes v case odvolyvac sie do scryptu if, podajoc popravnie zmienne :) dla AW, WS,DS... odpoviedno zmodifikuj kod GML
  14. to by spowodovalo error message GMa
  15. ja pokazalem tylko o mozlivosc uzycia file. co jest lepsze zdecyduje programator.
  16. "Unexpected error occured when running the game" ? mazs przed startem v save.ini structure ds_list? ds_list_read(hgh, str); Reads the data structure from the given string (as created by the previous call). jesli nie, to ds_list_read sobie z tym nieporadzi.
  17. zabawne... sproboj moj przyklad a usun file... jesli to ci sie uda i novy program tego niezauvazy, to masz moj uklon. rejestr lub dll, tez moze byc, ale ja chcialem pokazac, ze i przez file mozna :thumbsup:
  18. to jest proste: GML Information about object: game_ctrl Sprite: <no sprite> Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Step Event: execute code: if (!file_exists(__file_jest) ){ file_bin_open(__file_jest, 2); }; Other Event: Game Start: execute code: __file_jest= "file_jest"; if (file_exists(__file_jest) ){ file_delete(__file_jest); sleep(100); if (file_exists(__file_jest)){ show_message("gra juz leci. vyloczam sie."); game_end(); } else { show_message("gra jesce nie leci. vloczam gre... czekaj."); }; } else { file_bin_open(__file_jest, 2); show_message("gra jesce nie leci. vloczam gre... czekaj."); }; ten sam program ma kontrole nad file "file_jest" nawet nietrza uwazac na exystencie przy 1. run programu :)
  19. jak jest v GM:studio i do tego 100 000 elementow, to uzyj jakis ds_ bo szybszy.
  20. nieumiem germanski, ale jezeli cos nielapies to moze zapytaj jak cloviek? link chyba ok. a ze po czesku, to nic nieskodzi, GML jest ten sam po obu stronach granicy. gml byl pisany pro GM8.0
  21. rysuj realtime tylko kawalki terenu ktore so edytovane. rysuj nieedytovany teren v wieksym czasovym intervale rysuj v procesie edytacji podglod na pare razy prostszy model a po ukonczeniu edytacji rysuj finalnie zedytovany model
  22. przepraszam popsul sie link, ale Utermiko dal spravny link. jak dasz szukac "game maker maze generator" to google tez da pare ladnych linkow ;-)
  23. GML if(round(x)==room_width || round(x)==0 || round(y)==room_height || round(y)==0) speed=0niejest odporny na bled programatora. v sumie oczekuje ruch po x nievielky lub nieprzekraczajocy room_width(i height) povinno byc: GML if(round(x)>room_width-sprite_get_width(sprite_index) || round(x)<0 || round(y)>room_height-sprite_get_height(sprite_index) || round(y)<0) {x=xprevious;} natomiast zatrzymyvanie o objekt mozna zrobic: GML if (place_meeting(x,y,o_blok) ) { x = xprevious; }; ale pozostaje problem z dojazdem ku przeskodzie o_blok na 1 pixel. zatem lepszy kod jest: GML if (place_meeting(x,y,o_blok) ) { var __xtemp, __sign; __xtemp=0; __sign=sign(x-xprevious); repeat(abs(x-xprevious)) { if (place_meeting(xprevious+(__xtemp+1)*__sign,y,o_blok) ){x=xprevious+(__xtemp*__sign); break; }; __xtemp+=1; } };
×
×
  • Dodaj nową pozycję...