Skocz do zawartości

MiChAl200

Użytkownicy
  • Postów

    191
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez MiChAl200

  1. GML x = mouse_x div 32 * 32; y = mouse_y div 32 * 32; Piszesz w step obiektu
  2. GML zmienna=argument0; zmienna+=zmienna*4; return zmienna; Chyba tak. EDIT: Eh, przegonił mnie ktoś :P
  3. Czy jeśli np. utworzyłem 5 surface'ów, a 1 z nich jest tylko narysowany, to karta graficzna jest obciążona przez wszystkie 5, czy tylko przez ten 1. (a te pozostałe gdzieś indziej są zapisane). Pytam się, bo zrobiłem najpierw mapę z jednego surface'a na szerokość i wysokość całego rooma, ale u kolegi się zacinało, a na moim drugim komputerze w ogóle się nie włączało. Więc nie wiem czy lepiej będzie, jak podzielę mapę na surface'y i w zależności od tego gdzie jest gracz tylko trzy są namalowane. (tam gdzie jest gracz i dwa obok)
  4. Zrób, żeby w Create: GML alarm[0]=10; (to chyba 1 setna jeśli się nie mylę) var ktora; ktora=1; // 1 to liczenie w dol, a 2 to liczenie w gore var liczba; liczba=50; I W evencie sprawdzania Alarm[0] GML if(liczba=50) { ktora=1; } else if(liczba=30) { ktora=2; } if(ktora=1) { liczba-=1 } else if(ktora=2) { liczba+=1 alarm[0]=10; } Mam nadzieję, że dobrze napisałem :P EDIT: Jeszcze alarm ustawić znów.
  5. Chcę zrobić, żeby w inwentarzu, można było wytworzyć inne przedmioty. W tym przypadku mam, że jeśli mam 2 drewna, to mogę zmienić je na deski. Klikam przycisk i odejmują się dwa drewna i zamienia na 4 deski. W tej chwili jeszcze nie ma dodania przerobionych surowców, ale jest "wyjmowanie" potrzebnych surowców ze slotów inwentarza. Jest taki kod, po naciśnięciu przycisku "Twórz": GML jeszcze1=crafting.ile1[1]; //zmienna wynosi tyle ile potrzeba danego surowaca do wyrobu przedmiotu jeszcze2=crafting.ile2[1]; jeszcze3=crafting.ile3[1]; if(crafting.posiadasz1[1]>=crafting.ile1[1]) // sprawdzanie czy posiadasz wymagającą liczbę surowców { for(i=1; i<5; i+=1) { for(j=1; j<5; j+=1) { if(jeszcze1!=0) // sprawdzanie, czy jeszcze jakieś bloki zostały do "odebrania" { if(controler.idObj[j,i]==crafting.potrzeba1[1]) // jeśli w slocie jest surowiec, którego potrzebujemy { if(controler.nrObj[j,i]=jeszcze1) // jeśli w slocie jest dokładnie tyle surowca ile potrzebujemy { controler.idObj[j,i]=-1; // slot jest wyczyszczony controler.nrObj[j,i]=0; crafting.posiadasz1[1]-=crafting.ile1[1]; // odejmujesz ilość potrzebych rzeczy od liczby posiadanych (danego typu) jeszcze1=0; // już nie potrzeba więcej "odbierać" bloków } else if(controler.nrObj[j,i]>jeszcze1) // jeśli w slocie jest więcej niż jeszcze zostało do odebrania { controler.nrObj[j,i]-=jeszcze1; //odejmujesz liczbę surowców, które musisz odebrać, od liczby surowców które są w danym slocie crafting.posiadasz1[1]-=crafting.ile1[1]; // odejmujesz ilość surowców, które musisz odebrać o liczby wszystkich posiadanych jeszcze1=0; // już nie potrzeba więcej "odbierać" bloków } else if(controler.nrObj[j,i]<jeszcze1) // jeśli w slocie jest mniej surowców niż potrzeba do "odebrania" { jeszcze1-=controler.nrObj[j,i]; // odejmujesz liczbe surowców crafting.posiadasz1[1]-=controler.nrObj[j,i]; // odejmujesz liczbe surowców w slocie od liczby wszystkich posiadanych. controler.idObj[j,i]=-1; // slot jest wyczyszczony controler.nrObj[j,i]=0; } } } } } } Te "jeszcze2" i "jeszcze3" to będzie potem, jak będzie trzeba będzie posiadać więcej przedmiotów. Np. I drewno i kamień itp. PROBLEM: Pobiera mi dwa razy więcej niż to potrzeba. Jeśli w slotach jest więcej, niż potrzeba (w tym wypadku 2) to zabiera więcej. Jeśli jest ogólnie 3 to zabiera 2. Jeśli jest ogólnie 4 to zabiera 4. Jeśli jest ogólnie 5 to zabiera 4. Jeśli jest ogólnie 6 to zabiera 6. Nie wiem czemu się tak dzieje. Czemu akurat dwa?
  6. Wszystko ładnie działa, dzięki za pomoc :)
  7. Dzięki za przykład. Tylko jak zrobić to, żeby tworzyły się maski kolizji?
  8. @UP Poradziłem sobie. Zrobiłem inaczej (wymyśliłem sposób zanim odpisałeś) i na razie nie znalazłem, żadnych bugów, ale jakby co to spróbuję twojego sposobu, więc dzięki :) EDIT: Nie, jednak są błędy.. Postać czasem wbija się w klocek. Użyję twojej propozycji, tylko.. nie wiem dokładnie jak to zrobić. Mógłbyś mniej więcej powiedzieć jak to zrobić?
  9. Gra jest wygenerowana przez generator i zbudowana z bloków. Tylko te bloki nie są obiektami tylko namalowanymi sprite'ami w surface. Mapa jest także pokryta siatką. (ds_grid_create) i w każdej komórce jest zapisane id obiektu (brak obiektu to -1). Pozostaje jednak jedna rzecz: Kolizje. Dlatego chciałem zrobić, żeby powstawały obiekty kolizji naokoło gracza, jeśli w danym miejscu jest jakiś blok (jeśli w danej komórce jest inna wartość niż -1). Te obiekty mają "na żywo" tworzyć się i usuwać podczas chodzenia postacią. http://img.pl/9YAdfRA - tu mniej więcej jest narysowane. A tu jest filmik z jedną grą i w 2:20 sekundzie jest pokazane to co ja chciałem zrobić. http://www.youtube.com/watch?v=8OKrwOK6Gjg Tworzyłem objekt "obj_kolizja" i zrobiłem z jednym pod ludzikiem, ale coś się psuło (jak z większej wysokości spadałem to on się w ten obiekt wbijał..), potem z pętlą for gdzie sprawdzało każdą komórkę osobno, ale też coś nie wychodziło i obniżało FPS. Wiem że trochę się rozpisałem ale męczę się z tym kilka dni i nie wiem jak to zrobić.
  10. No działa, ale ten pasek ze slotami, ma jechać za bohaterem. Przedtem robiłem inną wersję tego paska i robiłem za pomocą viewów, ale i tak jak przewinął się ekran nie o pełne 32 pixeli (tyle ma slot), to się psuło. Zaokrąglałem viewy z divami, ale to działało tylko jak ekran był równo przesunięty o co 32 pix, o 64 pix itp. jak np. inaczej to przesunięte miejsca klikalne. Zrozumieliście z tego co napisałem, bo jakoś pokręcone mi wyszło ? :P E: Bo to co napisał Gnysek działa, ale dopóki nie przewinę ekranu.
  11. Albo inaczej, bo tamto nie za bardzo i pomogło. Jest tablica, która ma 10 argumentów (nie wiem czy tak się mówi, po prostu tablica od tablica[1] do tablica[6]) i w każdej tablicy jest przypisany obiekt "obj_slot". I chcę, żeby po naciśnięciu na któryś z "obj_slot" sprawdzało, która to tablica. Da się?
  12. Jak sprawdzić jakie id ma obiekt, który kliknąłem myszką?
  13. Ok, jednak był błąd w kodzie... Temat zamknięty :P
  14. Ale ja mam jedną kolizję, po prostu move_contact_solid(270,4) vspeed = 0 Tylko ten blok może być i podłożem i ścianą. Tylko jak wskakuje od prawej strony to tak jedzie do góry.
  15. Moja gra tak jak minecraft, jest zrobiona z klocków. Podczas tworzenia, aby zrobić sterowanie jak w platformówce użyłem tych kodów z FAQ https://gmclan.org/index.php?czytajart=7 I tu problem. Jak skoczę PRAWO postacią na ścianę z tych klocków to po przytrzymaniu przycisku, postać "wjeżdża" na tę ścianę. Od lewej strony jest normalnie. Jak to naprawić?
  16. Jak usunąć obiekt na danej pozycji? for(i=0; i<5; i+=1) { ///Kod na usunięcie bloku "blok" na pozycji (i*32, 40*32) }
  17. Coś nie działa, bo jest "Illegal argument count calling script "spr_sprite". Script requires 0 arguments, 1 have been supplied." Zamiast "argument0" mam też wstawić "i" czy co? ------------------------------------------------------- A nie chwila, po prostu argument0, mam :P Dzięki
  18. Ale każdy z tych sprite'ów jest obrazkiem innego obiektu.
  19. Mam taki skrypt o nazwie "spr_sprite" switch(hotbar.idObj[]) { case 1: return spr_ziemia; break; case 2: return spr_kamien; break; case 3: return spr_piasek; case 4: return spr_drzewo; default: return puste; } hotbar.idObj[] to tablica. Czy da się zrobić, żeby przy pętli for za każdym razem tworzyła się się zmienna "co", która wywołuje skrypt "spr_sprite", ale za każdym razem z innym indeksem tablicy? Czyli najpierw hotbar.idObj[1], wynik zapisać w 'co', narysować sprite'a, i od nowa pętla hotbar.idObj[2], wynika zapisać w "co" itp. Draw w obiekcie "Hotbar" for(i=1; i<7; i+=1) { co = spr_sprite(); draw_sprite (co, -1, view_xview + 32*(6+i), view_yview + 416); }
  20. Ok, chyba problem się jakoś rozwiązał... Bo ja miałem tak, że na początku gry teren sam się generował. Za pomocą pętel for co 32 pix tworzył się kolejny blok. I tych pętel było kilka, jeden na wygenerowanie trawy niżej, jeden na wygenerowanie ziemi (na głębokość 3 kratek), jeden niżej na wygenerowanie kamienia lub ziemi i jeden na wygenerowanie kamienia, lub rzadziej ziemi. I tylko miałem błędy z tą ziemią na 3 kratki. Chciałem zobaczyć czy coś się nie podwoiło, albo było nie tak z kodem, więc zmieniłem liczby, żeby ta ziemia generowała się trochę wyżej. I nagle się naprawiło. Przestawiłem na stare wartości i wciąż działa. Dziwne, ale dobrze, że już działa :P
  21. No to ja nie wiem co zrobić.. Bo to jest gra platformowa, "ziemia" jest solidnym blokiem, a "ziemia_mini" jest blokiem niesolidnym z grawitacją. A jest też drugi blok taki sam jak "ziemia", tylko inny sprite. i też po zniszczeniu zamienia się w "ziemia_mini", ale normalnie się nalicza. I jest taki sam kod.
  22. Dziwny problem. Jest ludzik, i jak się naciśnie na klocek "ziemia", to znika, i pojawia się zamiast niego miniaturka tego klocka "ziemia_mini", która po dotknięciu znika i dodaje się 1 do zmiennej "global.l_ziemia". Niby ok, ale czasem jest tak, że czasem po zniszczeniu jednego klocka i zabraniu miniaturki dodaje się od razu 3, albo 2, a czasem nawet 10. Co zrobić. Kody użyte to: Left Pressed z obiektem "ziemia": instance_create(x + 5, y, ziemia_mini); instance_destroy(); Kolizja "ludzika" z obiektem "ziemia_mini": global.l_ziemia+=1; instance_destroy(); I są problemy, po zniszczeniu np. 6 klocków, czasem dodaje mi się 86....
×
×
  • Dodaj nową pozycję...