Skocz do zawartości

Poplątane zmienne, a dokładniej gra mi się tnie gdy któraś nie jest spełniona


futh

Rekomendowane odpowiedzi

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

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

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

@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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...