Skocz do zawartości

Rest


Itachi

Rekomendowane odpowiedzi

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

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

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

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

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

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

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

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

@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

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ę...