ARMA2 BASIC MISSIO OPAS - Mututietoa ja viilausta

Keskustelu Arma I-, II- ja III- sekä OFP-tehtävistä

Moderators: Kegetys, Broileri, Raunhofer

Post Reply
User avatar
Raunhofer
Personnel
Posts: 1520
Joined: Thu, 24.7.2008, 15.12
Location: Oulu
Contact:

Post by Raunhofer » Sun, 5.7.2009, 17.55

ARMA2 BASIC MISSION TEKO PART I
Seuraavaksi tulette näkemään 22:lla .JPG muotoisella kuvalla varustetun oppaan ArmA2 Editoria varten. Teen tässä pienimuotoisessa oppaassa hyvin yksinkertaisen tehtävän, jota voitte soveltaa omiin ensimmäisiin ARMA2 tehtäviinne.

Huomatkaa toki, että tehtävä jonka teen, on hyvin typerä eikä siinä ole päätä saatika häntää. Hyödyntäkää tätä opasta omassa harjoittelussanne soveltavana oppaana ja pyrkikää tekemään myös omia ratkaisuja. Mitä enemmän ongelmia tulee, sitä parempi, sillä ongelmat ja niiden ratkaisu se vasta opettaakin.

Teen tehtävän alusta loppuun ja tämän oppaan sisällöllä teoriassa pitäisi olla mahdollista tehdä ihan kunnollisiakin tehtäviä. Nyt vain mielikuvitus kehiin ja muistakaa että liika yritys on liikaa ja koittakaa vältellä niitä perinteisiä 'tuhoa 1000 shilkaa ja 10000 tunguskaa' tehtäviä, kuten tämä esimerkkitehtävä tahtoo olla.

Aloitus:
Image

Editori on nyt auki ja kartaksi otin Utes. Voit ottaa chernarus jos haluat.

Aloitan sijoittamalla pelaajan. Valitsen listasta Units (F1) (= yksiköt ja pikanäppäin F1). Units valittuna kaksoisklikkaan karttaan siihen kohtaan, mistä haluan pelaajan aloittavan. Aukeaa uusi ikkuna:

Image

Olemme saapuneet 'Insert unit' ikkunaan. Olen kuvaan jo suomennellut joitain olennaisimpia kohtia, on kuitenkin hyvä osata englanninkieliset vastineet sillä niillä yleensä puhutaan epäselvyyksien välttämiseksi.

Kuvassa laitan pelaajan BLUFORin puolelle M1A1 TUSK panssarivaunun ampujaksi (player as gunner), joka on sinällään aika hölmöä sillä olen tekemäs MP tehtävää ja tankissa voi pelata nyt vain ampujana. (kuski ja commander ovat AI), joten muista olla seuraamatta liikaa. Fiksumpaa olisi laittaa kaikki esimerkiksi playable jolloin multiplayerin yksikönvalitsemislistassa voisi valita minkä tahansa viran tankista.


Kun detailit ovat kohdallaan, klikkaamme OK ja teemme tankille waypointin jota tässätapauksessa AI kuski tottelee:

Image

Jälleen olen suomennellut joitain tärkeimpiä kohtia. Emme tarvitse tälle waypointille (8WP) tarkempia määrityksiä kuin mitä ne heti valmiiksi ovat. Painetaan OK.

Image

Tässä kuvassa näemme miten sijoitin waypointin. Waypointteja voi olla putkeen useampiakin.

Image

Nyt teemme vihollisvaunun nimeltään tank1 (seuraa nimiä ja koodinpätkiä TARKOIN!). Olemme myös lukinneet tankin, jotta pelaajat eivät sitä voisi käyttää vaikka vihollinen sieltä loikkaisikin ulos.

Initializationiin olemme pistäneet this setBehaviour "SAFE" Joka muuttaa tankin alussa olevaa käyttäytymistä. Tässätapauksessa tankki on tilassa jossa sillä ei ole tietoa lähestyvästä vaarasta (pelaaja). Tankki voi vaihtoehtoisesti olla myös esim COMBAT, jolloin se on hyvinkin valmiina taisteluun.

Image

Tehtävässämme on tarkoitus tuhota 2 vihollisen tankkia. Nyt pitäisi luoda triggeri ensimmäisen tankin tuhoamisesta aiheutuviin seurauksiin:

Image

