Tutorial 3DEN. Wykorzystywanie naszych presetów / skryptów do tworzenia misji


#1

musicie mi wybaczyć niewyraźny i nierówny komentarz, mam zerowe doświadczenie w mówieniu do “nikogo” przed sobą, czy w ogóle nagrywanie własnego głosu od tak.
Jeszcze ze świadomością, że ktoś to będzie oglądał O.O

jeśli jest coś słabo wytłumaczone, coś brakuje itp to proszę dać znać!

link do presetów:
https://mega.nz/#!kIpl3AiS!Pd870XYibgmknidT6rr3MrG4DF0fgq7AvyiXg6IPmiw

link do gotowej misji:
https://mega.nz/#!BR4XQIDT!ExNBJHlKbUYTuioO2E2XYjVysRqGNYHTBusPHxJp00g

pomocne mody, dopuszczone na serwerze:

3den Enhanced:
https://steamcommunity.com/sharedfiles/filedetails/?id=623475643

ZEC - Zeus and Eden Templates / Building Compositions
https://steamcommunity.com/sharedfiles/filedetails/?id=642912021

ZECCUP - Zeus and Eden Templates for CUP Terrains
https://steamcommunity.com/sharedfiles/filedetails/?id=750186990


Dobrze wiedzieć:

obracanie: shift + przytrzymanie lewego przycisku na jednostce.

cała klawiszologia:
https://community.bistudio.com/wiki/Eden_Editor:_Controls

całe wiki jak ktoś chce wincyj:
https://community.bistudio.com/wiki/Eden_Editor


skrypty z konsoli:

jednostki stacjonarne:

if (isServer || !hasInterface) then {{_x disableAi "PATH"}forEach units this;};

jednostki stojące na początku misji:

if (isServer || !hasInterface) then 
{ 
 {_x disableAI "MOVE"}forEach units this; 
 [this] spawn 
 { 
 waitUntil {time > 5}; 
 {doStop _x}forEach units (_this select 0); 
 {_x enableAI "MOVE"}forEach units (_this select 0); 
 }; 
};

konsolę w 3DEN odpalamy naciskając CTRL + D

liczenie zaznaczonych jednostek w 3DEN (ignoruje obiekty, w pojazdach liczy załogę):

_count = 0; 
({_count =_count + (count crew _x)}forEach (get3DENSelected "object"));
_count;

Opis skryptów:

civilians.sqf

skrypt spawnuje cywili w miastach.

stawiamy logikę gry, do initu wklejamy:

if (!hasInterface && !isServer || hasInterface && isServer) then {[this, 15, 150, 750, 0] execVM "civilians.sqf";};

15 = ilość cywili
150 = maksymalna odległość chałup, do których boty będą wchodzić (tu przydaje się mierzenie odległości z 3den enchanced)
750 = odległość aktywacji (deaktywacja to + 100m)
0 = rodzaj cywili. 0 = Grecja, 1 = Takistan, 2 = Ruskie, 3 = robotnicy

do miast w których nie będzie strzelania / są dosyć daleko od takich miejsc można i 60 cywili wrzucić, ze znikomym spadkiem fps nawet w multiplayer. Ale lepiej tego nie robić, bo i po co.

cachespawn.sqf

Skrypt umożiwiający teoretycznie nieograniczoną ilość wrogich jednostek w miastach, ze znikomym wpływem na fps. Skrypt sam wie ile jest jednostek wokół, wstrzymuje się ze spawnowaniem jednostek jeśli jest ich wystarczająco wokół, dospawnowuje jeśli jest ich za mało itp.

Boty przeszukują budynki, flankują. Jeśli uznają, że gracze są przygwożdżeni, wstrzymają się z atakami i obejdą graczy dookoła. Jeśli gracze nadal będą siedzieli w jednym miejscu, boty przeprowadzą synchroniczny atak.

Do poprawnego i “logicznego” działania potrzeba +20 miejsc spawnów, im więcej tym lepiej. Skrypt wyłącza się, gdy zostanie ich mniej niż 6.

w cachespawn.sqf znajduje się instrukcja.
do initu grupy jednostek wklejamy:

if (!hasInterface && !isServer || hasInterface && isServer) then {[this,[8,20,40]] execVM "cacheSpawn.sqf"}else
{if (isServer) then {{_x disableAI "PATH";}forEach units this}};

8 = minimalna ilość botów
20 = maksymalna ilość botów
40 = ilość botów spawnowanych

ODRADZAM ZMIANĘ MINIMALNEJ I MAKSYMALNEJ ILOŚCI.
Ilość botów również polecam nie ruszać jak nie wiemy z czym się to je. najlepszy przedział to 30-60 botów. Można bez problemów ze strony fps dać i 200, jednak trzeba zadbać o sensowną ilość spawnów botów, +50.

“hardcoded” minimalna ilość jednostek, gdy wokół są inne jednostki tej samej strony = 3
“hardcoded” maksymalna ilość jednostek wokół, po której skrypt wstrzymuje spawnowanie = 35


vehspawn.sqf

Przyjazd wsparcia pojazdów.

na określony warunek boty przyjadą na ratunek, na konkretny znacznik. Wyładują przed celem z pojazdów i ruszą na pomoc. Jeśli jest to BTR lub inny pojazd ze strzelcem, obsługa pojazdu zostanie w środku.

instrukcja również w pliku.

if (!hasInterface && !isServer || hasInterface && isServer) then {[this, "marker_0", "warunek"]execVM "vehSpawn.sqf"}else
{if (isServer) then {{_x disableAI "PATH";}forEach crew this}};

marker_0 = marker na który przyjedzie wsparcie
warunek = warunkek który musi zwrócić true, by wsparcie przyjechało


przydatne komendy dla zeusa:

ustawianie widocznych botów dla zeusa (wyłączenie cache):

madin_cache = false;

skrypt odpalamy tylko lokalnie! (ostatni przycisk z 3 w “odpal na”)


coś tu będzie więcej pewnie