Operation Flashpoint - Tehtävät jakoon

Amatööritehtävän yksi tunnusmerkki on puuttuva tehtävänjako. Sellaisen kasaa muutamassa minuutissa. Näytämme miten, ja bonuksena opimme parikin näppärää kikkaa.

On turha alkaa HTML-editorin tai Notepadin kanssa soheltamaan, joten ensimmäiseksi haemme osoitteesta www.pelit.fi (tai OFP:n editointiin pyhitetyltä sivulta) Briefing/Overview-editorin (BriefingNOverviewGen1.5.zip, 121K) jolla tiedostot syntyvät lähes ongelmitta.

Ohjelman kanssa ainoa ongelma syntyy, jos OpFlash on muualla kuin C:-asemalla. Avaa silloin ohjelman mukana tuleva OFP.INI ja vaihda siinä näkyvä kiintolevyaseman kirjain. Kun ohjelmalle on osoitettu oikea kansio (siis sama, jossa tehtävätiedostot ovat), voi antaa sulkakynän viuhu.

Jaetaan käskyjä

Aloitamme Overviewillä. Overview.html sisältää vain tehtävän nimen, pikku kuvan ja lyhyen kuvauksen. Nämä näkyvät kun valitsee tehtävää. Pikku kuva käyttää Bohemian omaa .PAA-formaattia, johon ei vielä ole editoria. Pelit.fissä on nippu valmiita kuvia.

Briefing-osuus on vähän monimutkaisempi, ja olisi hyvä tietää mitä tehtävässä tehdään. Joten: yksi sabotööri menee ja tuhoaa yhden venäläisen vartioimat kaksi T-80-tankkia ja yhden Shilkan. Tehtävä päättyy kun vehkeet on tuhottu ja sabotööri pääsee noutoalueelle. Pikanttina yksityiskohtana Shilka tulee kohteeksi vasta kun pelaaja löytää sen.

Sekä briefing.html että overview.html pohjautuvat hmtl-kieleen. Tehtävänjaossa viitatut kohteet ovat lähes normaaleja linkkejä, joiden kohteet tehdään ensin tehtäväeditorilla itse tehtävään.

BRIEFING-osuus on varsinainen jyvä. Tekstin pitäisi näyttää tältä:

Aloita TÄSTÄ, tuhoa NÄMÄ TANKIT ja mene NOUTOPISTEESEEN.

ISOLLA kirjoitetuisssa kohdissa älä kirjoita tekstiä. Alan miehet ymmärtävät mistä on kyse: normaali linkkihän se. Esimerkiksi NÄMÄ TANKIT-linkki näyttää oikeasti tältä: nämä tankit. Teemme sen kantapään kautta. Paina ADD ANCHOR-nappia ja syötä seuraavat arvot:

Marker Name: alkaa

Marker text: tästä

Marker Name: tankit

Marker text: nämä tankit

Marker Name: loppuu

Marker text: noutopisteeseen

OBJECTIVES-osuudessa syötetään tehtävän kolme (maksimi kuusi) päämäärää. Yksi on "Tuhoa tankit", kaksi on "tuhoa Shilka" ja kolme "Etene noutopisteeseen".

END-kohdassa määritellään eri loppuvaihtoehtojen tekstit. Tällä kertaa END #1 on onnistunut tehtävä, END #2 kuollut pelaaja ja END #3:ssa pelaaja tulee noutopisteeseen ennen kuin on tuhonnut tankit. Kirjoita siis jotain näihn aiheisiin sopivaa. Header on otsikko (Voitto!), Description pitempi kuvaus (Hienoa! Tehtävä suoritettu!).

NOTES-kenttään tuleva teksti näkyy tehtävänannossa ja pelin aikana kartassa kohdassa Notes. Siihen voi kirjoittaa vaikka strategiavinkkejä tyyliin "Toivottavasti en tällä kertaa räjäytä jalkojani kasapanoksilla. Pitää muistaa mennä tarpeeksi kauas ensin".

Paina CREATE TEXT ja sekä BRIEFING.HTML että OVERVIEW.HTML syntyvät. Vain itse tehtävä puuttuu.

