Skocz do zawartości

Ułątwiający programowanie kod na - Misje / Osiągnięcia


Matrix_

Rekomendowane odpowiedzi

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

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

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

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

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

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