Skocz do zawartości

ereg

Użytkownicy
  • Postów

    253
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez ereg

  1. tutaj masz gotowe algoritmy v roznych jezykach. znajdz ten ktory nejlepiej odpowiada twej wiedzy a napisz sobie GM kod :)
  2. GM: studio niemam, ale sprawdz gml_Object_Chat_Draw_0 moze jest cos v scrypt scr_drawlines? error vygloda jak by niemogl znalezc jakis objekt lub zmienno.(ale tylko zgaduje ... -1.view_top)
  3. spoiler chcialem tylko spowodu dlugosci scryptow mas racje nic nowego pod sloncem. :) brakovalo mi dostepu do GM8.1(innym moze tez), dlatego umiescilem je do twego tematu. obliczenia so z neta, ja tylko zrobilem z nich script latvy do vbudovania i uzycia v dovolnym programu :)
  4. vygloda dobrze, ale niemam 8.1 :) wiec pozvole sobie dodac pare scryptovanych fukcji, ktore uzywam. (przepraszam ,ale nieumiem uzyc spoilera. nic nierobi) cala krzyva: GML //*************************************************** ********************** * Bezier() (funkcja sześciennych krzywej Beziera (n = 3) przez EREG H.) * * Opis: dostosowany skrypt Beziera zarządzanie 4 punkty kontrolne. * Script obliczća pojedyncze punkty krzywych Beziera z określoną dokładnością (argument12) * Następnie zapisuje indywidualnie początki do ds_grid. * Ds_grid jest przechowywany w zmiennej globalnej global.DS_GRIDbezier * W o_bezier DRAW przypadku jest przykładem tego, co kod można użyć danych z ds_grid * Krzywej Beziera tworzy gładką krzywą. Dla lepszego pomysłu patrz wiki: * cs.wikipedia.org/wiki/Bézierova_křivka * lubovo.misto.cz/_MAIL_/curves/bezierr.html * * Zastosowanie: ustawienie różnych parametrów ścieżek (spada, rzucanie), wpływ artykułów sił * (Np. wiatr na spadających liści, strumieniem wody pływające na drewnie) * Na przykład zmienia swoje motyl menedżerów w oparciu o zmiany w pozycjach 1-4 punktów. * * argumenty: * argument00 = ax x souradnice bodu a * argument01 = ay y souradnice bodu a * argument02 = w1 w waga punktu. w = 0 (w linii prostej), w <1 (elipsa), w = 1 (parabola), w> 1 (hiperbola) * argument03 = bx * argument04 = by * argument05 = w2 * argument06 = cx * argument07 = cy * argument08 = w3 * argument09 = dx * argument10 = dy * argument11 = w4 * argument12 = pocet usecek+1* * * priklad: * bezier(ax, ay, w1, bx, by, w2, cx, cy, w3, dx, dy, w4, krok, nr); * * return: ID cislo ds_grid-u ve kterem je ulozena bezier() krivka. * * zdroj: [url="http://gmc.yoyogames.com/index.php?showtopic=329984&page=2"]http://gmc.yoyogames.com/index.php?showtop...9984&page=2[/url] * *************************************************************************/ var cp1x, cp1y, cp2x, cp2y, cp3x, cp3y, cp4x, cp4y, cp5x, cp5y; var drawx, drawy, prevx, prevy, dsId, dsIdName, krok, nr; var t, t13, t3, w1, w2, w3, w4, wt; ax = argument0; ay = argument1; w1 = argument2; bx = argument3; by = argument4; w2 = argument5; cx = argument6; cy = argument7; w3 = argument8; dx = argument9; dy = argument10; w4 = argument11; krok = argument12; nr = argument13 // nastavi cislo gridu bezierovy krivky dsIdName = "DS_GRIDbezier"+string(nr); variable_global_set(dsIdName, ds_grid_create(4,krok+1) ); dsId = variable_global_get(dsIdName ); //ds_grid_clear(dsIdName,0); // ulozi 1. souradnici 1. usecky prevx = ax; prevy = ay; // kontrola kvuli deleni 0 if (krok<=0) {krok=0.000001; }; // vypocet bezierovy krivky a ulozeni souradnic do ds_GRID for(iti=0; iti<=krok; iti+=1){ t = iti/krok t1 = 1 - t; t13 = t1 * t1 * t1; t3 = t * t * t; wt = t13*w1 + t*t1*t1*3*w2 + t*t*t1*3*w3 + t3*w4; if (wt=0){wt=0.000001; }; // kontrola kvuli deleni 0 // vypocet souradnic bodu na krivce drawx = (ax*t13*w1 + bx*t*t1*t1*3*w2 + cx*t*t*t1*3*w3 + dx*t3*w4)/wt; drawy = (ay*t13*w1 + by*t*t1*t1*3*w2 + cy*t*t*t1*3*w3 + dy*t3*w4)/wt; ds_grid_add(dsId, 0, iti, prevx); ds_grid_add(dsId, 1, iti, prevy); ds_grid_add(dsId, 2, iti, drawx); ds_grid_add(dsId, 3, iti, drawy); prevx = drawx; prevy = drawy; } // ulozi posledni usecku do GRID ds_grid_add(dsId, 0, iti, prevx); ds_grid_add(dsId, 1, iti, prevy); ds_grid_add(dsId, 2, iti, dx); ds_grid_add(dsId, 3, iti, dy); return dsIdName; jedyny punkt ustavienie: GML //************************************************* ********************** * Beziera () (funkcja sześciennych krzywej Beziera (n = 3) przez EREG H.) * * Opis: dostosowany skrypt Beziera zarządzanie 4 punkty kontrolne. * Skrypt oblicza punktów Beziera krzywa z określoną dokładnością (argument12) * Następnie zwraca x, y na krzywej. * Krzywej Beziera tworzy gładką krzywą. Dla lepszego pomysłu patrz wiki: * Cs.wikipedia.org/wiki/Bézierova_křivka * lubovo.misto.cz/_MAIL_/krzywe/bezierr.html * * Zastosowanie: ustawienie różnych parametrów ścieżek (spada, rzucanie), wpływy z artykułów sił * (Np. wiatr na spadających liści, strumieniem wody pływające na drewnie) * Na przykład, piłka zmienia swoje menedżerów w oparciu o zmiany w pozycjach 1-4 punktów. * * Argumenty: * Argument00 = ax x współrzędnych punktu i * Argument01 = y i y współrzędne punktu * Argument02 w = masa Punkt w1. w = 0 (w linii prostej), w <1 (elipsa), w = 1 (parabola), w> 1 (hiperbola) * Argument03 = bx * Argument04 = by * Argument05 = w2 * Argument06 = cx * Argument07 = cy * Argument08 = w3 * Argument09 = dx * Argument10 = dy * Argument11 = w4 * Argument12 = Punkt między 0 a 1 = 0% do 100% krzywej orbity * * Zwraca: globalnej tablicy, która przechowuje x,y punktu na krzywej. * Wybór pól odbywa się poprzez BezierGetP(stringName) * Albo pomoc variable_global_get(nazwa); * * Przykłady: * Beziera (ax, ay, w1, bx, by, w2, cx, cy, w3, dx, dy, w4, krok, punkt); * * Źródło: [url="http://gmc.yoyogames.com/index.php?showtopic=329984&page=2"]http://gmc.yoyogames.com/index.php?showtop...9984&page=2[/url] * ************************************************** ***********************/ var cp1x, cp1y, cp2x, cp2y, cp3x, cp3y, cp4x, cp4y, cp5x, cp5y; var drawx, drawy, prevx, prevy, dsId, dsIdName, krok, nr; var t, t13, t3, w1, w2, w3, w4, wt; ax = argument0; ay = argument1; w1 = argument2; bx = argument3; by = argument4; w2 = argument5; cx = argument6; cy = argument7; w3 = argument8; dx = argument9; dy = argument10; w4 = argument11; bod = argument12; nr = argument13; // nastavi cislo gridu bezierovy krivky dsIdName = "ARRAYbezier"+string(nr); // kontrola kvuli deleni 0 if (bod<=0) {bod=0.000001; }; // vypocet bezierovy krivky a ulozeni souradnic do ds_GRID t = bod t1 = 1 - t; t13 = t1 * t1 * t1; t3 = t * t * t; wt = t13*w1 + t*t1*t1*3*w2 + t*t*t1*3*w3 + t3*w4; // kontrola kvuli deleni 0 if (wt=0){wt=0.000001; }; // vypocet souradnic bodu na krivce variable_global_set(dsIdName+"[0]", (ax*t13*w1 + bx*t*t1*t1*3*w2 + cx*t*t*t1*3*w3 + dx*t3*w4)/wt ); variable_global_set(dsIdName+"[1]", (ay*t13*w1 + by*t*t1*t1*3*w2 + cy*t*t*t1*3*w3 + dy*t3*w4)/wt ); return dsIdName; jedyny punkt latve uzyskanie x albo y:GML /************************************************* **************************** * BezierGetP (Punkt Beziera przez Ereg H.) * * Opis: wybiera współrzędne punktu P na krzywej Beziera z pola danego argumentu * * argumenty: argument0 = jmeno_ds_grid * argument1 = cislo nebo retezec "x" nebo "y" bodu * ("x" muze byt nahrazeno 0/false a "y" muze byt nahrazeno 1/true) * * Zwraca: wielkość współrzędnych x lub y * * Przykłady: object.x = BezierGetP(global.ARRAYbezier1,x) * object.x = BezierGetP(variable_string,x) * instance_create( BezierGetP(pok,0), BezierGetP(pok,"y"), o_pokus1 ); * instance_create( BezierGetP(pok,false), BezierGetP(pok,true), o_pokus1 ); * *****************************************************************************/ dsIdName = argument0; osa = argument1; if (!variable_global_exists(dsIdName+"[0]") ) {return "BezierGetP: array error"; }; if (string(osa)=="x" || string(osa)=="0") {osa=0; } else if (string(osa)=="y" || string(osa)=="1") {osa=1; } else {return "BezierGetP: axis error"; }; return variable_global_get(dsIdName+"["+string(osa)+"]" );
  5. zaladuj z ini text do stringa_wstepu potem znak po znaku dodavaj do finalovego_stringa i do testu uzyj string_width(string) spravdzaj szerokosc room jakwiekszy to dodaj "#" drukuj linie przyklad jest prosty(object info), jednoobiektovy GMK: 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: _txt_input=""; _txt_draw=""; Step Event: execute code: if (keyboard_check_released(vk_anykey)) { if (string_width(_txt_input)+10>room_width) { _txt_input+="#"; _txt_draw+=_txt_input; _txt_input=""; }; _txt_input+=keyboard_lastchar; }; Draw Event: execute code: draw_text(0,0,_txt_draw); draw_text(0,string_height(_txt_draw),_txt_input);
  6. dobrze sie gra :thumbsup: jak dla mnie wolal bym jesce dodac mozlivosc grania ve dvuch playerach. chyba nie zatrudne zrobic PL1 vs PL2: - sterovanie na keyboard - mniej przeskod i nizsa szybkosc pozvoli na konkurencie - odrucanie przecivnika v bok przy kolizji na przeskody - jump by uniknoc zderzeniu s innym graczem moze i koop by sie dal: - by otvorzyc brane, treba stluc kvadrat vybranego koloru. ve dvuch =dva kvadraty itp. - albo koop v stylu ja zbieram zielone, ty modre a inne nam ubierajom lives tzrymam kciuki :rolleyes:
  7. samochod niecognie sviatlo za sobo, ale nierobi CLEAR dla sviatla v surface. GML // object oCtrlLight event STEP: surface_set_target(global.sfShadow); { draw_clear_alpha($dddddd, 1); draw_set_blend_mode(bm_subtract); { with(oLight) { draw_clear_alpha($dddddd, 1); // TUTAJ NOWY CLEAR draw_sprite_ext(spr, 0, x-view_xview[0], y-view_yview[0], sclX, sclY, dir, make_color_rgb(alpha*255, alpha*255, alpha*255), 1); } } draw_set_blend_mode(bm_normal); draw_set_blend_mode(bm_add); { with(oLight) { if(cAlpha > 0) { draw_sprite_ext(spr, 0, x-view_xview[0], y-view_yview[0], sclX, sclY, dir, $ffffff-color, cAlpha); } } } draw_set_blend_mode(bm_normal); } surface_reset_target();
  8. chociaz niepracuje s delfi ani z pascal to zasady pracy z file so bardzo podobne do pracy v prawie kazdym jezyku, tylko znadz sobie pravidlovy zapis (syntax). :) nieviem jestli to ta tva syntax, ale warto tu zbadac. -to co pisal @ALT jest dobre do txt file i da sie stosowac procedury. -jezeli v file masz zavse 3 columny odseparovane znakiem space, to mozes uzyc tez binarnego odczytyvania z file. v bin czytas byte po byte a to jest v takim przypadku korzystne, bo latvo napisac pentle bez vycinania stringow i analizy jakie one so. mam nadzieje, ze chociaz trosecke cie nakierovalem.
  9. tak choose jest najlepszy. jednak dobrze jest vytlumaczyc, dlaczego program niedziala popravnie. :thumbsup: jego kod mogl dzilac, jak by byl popravnie zrobiony. mogl napisac: GML a = random(3) if ( a < 1) background_assign(Tlo2,back) else if ( a < 2) background_assign(Tlo4,back) jasne, taki kod ma sve specifika. trzeba zmienia tlo tylko kdy zmienna ma dosyc nisko vartosc BTW: przepraszam. niechcialem pisac przykladu, bo inni v sumie napisali podstavy, ale jak juz pise, to nic mnie nepovstrzyma od pokazania jak tez mozna ;)
  10. czasami show_message nienadaje sie (v STEP event itp.) v takim razie przyda sie draw_text :thumbsup:
  11. mala modyfikacia przykladu jaki podales. dodaj GML obiektu Kratka v eventu moze step albo inny kiedy v ktorym ruzsasz inventarzem GML x = Inwentarz.x + i * ( sprite_get_width( Inwentarz.iSprite ) + Inwentarz.iOff ); y = Inwentarz.y + j * ( sprite_get_height( Inwentarz.iSprite ) + Inwentarz.iOff ); krata inventarza beidzie sie ruszala tak, jak ty ruzsysz obiekt inventarz :)
  12. 1, uzytkovnik podaje imie (emailem) v GM a ty czytas v nie GM? 2, uzytkovnik podaje imie (emailem) v nie GM a ty czytas v GM? 3, uzytkovnik podaje imie (emailem) v GM a ty czytas v GM?
  13. Jaklub juz napisal, to moze tylko podsumuje :) GML //jakis event v obiektu_A if (image_xscale>5 && next==1 ) { id_obiekt_B = instance_create(x, y, obiekt_B); id_obiekt_B.depth = depth+1; }; twoj problem vidze v zlym uzycu zmiennej depth
  14. calkovicie sie zgadzam, poczotkujocy niech zda sobie sprave iz jest viecej sposobow jak vykonac jakis kod, ale ze czasami jest duza roznica miedzy tymi sposobami :) spotykam sie tez z problemem, ze ludzie czesto niemajom zielonego pojecia o uzyvaniu zmiennych v GM :)
  15. jezeli chodzi o wczytyvanie tylko a-z, A-Z, 0-9 to jest latviej uzyc string_lettersdigits naprzyklad: _txt="witam v domu 2 pany/3panie" draw_text(10,10,string(_txt)); draw_text(10,30,string_lettersdigits(_txt)); to rezultat jest: witam v domu 2 pany/3panie witamvdomu2pany3panie
  16. czesto byva tak, ze problem jest na tam, kam niepatrzysz :) zrob to samo rysovanie sprita v nowym projektu, i zobaczysz iz bedzie dzialac popravnie. zatem cos innego psuje funkcje rysovania. zatem zrob co radzo ludzie vyzej. a tak naviasem.. nie od parady jest spravdzenie Scripts/Check Resources Names
×
×
  • Dodaj nową pozycję...