futh Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Cześć! Nie owijając w poliester: Robię klona (ale NIE fanowskiego!) gry GTA 2 w GM 8 Pro. Od razu dodam, że korzystam z TEGO przykładu. Otóż pomyślałem sobie, że dobrze by było zrobić radio w autach. Na razie bez możliwości zmiany stacji. Zabrałem się do pracy. Po jakimś czasie w step event dla objectu car_merol skleciłem taki oto kod: GML if wsiadanie = true { if radio = 1 {sound_play(choose(Roboter,Again,Blowing,HHolkin,Mohery,Expres,Makumba))} if radio = 2 {sound_play(choose(hiphop1,hiphop2,hiphop3,hiphop4,young4eve,zgaga))} //?odam, że zmienna radio losuje się w create evencie } Problem polega na tym, że jeśli wsiadanie = false gra strasznie się tnie. Kiedy kombinowałem z przenoszeniem tego do obj_gracz, było jeszcze gorzej. Czy któryś z bardziej doświadczonych użytkowników Game Makera mógłby mi pomóc? Z góry dziękuję za pomoc. EDIT: Zapomniałem napisać: wujka Google oraz forumową wyszukiwarkę już oczywiście prosiłem o pomoc i proszę mnie do nich nie odsyłać! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Jeżeli tnie ci się gra bez wykonywania kodu który nam pokazałeś to oczywiste jest to że nie on to powoduje. Błąd jest gdzie indziej. Pokaż nam inny kod gdzie jeszcze wykorzystujesz tą zmienną. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
futh Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 No jest jeszcze drugie auto, które ma w create event GML radio = 0 no i wspomniany wyżej car_merol, gdzie w tym samym evencie zdefiniowałem ważne dla sterowania autem zmienne, wśród nich radio. Wygląda to tak: GML curspeed = 0 direct = 0 _turnspeed = turnspeed _oil = false _direct = direct wsiadanie = false RADIO=CHOOSE(1, 2) Słowem nic, co mogłoby spowodować taki efekt. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Czy podales pelny kod stepa obiektu car_merol? Jesli tak, to: GML if wsiadanie = false exit if radio = 1 {sound_play(choose(Roboter,Again,Blowing,HHolkin,Mohery,Expres,Makumba))} if radio = 2 {sound_play(choose(hiphop1,hiphop2,hiphop3,hiphop4,young4eve,zgaga))} wsiadanie = false A jak nie? To podaj pelny kod :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
futh Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 @Up Nie, skopiowałem tylko mały fragment odpowiadający za radio. Całość prezentuje się następująco: GML if ( wsiadanie == true ) //sprawdza czy ludek siedzi w aucie { if keyboard_check( ord( 'W' )) then { if curspeed < maxspeed then { curspeed += accel } else { curspeed = maxspeed } } else { if curspeed > 0 then curspeed -= deaccel if curspeed < 0 then curspeed += deaccel } if keyboard_check( ord( 'D' )) { if !(curspeed = 0) then { _direct = direct direct += _turnspeed } } if keyboard_check( ord( 'A' )) { if !(curspeed = 0) then { _direct = direct direct -= _turnspeed } } if keyboard_check( ord( 'S' )) { if curspeed > 0 then { curspeed -= deaccel*2 } else { if curspeed > -(maxspeed/2) { curspeed -= accel+(accel/2) } } } } if keyboard_check(vk_space) and keyboard_check( ord( 'W' )) { if curspeed >= maxspeed/2 {curspeed = maxspeed/2} if curspeed < maxspeed/2 {curspeed = maxspeed/3} else curspeed = 0 } if keyboard_check(vk_space) and keyboard_check( ord( 'S' )) = false { if curspeed > 0 then curspeed -= deaccel if curspeed < 0 then curspeed += deaccel if curspeed < 1 and curspeed > 0 then curspeed = 0 } if curspeed > 0 and curspeed < 1 then { _turnspeed = 0 } else { _turnspeed = turnspeed + curspeed/10 } if keyboard_check( ord( 'S' )) and keyboard_check(vk_space) { curspeed = -0.3 } if keyboard_check(vk_anykey) = false then { if curspeed > 0 then curspeed -= deaccel if curspeed < 0 then curspeed += deaccel if curspeed < 1 and curspeed > 0 then curspeed = 0 } if curspeed > 0 and curspeed < 1 then { _turnspeed = 0 } else { _turnspeed = turnspeed + curspeed/10 } direction = direct speed = curspeed image_angle = directory_create //RADIO if wsiadanie = false { if radio = 1 {sound_play(choose(Roboter,Again,Blowing,HHolkin,Mohery,Expres,Makumba))} if radio = 2 {sound_play(choose(hiphop1,hiphop2,hiphop3,hiphop4,young4eve,zgaga))} } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 image_angle = directory_create??? (?) Raczej image_angle = direction W ogole to ten kod jest... ekhm... bardzo... ladny... Ekhm... Juz wiem! GML if wsiadanie = true { if radio = 1 {sound_loop(choose(Roboter,Again,Blowing,HHolkin,Mohery,Expres,Makumba)); radio = 0} if radio = 2 {sound_loop(choose(hiphop1,hiphop2,hiphop3,hiphop4,young4eve,zgaga)); radio = 0} } Tzn. muzyka sie w tym skrypcie nie zatrzyma, dopoki jej nie przerwiesz. Ale przynajmniej nie bedzie sie zacinac :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Za pewne zmienna miała być direct, i po prostu przy podpowiedzi GM'a co do funkcji wybrał niechcąco directory_create :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Dzieki, Mr. Obvious :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
futh Opublikowano 26 Maja 2010 Autor Udostępnij Opublikowano 26 Maja 2010 W ogole to ten kod jest... ekhm... bardzo... ladny... Ekhm... No bo tak z połowa jest z przykładu :blush: Co do samego kodu: DZIAŁA! Nic się nie cina! Wszystko idzie jak po margarynie! Dzięki wielkie, Muuczek! Z loopem i całą resztą sobie już poradzę. Dzięki jeszcze raz! Temat do zamknięcia. EDIT: Właśnie kiedy skończyłem pisać posta utwór z radia się skończył i nie ma loopa. Nie wiem o co chodzi, ale to chyba nawet dobrze! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 26 Maja 2010 Udostępnij Opublikowano 26 Maja 2010 Po co ci w kodzie kilka razy then? Jak piszesz nawiasy {}, to już nie trzeba pisać then... Używamy tego do małych rzeczy, do jednego warunku czy coś... I ta, zamiast directory powinno być direction(czy jak tam masz). 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ę