Itachi Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Witam Zrobiłem że jak się kliknie D to dodaje 10% many i 10% życia, jak zrobić żeby nie można było się poruszać póki życie i mana nie naładują się do końca?( global.hp_max i global.manamax to są maksymalne wartości a global.hp i global.mana to aktualne) I jak zrobić żeby po jednokrotnym kliknięciu D ładowało się do maksymalnych wartości? Z góry dzięki za pomoc i pozdrawiam :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Czy chodzi ci o takie płynne przejście z wartości aktualnej do maxymalnej a nie natychmiastowe? Jak tak to w moim uploaderze zamieściłem przykład jak takie coś wykonać https://gmclan.org/up539_14_p_ynna_zmiana_warto_ci.html Kod jest prosty: GML (step) var _diff; _diff = wartosc_aktualna - wartosc_ustawiona; wartosc_aktualna -=(_diff) / modyfikator_szybkosci_zmian Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tismas Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Ale jak on wpisze to w step to wtedy nie będzie po kliknięciu D :) I przyłączam się do prośby ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Tak chodzi mi o to, tylko że po jednorazowym kliknięciu D i żeby gracz nie mógł się wtedy ruszać :D PS: Nie mogłem otworzyć przykładu bo mam GM 8.0 :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Po kliknięciu D ma tylko zmienić wartość_ustawioną a reszta się już sama załatwi. EDIT: @up jak chcesz do tego dorobić jeszcze blokadę ruchu to stwórz w create zmienną np. blok = false; obejmij cały kod na ruch w klamry z warunkiem: GML if ( blok == false ) { // tutaj kod na twoj ruch } a w stepie : GML if ( round(wartosc_aktualna) >= round( wartosc_ustawiona ) ) blok = false; W 'D' pod nastawieniem wartosci_ustawionej dodaj jeszcze: blok = true; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Tak ma być? bo albo nie zrozumiałem albo mi coś nie działa :D W create: GML blok=false GML if ( blok == false ) { keyboard_key_press(vk_left) keyboard_key_press(vk_down) keyboard_key_press(vk_up) keyboard_key_press(vk_right) } W step: GML var _diff; _diff = global.hp - global.hp_max; global.hp -=(_diff) / 1 GML if ( round(global.hp) >= round( global.hp_max ) ) blok = false; W D: Probowałem tak: GML blok=true I tak: GML global.hp+=0.1*global.hp_max global.mana+=0.1*global.manamax blok = true; Jeśli coś źle to popraw proszę :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Prawie GML (create) blok=false; nastawa = global.hp; GML if ( blok == false ) { // sterowanie } GML (step) var _diff; _diff = global.hp - nastawa; global.hp -=(_diff) / 5; // tutaj dałeś za mało, 1 oznacza w tym przypadku natychmiast if ( round(global.hp) >= round( nastawa ) ) blok = false; trzeba ustawić zmienna nastawa tak by wynosiła obecne hp + 10% ale nie przekroczyła max HP a więc: GML (D) nastawa = min(global.hp + 0.1*global.hp_max, global.hp_max); blok = true; Podobnie zrób dla many Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Jest tak że chodzę i cały czas się ładuje i jak jest 1000 to spada co chwila i się ładuje znowu do 1000 A mi chodzi żebym jak stracił to klikał D on siadał(z siadaniem sobie poradze :)) i wtedy mu dochodziło powoli hp i żeby wtedy nie można było się ruszyć(taki opis żeby wszystko było jasne:D) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 A mi chodzi żebym jak stracił to klikał D on siadał(z siadaniem sobie poradze ) i wtedy mu dochodziło powoli hp i żeby wtedy nie można było się ruszyć(taki opis żeby wszystko było jasne:D) OMG trzeba było tak od razu to było by mniej kombinowania :D GML (create) siad = false; nastawaHP = 0; nastawaMP = 0; GML if ( siad == false ) { //sterowanie } GML (D) if ( siad == false ) { siad = true; nastawaHP = min(global.hp + 0.1*global.hp_max, global.hp_max); nastawaMP = min(global.mp + 0.1*global.mp_max, global.mp_max); } GML (step) if ( siad ) { global.hp = min( nastawaHP, global.hp + predkosc_dodawania ); global.mp = min( nastawaMP, global.mp + predkosc_dodawania ); if ( global.hp == nastawaHP && global.mp == nastawaMP ) siad = false; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Teraz nadal można się ruszać i jak się raz kliknie D to już cały czas się ładuje jak spadnie :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 Przekopiowałem powyższy kod do GMa i działa: https://gmclan.org/up539_14_przyk_ad.html Coś musiałeś nie tak zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Ok już prawie wszystko ok, tylko że jeszcze jak zrobić żeby się nie dało przerwać póki nie załaduje się mana i hp do końca, bo ładuje się jak trzymam tylko :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 No przecież chciałeś by dodawało 10% z maxymalnego hp a to jest stała. edytowałeś :P EDIT: Jeżeli w stepie zrobiłeś dokładnie tak: GML if ( siad ) { global.hp = min( nastawaHP, global.hp + predkosc_dodawania ); global.mp = min( nastawaMP, global.mp + predkosc_dodawania ); if ( global.hp == nastawaHP && global.mp == nastawaMP ) siad = false; } to nie ma opcji żebyś mógł proces napełniania hp przerwać. To jest jedyne miejsce w kodzie gdzie zmienna blokująca ruch zmienia stan na false ( czyli przestaje blokować ) a jak widać stanie się to tylko i wyłącznie gdy hp i mp osiągnie +10% lub mniej w przypadku dojścia do limitu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itachi Opublikowano 18 Listopada 2011 Autor Udostępnij Opublikowano 18 Listopada 2011 Dzięki wielki, już wszystko działa A tak ps to mi chodziło żeby nie leciało tak po pięć tylko po 10% i wolno, zmieniłem ze po 1 dochodzi do 100% i tak też może być, dzięki wielkie :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Listopada 2011 Udostępnij Opublikowano 18 Listopada 2011 @up następnym razem jakoś lepiej konstruuj swoje pytanie bo dopiero teraz wyjaśniłeś dokładnie o co ci chodziło. No więc teraz te zmienne nastawy w ogóle nie są potrzebne skoro ma dodawać max hp i mp. GML (create) siad = false; GML if ( siad == false ) { //sterowanie } GML (D) if ( siad == false ) siad = true; GML (step) if ( siad ) { global.hp = min( global.hp_max, global.hp + 0.1*global.hp_max ); global.mp = min( global.mp_max, global.mp + 0.1*global.mp_max ); if ( global.hp == global.hp_max && global.mp == global.mp_max ) siad = false; } Teraz ci będzie dodawać po 10% z każdego dopuki nie dojdzie do maxa 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ę