Haastava tehtävä

Osassa yksi kerrottiin kaikki oleellinen tämän tehtäväpuolen rakentamisesta, joten sitä emme käsittele. Lisäksi tehtävä on ylisimppeli, koska varsinainen aihe on tehtävänjako.

Valitse saareksi Kolgujev. Tee sabotööri (Name pelaaja) ruutuun Fd 53 metsänreunaan, kaksi tyhjää tankkia (nimiksi tank1 ja tank2) ruutuun Ff 53 keskelle tukikohtaa ja tyhjä Shilka (nimi shilka) leirin ulkopuolelle Fe 53. Tee sabolle neljä waypointia, ensimmäinen ihan viereen (MOVE), toinen tankkien viereen (MOVE), kolmas Shilkan viereen (MOVE) ja neljä ruutuun Fg 51 (MOVE). Lisää tämän viereen tyhjä jeeppi tai joku muu näkyvä vehje. Lisää leiriin yksi venäläinen kiertämään tankkien ympäri. Sotilaan viimeinen waypoint on mallia CYCLE ja se on hyvin lähellä vartiokierroksen ensimmäistä waypointia.

Tallenna ja tee Notepadilla tehtävänhakemistoon tiedosto INIT.SQS, joka ajetaan automaattisesti tehtävän aluksi. Kirjoita siihen rivit

"2" ObjStatus "HIDDEN"

voitto=0

ja tallenna nimellä INIT.SQS. Tarkista, että tiedoston nimi on oikeasti INIT.SQS, ei INIT.SQS.TXT. Nimittäin Windows oletusarvona kätkee tiedostopäätteet, joten Windowsin valikosta VIEW kohta FOLDER OPTIONS, tabi VIEW, poista rasti kohdasta HIDE EXTENSIONS, lisää rasti kohtaan SHOW ALL FILES. Samasta syytä viime osan hyppyskripti ei toiminut, kun sen nimi näytti olevan HYPPY.SQS mutta olikin HYPPY.SQS.TXT.

Toinen rivi nollaa muuttujan voitto, mutta ensimmäinen rivi on se herkku. Se tekee päämäärästä kaksi (tuhoa Shilka) pelaajalle näkymättömän. Piilokohdetta voi käyttää vaikka sellaiseen, että tehtävän viisi kohdetta paljastetaan pelaajalle vasta tehtävän kuluessa. Nyt kätkemämme kohde tulee näkyviin käskyllä

"2" ObjStatus "ACTIVE"

Merkkejä kartassa

Seuraksi teemme neljä Markeria (F6). Huomaa markereiden jo Briefing.HTML:stä tutut nimet.

Ensimmäinen marker tulee sabotöörin ensimmäiseen waypointiin, malli Start, name "alkaa". Toinen sabon viimeiseen waypointiin, malli End, name "loppuu". Yksi marker mallia Destroy This pannaan tankkien päälle, name "tankit". Pistä jonnekin, ihan minne vain, marker "shilmark", malli Empty. Shilkan päälle emme pane Markeria, koska teemme sen vängästi kesken tehtävän.

Voit kokeilla tehtävää. Katso karttaa ja kummastu: Shilkasta ei puhuta mitään, muuten briefingin linkkejä naksuttamalla kohdistin ponnahtaa oikeaan paikkaan. Wuhuu!

Liipaisimet vielä

Nyt tehtävä on triggereitä vaille valmis. Vakiona kaikkien paitsi viimeisen triggerin Axis a ja Axis b ovat kokoa 1.

Triggeri yksi tulee vaikka tankkien viereen. Muilla asetuksilla ei ole väliä kuin kohdilla Condition ja On Activation.

Text ja Name: TankitKuoli

Condition: (not (alive tank1)) and (not (alive tank2))

On Activation: "1" ObjStatus "DONE"

Triggerin tarkoitus on ruksia kohde 1 suoritetuksi. Jos haluat että kohde onkin epäonnistunut, esimerkiksi jos tarkoitus olisi ollut pitää tankit hengissä, käytetään käskyä "1" ObjStatus "FAILED"