Ihmettelette varmaan miksi minulla on Axis a ja Axis b 50 000? Minulle on muodostunut tavaksi asettaa joku järjettömän iso luku axiksiin triggereihin jossa 'Activation' kohdassa on NONE, elikkä triggeriä ei aktivoida sille astumalla. (Minusta tämä selventää editoria kun ei ole pieniä triggerin pylpyräympyröitä ympäriinsä)

Condition kohtaan meidän pitäisi määritellä MITÄ PITÄÄ TAPAHTUA, JOTTA TRIGGERI AKTIVOITUU? Määritämme, että triggeri aktivoituu kun äsken luomamme tank1 tuhoutuu. Eli koodi on: !alive tank1

Kun Conditionin määritykset ovat täyttyneet, aktivoituu OnAct joka siis kertoo mitä triggerin aktivoiminen aiheuttaa.
Ensimmäiseksi haluamme antaa viestin tankin tuhoutumisesta, eli käytämme HINT komentoa. koodi: hint "KIRJOITA HALUAMASI TEKSTI TÄHÄN" Muistathan että koodin pätkät erotellaan ; merkillä! Eli pistä hint pätkän perään ; merkki, esim: hint "Tankki tuhoutui!";

Seuraavaksi määrittelemme tulevia lopetustriggereitä varten muuttujan tankki1=1;. Eli muuttuja tankki1 on yhtäkuin 1, kun tämä triggeri on aktivoitunut (alunperin 0).

Sitten määrittelemme tulevaan brieffiin objektin 1 olevan tehty. Koodina: objekti_1 setTaskState "SUCCEEDED"; objekti_1 on brieffissä määritelty nimi objektille ja "SUCCEEDED" merkkaa tehtävän tehdyksi. Vaihtoehtoisesti setTasState voisi olla vaikkapa "FAILED" jolloin tehtävä epäonnistuisi.

Paina OK!

Image

Esimerkkitehtäväni näyttää nyt tältä. Huomaa, olen tehnyt varoitustriggerin, joka on muuten ihan normaali trigger mutta hint onAct kohdassa kuuluu: hint "Varoitus! Vihollisia lähettyvillä!, 'activation' kohtaan on pistetty BLUEFOR ja axis a + axis b ovat 50. Conditioniin ei ole koskettu.

Image

Kuten kuva kertoo, piiloon olen pistänyt toisen vihollispanssarin, nimeltään tank2. Tankin eteen on tehty aivan normaali Waypoint tulevaa synkronointia varten (ymmärrät kohta). Waypointin tulee olla lähellä tankkia, mieluiten ihan kiinni siinä.

Image

Seuraa kuvan opastusta toisessa waypointissa.

Image

Valitse oikealta listasta synkronointityökalu eli Synchronize (F5) ja vedä sillä tank1:n tuhoutumistriggeristä viiva tank2:n ensimmäiseen waypointtiin (siihen joka on tankissa melkein kiinni, kuten kuvassa näkyy.)

Nyt tank2 ei liiku ensimmäiselta waypointiltaan VASTA KUIN tank1:n tuhoamistriggeri on aktivoitunut. Tällä kaikella aiheutamme sen, että vihun tankki lähtee syöksyyn pelaajia kohti kun pelaajat ovat tuhonneet sen ystävän.




Edited By Raunhofer on 1249127269
Luutnantti Raunhofer
Reserved Detachment CO
User avatar
Raunhofer
Personnel
Posts: 1520
Joined: Thu, 24.7.2008, 15.12
Location: Oulu
Contact:

Post by Raunhofer » Sun, 5.7.2009, 17.57

PART II

Image

Teemme tank2:lle samanlaisen tuhoutumistriggerin kuin tank1:lle. Huomaa erot nimien kohdalla. Huomaa varsinkin kohta tankki2=1;, itselläni monesti silmät harottaa ristiin ja kirjoitan tank1=2 ja mietin miksei trigu toimi, joten TARKKANA!

Nyt olemme aktivoineet muuttujat tankki1 ja tankki2 arvoon 1, molempien tankkien tuhouduttua. Tehtävä on suoritettu ja on lopetustriggerin aika.

Image

Seuraa kuvan ohjeita. Condition: tankki1==1 && tankki2==1
Muista pistää typeksi End #1, jolla määritellään triggeri lopettamaan tehtävä! Miksi juuri End #1? Noh lopussa tehtävä briefing tarvitsee tätä tietoa.

Sitten luomme ylimääräisiä yksiköitä pelaajan puolelle (tässä BLUEFOR), sillä tämähän oli multiplayer eikä mikään hikinen singlepleijeri.

