Skocz do zawartości

Rudy

Użytkownicy
  • Postów

    154
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Rudy

  1. Albo mi się wydaje, albo najpierw zapisujesz teksturę na zmienną bazooka, a potem zapisujesz na tą zmienną model. Być może się mylę, bo nie siedzę w 3D, ale gdy zapisujesz model na tą zmienną, informacje o teksturze na tej zmiennej się kasują. Powinieneś zrobić osobną zmienną do tekstury i osobną do modelu.
  2. frelo, z tego, co zauważyłem, wolisz jeszcze klocki od kodu, więc pozwolę sobie przetłumaczyć AI kolegów z forum na klocki :) . AI 1: Hardkorowy bot: Zakłada move, sekcja jump, klocek z góry po lewej, dwa krzyżyki i strzałka, jak najedziesz myszką pisze "Jump to position". Wkładasz go do step. Jeśli przesuwasz się do góry/dołu: x = odległość od lewego krańca okna, np 600, albo room_width-40 y = obj_pilka.y (obj_pilka to nazwa piłki) Jeśli przesuwasz się na lewo/prawo: x = obj_pilka.x (obj_pilka to nazwa piłki) y = odległość od górnego krańca okna, np 420, albo room_height-40 AI 2: Bot z prędkością Zakłada move, sekcja move, klocek z góry po środku,niebieskie strzałki we wszystkich kierunkach ,jak najedziesz myszką pisze "Move free". Wkładasz go do step. Jeśli przesuwasz się do góry/dołu: direction = point_direction(x,y,x,obj_pilka.y) Jeśli przesuwasz się na lewo/prawo: direction = point_direction(x,y,obj_pilka.x,y) speed = szybkość przesuwania bota, np 3, 5 w zależności od tego, jaki chcesz mieć poziom trudności
  3. Proszę bardzo Myślę, że komentarzy jest aż za dużo. Pozostaje jedynie problem przechodzenia pomiędzy kaflami (to co gnysek napisał. Jeśli kafle będą większe, niż view, wystarczą cztery. Jeśli będzie z tym większy problem, napisz.
  4. Mam grę, Deus EX: Project Snowblind. Pisze w niej, że jest oparta na faktach. Nieco później: CHINY, rok 2069. :D
  5. Wiem, że jestemwybredny, ale Partition magic jest w necie w wersji trial (tych typków strasznie nie lubię), po 60 dniach trzeba będzie znaleźć inny sposób, a ja bym wolał taki bardziej ponadczasowy, jeśli się da :) . Po nazwie drugiego programu zgaduje, że do XP (wlaśnie, zapomniałem powiedzieć, że mam XP) on nie jest, dlatego nie szukałem.
  6. Zacznę więc od powtarzającego się już dużo razy sformułowania: Tytuł problemu: Jak usunąć uparte pliki. Teraz na poważnie. Ściągałem ostatnio trochę programów opierających się na konsoli (albo wierszu polecenia). Działania programów przy zwykłym podwójnym kliknięciu były takie same: na ułamek sekundy wyskakiwała konsola, po czym znikała. Bardziej przydatne były, gry działały wraz z innym programem. Ale przejdźmy do rzeczy. Gdy chciałem usunąć program, wyskakiwał błąd: Ponowna próba nic nie dała. To samo spróbowanie zaraz po odpaleniu trybu awaryjnego. Nie tylko usunięcie jest zablokowane, także zmiana nazwy, właściwości oraz lokalizacji. I teraz pytanie: czy prócz masowej zagłady (czyli formatu) jest jakiś inny sposób na pozbycie się tych plików?
  7. A co z zatrzymaniem? :> Zamiast: GML dir=point_direction(x,y,mouse_x,mouse_y); if direction<docelowy_dir+=10; else if direction>docelowy_dir-=10; Daj: GML dir=point_direction(x,y,mouse_x,mouse_y); if (direction+10<dir) direction+=10; else if (direction-10>dir) direction-=10; else direction=dir; Pozostaje ostatni problem: skręcanie na pograniczu prawej strony. Np direction=359, a dir=0. Ale gdzieś był już o tym temat.
  8. Możesz też zrobić coś w rodzaju BBox* każdego z obiektów. Przykładowo: *Bounding Box - prostopadłościan, którego ściany dotykają krańcowych części obiektu (patrz: właściwości sprite'a) GML (create) bbox_xmin=-10; bbox_xmax=10; bbox_ymin=-10; bbox_ymax=10; bbox_zmin=-10; bbox_zmax=10; // mówimy tutaj o sześcianie 20x20x20 // te zmienne muszą być w każdym sprawdzanym obiekcie // PS: zakładam, że posiadasz zmienną "z".</span> A potem: (obj2 to obiekt, z którym sprawdzamy kolizję) GML (step) if ((x+bbox_xmin<obj2.x+obj2.bbox_xmax || x+bbox_xmax>obj2.x+obj2.bbox_xmin) && (y+bbox_ymin<obj2.y+obj2.bbox_ymax || y+bbox_ymax>obj2.y+obj2.bbox_ymin) && (z+bbox_zmin<obj2.z+obj2.bbox_zmax || z+bbox_zmax>obj2.z+obj2.bbox_zmin)) { ... // akcja kolizji } Jedyny problem w tym, że kolizje będą odbywały się, gdy nie obiekty, ich "prostopadłościany" będą się dobijać. Kolizji kul na przykład tak nie zrobisz. :)
  9. Aha, czyli ruchoma dłoń na ruchomej ręce? Troszkę trudniej, ale możliwe :) : Przede wszystkim sprite'y ręki i dłoni z originem w miejscu obrotu CREATE: GML // zmienne ręki arm_x=x; arm_y=y-25; arm_angle=0; arm_length=35; // chodzi tu o odległość w pikselach punktu obrotu ręki od dłoni // zmienne dłoni hand_x=x+35; hand_y=y-25; hand_angle=0; // obrót ręki</span></span> STEP: GML arm_x=x; arm_y=y-25; arm_angle=point_direction(hand_x,hand_y,mouse_x,mouse_y); hand_x=arm_x+lengthdir_x(arm_length,arm_angle); hand_y=arm_y+lengthdir_y(arm_length,arm_angle); hand_angle=...; // tutaj ustaw sobie sposób ruchu ręką</span></span> DRAW: GML draw_sprite_ext(s_reka,0,arm_x,arm_y,1,1,arm_angle,c_white,1); // s_reka to nazwa sprite'a z ręką draw_sprite_ext(s_dlon,0,hand_x,hand_y,1,1,arm_angle+hand_angle,c_white,1); // s_dlon to nazwa sprite'a z dłonią</span></span>
  10. Chodzi ci o ruch ręką po okręgu? Jeśli tak, to namaluj rękę w osobnym sprite'u (skierowaną w prawo) i ustaw origin na miejsce, gdzie jest jej punkt obrotu. W tym ludku stwórz: w CREATE: GML hand_x=x; // pozycja X, gdzie ręka się obraca hand_y=y-25;// pozycja Y, gdzie ręka się obraca hand_angle=0; // obrót ręki</span> w STEP: GML hand_x=x; hand_y=y-25; hand_angle=point_direction(hand_x,hand_y,mouse_x,mouse_y); w DRAW: GML draw_sprite_ext(s_reka,0,hand_x,hand_y,1,1,hand_angle,c_white,1); // s_reka to nazwa sprite'a z ręką</span>
  11. po ucięciu potraktuj końcówkę jak ludka, gdy skacze (chodzi o grawitację), "kabel" tak samo, tylko w górę, nie w dół
  12. Obiekt podążający: CREATE GML okrag_x=150; // wpisz tutaj pozycję koła okrag_y=150; x=okrag_x; y=okrag_y; max_speed=5; // maksymalna prędkość (jak ta wartość jest stała, usuń ją i zamień w step na liczbę)</span></span> Obiekt podążający: STEP GML direction=point_direction(x,y,mouse_x,mouse_y); if (point_distance(x,y,okrag_x,okrag_y)>=100-1 && abs(direction-point_direction(x,y,okrag_x,okrag_y))>90 && abs(direction-point_direction(x,y,okrag_x,okrag_y))<270) { speed=0; x=lengthdir_x(100,point_direction(okrag_x,okrag_y,x,y)); y=lengthdir_y(100,point_direction(okrag_x,okrag_y,x,y)); } else speed=max_speed; Teraz drobne objaśnienia :) Dlaczego 100-1? Dodałem pewien margines, żeby obiekt nie "skakał", gdy koło będzie się ruszało Do czego służy to długie zaczynające się na abs? One sprawdzają po prostu, czy jeżeli pójdzie do myszki, nie wyjdzie jeszcze bardziej po za koło. Bo zakładam, że obiekt ma się ruszyć, jeśli poprowadzisz go do środka. Co to te lenghtdir'y? Służą one do tego, żeby, gdy będziesz przesuwał koło, obiekt nie wylatywał z niego. Teraz po dotknięciu koła obiekt się zatrzyma. Jeśli chcesz, żeby obiekt "ślizgał się" po kole, dopóki w prostej linii nie znajdzie się: myszka, obiekt i środek koła, skorzystaj z tego wzoru: Obiekt podążający: CREATE GML okrag_x=150; // wpisz tutaj pozycję koła okrag_y=150; x=okrag_x; y=okrag_y; speed=5; Obiekt podążający: STEP GML direction=point_direction(x,y,mouse_x,mouse_y); if (point_distance(x,y,okrag_x,okrag_y)>=100) // miejsce, którego dotyczy informacja na dole { x=lengthdir_x(100,point_direction(okrag_x,okrag_y,x,y)); y=lengthdir_y(100,point_direction(okrag_x,okrag_y,x,y)); } Co do tej informacji: nie wiem, kiedy GM zmienia pozycję przez speed. Jeśli przed step to nie ma problemu, jeśli po, obiekt będzie wychodził po za koło. Napisz wtedy w tamtym miejscu prócz 100 jeszcze -speed. Linia będzie wtedy wyglądała tak: GML if (point_distance(x,y,okrag_x,okrag_y)>=100-speed) Nie jest to przetestowane, ale mam nadzieję, że będzie działać.
  13. Bez przerwy resetujesz alarm. Wstaw go do drugiego nawiasu, a wszystko powinno iść dobrze
  14. Witam wszystkich forumowiczów. Na początek opiszę w skrócie, co to Alfont. Jak już napisałem w temacie, jest to dodatek do biblioteki Allegro, pozwalający na używanie czcionek. Jego instalacja jest nieco bardziej skomplikowana, niż Allegro. Więcej na stronie Alfonta. Problem tkwi z kompilacją. Zmagałem się z nim już od dawna, kiedyś nawet udało mi się to zrobić. Niestety była to wersja 1.9.2, po instalacji 2.0.9 trzeba to zrobić ponownie. Od tamtego czasu sporo minęło, nie pamiętam więc dokładnie, jak to zrobiłem, lecz wiem, w którym kierunku iść. Podczas czytania strony z powyższego linku można znaleźć taki tekst: Myślę, że to jest to, ponieważ w ściągniętym folderze nie było żadnego libu, a ja pamiętam, że tworzyłem jakiś przy starszej wersji. Po za tym starsze funkcje działają odpowiednio, tylko te nowe nie. Zrobiłem już wszystko, co jest napisane w cytacie, prócz wpisania tego "make". Nie wiem gdzie to wpisać. Mógłby mi to ktos przypomnieć, jak to zrobiłem? :)
×
×
  • Dodaj nową pozycję...