Kebmans blogg

Arma 3: Fyll bensin på ditt helikopter

Posted in Data, Programmering, Scripting, Spill by kebman on 28/09/2013

En enkel oppskrift på hvordan kode fylling av drivstoff på ditt helikopter i Arma 3.

Forhåndskunnskaper: Du må minimum kunne plassere objekter ved hjelp av editoren i spillet. Hvis du ikke kan det enda, se her: http://www.youtube.com/watch?v=oN8s58xEi0k
Ellers er prosessen forklart veldig nøye. Teskje-metoden here we come! 😀

Oppskrift

Åpne opp kartet du har lyst å jobbe med og plasser enten en player eller et helikopter som du gjør til player.
Gi helikopteret navnet myHeli. Lagre kartet med Mission Name «Trigger» og som User Mission.

Plasser så en trigger (finnes under flagg-ikonet).
Sett størrelsen slik at det passer med landingsplassen din.
Pass også på at den er satt til Repeatedly og at enten din gruppe, eller alle, kan trigge den.
Repeatedly betyr ganske enkelt at du kan bruke triggeren til å fylle bensin så mange ganger du måtte ønske.

I boksen Condition, skriv følgende kode:

({getPosATL _x select 2 < 0.1} count thisList) > 0 && fuel myHeli < 0.9;

Forklaring av koden

Den første delen av koden gjør at triggeren kun fyrer av om helikopteret er under 0,1 meter over bakken (Merk: i USA bruker de punktum for å skille mellom desimaler, mens vi bruker komma her i Norge).
Den andre delen av koden (etter &&) gjør at triggeren kun fyrer av om helikoptere har under 90 prosent drivstoff i tanken.

getPosATL finner plassering og høyde over land. Det kommer som en array _x bestående av posisjonskoordinatene 0=X, 1=Y og 2=Z.
Vi er selvsagt bare interessert i høydevektoren Z, derfor står select 2 der.
For at det ikke skal fylles drivstoff før helikopteret står på bakken, vil ikke «listen» bli telt som 1 før høyden er under 0,1 meter over land.

I tillegg vil ikke triggeren skyte av før helikopteret har under 90 prosent drivstoff.
&& står simpelten for en logisk «og», som betyr at begge delene av kondisjonalen må være sann før triggeren fyrer av. Det holder ikke at bare én av dem er det.

I boksen On Act (On Activation), skriv følgende kode:

nul = [] execVM "fuel.sqf";

Forklaring til koden

Dette lager en null-array, fordi det av en eller annen grunn kun kan kjøres fra en sånn… Og execVM kjører ganske enkelt filen fuel.sqf.

Denne filen finnes naturlig nok ikke enda, derfor er det på tide at du starter opp din beste tekst-editor (Notepad++, f.eks., men vanlig Notisblokk funker også).

I tekst-editoren, skriv inn følgende skript:

heliFuel = fuel myHeli;
addFuel = 0.1;
while {heliFuel < 1.0} do {
     myHeli setfuel heliFuel + addFuel;
     addFuel = addFuel + 0.1;
     sleep 0.2;
};

Lagre skriptet som fuel.sqf i mission-folderen. Denne ligger vanligvis på C:\Users\DittBrukernavn\Documents\Arma 3\missions\Trigger.Map . I alle fall gjelder det Windows 7
For alt jeg vet har du den på D-disken. Bytt i så fall C: ut med D:. DittBrukernavn bytter du selvfølgelig med ditt brukernavn.
.Map er det kartet du har valgte, enten Stratis, Altis eller et annet kart.

Forklaring av skriptet

heliFuel = fuel myHeli lagrer simpelten hvor mye drivstoff helikopteret har igjen i tanken i variabelen heliFuel.
addFuel lagrer hvor mye som skal fylles hver gang skriptet slår en ny løkke. Det definerer altså hvor fort tanken fylles opp. Jo høyere tall, jo fortere går det, men det er ingen grunn til å sette tallet over 1, siden 1 er normalisert til å bety «full tank».
while-løkken kjører så lenge det er plass til mer drivstoff i tanken (så lenge heliFuel er under 1), men ikke noe mer enn det.
Inni while-løkken, legger setfuel ganske enkelt den eksisterende mengden drivstoff (heliFuel) sammen med ny mengde drivstoff (addFuel).
sleep pauser ganske enkelt løkken så mange sekunder det er angitt (0,2 sekunder i dette tilfellet).

Som du ser er det et ganske lite skript. Kanskje tenker du da at det kunne vært i kondisjonal-feltet i triggeren. Grunnen til at det ikke kan være der, er fordi triggeren ikke godtar pauser. Det er kun mulig i eksterne skript, derfor trenger det å være i sin egen fil.

Valgfritt