Image

Teemme High Commandia käyttävän officerin. Nimesin sen omaperäisesti herra kapteeniksi (voi myös olla neiti kapteeni).

Image

Luomme myös ryhmällisen omia työkalulistan GROUP (F2) työkalulla. Huomaathan että group työkalun luomat yksiköt ovat automaattisesti NON-playableja eli niillä EI VOI PELATA. Tähän pitää tehdä muutos, joten käy ryhmän jokainen yksikkö läpi ja vaihda ne playableksi. (Violetit pylpyrät ilmestyy yksiköiden ympärille)

Image

Kuvassa näemme tilanteen oikein. Seuraavaksi käytämme työkalurivin MODULES työkalua.

Image

'Unit:' kohdasta otamme High Command - Commander ja painamme OK.

Teemme myös 2 muuta modulea, joiden unit kohtaan tulee High command Subordinate.

Image

Moduulien välille automaattisesti ilmestyy group viivat, jotka siis asettavat yksikköjä ryhmiin. Poistamme group viivat GROUP (F2) työkalulla yksinkertaisesti tarttumalla esim High Command moduulista ja vetämällä viivan "tyhjään".

Image

Seuraavaksi valitsemme taas synkronointityökalun ja vedämme High Commandista viivat Subordinate moduuleihin ja Subordinate moduuleista tankkiin ja ryhmän johtajaan. High commandista pitää vielä vetää synkronointiviiva commanderiin eli tässä tapauksessa meidän Herra kapteeni.

Elikkä mitä juuri teimme? Teimme tehtävään commanderin joka voi johtaa ARMA2n tuoman High Command ominaisuuden avulla tankkia ja ryhmää. Jos olisimme pistäneet pelkästään High Commandin ja siitä synkronoineet commanderiin olisi Commanderilla valta JOKAISEEN BLUFOR puolella olevaan yksikköön, joka periaatteessa tähän tehtävään riittäisi, mutta opetuksen tähden tehdään se näin, sillä sinun tehtävässä voipi olla AI BLUFOReja joita et halua johdettavan.

Image

Seuraavaksi klikkaa itsesi INTEL valikkoon. (paina neliöidyn alueen sisältä)

Image

Seuraa kuvan esimerkkiä. Nimeä tehtävä ja anna sille pieni kuvaus. Pitkät kuvaukset eivät mahdu kokonaan tilaan joka niille on multiplayerissa varattuna.

Image

Tallenna tehtävä.

Tämän mission osalta editori on nyt loppuunkäsitelty ja enään on brieffin teko.



Briefing

Mene tehtäväsi kansioon, jossa esim mission.sqm tiedosto sijaitsee.
Esimerkkinä minulla kansio olisi sijainnissa: C:\Users\Raunhofer\Documents\ArmA 2 Other Profiles\stm%20Raunhofer\missions\co%2015%20supertanks.utes (windows7)

Seuraavaksi hyppää tänne:
http://v2.kyllikki.fi/cgi....;t=1041

Tämä harjoitustehtävä on ns. valmis.

Valitukset, pilkunviilaukset, kysmykset, rageeminen ja kaikki muu kommentointi sallittua. Kysymyksiin pyritään vastaamaan.




Edited By Raunhofer on 1249127402
Luutnantti Raunhofer
Reserved Detachment CO
User avatar
Raunhofer
Personnel
Posts: 1520
Joined: Thu, 24.7.2008, 15.12
Location: Oulu
Contact:

Post by Raunhofer » Sun, 5.7.2009, 18.04

PART III

Tehtävä valmis, mutta häh entäs nyt? Miten saat missiosi hienosti .pbo pakettiin niinkuin kaikilla cooleilla kyllikeillä?

Yksinkertaisesti joko editorista painat SAVE ja valitset 'Export to MP mission' ja näin tehtävä tallentuu .pbo muotoon ARMA2 kansiossasi olevaan mpmissions kansioon.


Vaihtoehtoinen vaihtoehto:

Käytämme cpbo työkalua, jonka Kegetys on meille loihtinut:
Lataa ArmA Tools täältä:
http://www.kegetys.net/

Armed Assault osiosta.

Pura paketti johonkin kansioon ja tuplaklikkaa cpbo.exeä, tulee kysymys johon vastaat kyllä/yes.

Nyt aukaiset missions kansiosi (se joka oli siellä omat tiedostot kansiossa oman nimesi alla) ja klikkaat uuden tehtäväsi kansiota hiiren oikealla puolen ja painat 'Create PBO' ja TADAA .pbo tiedosto muodostuu.

