Ganjalf Opublikowano 28 Października 2013 Udostępnij Opublikowano 28 Października 2013 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 Więcej opcji udostępniania...
szmalu Opublikowano 28 Października 2013 Udostępnij Opublikowano 28 Października 2013 A argument przypadkiem nie jest wartością stałą wewnątrz skryptu? A ty ją zmieniasz, nie wiem czy tak się da. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Października 2013 Administratorzy Udostępnij Opublikowano 29 Października 2013 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 Więcej opcji udostępniania...
Ganjalf Opublikowano 29 Października 2013 Autor Udostępnij Opublikowano 29 Października 2013 Chyba się nie zrozumieliśmy :D Działa wszystko z wyjątkiem dodawania wartości do zmiennej (czyli w tym przypadku nie przybywa hp, ale maleje ilość posiadanego przedmiotu) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Października 2013 Administratorzy Udostępnij Opublikowano 29 Października 2013 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 Więcej opcji udostępniania...
Ganjalf Opublikowano 29 Października 2013 Autor Udostępnij Opublikowano 29 Października 2013 Czemu 'hp' w apostrofie, skoro jest to nazwa zmiennej którą zdefiniowałem w create: hp=100? Od razu wyskakuje błąd ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 29 Października 2013 Administratorzy Udostępnij Opublikowano 29 Października 2013 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 Więcej opcji udostępniania...
Ganjalf Opublikowano 29 Października 2013 Autor Udostępnij Opublikowano 29 Października 2013 "Bo chcesz żeby zmienną HP modyfikowało, a nie argument1 prawda ?" Kiedy u mnie argument1 to właśnie zmienna hp Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 29 Października 2013 Udostępnij Opublikowano 29 Października 2013 GML zmienna=argument1 zmienna+=argument2/10 A gdyby tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 29 Października 2013 Udostępnij Opublikowano 29 Października 2013 "Bo chcesz żeby zmienną HP modyfikowało, a nie argument1 prawda ?" Kiedy u mnie argument1 to właśnie zmienna hp Nie, argument1 to wartość zmiennej hp. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ganjalf Opublikowano 29 Października 2013 Autor Udostępnij Opublikowano 29 Października 2013 Kiedy ja w tym skrypcie nie chcę użyć nazwy zmiennej żeby móc to wykorzystać gdzie indziej, tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 29 Października 2013 Udostępnij Opublikowano 29 Października 2013 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 Więcej opcji udostępniania...
Ganjalf Opublikowano 29 Października 2013 Autor Udostępnij Opublikowano 29 Października 2013 Niestety nie, jest jakiś zamiennik zamiast argumentów albo coś..? ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 29 Października 2013 Udostępnij Opublikowano 29 Października 2013 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Października 2013 Administratorzy Udostępnij Opublikowano 30 Października 2013 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 Więcej opcji udostępniania...
Ganjalf Opublikowano 30 Października 2013 Autor Udostępnij Opublikowano 30 Października 2013 Nwm czemu ale kod w obiekcie miał wyglądać: GML hp+=Uzycie('E',10,0) //W drugim miałem podać ile hp chce dodać a w 3 - 0 xF</span></span> Dzięki za pomoc! Gnysek, ereg - w połączeniu dwóch sposobów się udało ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 30 Października 2013 Udostępnij Opublikowano 30 Października 2013 piekno programowania jest w tym, ze moza isc wieloma sciezkami :) jak bys dokladnie analizoval caly kod, to da sie uzasadnic dlaczego ma byc hp+=Uzycie('E',10,0) a nie hp=Uzycie('E',hp,maxhp) :) 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ę