Page 1 of 1

Skrypty

Posted: 2019-07-19 12:02
by Hancer
Post do umieszczania skryptów pomocnych w misjach

Prosta linijka dodana do LUA, pozwala na wyświetlanie komunikatów lub respienia jednostek po pewnym czasie.
Można dowolnie wykorzystać.

Code: Select all

local Restart_Serwera = SCHEDULER:New( nil, 
  function()
        trigger.action.outText('restart serwera za 10 minut', 3)
  end, {}, 10 )-- 10 czas w sekundach do zadziałania funkcji 

Re: Skrypty

Posted: 2019-07-19 16:51
by VladMordock
Prośba o ograniczenie kolorowania tekstu wpostach - planujemy za jakiś czas zmianę szaty graficznej i niekoniecznie będzie to czytelne. Najlepiej używać standardowego koloru tekstu + ograniczone kolorowanie do wyróżnienia fragmentów.

Co do skryptu to mogę się mylić, ale ten SCHEDULER to klasa MOOSE chyba, więć żeby tego użyć trzeba pamiętać o dołączeniu biblioteki MOOSE do misji.

Re: Skrypty

Posted: 2019-07-19 17:49
by Hancer
Nie wiedziałem nic że nie można kolorować, to trzeba wywalić tą opcję.
Ale nie ma problemu będzie na szaro, a to tak trzeba wrzucać Moose ale raczej wszyscy go używamy wiec zapomniałem wspomnieć.

Re: Skrypty

Posted: 2019-07-19 18:00
by VladMordock
Hancer wrote:
2019-07-19 17:49
Nie wiedziałem nic że nie można kolorować, to trzeba wywalić tą opcję.
Można, ale... z umiarem. ;)

Re: Skrypty

Posted: 2019-07-22 10:44
by Hancer
Proste parę linijek .lua dodaje nam menu, które można wykorzystać dowolnie.

Code: Select all

Menu_1 = missionCommands.addCommand("Nazwa menu", Menu_1, function() Plane:Activate() missionCommands.removeItem(Menu_2) end, nil)
Przykład menu dla wszystkich grup, w tym przykładzie aktywujemy grupę i menu zostaje skasowane.

Zagnieżdżone menu:

Code: Select all

local MenuGroup = missionCommands.addSubMenu("Nazwa menu nadrzędne", MenuGroup)
	Menu_3 = missionCommands.addCommand("Plane Activate", MenuGroup, function() Plane:Activate() missionCommands.removeItem(Menu_2) end, nil)	
W tym przypadku mamy menu grupy i dalsze podmenu w Menu_3 jest przekierowanie do głównego menu ("Plane Activate", MenuGroup - tu wskazujemy menu nadrzędne jako rodzica.

Tworzymy menu dla grupy, koalicji czy pojedynczej jednostki:

Code: Select all

Menu_1 = MENU_GROUP_COMMAND:New( PlaneGroup, "Nazwa Menu", Menu_1, function() Plane:Activate()  Menu_1:Remove( 1, nil) end, nil)
Opis menu:
1. PlaneGrup - dodaje menu do konkretnej grupy, trzeba ją wcześniej zdefiniować: "PlaneGroup = GROUP:FindByName("Enfield #001")"
2. Nazwa Menu - nazwa widoczna dla grupy wskazująca uruchamianą funkcje
3. function() - wstawiamy co dane menu ma wywoływać, w tym przypadku jest to aktywacja grupy "Plane" wcześniej zdefiniowanej: Plane = GROUP:FindByName("Plane #001").
Możemy tu umieszczać więcej odwołań do aktywacji grup lub umieszczać info np.

Code: Select all

trigger.action.outText('Good Job', 10) Menu_1:Remove( 1, nil) end, nil)

4. Menu_1:Remove( 1, nil) - usuwa te menu, można pominąć w celu zachowania menu.
Na końcu zawsze wstawiamy " end, nil)", pamiętając o nawiasie zamykającym:

Code: Select all

trigger.action.outText('Good Job', 10) end, nil)
Menu można używać dla koalicji zmieniają tylko funkcje wywołującą: "MENU_COALITION_COMMAND"

Re: Skrypty

Posted: 2019-07-22 11:18
by Hancer
Zmiany nastąpiły dla tankowców, dla potrzeb poligonów mamy opcję prze-tankowania i powrotu na zadana trasę "LandingReFuAr".
Jeden z Waypoint ustawiamy na lotnisko, tankowiec sobie wyliczy czas przebywania na orbicie.
Przypominam że na dzień dzisiejszy najeży uruchamiać TACAN na waypoint 1, ponieważ tankowiec na na stałe ustawiony Tacan 1X na WP0. Oraz na tym samym ustawiamy opcję "Orbit". Funkcja została przetestowana.

Re: Skrypty

Posted: 2019-07-22 12:40
by Hancer
Coś dla śmigłowców
Ten prosty skrypt wywołuje menu FARPS, służy on śmigłowcom do naprowadzania na dany farp.
Wywołuję on "RadioBeacon", do działania potrzebna jest tylko mała zona w miejscu skąd ma nadawać (wielkości jednej jednostki).

Code: Select all