Om du vil at det skal se ekstra bra ut, plasser også ut et helipad-objekt under triggeren fra Empty > Objects (Signs).
Det er nemlig litt lettere å finne igjen trigger-området i spillet om du også har en synlig landingsplass assosisert med den. 😉

Reklamer

StarCraft II: Luck has got nothing to do with it ;)

Posted in Spill by kebman on 08/01/2011

Advarsel: Dette er en nerde-post med mye in-game lingo. Er du ikke fan av StarCraft II kan du fint skippe denne.

Bronseliga: Blir satt opp i en PvT-kamp mot en som heter Knaller på Steppes of War. Planen er å sperre av åpningen inn til basen min, kjøre bakkestyrker, og så etterhvert ekspandere og gå void. Det skulle vise seg å bli en ganske jevn match med både spenning og bedrag.

Før jeg får tenkt så mye på det, får jeg besøk. Men han skjønner ikke helt at også en probe er nok til å vokte inngangen før jeg får lots, og det ender med at jeg dreper spionen. Like etterpå er jeg tidlig ute med å smake på inngangen hans med den første zealoten jeg får ut. Inngangen er godt bevoktet. Ingen vits i å begå selvmord. Det går heller ikke lang tid før han kommer og banker på med sine units igjen, men bare fem minutter ute i spillet sniker jeg en probe avgårde til en avsides gull-expansion før han kommer. Håpet er selvsagt at han ikke skal se det, slik at jeg får ekstra resursser til å gi han en aldri så liten overaskelse.

Kiting med marines og marauders

Knaller techer til stim og marauders, og det blir en ganske jevn kamp. Han er flink å bruke micro til å kite unna lotsene mine, på et punkt selv inn i hovedbasen min. Som svar jager jeg han tilbake og inn i basen hans, men jeg sleit med å kite like godt som han med lots og stalkers. Likevel var det akkurat nok avledning til å sette opp en nexus på gull-expansionen og sende motangrep for at han ikke skulle begynne å kjede seg.

Like etter at jeg brente igjennom inngangen hans og en bunker med god micro (shift-focus-attack på bunker og marauder med lots foran):

Knaller:
unreal
luckbox

Jeg tar det jeg har og renner rett opp til minerallinja. Merkelig nok bruker han hele worker-hurven til å holde stalkersene mine på plass for at maraudersen hans skal ta seg av dem. Dette passer meg egentlig fint, for da mister han også usannsynlig mye i innekt. Og apropos, mens han bruker tid på dette, bygger jeg nye gates og produserer nye units. Men ikke bare det. Nå er gull-expansionen min oppe og går, og da er det på tide å starte med luftstyrker.

Luftangrep i emning

Jeg hiver opp en stargate og begynner å sende avgårde void-rays. Under motangrepet hans, får jeg satt opp en ny stargate. Selv om han til tider kommer seg innenfor rampen, er det ikke langt nok inn for han til å se hva jeg egentlig driver på med.

Jeg har noen fremskutte stalkers, men jeg angriper ikke lenger. Jeg bare produserer luftstyrker og lar det være opp til han å komme til meg. Og når angrepet endelig kommer, gjør jeg enkel tilbaketrekning. Så var det bare å lokke ballen hans tilstrekkelig langt vekk fra hovedvasen hans til å gå inn med luftangrep.

Dessverre er forsyningslinjen akkurat over der han rykker frem, så han oppdager en void-ray før jeg får satt inn hovedstøtet. Heldigvis bare stopper han litt, mulig fordi han tror det er den eneste. Neste gang må jeg være mer forsiktig med hvor jeg legger forsyningslinjen, antar jeg.

Siste stikk

Knaller fortsetter fremover, og siden jeg har brukt mest på luft en stund, er det bare så vidt jeg får beskyttet basen. Han brenner igjennom den fremskutte styrken min, og kommer helt forbi rampen. Heldigvis har jeg akkurat nok til å ta angrepsstyrken hans, men innen da er det allerede forsent for Knaller. Void-rayene mine har allerede brent igjennom kommandosenteret hans, og er på god vei til å ta resten av basen.

For å erte litt er jeg som vanlig tidlig ute med å kommentere «gg». Det er tydelig at Knaller er oppgitt, men han har fortsatt klokketro på egen overlegenhet.

Knaller:
negativ
you were damn lucky
thats all

Så da svarer jeg selvfølgelig «luck has got nothing to do with it» 😉 Det blir dråpen som får han til å logge av.

Luck has got nothing to do with it ;)

Ikke mye flaks her i gården, nei.

Yes, sånn går dagene i bronseligaen. Eller hvem vet. Er man på bronseliga, har kanskje flaks mer å si enn man selv aner…?

Tagged with: , , , ,