Matrix_ Opublikowano 10 Listopada 2014 Udostępnij Opublikowano 10 Listopada 2014 Witam, ostatnio tworząc grę opierającą się na misjach i questach pisałem osobny kod do każdego zadania. Jak zniknie jakaś, lub coś zostanie zebrane. Lecz w tym wszystkim brakowało mi poukładania. Staram się teraz ułatwić jakoś kod, grę wyrzuciłem, i chcę napisać ją jeszcze raz. Chodzi mi o to, żeby móc do każdej misji wpisywać prosto, {nazwa | co trzeba zrobić(jakieś skóty kill-że trzeba zabić, pick-zebrać itp. | obiekt do zabicia/zebrania | ilość ) Chciałem zrobić coś jak osiągnięcia steam, kilkadziesiąt zadań, otwarta przestrzeń, lub jakiś wątek główny. Tylko nie wiem jak się do tego zabrać ;/ czy zrobić to w jakimś osobnym pliku .INT, czy jakoś w skryptach... Mógłby ktoś jakoś pomóc ? Mam nadzieję że dobrze opisałem o co mi chodzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Flame Opublikowano 11 Listopada 2014 Udostępnij Opublikowano 11 Listopada 2014 Możesz stworzyć skrypt w którym zdefiniujesz sobie argumenty (argument0, argument1 itd.) i potem już tylko ustawiać ich wartości w kodzie obiektu. Np. stworzyłeś sobie skrypt scr_mission i w skrypcie zdefiniowałeś sobie ,że argument0=zmienna odpowiadająca za nazwę misji, argument1=zmienna odp. za kille i tworzysz w ten sposób normalną własną funkcje : scr_mission(nazwa misji, kille) którą piszesz już w kodzie obiektu. GML //scr_mission(nazwa_misji,kille do zdobycia); globalvar nazwa, max_kill, mission_completed; nazwa=argument0; max_kill=argument1; mission_completed=0; if kill==max_kill && mission_completed==0 { show_message('Ukończyłeś misje'); mission_completed=1; kill=0; } if mission_completed==1 { //coś się dzieje dostajesz kase i nowe diax eq show_message('jej diax eq'); mission_completed=2; //żebyś nie mogł robić znowu tej misji } no i oczywiście musisz tą zmienną kill gdzies se zdefiniować w obiekcie. a w stepie obiektu : GML scr_mission('zabij_smoki',10); I na tej zasadzie twórz sobie dalej argumenty np. obiekt do zabicia itp. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 11 Listopada 2014 Autor Udostępnij Opublikowano 11 Listopada 2014 Troszkę rozbudowałem to co podałeś. GML // scr_mission( nazwa , co trzeba zrobić , jaka ilosc , ile sie dostaje ) globalvar name , type , amount , completed , gainscore; name=argument0 type=argument1 amount=argument2 gainscore=argument3 completed=0 if type==zabij && completed==0 { if kills=amount && completed==0 { show_message("Misja: " + string(name) + " zostala zakonczona pomyslnie."); completed=1 kills=0 } } else if type==zbierz && completed==0 { if picked=amount && completed==0 { show_message("Misja: " + string(name) + " zostala zakonczona pomyslnie."); completed=1 amount=0 } } if completed==1 { if gainscore==1{ show_message("Otrzymales "+string(gainscore)+ "punkt doswiadczenia.")} else if 1<gainscore<4{ show_message("Otrzymales "+string(gainscore)+ "punky doswiadczenia.")} else if gainscore>5{ show_message("Otrzymales "+string(gainscore)+ "punkow doswiadczenia.")} score+=gainscore completed=2; } Chyba dobrze ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Flame Opublikowano 11 Listopada 2014 Udostępnij Opublikowano 11 Listopada 2014 Troszkę rozbudowałem to co podałeś. Tylko ,że z tym completed to nie pomyślałem bo jak skończysz jedną misje to completed wciąż będzie na 2 ustawione gdy będziesz chciał wziąć drugą. Ale ogólnie to jest dobrze ;d tylko właśnie z tym completed byś musiał pokombinować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 11 Listopada 2014 Autor Udostępnij Opublikowano 11 Listopada 2014 Tylko ,że z tym completed to nie pomyślałem bo jak skończysz jedną misje to completed wciąż będzie na 2 ustawione gdy będziesz chciał wziąć drugą. Ale ogólnie to jest dobrze ;d tylko właśnie z tym completed byś musiał pokombinować. Proste :D Dodać jeszcze jedną zmienna ID :) Wtedy nie będzie problemu. 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ę