Kun pelaaja "näkee" Shilkan (pelin mielestä), "Tuhoa Shilka" ilmestyy objektiiviksi kaksi. Ensin teemme triggerin joka kertoo koska pelaaja havaitsee Shilkan:

Text ja Name: NaeShilka

Cond: (pelaaja KnowsAbout shilka) !=0

OnAct: pelaaja sidechat "Pitääpä tuhota tuo Shilka!"; ; "shilmark" SetMarkerPos GetPos shilka; "shilmark" SetMarkerType "DESTROY"

Kun käsky KnowsAbout palauttaa jotain muuta kuin (!=) nollan, pelaaja on pelin mielestä "nähnyt" Shilkan. Puolipisteen jälkeinen käsky "2" ObjStatus "ACTIVE" tuo kohteen kaksi taas näkyviin. Seuraavaksi siirrämme markerin oikeaan kohtaan (SetMarkerPos), Shilkan sijainnin kertoo GetPos shilka. Tätä käskyparia voi käyttää moneen muuhunkin juttuun, samoin kun niiden veljiä GetMarkerPos ja SetPos. Muistithan imuroida viime osassa kerrotun käskyluettelon?

Viimeinen käsky tuo markeriin näkyviin muuttamalla se tyypin.

Katso karttaa ja hämmästy. Objektiivi Shilka on ilmestynyt näkyviin ja sen päällä on marker.

Olettavasti tuhoamme Shilkan, joten tarvitsemme vielä toisen triggerin merkkaamaan kohteen kaksi tehdyksi.

Text ja Name: ShilkaKuoli

Cond: not (alive shilka)

OnAct: "2" ObjStatus "DONE"

Kun Shilka tuhoutuu, objektiivi kaksi ruksitaan suoritetuksi.

Puuttuu triggeri, joka kertoo koska kaikki vehkeet on tuhottu

Text ja Name: KaikkiKuoli

Cond: (not (alive tank1)) and (not (alive tank2)) and (not (alive shilka))

OnAct: voitto=1

Eli kun kaikki on tuhottu, muuttuu voitto-muuttujan arvoksi yksi. Tarvitaan enää tieto, koska pelaaja on noutopisteessä. Sen mahdollistava triggeri on vähän erilainen. Muoto Square, Axis a 50, Axis b 100 ja Activation -osuus on WEST ONCE PRESENT.

Name and Text: Homefree

Cond: paattyy = 1

OnAct: "3" ObjStatus "DONE"

Sijoita ruutu niin, että pelaaja osuu siihen matkallaan jeepille. Kun pelaaja on ruudun sisällä, muuttuja paattyy saa arvokseen yksi merkiksi siitä että pelaaja on päässyt noutopisteeseen. Samalla ruksitaan objektiivi 3 suoritetuksi.

Vielä puuttuvat tehtävän lopetus-triggerit. Helpoin on pelaajan kuolema:

Name and Text

PelaajaKuoli

Type: End2

Cond: Not (alive pelaaja)

OnAct: "3" ObjStatus "FAILED"

Eli kun pelaaja kuolee, käytetään loppua kaksi, ja koska pelaaja kuolee, hän varmasti ei pääse noutopisteeseen. Entä jos pelaaja hannaa ja säntää suoraan noutopisteeseen?

Name and Text: Pelkuri

Type: End3

Cond: (paattyy==1) and (voitto ==0)

Eli pelaaja pääsi noutopisteeseen (paattyy on yksi), mutta koska yksi tai usempia tankkeja on räjäyttämättä, triggeri KaikkiKuoli ei ole muuttamut voitto-muuttujan arvoksi yksi. Tehtävää ei siis ole suoritettu.

Voittotriggeri on lähes identtinen.

Name and Text: VoittoTuli

Type: End1

Cond: (paattyy ==1) and (voitto==1)

Selityksiä tuskin enää tarvitaan. Jos tankit on tuhottu ja pelaaja pääsi noutopisteeseen, hän voitti.

Lisää aiheesta