LolikZabijaka Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Cześć, chcę zrobić w grze możliwość włączenia i wyłączenia telewizora, ale mam tu mały problem. CREATE TELEWIZORA GML on=false /// telewizor nie jest włączony gra=false /// telewizor nie "gra" off=true /// telewizor jest wyłączony</span> STEP TELEWIZORA GML if on=true and gra=true{ //// jeśli telewizor gra i jest włączony sprite_index=s_tv_on /// sprite włączonego TV image_speed=(0.3) if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7) { sound_play( sound7 ); } if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //tutaj zmienne odnośnie wyciszania itp w miarę oddalania się od TV { sound_volume( sound7, 1 - distance_to_object( player ) / 300 ); gra=false /// aby po przeleceniu dźwięku TV przestał grać } } else if on = true and gra = false{ /// jeśli jest włączony, ale nie ma dźwięku sound_stop(sound7) sprite_index=s_tv_off } else if on = false and gra = false and off=true{ ///jeśli po prostu jest wyłączony sound_stop(sound7) sprite_index=s_tv } KOLIZJA Z GRACZEM GML if keyboard_check(vk_space) { ///wciskam spację telewizor ma się włączyć, ale to się nie dzieje on=true gra=true off=false } if on=true and keyboard_check(vk_space){ ///analogiczna sprawa, wyłączenie on=false off=true } Problem polega na tym, że ów telewizor nie reaguje na to, jak wciskam spację i po prostu stoi wyłączony :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Zamień z = na ==. Bo jeden = daje wartość dla czegość, a == porównuje czy są identyczne. Edit 1: Po co dajesz on i off? Przecież to można zrobić w jednym. Np. stan = false; czyli wyłączony, stan = true; czyli włączony. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 zamieniłem w stepie, nic nie dało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Na pewno masz wszędzie == ? Albo spróbuj usunąć te off i dać tak ja wcześniej mówiłem 2xup Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 GML if on==true and gra==true{ sprite_index=s_tv_on image_speed=(0.3) if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7) { sound_play( sound7 ); } if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zwróć uwagę na wykrzyknik bo tu go nie ma jak wyżej { sound_volume( sound7, 1 - distance_to_object( player ) / 300 ); gra=false } } else if on == true and gra == false{ sound_stop(sound7) sprite_index=s_tv_off } else if on == false and gra == false{ sound_stop(sound7) sprite_index=s_tv } No jest wszędzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 W GM'ie nie ma znaczenia czy jest = czy == tak dla jasności. Sformatuj kod bo w aktualnym stanie ciężko go się czyta. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 GML if on==true and gra==true{ /// jeśli jest TV włączony i ma grać sprite_index=s_tv_on /// jaki ma być sprite i jego prędkość image_speed=(0.3) if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7) { sound_play( sound7 ); } if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zmienne odnośnie wyciszania i podgłośnienia w miarę zbliżania/oddalania się. { sound_volume( sound7, 1 - distance_to_object( player ) / 300 ); gra=false // po końcu dźwięku gra ma być na false } } else if on == true and gra == false{ // jeśli jest włączony ale już nie gra sound_stop(sound7) sprite_index=s_tv_off } else if on == false and gra == false{ // jeśli nie gra i jest wyłączony sound_stop(sound7) sprite_index=s_tv } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Hmm, dla czego nie masz ; w nawiasach klamrowych? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 Nie bardzo Cię rozumiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Chodzi mi o if. np w GML if on == false and gra == false{ // jeśli nie gra i jest wyłączony sound_stop(sound7) sprite_index=s_tv } nie masz ; powinno być GML if on == false and gra == false{ // jeśli nie gra i jest wyłączony sound_stop(sound7); sprite_index=s_tv; } Ale to raczej nie ma znaczenia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 No nie ma właśnie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mallo Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Jesteś pewien, że to nie mryga? Bo skoro wciskasz spację, to ustawia on na true. Ale jak jest ustawione on na true, i wciśnięta spacja, to wyłącza TV. Sprawdzałeś wartość w debug mode? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piotrek1910 Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Hmm, właśnie. Pewnie ma tak, że klika spacje włącza się od razu wyłącza. Możesz dać tak: GML if keyboard_check_pressed(vk_space) { ///wciskam spację telewizor ma się włączyć, ale to się nie dzieje on=true gra=true off=false } if on=true and keyboard_check_pressed(vk_enter){ ///analogiczna sprawa, wyłączenie on=false off=true } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 on: 0 gra: 1 off: 1 to z debuga wziąłem jak telewizor nie chciał działać to nie działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mallo Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 A próbowałeś to wypróbować eventem wciśnięcia spacji? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 Działa, jeszcze jedno, coś musiałem zwalić w kodzie, bo chcę żeby gra=false nastąpiło dopiero po przeleceniu sound7 GML if on==true and gra==true{ sprite_index=s_tv_on; image_speed=(0.3); if ( distance_to_object(player ) < 300 ) && !sound_isplaying(sound7) { sound_play( sound7 ); } if ( distance_to_object( player ) < 300 ) && sound_isplaying(sound7) //zwróć uwagę na wykrzyknik bo tu go nie ma jak wyżej { sound_volume( sound7, 1 - distance_to_object( player ) / 300 ); if( !sound_isplaying( sound7 )){ sound_stop(sound7) sprite_index=s_tv_off } } } else if on == true and gra == false{ sound_stop(sound7); sprite_index=s_tv_off; } else if on == false and gra == false{ sound_stop(sound7); sprite_index=s_tv; } I chcę żeby sound 7 się nie powtarzał, a po jego końcu zmienił się sprite index. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Mój kod, który robi wszystko to, co chcesz. Zrób kopię zapasową projektu na wszelki wypadek, nie sprawdzałem tego kodu. Create: GML on = -1 playing = -1 image_speed = 0.3 Step: GML if(on) //kod przy włączonym TV { if(distance_to_object(player) < 300) //jeśli wystarczająco blisko { sprite_index = s_tv_on //zmienia sprite'a if(!sound_isplaying(sound7)) //jeżeli jeszcze nie jest włączony dźwięk { if(playing) //i jeżeli dźwięk ma się włączyć { sound_play(sound7) //włącz go playing = -1 //nie włączaj ponownie dźwięku } } else //jeżeli już włączony { sound_volume(sound7,max(0,1-(distance_to_object(player)/300))) //reguluj głośność } } else //po oddaleniu się od telewizora { if(!sound_isplaying(sound7)) //jeżeli dźwięk już nie gra { sprite_index = s_tv_off //zmień sprite'a } } } else //kod przy wyłączonym TV { sprite_index = s_tv //zmień sprite'a } Collision with: Player GML if(keyboard_check_pressed(vk_space)) { on *= -1 //naciśnięcie spacji włącza/wyłącza TV if(on) playing = 1 //jeżeli TV włączony, włącz dźwięk else sound_stop(sound7) //w przeciwnym wypadku wyłącz go } Mała propozycja: zamiast true/false używaj 1/-1, dzięki temu kod: GML if(x = true) x = false else x = true zamienisz na: GML x *= -1 lub GML x = -x Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 działa, tylko ten sprite się nie chce zmienić po wyłączeniu dźwięku :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 EDIT GML if(on) //kod przy włączonym TV { if(!playing) sprite_index = s_tv_off //jeśli dźwięk nie włączony, zmień sprite'a else sprite_index = s_tv_on //w przeciwnym wypadku zmień sprite'a if(distance_to_object(player) < 300) //jeśli wystarczająco blisko { if(!sound_isplaying(sound7)) //jeżeli jeszcze nie jest włączony dźwięk { if(playing) //i jeżeli dźwięk ma się włączyć { sound_play(sound7) //włącz go playing = -1 //nie włączaj ponownie dźwięku } } else //jeżeli już włączony { sound_volume(sound7,max(0,1-(distance_to_object(player)/300))) //reguluj głośność } } else //po oddaleniu się od telewizora { sound_volume(sound7,0) //wycisz TV } } else //kod przy wyłączonym TV { sprite_index = s_tv //zmień sprite'a } Drobna pomyłka, sry :\ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 kurde nadal coś nie halo, teraz pokazuje mi tylko s_tv_off, albo s_tv_on Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Maja 2013 Udostępnij Opublikowano 22 Maja 2013 Trzeba wyłączyć, naciskając spację będąc w kolizji z telewizorem, chyba że nie tak chciałeś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 22 Maja 2013 Autor Udostępnij Opublikowano 22 Maja 2013 Tak, ale chodzi o to że jak jest włączony to nie pokazuje mi obrazu, tylko szum, a powinno być tak, że najpierw pokazuje obraz, czyli s_tv_on, a potem szum czyli s_tv_off :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 4 Czerwca 2013 Udostępnij Opublikowano 4 Czerwca 2013 Cześć, chcę zrobić w grze możliwość włączenia i wyłączenia telewizora, ale mam tu mały problem. CREATE TELEWIZORA GML on=false /// telewizor nie jest włączony gra=false /// telewizor nie "gra" off=true /// telewizor jest wyłączony</span></span> on = false, off = true? no proszę ja Ciebie... 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ę