Esimerkki init tiedostosta:
Code: Select all
switch (paramsarray select 0) do {
case 1: {SKRIPTIT TÄHÄN};
case 2: {SKRIPTIT TÄHÄN};
};
Esimerkki descriptionista:
Code: Select all
class Params
{
class OMA_PARAMINI {
title = "OMA OTSIKKO";
values[] = {1, 2};
texts[] = {"OMA TEKSTI", "OMA TEKSTI"};
default = 2;
};
};
Monissa tehtävissä on jo nähtävissä erinlaisia asetuksia tehtävää varten, kuten esimerkiksi kelloajan säätö, vaikeusaste, intro ja mitä mielikuvitus vain keksii, mutta kovinkaan moni ei niitä hyödynnä. Joten opas tähän on paikallaan:
KELLOAJAN VALITSEMINEN
Tarvitset 2 tiedostoa: description.ext ja init.sqf tehtäväsi kansioon (sama missä on mission.sqm)
Kelloajan muuttamisen logiikka on varsin simppeli. Ensin tehtävästä asetetaan kello aika 00:00 eli keskiyö. Seuraavaksi muutamalla pienellä skriptillä käytämme hyväksi skiptime komentoa, jolla voi skipata aikaa tunteina.
Teemme siis eräänlaisen vaihtoehdon, kuinka monta tuntia skippaamme eli mikä kelloaika peliin päätyy.
description.ext
Lisää seuraavat koodinpätkät vaikka description.ext:in loppupuolelle.
Code: Select all
titleParam1 = "Daytime";
valuesParam1[] = {5, 12, 15, 0};
defValueParam1 = 12;
textsParam1[] = {"Morning", "Day", "Evening", "Night"};
titleParam kohdassa määrittelemme otsikon valikolle
valuesParam[] kohdassa määrittelemme valintojen arvot (tässä kelloaika esimerkissä numerot viittaavat arvoon, kuinka monta tuntia kelloa siirretään eteenpäin 00:00:sta)
defValueParam kohdassa määrittelemme mikä vaihtoehto on valmiiksi valittuna
textsParam[] kohdassa annamme vaihtoehdoille nimet
Numerolla jokaisen parametrin päätteeksi määritämme jokaisen parametrin kuuluvan samaan DAYTIME valintaan. Jos tekisit toisen esimerkiksi intro on/off valintalaatikon, käyttäisit 1 sijaan 2.
******************
init.sqf
Lisää seuraavat koodinpätkät vaikka init.sqf:n loppuun.
Code: Select all
skiptime param1;
Nyt ajanvalinta on valmis.
***************
***************
INTRO ON/OFF
Intron kytkemiseen ja poiskytkemiseen on monenlaisia keinoja. Opetan tässä oppaassa tavan, jota esimerkiksi käytän tehtävässä 'co 10 deadly deal'. Tätä tapaa voi myös mielikuvituksensa avulla soveltaa monin keinoin (esimerkiksi difficulty valikko)
Jälleen tarvitsemme init.sqf ja description.ext mission kansioon.
description.ext
titleParam1 = "Intro";
valuesParam1[] = {1, 2};
defValueParam1 = 1;
textsParam1[] = {"Yes", "No"};
titleParam kohdassa määrittelemme otsikon valikolle
valuesParam[] kohdassa määrittelemme valintojen arvot
defValueParam kohdassa määrittelemme mikä vaihtoehto on valmiiksi valittuna
textsParam[] kohdassa annamme vaihtoehdoille nimet
Numerolla jokaisen parametrin päätteeksi määritämme jokaisen parametrin kuuluvan samaan DAYTIME valintaan. Jos tekisit toisen esimerkiksi intro on/off valintalaatikon, käyttäisit 1 sijaan 2.
******************
init.sqf
Tämän toteuttamiseen on monenlaisia keinoja, itse päädyin tähän, monipuoliseen tapaan:
if (!isNil "param1") then {
switch (param1) do {
case 1: {[] exec "yesintro.sqs"};
case 2: {[] exec "nointro.sqs"};
};
} else {
[] exec "yesintro.sqs"
};
Lisää edeltävä koodinpätkät vaikka init.sqf:n loppuun.
Nyt määrittelimme, että tilanteessa 1, tehtävä aukaisee mission kansiosta yesintro.sqs tiedoston ja tilanteessa 2 nointro.sqs tiedoston. Default asetuksena intro näkyy eli yesintro.sqs
Seuraavaksi luomme 2 uutta tiedostoa samaiseen kansioon: nointro.sqs ja yesintro.sqs
yesintro.sqs
[] exec "intro.sqs";
Tallennus ja sulkeminen. intro.sqs on siis intro tiedostosi jonka olet aiemmin tehtävääsi tehnyt/tekemässä.
Vaihtoehtoisesti voit myös itse intro.sqs:n pistää tähän yesintro.sqs tiedostoon, mutta itse tykkään tehdä näin mutkan kautta sillä voin nyt määritellä myös muita asioita, esimerkiksi kun introissani on joskus kuvia niin käytän myös [] exec "pictures.sqs"; samassa tiedostossa (ilman introa en halua kuvienkaan tulevan).
nointro.sqs
~4
hint "Tehtävänäsi on tuhota vihollisen tukikohdasta rekka. Tukikohta on lähtöpisteestäsi pohjoiseen.";
Käytännössä nointro.sqs:n voi jättää tyhjäksi, mutta itse ilmoitan nointron valinneille hinttinä viestin, jossa tiivistän asiat jotka introssa näkyivät. Fiksua eikö totta
![Banana :banana:](./images/smilies/banana.gif)
Myös jos introssasi on esineitä/asioita joita itse pelissä ei kuuluisi olla, voit lisätä nointroon myös niiden poistamisesta parametrit, eli esimerkiksi deletevehicle introtavara1;
***************
***************
YKSINKERTAINEN VAIKEUSASTEEN LISÄÄJÄ
En halua tehdä tästä oppaasta liian monimutkaista, joten vain näytän mihin näillä valinnoilla voi esimerkkinä vaikuttaa.
1. Teen tehtävään 2X enemmän miehiä kuten alkuperäisessä suunnitelmassani ja nimeän puolet miehistäni periaatteella: hard1, hard2, hard3, hard4... jne jne.
Seuraavaksi aukaisen description.ext tiedoston ja lisään valikon:
titleParam1 = "Difficulty";
valuesParam1[] = {1, 2};
defValueParam1 = 1;
textsParam1[] = {"Normal", "Hard"};
Eli alkuperäisasetuksena missio on vaikeusasteltaan normal.
Sitten aukaisen init.sqf ja lisään:
if (!isNil "param1") then {
switch (param1) do {
case 1: {[] exec "normal.sqs"};
case 2: {[] exec "hard.sqs"};
};
} else {
[] exec "normal.sqs"
};
Eli jälleen defaulttina normaali ja vaihtoehtona hard.
Luon 2 uutta tiedostoa: normal.sqs ja hard.sqs
normal.sqs
deletevehicle hard1;
deletevehicle hard2;
deletevehicle hard3;
deletevehicle hard4;
deletevehicle hard5;
Tässä esimerkissä minulta normal asetuksilla poistetaan hard 1-5 nimiset asiat. Asiat voivat olla esimerkiksi sotilaita, joten kun valitaan normal vaikeusaste, ei pelissä löydy näitä 5:ttä extra sotilasta, jotka voivat olla skilleiltään vaikka 100%. Hardit voivat myös olla vaikkapa aselaatikoita!
hard.sqs
deletevehicle fuel1;
deletevehicle ammolaatikko1;
Hardi voisi olla ihan hyvin vaikka tyhjä, mutta tässä esimerkissä poistan pelaajilta ammuslaatikon ja bensarekan, jotta pelaajilla olisi vähemmän kuteja ja bensakin pitäisi noutaa kauempaa. Selvää vaikeutusta siis.
***
Tässä nyt oli yksinkertaisia esimerkkejä mihin ARMA2:n pool valikoilla pystyy. Mielikuvitusta jos riittää, voipi tehtävään vaikka tehdä kokonaan 2 eri stooryä jotka voi sitten valinta laatikosta valita. Täydellistä.
Muita esimerkkejä on esimerkiksi valintalaatikko josta saa JIP/Respawnin poissa.[/color]
Edited By Raunhofer on 1254254831