PRT Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 Witam, mam dość dziwny problem. Mam taki kod: GML //Obiekt wojo , Event step if ruch=1 { dis=distance_to_point(XX,YY) //dystans diss=dis*procent/100 // procent dir=point_direction(x,y,XX,YY) // kierunek xxx=x+lengthdir_x(diss,dir) yyy=y+lengthdir_y(diss,dir) } //Obiekt pokoj , Event Global Right Released if global.wojo=1 //warunek { idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda global.pokaz.YY=idda.y // j.w tyle że y. global.pokaz.ruch=1 //reszta global.pokaz.alarm[0]=global.pokaz.predkosc //reszta } Podałem te dwa kody bo gdzieś tu musi być jakiś błąd. Przy uruchomieniu programu, kiedy kliknę prawym przyciskiem , to wyskakuje błąd że nie znaleziono zmiennej x w Obiekcie pokoj, evencie Global right released. Chodzi o linię global.pokaz.XX=idda.x Dopiero kiedy z tego pierwszego kodu GML xxx=x+lengthdir_x(diss,dir) yyy=y+lengthdir_y(diss,dir) usunę(o dziwo) x+ i y+ czyli ozstanie GML xxx=lengthdir_x(diss,dir) yyy=lengthdir_y(diss,dir) błąd nie wyskakuje ale za to nie mam pożądanego efektu ;) Naprawdę nie wiem co mam zrobić. Z góry dziękuję za pomoc ;) P.S Jeszcze działa kiedy zamiast (w lengthdir) diss i dir wpisze byle jakie liczby ;] ,ale to musi być uzależnione od zmiennych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 Po pierwsze, nie rozumiem stosowania procentowego dystansu. Jak coś, co jest ciągiem zmierzającym od zera do nieskończoności, może być procentem? Doprowadziłoby to do sytuacji, w której dystans wynosiłby np 7157%... albo 0%. Procentowo można przedstawiać coś, co jest całością, wartość pomiędzy 0 a 100. Wskazałem ci absurdalność, ty mi wskaż odpowiedź, a przyjrzę się kodowi. EDIT: chyba wiem o co chodzi. W deklaracji zmiennej XX i YY sa to zmienne globalne pokaz.XX i pokaz.YY, a w obiekcie wojo, w wydarzeniu Step - odwołujesz się do jakichś nieistniejących zmiennych lokalnych XX i YY. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 9 Lutego 2008 Autor Udostępnij Opublikowano 9 Lutego 2008 Zastosowałem procent dla efektu ładowania się paska. Wyświetlane są dwie linie węższa i szersza. Szersza ma długość np: 100 (ten współczynnik się zmienia) A węższa stanowi jakiś procent długości pierwszej. procent dodawany jest co jakiś czas w alarmach aż do uzyskania 100% czyli długości szerszej linii. Nie ma tego pokazanego w kodzie ;) A co do twojego spostrzeżenia: global.pokaz - zmienna przechowuje id obiektu wojo (jest ich kilka) więc global.pokaz.YY i global.pokaz.XX nie są globalne lecz lokalne w obiekcie o tymże id. Kod błędu dla większego zobrazowania problemu ;p GML ERROR in action number 1 of Mouse Event for Glob Right Released for object pokoj: Error in code at line 4: global.pokaz.XX=idda.x at position 23: Unknown variable x Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 GML global.pokaz.XX=idaa.x adresowanie zmiennych globalnych ?? wiesz co, pierwszy raz o tym słyszę xD global.pokaz.YY i global.pokaz.XX nie są globalne lecz lokalne w obiekcie o tymże id. niesety, pisząc słówko global. a po nim nazwę, definiujemy zmienną globalną :blink: a pozatym dlaczego tu są aż dwie kropki ? całkowicie namieszałeś. Nie można od tak sobie w nazwie zmiennej stawiać kropki xD gdyż jest ona zarezerwowana do adresowania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 @PRT: GML if global.wojo=1 //warunek { idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda if ( idda != noone ) //ponoc instance_position jezeli nei ma obiektu na tej pozycji zwraca noone { global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda global.pokaz.YY=idda.y // j.w tyle że y. global.pokaz.ruch=1 //reszta global.pokaz.alarm[0]=global.pokaz.predkosc //reszta } } Misiek, co ty gadasz? Ja mam u siebie np. GML global.fightObj.x i działa :P Po prostu pod zmienną global.fightObj przechowuję id obiektu i odwołuję się do jego x :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
RaistlinBlackRobe Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 GML global.pokaz.XX=idaa.x adresowanie zmiennych globalnych ?? wiesz co, pierwszy raz o tym słyszę xD niesety, pisząc słówko global. a po nim nazwę, definiujemy zmienną globalną :blink: a pozatym dlaczego tu są aż dwie kropki ? całkowicie namieszałeś. Nie można od tak sobie w nazwie zmiennej stawiać kropki xD gdyż jest ona zarezerwowana do adresowania. No przecież powiedział że global.pokaz zawiera ID instancji objektu wojo. Co oznacza, że on chce się odwołać do lokalnej zmiennej XX instancji, która ma id takie jak global.pokaz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 Masz racje. Zwracam honor. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 9 Lutego 2008 Autor Udostępnij Opublikowano 9 Lutego 2008 @Misiek999 chyba dokładnie nie przeczytałeś. EDIT: za wolno pisałem :) @Yoda niestety istnieje tzn kiedy usunę te x+ i y+ jak napisałem w 1-szym poście to pod global.patrz mam normalnie id. Naprawdę mnie to zadziwia ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 @PRT: troche edytowałem w tamtym poście więc napiszę jeszcze raz: GML if global.wojo=1 //warunek { idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda if ( idda != noone ) //ponoc instance_position jezeli nei ma obiektu na tej pozycji zwraca noone { global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda global.pokaz.YY=idda.y // j.w tyle że y. global.pokaz.ruch=1 //reszta global.pokaz.alarm[0]=global.pokaz.predkosc //reszta } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 9 Lutego 2008 Autor Udostępnij Opublikowano 9 Lutego 2008 No więc zadziałało ;) ale istnieje inny problem przed narysowaniem tej linii zużycie procesora skacze do 100% po kilku sekundach pojawia się linia i gra idzie dalej :P dziwne ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 9 Lutego 2008 Udostępnij Opublikowano 9 Lutego 2008 To raczej nie jest wina tego warunku :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 9 Lutego 2008 Autor Udostępnij Opublikowano 9 Lutego 2008 Dokładnie ;) Wina tkwi teraz w linijce rysowania paska który ładuje się procentowo ;] GML draw_line_width_color(global.pokaz.x,global.pokaz.y,global.pokaz.xxx,global.pokaz.yyy,3,c_red,c_red) Pewnie przez jakieś obliczenia z pierwszego postu , to już jakoś znajdę ;) Dzięki Yoda. Edit: dokładnie tu zamula diss=dis*procent/100 :P a winą było że na początku procent=0 ;] dałem 1 i już śmiga 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ę