H2S04 Opublikowano 26 Listopada 2015 Udostępnij Opublikowano 26 Listopada 2015 (edytowane) Mam problem z zbieraczką, która ma pojechać do obiektu o_ore1/2/3. Napisałem skrypt ruchu lecz nie działa, stoi ona w miejscu i nie chce jechać, a mp_potential_step nie działa jak bym chciał. Chciał bym jeszcze dowiedzieć się jak ta zbieraczka ma wrócić do budynku z którego wyjechała. Każdy budynek ma własny "index" który później jest nadawany też stworzonej zbieraczce. Jeśli budynek ma index = 0; to zbieraczka, którą stworzę w tym budynku też będzie miała index = 0; Oraz Type = Type budynku. Z typem chodzi o to jaki ma zbierać surowiec, jak type = 0 to jedzie do o_ore1. Oczywiście zbieraczka po dojechaniu do budynku ma się zniszczyć, a później znowu utworzyć (Ale ten problem mam z głowy, bo dodałem alarm, który cały czas tworzy mi zbieraczki jeżeli jest jakaś w budynku). Tylko właśnie zatrzymałem się na tym path finding'u :/ EDIT: Problem z wracaniem do budynku już wiem jak rozwiązać... Takie proste, że o tym nawet nie pomyślałem... Wystarczy stworzyć w create zmienną = x oraz drugą = y. i później wpisać zamiast x i y te zmienne... collision line zrobi niszczenie pojazdu oraz dodawanie surowców itd. :D EDIT2: Napisałem prosty kod... Jakoś na początku działał ale teraz już nie chce działać... Gdy podjedzie do obiektu o_ore1, pojazd się zatrzymuje, get zmienia się z false na true lecz alarm się nie wykonuje :o Chociaż poruszanie się tego pojazdu to dalej klapa << naprawione :/ Nie mogę się tego problemu z alarmem pozbyć. Czemu to cholerstwo nie chce się włączyć? :C EDIT3: Uporałem się z tym... 7h męki ale się udało... Jakieś bugi z alarmami :/ Zmieniłem alarm i wszystko było OK. kod: Zbieraczka Information about object: o_GraberCar Sprite: s_Grabore Solid: true Visible: true Depth: 0 Persistent: false Parent: Children: Mask: No Physics Object Create Event: execute code: image_speed = 0; index = 0; // index budynku(id) type = 0; // typ zbierania speed = 0; dir = direction; n = instance_nearest(x,y,o_ore1) n1 = instance_nearest(x,y,o_ore2) n2 = instance_nearest(x,y,o_ore3) //grid = mp_grid_create(0,0,room_height/3,room_width/322,32,32); path = path_add(); //mp_grid_add_instances(grid,o_solid,1); //mp_grid_path(grid,path,x,y,n.x,n.y,1); mp_potential_path(path,n.x,n.y,1,0,solid) Step Event: execute code: image_angle = direction; if type = 0{ if instance_exists(o_ore1){ if distance_to_point(n.x,n.y) > 0{ path_start(path,5,0,1); } else { path_end(); speed = 0; } } } Pozdrawiam :). Kod po przebudowie: Information about object: o_GraberCar Sprite: s_Grabore Solid: true Visible: true Depth: 0 Persistent: false Parent: Children: Mask: No Physics Object Create Event: execute code: image_speed = 0; index = 0; type = 0; speed = 0; start = false; alarm[10] = room_speed*1; get = false; back = false; time = 0; startdir = 0 yellow = 0; red = 0; blue = 0; startx = 0; starty = 0; Alarm Event for alarm 0: execute code: var am; am = choose(5,10,15,20,25,30,35,40,45,50) global.yellow += 1; if get = true{ if type = 0{ if time < 5{ col = collision_line(x,y,x+lengthdir_x(64,direction),y+lengthdir_y(64,direction),o_ore 1,false,false); col.amount -= am; yellow += am; time += 1; alarm[0] = room_speed*1; } else { time = 0; get = false; back = true; } } } Alarm Event for alarm 10: execute code: start = true; Alarm Event for alarm 11: execute code: global.yellow += yellow; global.blue += blue; global.red += red; bc = collision_line(x,y,x+128,y+128,o_Graber,false,false); bc.stack += 1; instance_destroy(); Step Event: execute code: n1 = instance_nearest(x,y,o_ore2) n2 = instance_nearest(x,y,o_ore3) image_angle = direction; if start = true{ if back = false{ if type = 0{ if instance_exists(o_ore1){ n = instance_nearest(x,y,o_ore1) if distance_to_point(n.x,n.y) > 1 { path = path_add(); mp_potential_path(path,n.x,n.y,4,4,false) //mp_potential_step(n.x,n.y,4,o_solid); path_start(path,4,0,1); } else { path_end(); speed = 0; direction = point_direction(x,y,n.x,n.y); alarm[0] = 3; get = true; } } } } else { if distance_to_point(startx,starty) > 0{ mp_potential_step(startx,starty,4,false); } else { direction = startdir-180; speed = 0; start = false; alarm[11] = 3 } } } Draw Event: execute code: draw_sprite_ext(sprite_index,type,x,y,1,1,direction,c_white,1); draw_line_colour(x,y,x+lengthdir_x(64,direction),y+lengthdir_y(64,direction),c_r ed,c_red); if start = true{ draw_line_colour(x,y,n.y,n.y,c_green,c_green); } draw_text_colour(x,y+32,yellow,c_white,c_white,c_white,c_white,1); draw_text_colour(x,y+16,get,c_white,c_white,c_white,c_white,1); draw_text_colour(x,y,startdir,c_white,c_white,c_white,c_white,1); draw_text_colour(x,y-16,yellow,c_white,c_white,c_white,c_white,1); draw_text_colour(x,y-32,time,c_white,c_white,c_white,c_white,1); Edytowane 27 Listopada 2015 przez H2S04 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się