MmF2 Ekwipunek
-
MmF2 Ekwipunek
Zdarzenia będą opisane w następujący sposób:
Kod:
+Warunek
+Warunek //komentarz//
-Akcja
KOLEJNOŚĆ JEST BARDZO WAŻNA!
Ekwipunek
Wstawiamy do naszej gry obiekt Sub-Application i ustawiamy:
(numer 2 jest numerem ramki, w której będzie się znajdowało nasze Inventory) oraz ODZNACZAMY "Follow the frame"
Przejdźmy zatem do tej ramki i powstawiajmy kilka obiektów.
Będą to:
OA kratka o rozmiarach takich jakie będą miały nasze przedmioty. Ustawiamy tą kratkę ( JEDNĄ ) tam, gdzie chcemy by była pierwsza kratka naszego plecaka (lewy górny róg).
Gdzieś musimy przechowywać info o tych obiektach, więc stwórzmy sobie jeszcze obiekt "Array" i nadajemy mu X= ilości kratek w poziomie, Y= ilości kratek w pionie i Z=2.
Oprócz tego musimy stworzyć sloty w które wkładać będziemy używane przedmioty - w tym celu musimy użyć PPM -> Clone ponieważ nie mogą być to te same obiekty. Nadamy im też grupę Traps.
ARRAY
X- pozycja
Y- pozycja
Z0-Z którego ini będą odczytywane dane
Z1-Numer pozycji przedmiotu w ini
w moim przypadku wygląda tak:
Ostatnią rzeczą jaka będzie potrzebna jest Active Picture, nadam mu nazwę bron i ustawie mu grupę Group.0 (bronie) oraz Collectables (dla wszystkich przedmiotów).
Teraz co do zdarzeń:
Kod:
+Start of Frame
-Start loop "kratki" XX times // Za "XX" wstawiasz liczbę kratek które chcesz mieć (minus jeden bo jedną mamy już wstawioną)//
-Write Value 1 to (0,0,0) // Tego nie powinno być - wstawiam to do sprawdzenia czy działa//
-Write Value 1 to (0,0,1) // Powinno być "Load array from file"//
-bron: destroy
-Start loop "items" NObjects("kratka") times
Kod:
+On loop "kratki"
-Create object kratka at (0,0) layer 1
-kratka: Set Alterable Value A to LoopIndex("kratki")+1
-kratka: Set X position to Alterable Value A( "kratka" ) mod 5*32 //5 oznacza, że będzie 5
kolumn kratek a 32 to rozmiar kratek//
-kratka: Set Y position to 128+Alterable Value A( "kratka" )/5*32 // Jak wyzej, z tym ze 128 to jest pozycja Y pierwszej kratki (przy X było = 0)//
To sprawi, że mamy w pamięci przedmiot typu 1 o numerze porządkowym 1 w kratce (0,0) oraz stworzy resztę kratek o ponumerowanych wartościach A.
Kod:
+On loop "items"
+ValueAtXYZ( "Array", LoopIndex("items") mod 5, LoopIndex("items")/5, 0) = 1 //Typ przedmiotu = 1 (broń)//
-Ini: Set current file to Appdrive$+Appdir$+"\Data\weapons.ini"
-Ini: Set current group to Str$(ValueAtXYZ( "Array", LoopIndex("items") mod 5, LoopIndex("items")/5, 1)) //numer w nazwie grupy jest numerem przedmiotu//
-Create bron at (0,0) layer 1
-bron: New picture: Appdrive$+Appdir$+"\Data\"+ItemString$( "Ini", "ico")
-bron: Set Alterable Value A to LoopIndex("items")
-bron: Set Alterable Value B to ItemValue( "Ini", "dmg")
-jakisobiekt: Set internal flag X on
Ten fragment kodu trzeba powtórzyć dla każdego innego typu przedmiotu (bron/tarcza/helm/...) ew mozna wszystkie wartosci trzymac w jednym ini, ale tak jest przejrzysciej.
Kod:
+On loop "items"
+jakisobiekt: internal flag X is on
+Alterable value A of kratka = LoopIndex("items")
+Alterable value A of Group.Collectables = LoopIndex("items")
-kratka: Set internal flag 0 on //kratka uzywana//
-jakisobiekt: Set internal flag X off
-Group.Collectables: Set position at (0,0) from kratka
Teraz mamy odczytywanie danych z array, przedmioty znajdą się w naszym plecaku. 
Aby poprawnie zadziałało musimy mieć też:
..\Data\weapons.ini :
Kod:
[1]
ico=1.bmp
dmg=5
Oraz plik 1.bmp o rozmiarach kratki.
Teraz kwestia podnoszenia tych przedmiotów w samym plecaku. Tego nie będę wyjaśniał krok po kroku, podam w tej kolejności w której to działa... ponieważ jeśli zostanie zmieniona pojawiają się różniaste bugi. W szczególności zapętlenie "User clicks..." i przedmiot zostaje jednocześnie podniesiony i upuszczony lub na odwrót.
Kod:
+Group.Collectables: iternal flag 0 is on
-XMouse: Set Counter to XMouse //Tutaj użyłem dwóch liczników, których minimalna wartość jest = 0//
-YMouse: Set Counter to YMouse //A ich maxymalna wartość o 32 mniej niż szerokość/wysokość okna//
-Group.Collectables: Set X position to value( "XMouse" ) //Można to ominąć, i wstawić tutaj poprostu XMouse//
-Group.Collectables: Set Y position to value( "YMouse" ) //Ale wtedy obiekty będą wylatywały poza okno plecaka//
-Group.Collectables: Bring to front
Kod:
+jakisobiekt: internal flag Z is on
-jakisobiekt: Set internal flag Y off //Flaga odpowiadająca za to czy jakiś przedmiot jest podniesiony//
-jakisobiekt: Set internal flag Z off //Ta natomiast zapobiega zapętleniu "User clicks..."//
Kod:
+User clicks with left button on kratka //odkładanie przedmiotu do plecaka//
+kratka: internal flag 0 is off
+jakisobiekt:: internal flag Y is on
+Group.Collectables: internal flag 0 is on
-kratka: Set internal flag 0 on
-Group.Collectables: Set internal flag 0 off
-Group.Collectables: Set Alterable Value A to Alterable Value A( "kratka" )
-Group.Collectables: Set position at (0,0) from kratka
-Wszystkie kratki w które wsadzamy przedmioty (te, które nosimy): Set direction to "prawo" //prawo - zwykła animacja, a lewo - animacja z zielonym obramowaniem czy czymś takim (daje znać użytkownikowi, że w ten slot można wsadzić przedmiot)//
-jakisobiekt: Set internal flag Z on
Kod:
+User clicks with left button on Group.Traps //Zakładanie przedmiotów//
+Group.Traps: is facing a direction "lewo"
+Group.Traps: internal flag 0 is off
+jakisobiekt: internal flag Y is on
+Group.Collectables: internal flag 0 is on
-Group.Collectables: Set internal flag 0 off
-Group.Collectables: Set Alterable Value A to 0
-Group.Collectables: Set position at (0,0) from Group.Traps
-Wszystkie kratki w które wsadzamy przedmioty (te, które nosimy): Set direction to "prawo"
-jakisobiekt: Set internal flag Z on
-Group.Traps: Set internal flag 0 on
Kod:
+User clicks with left button on Group.Collectables //Podnoszenie przedmiotu//
+jakisobiekt: internal flag Y is off
+Mouse pointer is over kratka
-kratka: Set internal flag 0 off
-Group.Collecrables: Set internal flag 0 on
-jakisobiekt: Set internal flag Y on
Kod:
+User clicks with left button on Group.Collectables //Zdejmowanie przedmiotu//
+jakisobiekt: internal flag Y is off
+Group.Collectables is overlapping Group.Traps
-Group.Colectables: Set internal flag 0 on
-jakisobiekt: Set internal flag Y on
-Group.Traps: Set internal flag 0 off
Kod:
+Only one action when event loops // Zmiana animacji kratki w której możemy się wyposażyć w dany przedmiot //
+Group.0: internal flag 0 is on // jesli "bron" jest podniesiona // Trzeba to powielić tyle razy ile będzie typów przedmiotów //
-kratka_na_bron (ta z Group.Traps) Set direction to "lewo"
Powinno działać ;]
-
-
pro train perfect torrent, gg w samsungu c3050, 2004 ray download, m.i.a. mission in asia gryonline.pl, colette rs, paint ball najtańsze markery, fallout 3 nie znajduje płyty, m jak miłość 790, slowa ktore czyta sie tak samo z obu stron, godzilla avi chomikuj, oszukać przeznaczenie 1 polski lektor, dire straits communique rs, latex, 100 naboi download, anal amateur chomikuj, peb garmin mobile, automapa 6.6.1 aktywator, x-men geneza download, gry red alert 4
Tagi dla tego wątku
Uprawnienia umieszczania postów
- Nie możesz zakładać nowych tematów
- Nie możesz pisać wiadomości
- Nie możesz dodawać załączników
- Nie możesz edytować swoich postów
-
Zasady na forum
Znajdziesz nas na: