weaponHolder

Z Armed Assault nápověda

Přejít na: navigace, hledání

Obsah

Úvod

Určite ste už v nejakej misii alebo kampani videli niekde len tak pohodenú alebo opretú M16, prípadne akúkoľvek inú zbraň. Táto tam ale nebola samozrejme odložená hráčom alebo spoluhráčom v MP.
Na takéto umiestnenie ľubovoľnej zbrane sa používa tzv. virtuálna muničná bednička (nieje ju vidieť) so špecifickým názvom definovaným v konfiguračnom súbore hry.
Tento názov je weaponHolder, čo sa dá vlastne voľne preložiť ako "držiak zbrane".

A práve v tomto tutoriále si ukážeme ako používať tento špeciálny "neviditeľný" objekt.

Príklad

Tu je ukážka vytvorenia jednoduchého weaponHolder-u:

zbran = "weaponHolder" createVehicle position virtualAmmoBox;
zbran addMagazineCargo ["30Rnd_556x45_Stanag",6];
zbran addWeaponCargo ["M16A2",1];

... a teraz krátky popis

Samotný objekt weaponHolder si vytvoríme pomocou príkazu createVehicle, pretože ako som už spomenul, táto virtuálna muničná bednička je už zadefinovaná v hre. V našom prípade bude vytvorená na mieste (napríklad) neviditeľného H-áčka, ktorému sme dali meno virtualAmmoBox.

Ak by ste teraz (po prvom riadku) uložili skript, spustili misiu a pozreli na miesto v hre kde sa nachádza neviditeľné H-áčko, nič by tam nebolo.
Preto musíme do tejto bedničky umiestniť nejakú zbraň a prípadne aj muníciu. Na toto použijeme príkazy addMagazineCargo a addWeaponCargo.

Po nahliadnutí do samotnej misie by ste tam už teraz videli na zemi pušku M16 a okolo nej 6 "taštičiek" so zásobníkmi.
Keďže takto vytvorená muničná bednička má rovnaké vlastnosti ako normálna (viditeľná), hráč si môže samozrejme takto vytvorenú zbraň zobrať (prípadne vymeniť za stávajúcu) a to samozrejme aj so zásobníkmi.

Spôsob pokročilejšieho využívania tohto objektu si ukážeme na jednotlivých príkladoch v (priloženej) ukážkovej misii. Tu si predvedieme umiestňovanie weaponHolder-ov na jednotlivé objekty v hre ako sú vozidlá, palety, sudy alebo napríklad aj jednoduché opretie zbrane o múrik.
Na vytvorenie jednotlivých weaponHolder-ov použijeme predchádzajúci kód, ale v jednotlivých príkladoch ho len doplníme o príkazy:

  • setPos - keď budeme chcieť daný weaponHolder posunovať po danom objekte
    Napríklad presun zbrane z vnútra vozidla na prednú kapotu tak, aby vyzerala že je na nej položená
  • setDir - na ľubovoľné natočenie weaponHolderu
    Ak by sme mali v misii viac weaponHolderov vedľa seba, použijeme tento príkaz aby neboli všetky zbrane presne a úhľadne uložené v jednej línii
  • setVectorDirAndUp - pre jednoduché a účinné poziciovanie daného weaponHolderu
    Veľmi efektívne sa takto dá oprieť ľubovoľná zbraň napríklad o vozidlo alebo múrik. Syntax tohto príkazu sa zdá byť značne komplikovaný, ale verím že po chvíľke laborovania nakoniec dospejete k žiadanému výsledku.


Pre lepšie pochopenie si prejdite nasledujúci kód a mrknite do priloženej ukážkovej misie.

init.sqf

//--- rozmiestnenie jednotlivych zbrani na konkretne weaponHolder-y

//--- kalasnikov polozeny na kapote humra
zbranA = "weaponHolder" createVehicle position humer;
   zbranA setPos [(position humer select 0) - 1.25, (position humer select 1), 1.28];
   zbranA addWeaponCargo ["AK74",1];
   zbranA setDir 90; 

//--- RPGcko polozene na palete + municia
zbranB = "weaponHolder" createVehicle position paleta;
   zbranB setPos [(position paleta select 0), (position paleta select 1), 0.19];
   zbranB addMagazineCargo ["PG7V",2];
   zbranB addWeaponCargo ["RPG7V",1]; 

//--- M9 s tlmicom polozena na sude
zbranC = "weaponHolder" createVehicle position barel;
   zbranC setPos [(position barel select 0), (position barel select 1), 0.845];
   zbranC addWeaponCargo ["M9SD",1];
   zbranC setDir 196;

//--- G36 polozena spolu s municiou len tak na zemi
zbranD = "weaponHolder" createVehicle position D;
   zbranD addMagazineCargo ["30Rnd_556x45_G36",3];
   zbranD addWeaponCargo ["G36A",1];
   zbranD setDir 310; 

//--- MP5 s tlmicom opreta o vrecia s pieskom
zbranE = "weaponHolder" createVehicle position pytle;
   zbranE setPos [(position pytle select 0), (position pytle select 1) + 1, (position pytle select 2)];
   zbranE setVectorDirAndUp [[2, 3, 0.5],[0.2, 0.45, 0.15]];
   zbranE addWeaponCargo ["MP5SD",1]; 

//--- gulomet PK umiestneny na ukazku do vzduchu
zbranF = "weaponHolder" createVehicle position F;
   zbranF setPos [(position F select 0), (position F select 1), 1.25];
   zbranF addWeaponCargo ["PK",1];
   zbranF setDir 90;

Pomocou tohto príkazu môžete teda efektívne "zobrazovať" samostatné zbrane priamo v misii a vôbec ste pritom neni obmedzený druhom zbrane (primárna zbraň, sekundárna zbraň, osobná zbraň).

Download

 !

Ukážková misia (*.pbo archív): Download - nájdete ju ako priložený archív rovnakého tutoriálu v off-line ArmA Helpe

Odkazy

createVehicle, addWeaponCargo, addMagazineCargo, setPos, setDir, setVectorDirAndUp, Seznam zbraní a munice v ArmA

Osobní nástroje