Nyt on turvallista pyyhkiä tehtävästä ylimääräiset %20 pois. Itseasiassa pakollista, jos haluat kyllikki serverille karttasi.

nimeäminenhän meni siis tähän tapaan: co 20 supertanks ja jos tehtävässäsi on respawn tai jip niin co 20 r supertanks tai co 20 j supertanks, tai jopa co 20 jr supertanks

Tehtävän saat serverille jonku kyllijäsenen kautta ja jos olet kylli niin sinun pitäisi kyllä tietää miten >:|

Loppu.




Edited By Raunhofer on 1249127085
Luutnantti Raunhofer
Reserved Detachment CO
User avatar
Winters
Posts: 870
Joined: Tue, 21.10.2003, 22.31
Location: FINLAND
Contact:

Post by Winters » Sun, 5.7.2009, 20.13

kerrassaan hieno basic opus :banana:
ylikersantti Winters ❤ ╥╻∃∇∪∫╥∃∟∪
(@stm_Sahurii) "LDDK - Ghost Recon - they won't know what hits them."
User avatar
Winters
Posts: 870
Joined: Tue, 21.10.2003, 22.31
Location: FINLAND
Contact:

Post by Winters » Tue, 7.7.2009, 16.15

Lisätään tänne jos jollain ei jostain syystä näy briefing

eli tee uusi tiedosto init.sqf tehtäväsi kansioon

laita tiedostoon seuraava rivi:

execVM "briefing.sqf";



ei muuta. tallenna ja tee pbo
ylikersantti Winters ❤ ╥╻∃∇∪∫╥∃∟∪
(@stm_Sahurii) "LDDK - Ghost Recon - they won't know what hits them."
User avatar
OldFox_FI
Posts: 7
Joined: Sun, 28.6.2009, 15.04
Location: Etelä-Suomi

Post by OldFox_FI » Fri, 10.7.2009, 15.24

Kiitos Raunhoferille, että hän jaksaa kirjoittaa näitä oppaita tänne. Kunnon (realistiseen suuntaan meneviä) mappeja aina kaivataan.

Voitko täydentää opasta kohtiin:
1. Miten saadaan mappiin siisti loppu, jos pelaajat eivät voita edes tank1:stä?
2. Miten suojata (trikkerillä) tank2 jos pelaajat päättävätkin hyökätä ekana sen kimppuun? Nythän se seisoo tyhmänä paikoillaan odottaen tank1 trikkerin laukeamista.
3. Miten saada mappiin dynaamisuutta (vihollisten määrä). ts. jos mappia pelaa 1 tai 30 pelaajaa?

Vaativin kohta jota en itsekään kunnolla osaa tehdä on...
4. Miten saat vihollisten ryhmät ja ajoneuvot lähtemään joka kerta eri paikoista (random)?

Tämä siksi, että mappia olisi vaikeampi oppia ulkoa muutaman pelikerran jälkeen. Nythän esim. OFP:ssa monet pelaajat tiesivät missä vihut olivat ja juoksivat sinne etukäteen ja tuhosivat ne.

Muuta: Pidä mapissasi vihujen liike trikkereillä mahdollisimman pienenä lagaamisen estämiseksi.
User avatar
Blake
Posts: 1916
Joined: Tue, 10.9.2002, 15.22

Post by Blake » Sat, 11.7.2009, 0.02

Helppo vihollisryhmän randomointi

1. Laita ryhmällinen ukkoja kartalle (F2 group)
2. Kirjoita alla olevan kuvan mukaisesti ryhmänjohtajan init-lineen: paskaryhma=group this kuvan 1 mukaisesti.
3. Lisää triggeri (F3) ja grouppaa se viivalla (F2) johonkin ryhmän taistelijaan (EI ryhmänjohtajaan)
4. Tuplaklikkaa ko. taistelijaa ja laita esiintymistodennäköisyys probability of presence halutulle tasolle (esim. 50%).
5. Muokkaa triggeriä alla olevan kuvan 2 mukaisesti.
6. Lisää uusi grouppaamaton triggeri kuvan 3 mukaisesti. Tämä triggeri tuhoaa paskarandom -nimisen triggerin 3s kuluttua ettei käy niin että ryhmä katoaa heti kun triggeriin sidottu taistelija esim. ammutaan.

Tällöin ryhmä esiintyy pelissä 50% todennäköisyydellä. Randomointien käyttö on erittäin suositeltavaa niin tehtävät eivät tunnu samanlaisilta joka kerta.

Image
Kuva 1
Image
Kuva 2
Image
Kuva 3

Helpompiakin tapoja saattaa tietysti olla.... :p




Edited By Blake on 1247260597
"...vuonna 2010 Suomessa tarvitaan noin miljoona uutta työntekijää...vuonna 2020 tarvitaan jo 2 miljoonaa uutta työntekijää..."
- Jyrki Katainen 2001
Tom_Gore
Posts: 8
Joined: Sat, 28.9.2002, 17.55
Location: Tampere
Contact:

Post by Tom_Gore » Sat, 11.7.2009, 8.39

ArmAn editorilla en ole vielä kerinnyt leikkimään, mutta ainakin OFP:ssa sekä spawnit että waypointit pystyi määrittämään alueena, eikä pisteenä. Tällöin ko. spawnin/waypointin tarkka sijainti randomisoidaan annetulla alueella.

Tämä siis vain suurentamalla X ja Y axista spawnissa/waypointissa.




Edited By Tom_Gore on 1247290786
Charcharro
Posts: 5
Joined: Sun, 5.7.2009, 23.53
Location: Hellsinki

Post by Charcharro » Mon, 13.7.2009, 0.25

Pari kysymystä editorista, jos saan esittää...:

-Miten voi luoda omia hahmoluokkia tietyillä valituilla aseilla ja nimetä ne miksikä haluaa, niin että niitä voi käyttää ja luoda (omassa)editorissa kaikissa itsetehdyissä missioneissa?

-Miten voi luoda sellaisen lopetustriggerin, mikä tarkistaa onko kaikki alueella olevat vihulaiset tuhottu/paenneet ja triggerin conditionin ollessa tämä, päättää tehtävän? (Alueella monia eri grouppeja, sisältäen tankki - sekä JV ryhmiä)

Kiitos jo etukäteen :)
Karko
Posts: 538
Joined: Mon, 20.4.2009, 21.13
Location: Vantaa

Post by Karko » Mon, 13.7.2009, 1.39

Charcharro:

Ensimmäinen kysymyksesi liittyisi unittien config.cpp tiedoston muokkaamiseen, eli räpläämättä alkuperäisiä tiedostoja muutetuiksi (joka taas ei sallisi pelaamaan muilla servuilla varmaankaan) ei onnistu tekemättä erillistä addonia jossa on nämä mainitsemasi alkuperäiset ukot eri aseilla. Toisaalta sen käyttö tehtävissä tuskin vaatisi kyseisen addonin latausta koska siinä käytetään alkuperäisiä modeleita ja tekstuureja jne.

Toiseen kysymykseesi. En tiedä miten tehdä niin että JOKAISTA vihua (helposti) saisi tarkistamaan, mutta ainakin kaikki viholliset jota jaksat nimetä. esim laittamalla 4 tankkia ja nimeämällä ne tankki1 tankki2 tankki3 ja tankki4 voit tehdä Triggerin jonka:

axis a: 999999
axis b: 999999
Present
activation: Anybody
condition: this && not alive tankki1 && not alive tankki2 && not alive tankki3 && not alive tankki4
on activation: hint "Kaikki tankit tuhottu"; obj1=true

ja toisen samanlaisen triggerin jonka typeen End #1 ja conditioniin laitat: this && obj1 sekä timeouttiin vaikka 5 sekuntia.

Tämä tarkoittaa sitä, että kun kaikki 4 tankkia on tapettu, objektiivi1 = true ja saa viestin niiden tuhoamisesta, sekä toinen triggeri lopettaa tehtävän kun objektiivi 1 on suoritettu.




Edited By Karko on 1247438542
Sekra
Posts: 10
Joined: Wed, 8.7.2009, 3.02
Location: Kuopio

Post by Sekra » Tue, 14.7.2009, 16.10

Charcharron kysymyksessähän kysyttiin että vihulaiset tuhottu / paenneet. Eli tee triggeri joka tarkistaa vihulaisten puolen ja ehdoksi "Not present". Sillon pitäisi tarkistus kohdistua siihen, että triggrerin alueella ei ole vihuja enään, eli ne on joko tuhottu tai ovat paenneet.. Ei tarvitse ruveta metsästämään yhtä jv-miestä puolta karttaa jos sille on pahasti menny pupu pöksyyn.
Post Reply