Skocz do zawartości

wybór broni


Rekomendowane odpowiedzi

witam mam pewiemn problem.heh...

robie grę w której będzie 100 broni :P

i niemoge sobie z nimi poradzić jeśli chodzi o ich wybieranie.

bronie podzieliłem na grupy czyli 10 broni pod 1 klawisz od 1 do 0 (1-2-3-4-5-6-7-8-9-0)

no i niemoge uporać się z :

jak się kliknie 1 to ma sie ustawić broń nr1

po ponownym naciśnięciu 1 ma się ustawić broń nr2 i tak dalej. aż do nr10

i jeśli niema jakiejś broni to aby przeszedł do następnej.

proszę o pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Pisałem poniższy kod z pamięci, może być nie do końca poprawny.

 

Załóżmy że masz 100 broni - niech ich id to liczby od 0 do 99.

 

Aby pobrać numer obecnie używanej broni potrzebne są dwie zmienne - offset i pozycja:

 

if(keyboard_check_pressed(przycisk 1)) {
if(offset!=0) { offset=0; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 2)) {
if(offset!=10) { offset=10; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 3)) {
if(offset!=20) { offset=20; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 4)) {
if(offset!=30) { offset=30; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 5)) {
if(offset!=40) { offset=40; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 6)) {
if(offset!=50) { offset=50; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 7)) {
if(offset!=60) { offset=60; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 8)) {
if(offset!=70) { offset=70; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 9)) {
if(offset!=80) { offset=80; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}
if(keyboard_check_pressed(przycisk 0)) {
if(offset!=90) { offset=90; pozycja=0; } else { pozycja+=1; }
if(pozycja==10) pozycja=0;
}

idbroni=offset+pozycja;

 

Mając id droga dalej jest prosta :)

To rozwiązanie ma jeszcze jedną zaletę - wystarczy, że podzielisz zmienną offset przez 10 i otrzymujesz id grupy broni (od 0 - 9)

 

Mała podpowiedź: Jeśli chcesz, by w przypadku broni ustawiała się następna, to polecałbym stworzenie tablicy np. amunicja, w której indeksem byłoby id broni a wartością ilość amunicji. Jeśli ilość amunicji = 0 to broni nie ma. Czyli, dodając taki kawałek kodu

 

if(amunicja[offset+pozycja]==0) pozycja+=1;

 

do każdego przypadku (a gdzie to już sam pomyśl) masz sprawdzanie czy taka broń jest.

 

UWAGA - zakładam, że co najmniej jedna broń z grupy jest dostępna. Jeśli tak nie jest, to będziesz musiał pokombinować - napisać skrypt, zawierający pętle iteracyjną dla 10 elementów tablicy amunicja, o indeksie początkowym równym id pierwszej broni z grupy, którą chcesz wybrać. Jeśli suma amunicji wszystkich iterowanych elementów wyniosłaby zero, to nie rób nic, w przeciwnym wypadku wykonaj zdarzenia spod danego klawisza. Mam nadzieję, że jasno napisałem ;p?

Odnośnik do komentarza
Udostępnij na innych stronach

ok jakoś działa.

ale mam jeszcze drógie pytanie wogule nie na temat:

niemoge sobie poradzić z pewną żeczą :P

a dokładniej z samochodami i weypointami.

ja niechce używać wbudowanych weypointów w gmie tylko jako obiekty

więc mam 2 obiekty

-o_samochod

-o_weypoint

i w obiekcie o_weypoint on createjest coś takiego:

global.weypoint_number+=1
number_weypoint=global.weypoint_number

i ja bym chciał aby samochód jechał w stronę weypointu który ma number_weypoint=1.

i jeśli do niego dojedzie,zbliży się do niego to ma jechać do weypointu który ma number_weypoint=2

itd...

Odnośnik do komentarza
Udostępnij na innych stronach

ok jakoś działa.

ale mam jeszcze drógie pytanie wogule nie na temat:

niemoge sobie poradzić z pewną żeczą :P

a dokładniej z samochodami i weypointami.

ja niechce używać wbudowanych weypointów w gmie tylko jako obiekty

więc mam 2 obiekty

-o_samochod

-o_weypoint

i w obiekcie o_weypoint on createjest coś takiego:

global.weypoint_number+=1
number_weypoint=global.weypoint_number

i ja bym chciał aby samochód jechał w stronę weypointu który ma number_weypoint=1.

i jeśli do niego dojedzie,zbliży się do niego to ma jechać do weypointu który ma number_weypoint=2

itd...

A to w GMie są jakieś wbudowane waypointy? :blink:
Odnośnik do komentarza
Udostępnij na innych stronach

A, to już rozumiem o co chodzi

To proste, wystarczy przy kolizji z waypointem dać

CODEdirection=point_direction(x,y, nastepny_waypoint.x,nastepny_waypoint.y)

no tylko ja chciałbym robić te weypointy jako 1 obiekt.

czyli na mapie kilka tycgh samych obiektów

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Cekol, a co to za problem? I nie pisz weypoint tylko waypoint!

 

1) Robisz obiekt wp.

2) Ustawiasz na planszy parę obiektów wp, wzdłuż drogi.

3) Spisujesz kolejne id wszystkich wp i tworzysz globalną tablicę z ich numerkami w odpowiedniej kolejności. Dodajesz jeszcze globalną zmienną z sumą obiektów wp.

4) Robisz samochodowi takie coś by podążał w stronę wp z pierwszego indeksu tablicy (dajmy na to w creation code w samochodzie indeks=0;)

5) Dajesz warunek, że jeżeli samochód jest już bardzo blisko wp, to indeks +=1; i teraz ma podążać za kolejnym wp.

6) Jeżeli indeks przekroczy liczbę wp z globalnej tablicy, to indeks = 0;

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