weaponHolder
Z Armed Assault nápověda
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