MenuFarp = MENU_COALITION:New( coalition.side.BLUE, "Farps" )
London = MENU_COALITION_COMMAND:New( coalition.side.BLUE, "London Farp", MenuFarp, function()  ctld.createRadioBeaconAtZone("beaconZone1","blue", 30,"London") end, nil)
Dallas = MENU_COALITION_COMMAND:New( coalition.side.BLUE, "Dallas", MenuFarp, function()  ctld.createRadioBeaconAtZone("beaconZone2","blue", 30,"Dallas") end, nil)
Dublin = MENU_COALITION_COMMAND:New( coalition.side.BLUE, "Dublin", MenuFarp, function()  ctld.createRadioBeaconAtZone("beaconZone3","blue", 30,"Dublin") end, nil)
Farpy umieszczone są w menu nadrzędnym "Farps", jeżeli będziemy wywoływali jeden nadajnik możemy pominąć te menu.
Należy zmienić nawę odwołania do menu z "MenuFarp" na "London" czyli nazwę tego właśnie menu, w tym miejscu jest odwołanie do menu nadrzędnego o ile takie istnieje.

Code: Select all

London = MENU_COALITION_COMMAND:New( coalition.side.BLUE, "London", London, function()  ctld.createRadioBeaconAtZone("beaconZone1","blue", 30,"London") end, nil)
W moim przykładzie zony odpowiednio noszą nazwy "beaconZone1", "beaconZone2", "beaconZone3" tworzone są trzy radia na różnych pasmach:

Image

Wywoływane z menu w grupie "Farps", w tym przykładzie mam trzy farpy:

Image

UWAGA - z menu uruchamiamy nadajnik dla danego farpa jednorazowo, nadajnik działa zależnie od ustawionego czasu.
W tym przypadku jest to 30 minut - "("beaconZone1","blue", 30,"London")" ustawiamy po kolei:
1. Nazwa zony w której postawiony będzie nadajnik - "beaconZone1".
2. Koalicja - "blue".
3. Czas nadawania w minutach - 30.
4. Nazwa farpu wyświetlana przed częstotliwościami nadajnika.

Częstotliwości procujących nadajników są widoczne dla każdej koalicji w menu F10

Re: Skrypty

Posted: 2019-07-24 14:46
by Hancer
Jak poprawnie dodać misje ratunkową dla śmigłowców z oznaczenie terenu flarami.
Oraz jak dodać do misji działające radiolatarnie.

Pliki do pobrania pliku przykładowej misji i pliku lua: https://drive.google.com/open?id=1V-w4G ... IXzlTUOEt8

Dodałem parę słów dotyczące poprzedniego tematu "Coś dla śmigłowców"

Re: Skrypty

Posted: 2019-07-31 11:59
by Hancer
RECOVERY TANKER

Znalazłem fajny skrypt powołujący do życia parę maszyn obok lotniskowca.
W tym przykładzie mamy dwa lotniskowce.
Stawiamy z LateActivation jednostki (nazwy grup muszą być takie jak w skrypcie):
1. Texaco Group - S-3B Tanker Tacan 4X / 261 MHz
2. E2D Group - E2D 262 MHz
3. Shell Group - KC-130 Tacan 63X / 263MHz
4. Rescue Helo Group - SH-60B
Tacan i radio ustawiają się w skrypcie można je zmienić i nazwy jednostek.
Skrypt dołączamy do innego lub wrzucamy osobno.

Code: Select all

local tankerStennis=RECOVERYTANKER:New("Stennis_AI", "Texaco Group")
tankerStennis:SetRadio(261)
tankerStennis:SetTACAN(4, "SHL")
tankerStennis:SetCallsign(CALLSIGN.Tanker.Shell)
tankerStennis:SetModex(0)
tankerStennis:__Start(1)

local awacsStennis=RECOVERYTANKER:New("Stennis_AI", "E2D Group")
awacsStennis:SetAWACS()
awacsStennis:SetCallsign(CALLSIGN.AWACS.Wizard)
awacsStennis:SetTakeoffAir()
awacsStennis:SetAltitude(20000)
awacsStennis:SetSpeed(300)
awacsStennis:SetRadio(262)
awacsStennis:SetTACAN(5, "WIZ")
awacsStennis:SetRacetrackDistances(40, 20)
awacsStennis:SetModex(666)
awacsStennis:Start()

local tankerTarawa=RECOVERYTANKER:New("Tarawa", "Shell Group")
tankerTarawa:SetHomeBase(AIRBASE.Caucasus.Batumi)
tankerTarawa:SetRadio(263)
tankerTarawa:SetTACAN(63, "ARC")
tankerTarawa:SetCallsign(CALLSIGN.Tanker.Arco)
tankerTarawa:Start()

heloStennis=RESCUEHELO:New("Stennis_AI", "Rescue Helo Group")
heloStennis:SetModex(21)
heloStennis:Start()

heloTarawa=RESCUEHELO:New("Tarawa", "Rescue Helo Group")
heloTarawa:SetTakeoffAir()
heloTarawa:Start()

UNIT:FindByName("Stennis_AI"):PatrolRoute()
UNIT:FindByName("Tarawa"):PatrolRoute()
Możemy dodać następny lotniskowiec dopisując:

Code: Select all

UNIT:FindByName("Forrestal"):PatrolRoute()
heloForrestal=RESCUEHELO:New("Forrestal", "Rescue Helo Group")
heloForrestal:SetTakeoffAir()
heloForrestal:Start()
Tak samo dodajemy tankowiec, kopiując z innego zmieniając tylko nazwy.

Re: Skrypty

Posted: 2019-08-26 14:15
by Hancer
Skrypt Rescue lua będący użyty w misji przykładowej CargoZone

https://drive.google.com/open?id=1D_SdK ... Q47FgxZQL_

Opis na filmiku YT: