Skocz do zawartości

Zmienna w skrypcie


Ganjalf

Rekomendowane odpowiedzi

Mam problem, otóż chcę jako argument w skrypcie podać zmienną ale coś nie działa. Może pokaże:

GML
if qs[akt_qs,0]!='nic' and keyboard_check_pressed(ord(argument0)){ //arugment0 - jaka litera ma być wciśnięta

argument1+=argument2/10 //Tu ma być zmienna(arg1) += wartość(arg2) do tej zmiennej

qs[akt_qs,2]-=1

}

//Kiedy zamiast 'argument1' wstawiam zmienną - działa.

//Ale ja chciałbym zastosować to z roznymi zmiennymi.

//Skrypt nazywa się 'Uzycie'

//kod w obiekcie:

Uzycie('E',hp,maxhp)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Skoro if ma być prawdziwy, gdy wciśnięta jest litera przekazana w pierwszym argumencie, to chyba keyboard_check, bo keyboard_check_pressed zadziała tylko w momencie przejścia klawisza ze stanu niewciśniętego we wciśnięty (1 step, nigdy dłużej).

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Aaaa :) Bo przecież przekazujesz wartośc zmiennej a nie nazwę. Ty chcesz zrobić tak:

 

GML
variable_local_set(argument1, variable_local_get(argument1)+(argument2/10));

GML
Uzycie('E','hp',maxhp); // apostrofy dookoła HP!!!</span></span>

 

Oczywiście nie zalecam takiego sposobu i nie zadziała on tez w GM:Studio.

 

To co do tej pory robiłeś to było np.

 

hp = 10;

maxhp = 20;

 

argument1+=argument2/10 czyli 10+=20/10;

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Bo chcesz żeby zmienną HP modyfikowało, a nie argument1 prawda ? Więc musisz przekazać nazwę zmiennej, a nie jej wartość, dlatego też variable_local_set jest. A jak jest błąd, to przeczytaj jego treść (ofc. w apostrofach miało być tylko w wywołaniu skryptu).

Odnośnik do komentarza
Udostępnij na innych stronach

niemam teraz czasu to czytac cale, ale co do hp to mozes chyba tez uzyc

GML
if qs[akt_qs,0]!='nic' and keyboard_check_pressed(ord(argument0)){ //arugment0 - jaka litera ma być wciśnięta

argument1+=argument2/10 //Tu ma być zmienna(arg1) += wartość(arg2) do tej zmiennej

qs[akt_qs,2]-=1

}

//Kiedy zamiast 'argument1' wstawiam zmienną - działa.

//Ale ja chciałbym zastosować to z roznymi zmiennymi.

//Skrypt nazywa się 'Uzycie'

//kod w obiekcie:

Uzycie('E',hp,maxhp)

return hp;

i uzycie
GML
hp=Uzycie('E',hp,maxhp)
Odnośnik do komentarza
Udostępnij na innych stronach

przepraszam, zle napisalem v pospiechu <_<

daj tak

GML
//script Uzycie

if qs[akt_qs,0]!='nic' and keyboard_check_pressed(ord(argument0)){ //arugment0 - jaka litera ma być wciśnięta

argument1+=argument2/10 //Tu ma być zmienna(arg1) += wartość(arg2) do tej zmiennej

qs[akt_qs,2]-=1

return argument1;

}

GML
// aktyvacja scriptu

hp=Uzycie('E',hp,maxhp);
ten sposob bierze vartosc zmiennej a vraca po vykonaniu jako rezultat do tej samej zmiennej :)

 

albo uzyj sposob gnyska, tez dobry dla <= GM8.1 tu zas dajesz ime zmienne a zapisujes do niej wartosc v scriptu.

 

jesli jest nadal problem, to go bardziej sprecizuj :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

To nie jest tak, że jak podasz do skryptu zmienną HP, to argument1 się zmienia w HP. To jest tak, że jak podasz zmienną HP to jej WARTOŚĆ zostanie przypisana do argument1. Zatem będzie tak, że

 

hp = 10;

argument1 = 10;

 

I tyle.

 

Btw. jeśli to nie jest zmienna tymczasowa, to skrypt może operowac na zmiennych aktualnego obiektu, zatem możesz zamiast argument1 napisać HP. Albo zrobić tak:

 

argument1.hp

 

i za argument1 podawać ID obiektu któremu zmieniamy ID - id obiektu jest pod zmienną id. ( Uzyj('E', id, maxhp) ).

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