Jak pisać skrypty instalacyjne

które decydują o tym jak twój mod będzie instalowany



Automatyczna instalacja

Po prostu wklej bezpośredni odsyłacz do pliku, a instalator sam wykryje co trzeba zrobić. W przypadku wielu plików umieść kolejne linki w następnych linijkach.

ftp://ftp.armedassault.info/ofpd/unofaddons2/ww4mod25rel.rar
ftp://ftp.armedassault.info/ofpd/unofaddons2/ww4mod25patch1.rar

Jeśli archiwum wymaga hasła to dodaj /password: w tej same linijce.

http://example.com/locked.rar  /password:123

Jak to działa?

Instalator sprawdza rozszerzenie ściągnętego pliku:

  • W przypadku .rar, .zip, .7z, .ace, .exe lub .cab otworzy go i zbada zawartość.
  • Jeśli .exe nie mogło być rozpakowane i żaden inny plik nie został dotychczas przekopiowany to wtedy instalator poprosi użytkownika o uruchomienie tego pliku.
  • W przypadku .pbo sprawdzi jego typ i przeniesie go do katalogu addons, Missions, MPMissions, Templates albo SPTemplates w folderze z modem.
  • Inne typy plików zostaną pominięte.


Jeśli instalator napotka folder to sprawdzi jego nazwę i zawartość:

  • Jeśli jego nazwa jest taka sama jak nazwa instalowanego moda to przeniesie go do katalogu z grą. Wszystkie inne pliki znajdujące się w tej lokalizacji (oprócz innych modów) zostaną przeniesione do katalogu z modem. Jeśli występuje tu folder addons to zostanie on połączony z folderem IslandCutscenes w katalogu z modem.
  • Inne modfoldery zostaną pominięte (wyjątki: 1. folder Res 2. jeśli ściągnęte archiwum zawiera tylko pojedynczy katalog to instalator go nie pominie).
  • Jeśli jego nazwa to addons, bin, campaigns, dta, Missions, MPMissions, Templates, SPTemplates, MissionsUsers, MPMissionsUsers lub IslandCutscenes to zostanie przeniesiony do katalogu z modem (połączy zawartość). Jeśli MPMissions zawiera tylko pojedynczy folder to wtedy zawartość tego podfolderu zostanie przeniesiona. Jeśli Missions zawiera tylko pojedynczy folder, którego nazwa jest taka sama jak nazwa modu to wtedy jego zawartość zostanie połączona z misjami moda. Jeśli nie jest taka sama to będzie przeniesiony jako oddzielny katalog.
  • Jeśli zawiera overview.html to wtedy zostanie przeniesiony do Missions w katalogu z modem.
  • Jeśli jego nazwa kończy się na "anim", "_anim" lub "_anims" to zostanie przeniesiony on do IslandCutscenes. Jeśli jakikolwiek nadrzędny katalog nazywa się "res" albo miał słowa "res" i "addons" w nazwie to obecny folder będzie przeniesiony do IslandCutscenes_Res.
  • Jeśli jest to folder misji to instalator wykryje jej typ i przeniesie do Missions, MPMissions, Templates lub SPTemplates w katalogu z modem. Jeśli folder ma słowa "demo" lub "template" w nazwie albo jakikolwiek poprzedni katalog miał w nazwie słowa "user" lub "mission" i "demo/editor/template" to obecny folder zostanie przeniesiony do MissionsUsers lub MPMissionsUsers.
  • W innym przypadku zbada zawartość katalogu stosując powyższe reguły do każdego zawartego w nim folderu (najpierw) i pliku.


Instalator nadpisze istniejące pliki. Automatycznie tworzy potrzebne foldery.


Linki do ściągania

1. Odsyłacze powinny zaczynać się od protokołu. Odstępy powinny być zamienione na %20. Linki muszą bezpośrednio wskazywać na plik.

http://ofp-faguss.com/addon/winterofp/[coop]%20nogova%20virus%20-%20they%20hunger.noe_winter.7z


2. Jeśli serwis wymaga przejścia przez pośrednie strony zanim udostępni bezpośredni link to napisz adres do każdej podstrony.

<startowy url>  <opcjonalnie linki do przejściowych stron>  <nazwa zapisanego pliku>

Nie musisz pisać pełnych odsyłaczy do stron przejściowych. Wystarczy ich unikatowy fragment który łatwo jest znaleźć w źródle strony. Ostatnie wyrażenie to nazwa pod jaką plik zostanie zapisany. Jeśli ma odstępy to zamknij je w cudzysłów.

https://www.moddb.com/mods/sanctuary1/downloads/ww4-modpack-25 /downloads/start/ /downloads/mirror/ ww4mod25rel.rar

W powyższym przykładzie instalator:

  • Ściągnie stronę https://www.moddb.com/mods/sanctuary1/downloads/ww4-modpack-25
  • Znajdzie URL zawierający wyrażenie /downloads/start/ i ściągnię stronę pod tym linkiem.
  • Znajdzie URL zawierający wyrażenie /downloads/mirror/ i ściągnie jego zawartość pod nazwą ww4mod25rel.rar

Na stronie edycji instalacji modu, pod polem do wpisywaniu skryptu znajdziesz narzędzie, które automatycznie doda pośrednie linki (do kilku wybranych stron). Więcej informacji jak samemu szukać takowych odsyłaczy znajdziesz poniżej.



3. Jeśli masz zapasowe linki to umieść je wszystkie w nawiasie klamrowym. Na przykład:

{
	http://files.ofpisnotdead.com/files//ofpd/mods/fdfmod14_ww2.rar
	http://fdfmod.dreamhosters.com/ofp/fdfmod14_ww2.rar
	https://www.gamefront.com/games/operation-flashpoint/file/fdf-mod  fdf-mod/download  expires=  fdfmod14_ww2.rar
}

Jeśli pierwszy zawiedzie to instalator przejdzie do drugiego i tak dalej. Pliki muszą być identyczne ponieważ przerwane ściąganie będzie kontynuowane od ostatniego miejsca.

Nazwy plików also should be identical. Example:

{
	https://docs.google.com/uc?export=download&id=17oRbO4tnrXSFQgCPYCJ48b7dDF0TfIPx sandy.zip
	http://files.ofpisnotdead.com/files/ofpd/unofaddons2/footsandy.zip sandy.zip
}

4. Dla zaoszczędzenia miejsca na dysku instalator kasuje ostatni ściągnięty plik jak tylko zacznie się pobieranie następnego. Aby zachować pliki użyj komendy GET.


Komendy

Dostępne są komendy dzięki którym możesz kontrolować zachowanie instalatora:


Niektóre z nich mają dodatkowe nazwy. Na przykład remove i delete są identyczne.

Komendy umieszczaj w oddzielnych linijkach.

Komendy zazwyczaj wymagają argumentów. Muszą być one podane w określonej kolejności. Oddzielaj je spacją. Jeśli argument zawiera spację to zamknij go w cudzysłów.

KOMENDA argument1 "argument 2" ...

Komendy mogą używać także przełączników. Są to opcjonalne argumenty, które można umieścić gdziekolwiek w szeregu argumentów. Zaczynają się od prawego ukośnika.

KOMENDA /przełącznik argument

Pisz nazwy komend dużymi literami dla zwiększenia czytelności.

Nieprawidłowe komendy zostaną zignorowane.

Odstępy na początku i końcu linii zostaną zignorowane.

Skrypt może mieć zarówno automatyczną instalację jak i komendy.


Unpack, Extract

UNPACK  <url lub plik>  /password:<tekst>

Wypakowuje wybrane archiwum z folderu fwatch\tmp\ do podfolderu _extracted (którego poprzednia zawartość jest usuwana). Jeśli został podany URL to wtedy ściągnie plik do fwatch\tmp\ a następnie go rozpakuje.



Przykład:

UNPACK  ftp://ftp.armedassault.info/ofpd/mods/fdfmod13_installer.exe

Jak otwierać archiwa w archiwach:

UNPACK  first.rar
UNPACK  _extracted\second.rar
UNPACK  _extracted\_extracted\third.rar

Dodaj przełącznik /password: jeśli archiwum wymaga hasła.

UNPACK  example.rar  /password:123

Jeśli argument nie został podany to wypakowany zostanie ostatni ściągnięty plik.

Powrót

Move, Copy

MOVE  <plik lub url>  <folder docelowy>  <nowa nazwa>  /no_overwrite  /match_dir  /match_dir_only

Przenosi lub kopiuje wybrany plik lub katalog z folderu fwatch\tmp\_extracted do katalogu z modem.

Nadpisuje pliki.

Automatycznie tworzy foldery w ścieżce docelowej.



Przykład:

MOVE  "FDFmod Readme.html"

Przeniesie
<katalog z grą>\fwatch\tmp\_extracted\FDFmod Readme.html
do
<katalog z grą>\<katalog z modem>\



MOVE  example.pbo  addons

Przeniesie
<katalog z grą>\fwatch\tmp\_extracted\example.pbo
do
<katalog z grą>\<katalog z modem>\addons\



Wyjątek: jeśli wskazany katalog ma taką samą nazwę jak instalowany mod to instalator przeniesie go do katalogu z grą.

MOVE  finmod

Przeniesie
<katalog z grą>\fwatch\tmp\_extracted\finmod
do
<katalog z grą>\

Można ominąć to zachowanie podając ścieżkę docelową.



Wieloznaczniki (patrz MSDN i StackExchange) mogą zostać użyte do wybrania wielu plików naraz.

MOVE  *.pbo  addons

Aby wybrać jednocześnie pliki i foldery dodaj przełącznik /match_dir. Aby wybrać tylko foldery użyj przełącznika /match_dir_only.

MOVE  *  /match_dir
MOVE  *  /match_dir_only


Aby zmienić nazwę przenoszonego pliku napisz nową nazwę po ścieżce docelowej.

MOVE  misc\readme.txt  docs  readme_old.txt

Wstaw kropkę jeśli nie chcesz zmieniać ścieżki docelowej.

MOVE  misc\readme.txt  .  readme_old.txt


Dodaj przełącznik /no_overwrite aby wyłączyć nadpisywanie plików.

MOVE  *.pbo  addons  /no_overwrite


Aby ściągnąć plik umieść odsyłacz(e) w nawiasie klamrowym.

MOVE  {ftp://ftp.armedassault.info/ofpd/gameserver/editorupdate102.pbo}  addons


Aby przenosić pliki znajdujące się w katalogu z modem zacznij ścieżkę źródłową od <mod>.

MOVE  <mod>\addons\example.pbo  obsolete


Aby przenieść ostatni ściągnięty plik użyj <download> lub <dl> jako pierwszego argumentu.

MOVE  <dl>  addons


Komendą Copy możesz kopiować pliki z katalogu z grą pod warunkiem, że ścieżka zaczyna się od <game>.

COPY  <game>\bin\Resource.cpp  bin
Powrót

UnPBO, UnpackPBO, ExtractPBO

UNPBO  <plik>  <folder docelowy>

Wypakowuje plik PBO znajdujący się w katalogu z modem.

Nadpisuje istniejące pliki.



Przykład:

UNPBO  addons\ww4_fx.pbo


Opcjonalnie możesz wskazać gdzie rozpakować pliki. Foldery w ścieżce przeznaczenia zostaną automatycznie utworzone.

UNPBO  addons\ww4_fx.pbo  temp


Aby wypakować plik z katalogu z grą zacznij ścieżkę źródłową od <game>. Jeśli ścieżka docelowa nie została ustalona to plik zostanie rozpakowany do katalogu z modem.

UNPBO  <game>\addons\kozl.pbo  addons
Powrót

MakePBO

MAKEPBO  <folder>  /keep_source  /timestamp:<data>

Tworzy plik PBO (bez kompresji) z wybranego folderu znajdującego się w katalogu z modem, a następnie usuwa ten źródłowy folder. Data modyfikacji pliku PBO będzie taka sama jak data dodania tej wersji moda.



Przykład:

MAKEPBO  addons\ww4_fx


Dodaj przełącznik /keep_source aby zachować folder źródłowy.

MAKEPBO  addons\ww4_fx  /keep_source


Jeśli argument nie został podany to spakowany zostanie ostatni addon rozpakowany przez UnPBO.

Dodaj przełącznik /timestamp: żeby zmienić datę modyfikacji pliku na wybraną (patrz komenda FILEDATE).

Powrót

Edit

EDIT  <nazwa pliku>  <numer linii>  <tekst>  /insert  /newfile  /append  /timestamp:<data>

Podmienia linijkę w pliku tekstowym (znajdującym się w katalogu z modem) na wskazaną.

Jeśli tekst zawiera już cudzysłów to w celu uniknięcia konfliktu użyj własnego separatora. Zacznij argument od >> i dowolnego znaku. Zakończ tym samym znakiem.

Data modyfikacji pliku będzie taka sama jak data dodania tej wersji moda.



Przykład:

EDIT addons\FDF_Suursaari\config.cpp 58 >>@cutscenes[]      = {"..\finmod\addons\suursaari_anim\intro"};@


Dodaj przełącznik /insert aby dodać tekst w nowej linii zamiast ją zamieniać. Jeśli wskazany numer linii wynosi zero lub jest większy od liczby linijek w pliku to tekst zostanie umieszczony na samym końcu.

Użyj przełącznika /append aby dodać tekst na końcu linii zamiast zamieniać.

Dodaj przełącznik /newfile aby utworzyć nowy plik. Istniejący plik zostanie przeniesiony do kosza.

Dodaj przełącznik /timestamp: żeby zmienić datę modyfikacji pliku na wybraną (patrz komenda FILEDATE).

Aby wybrać ostatni ściągnięty plik użyj <download> lub <dl> jako pierwszego argumentu.

Powrót

Delete, Remove

DELETE  <nazwa pliku>  /match_dir

Usuwa plik lub folder znajdujący się w katalogu z modem.



Przykład:

DELETE  Install_win98_ME.bat


Wieloznaczniki (patrz MSDN i StackExchange) mogą zostać użyte do wybrania wielu plików naraz.

DELETE  addons\*.txt

Aby wybrać jednocześnie pliki i foldery dodaj przełącznik /match_dir.

DELETE  temp\*  /match_dir


Jeśli argument nie został podany to skasowany zostanie ostatni ściągnięty plik.

Powrót

If_version, else, endif

IF_VERSION  <operator relacji>  <liczba>
ELSE
ENDIF

Następne komendy będą wykonywane tylko wtedy gdy numer wersji gry spełnia określony warunek.

Jeśli warunek się zgadza to instrukcje poniżej są wykonywane do końca skryptu albo do napotkania komendy else lub endif. Treść pomiędzy else i endif zostanie zignorowana.

Jeśli warunek się nie zgadza to komendy poniżej są ignorowane do końca skryptu albo do napotkania komend else lub endif.

Dozwolone operatory relacji to: =, ==, <, <=, >, >=, <>, !=. Brak operatora jest równoznaczny z porównaniem.

Warunki mogą być zagnieżdżane.



Przykład:

IF_VERSION  <=  1.96
	UNPACK	https://www.mediafire.com/download/86d97zspupnjk9c  ://download  "WW4 Extended OFP patch v111.zip"
	MOVE	v196_patch\ww4ext_inf_cfg.pbo.OFP  addons  ww4ext_inf_cfg.pbo
ENDIF
IF_VERSION  >=  1.99
	COPY	<game>\bin\Config.cpp  bin
ELSE
	COPY	<game>\Res\bin\Config.cpp  bin
ENDIF
Powrót

Merge_with, Alias

MERGE_WITH  <nazwa1> <nazwa2> <...>

Zmienia zachowanie automatycznej instalacji oraz komend Move i Copy tak, aby łączyły treść wskazanego folderu z katalogiem z modem. Efekt trwa do końca obecnego skryptu (żeby działał na całą instalację skorzystaj z opcji na stronie edycji szczegółów moda).



Na przykład: instalowany jest mod @wgl5. Zostało ściągnięte archiwum "CoC_UA110_Setup.exe" które zawiera katalogi: @CoC i @wgl5. Domyślnie automatyczna instalacja skopiuje @wgl5 i zignoruje @CoC ale jeśli napiszesz:

MERGE_WITH  @CoC
https://files.ofpisnotdead.com/files/ofpd/unofaddons2/CoC_UA110_Setup.exe

to wtedy instalator nie zignoruje @CoC lecz połączy jego zawartość z @wgl5 w katalogu z grą.

Jeśli argument nie został podany to opcja zostaje wyłączona.

Powrót

Rename

RENAME  <plik>  <nowa nazwa>  /match_dir

Zmienia nazwę pliku lub folderu znajdującego się w katalogu z modem.



Przykład:

RENAME  addons\lo_res_tex.pbo  lo_res_tex.pbx


Wieloznaczniki (patrz MSDN i StackExchange) mogą zostać użyte do wybrania wielu plików naraz.

RENAME  addons\*.pbo  *.pbx
RENAME  addons\*.pbo  ??????????????????_OLD*

Dodaj przełącznik /match_dir aby wybrać jednocześnie pliki i foldery.

RENAME  *  *_old  /match_dir
Powrót

Makedir, Newfolder

MAKEDIR  <ścieżka>

Tworzy folder(y).



Przykład:

MAKEDIR  addons
MAKEDIR  dta\hwtl

Utworzy:

<katalog z grą>\<katalog z modem>
<katalog z grą>\<katalog z modem>\addons
<katalog z grą>\<katalog z modem>\dta
<katalog z grą>\<katalog z modem>\dta\hwtl
Powrót

Filedate

FILEDATE  <plik>  <data>

Zmienia datę modyfikacji wybranego pliku znajdującego się w modfolderze. Dozwolonymi formatami są ISO 8601 (RRRR MM DD GG MM SS) albo czas Uniksowy. Muszą być w strefie GMT.



Przykład:

FILEDATE  addons\example.pbo  2021-02-11T21:36:37
Powrót

Get, Download

GET  <url>

Ściąga wybrany plik do fwatch\tmp\. Plik zostanie usunięty po wykonaniu obecnego skryptu instalacyjnego.



Przykład:

GET  http://example.com/part1.rar
GET  http://example.com/part2.rar
Powrót

Ask_get, Ask_download

ASK_GET  <nazwa pliku>  <url>

Prosi użytkownika o ręczne ściągnięcie wybranego pliku. Instalacja jest zatrzymana do czasu aż użytkownik ją sam wznowi albo przerwie.



Przykład:

ASK_GET  ww4mod25rel.rar  https://www.moddb.com/mods/sanctuary1/downloads/ww4-modpack-25
Powrót

Ask_run, Ask_execute

ASK_RUN  <url lub plik>

Prosi użytkownika o ręczne uruchomienie wybranego pliku znajdującego się w katalogu fwatch\tmp\ (zostanie otwarty w eksploratorze Windows). Instalacja jest zatrzymana do czasu aż użytkownik ją sam wznowi albo przerwie.

Używaj tej komendy w przypadku archiwów których nie da się rozpakować.



Przykład:

ASK_RUN  ftp://ftp.armedassault.info/ofpd/mods/ECP%20v1.085%20(Full%20Installer).exe
ASK_RUN  _extracted\example.exe


Aby wybrać plik znajdujący się w katalogu z modem zacznij ścieżkę źródłową od <mod>.

ASK_RUN  <mod>\Install_win2k_XP.bat


Jeśli argument nie został podany to wybrany zostanie ostatni ściągnięty plik.

Powrót

Exit, Quit

EXIT

Instalator pominie wszystkie pozostałe komendy w obecnym skrypcie.

Powrót

Gdzie wkładać pliki misji

Domyślnie gra obsługuje wyłącznie modfolder\Campaigns ale z Fwatchem 1.16 możesz przechowywać dowolny rodzaj misji w katalogu z modem.

Kiedy włączasz grę z danym modem to treść jego podfolderów zostanie przeniesiona do odpowiednich folderów w katalogu z grą.


Źródło Przeznaczenie
<mod>\Missions Missions
<mod>\MPMissions MPMissions
<mod>\Templates Templates
<mod>\SPTemplates SPTemplates
<mod>\IslandCutscenes Addons
<mod>\IslandCutscenes\_Res Res\Addons
<mod>\MissionsUsers Users\<player>\Missions
<mod>\MPMissionsUsers Users\<player>\MPMissions

Zarówno pliki PBO jak i foldery misji są przenoszone. W przypadku przerywników filmowych i misji dla edytora tylko foldery są przenoszone.

Pliki są przywracane po wyjściu z gry.


Przykładowe skrypty

Ten skrypt zainstaluje mod WW4 2.5

; Ściągnij archiwum z któregoś z poniższych źródeł a potem wypakuj je do tymczasowego katalogu

UNPACK {
	https://files.ofpisnotdead.com/files/ofpd/unofaddons2/ww4mod25rel.rar 
	ftp://ftp.armedassault.info/ofpd/unofaddons2/ww4mod25rel.rar
}

; Przenieś wszystkie wypakowane pliki i foldery do katalogu z modem (zostanie utworzony jeśli nie istnieje) w katalogu z grą.

MOVE    *  /match_dir

; Ściągnij i rozpakuj

UNPACK {
	ftp://ftp.armedassault.info/ofpd/unofaddons2/ww4mod25patch1.rar
}

; Przenieś pliki tekstowe (z katalogu z wypakowanymi plikami) do katalogu z modem.

MOVE    *.txt

; Przenieś addony (z katalogu z wypakowanymi plikami) do modfolder\addons

MOVE    *.pbo  addons

; Przenieś wszystkie pozostałe pliki i foldery do modfolder\Bonus

MOVE    *  Bonus  /match_dir

; Zamień modfolder\bin\resource.cpp (plik który definiuje interfejs), żeby obsługiwać szerokie ekrany

UNPACK {
	http://ofp-faguss.com/fwatch/download/ofp_aspect_ratio207.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/ofp_aspect_ratio207.7z
}
MOVE    Files\WW4mod25\Resource.cpp  bin

; Zamień modfolder\dta\anims.pbo (przerywniki filmowe wysp), żeby pojawiła się wiadomość w menu głównym gdy Fwatch jest włączony

UNPACK {
	http://ofp-faguss.com/fwatch/download/anims_fwatch.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/anims_fwatch.7z
}
MOVE    Files\WW4mod25\Anims.pbo  dta

Ten skrypt zainstaluje mod Finnish Defence Forces 1.4

; Ściągnij wersję bazową moda z jednego z pięciu źródeł i zainstaluj automatycznie

{
	http://files.ofpisnotdead.com/files/ofpd/mods/fdfmod13_installer.exe
	http://fdfmod.dreamhosters.com/ofp/fdfmod13_installer.exe
	ftp://ftp.armedassault.info/ofpd/mods/fdfmod13_installer.exe
	https://www.gamefront.com/games/operation-flashpoint-resistance/file/finnish-defence-forces finnish-defence-forces/download expires= fdfmod13_installer.exe
	http://pulverizer.pp.fi/ewe/mods/fdfmod13_installer.exe
}


; Ściągnij aktualizację z jednego z pięciu źródeł i zainstaluj automatycznie

{
	http://files.ofpisnotdead.com/files/ofpd/mods/fdfmod14_ww2.rar
	http://fdfmod.dreamhosters.com/ofp/fdfmod14_ww2.rar
	ftp://ftp.armedassault.info/ofpd/mods/fdfmod14_ww2.rar
	https://www.gamefront.com/games/operation-flashpoint/file/fdf-mod fdf-mod/download expires= fdfmod14_ww2.rar
	http://pulverizer.pp.fi/ewe/mods/fdfmod14_ww2.rar
}


; Ściągnij i wypakuj dodatek pustynny

UNPACK {
	http://files.ofpisnotdead.com/files/ofpd/mods/FDF_desert_pack.rar
	http://fdfmod.dreamhosters.com/ofp/FDF_desert_pack.rar
	ftp://ftp.armedassault.info/ofpd/mods/FDF_desert_pack.rar
}

; Przenieś wypakowany plik readme do modfolder\readme_addons

MOVE  "FDF Mod - Al Maldajah - Readme.txt" readme_addons

; Przenieś wszystkie pozostałe wypakowane pliki i foldery do katalogu z modem

MOVE  * /match_dir


; Ściągnij i wypakuj zimową wyspę Maldevic

UNPACK {
	http://files.ofpisnotdead.com/files/ofpd/islands2/fdf_winter_maldevic.rar
	http://fdfmod.dreamhosters.com/ofp/fdf_winter_maldevic.rar
	ftp://ftp.armedassault.info/ofpd/islands2/fdf_winter_maldevic.rar
}

; Przenieś wypakowany plik readme do modfolder\readme_addons

MOVE  "FDF Mod - Winter Maldevic - Readme.txt" readme_addons

; Przenieś wszystkie pozostałe pliki i foldery do katalogu z modem

MOVE  * /match_dir


; Ściągnij i wypakuj wyspę Suursaari

UNPACK {
	http://files.ofpisnotdead.com/files/ofpd/islands/Suursaari_release_v10.zip
	http://fdfmod.dreamhosters.com/ofp/Suursaari_release_v10.zip
	ftp://ftp.armedassault.info/ofpd/islands/Suursaari_release_v10.zip
}

; Przenieś wypakowany addon do modfolder\addons

MOVE    FDF_Suursaari.pbo  addons

; Przenieś wypakowany folder z przerywnikami filmowymi do modfolder\IslandCutscenes

MOVE    Suursaari_anim  IslandCutscenes

; Przenieś wszystkie pozostałe wypakowane pliki do modfolder\readme_addons

MOVE    *  readme_addons


; Ściągnij i wypakuj zimową wyspę Kolgujev

UNPACK {
	http://files.ofpisnotdead.com/files/ofpd/islands/WinterNogojev11.zip
	https://fdfmod.dreamhosters.com/ofp/WinterNogojev11.zip
	ftp://ftp.armedassault.info/ofpd/islands/WinterNogojev11.zip
	https://www.gamefront.com/games/operation-flashpoint-resistance/file/winternogojev11-zip winternogojev11-zip/download expires= winternogojev11.zip
	https://ds-servers.com/gf/operation-flashpoint-resistance/modifications/islands/winternogojev11-zip.html files/gf/ store.node winternogojev11.zip
	https://www.lonebullet.com/mods/download-winternogojev11-operation-flashpoint-resistance-mod-free-42045.htm /file/ files.lonebullet.com winternogojev11.zip
}

; Przenieś wszystkie wypakowane addony do modfolder\addons

MOVE    *.pbo  addons

; Przenieś wypakowany plik readme do modfolder\readme_addons

MOVE    "Readme-Winter Nogojev.txt"  readme_addons

; Przenieś wypakowany folder z przerwynikami filmowymi wyspy do modfolder\IslandCutscenes

MOVE    KEGnoecainS_anim  IslandCutscenes


; Ściągnij i wypakuj addon MT-LB

UNPACK {
	http://fdfmod.dreamhosters.com/ofp/mt-lb22.zip
	http://ofp-faguss.com/addon/finmod/mt-lb22.zip
	http://faguss.paradoxstudio.uk/addon/finmod/mt-lb22.zip
}

; Przenieś wszystkie wypakowane addony do modfolder\addons

MOVE    *.pbo  addons

; Przenieś wypakowany plik readme do modfolder\readme_addons i zmień jego nazwę na mt-lb22_release_info.txt

MOVE    release_info.txt  readme_addons  mt-lb22_release_info.txt


; Ściągnij i wypakuj Russians Weapons Pack

UNPACK {
	http://files.ofpisnotdead.com/files/ofpd/unofaddons/RussianWeaponsPack11.zip
	http://fdfmod.dreamhosters.com/ofp/RussianWeaponsPack11.zip 
	ftp://ftp.armedassault.info/ofpd/unofaddons/RussianWeaponsPack11.zip
}

; Przenieś wszystkie rozpakowane addony do modfolder\addons

MOVE    *.pbo  addons

; Przenieś wypakowany plik readme do modfolder\readme_addons i zmień jego nazwę na RussianWeaponsPack11_readme.txt

MOVE    readme.txt  readme_addons  RussianWeaponsPack11_readme.txt


; Automatycznie zainstaluj poprawioną wersję addonu rewolwerów Smith & Wesson

{
	http://ofp-faguss.com/addon/finmod/SWRevolvers10_fixed.7z
	http://faguss.paradoxstudio.uk/addon/finmod/SWRevolvers10_fixed.7z
	https://docs.google.com/uc?export=download&id=1wAoTEeAuEvveYe2EZnVu_Gic7Nib-7qO SWRevolvers10_fixed.7z
}


; Zamień resource.cpp, żeby obsługiwać szerokie ekrany

UNPACK {
	http://ofp-faguss.com/fwatch/download/ofp_aspect_ratio207.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/ofp_aspect_ratio207.7z
}
MOVE    Files\FDF\Resource.cpp  bin

; Zamień modfolder\dta\anims.pbo (przerywniki filmowe wysp), żeby pojawiła się wiadomość w menu głównym gdy Fwatch jest włączony.

UNPACK {
	http://ofp-faguss.com/fwatch/download/anims_fwatch.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/anims_fwatch.7z
}
MOVE    Files\FDF\Anims.pbo  dta


; Utwórz plik konfiguracyjny interfejsu dla Fwatcha - powiększy on menu akcji i czat oraz zmieni ich kolor na niebieski

EDIT    bin\config_fwatch_hud.cfg  0  ACTION_ROWS=43;CHAT_ROWS=12;CHAT_Y=0.56;GROUPDIR_Y=0.5;ACTION_COLORTEXT=[1,1,1,1];ACTION_COLORSEL=[0.133333,0.643137,1,1];CHAT_COLORTEAM=[0.133333,0.643137,1,1];  /newfile

Ten skrypt zainstaluje mod WarGames League 5.12


; Instalator automatycznie ściągnie plik z jednego z trzech źródeł, wypakuje go i przeniesie pliki do katalogu z grą

{
	ftp://ftp.armedassault.info/ofpd/unofaddons2/WGL5.1_Setup.exe
	https://www.moddb.com/downloads/start/93621  /downloads/mirror/  WGL5.1_Setup.exe
	https://ofp.today/Addons?dir=mods  file=WGL5.1_Setup.exe  WGL5.1_Setup.exe
}

; Podobnie z łatką do moda

{
	http://pulverizer.pp.fi/ewe/mods/wgl512_2006-11-12.rar
	https://www.moddb.com/downloads/start/93801  /downloads/mirror/  wgl512_2006-11-12.rar
	http://www.mediafire.com/file/4rm6uf16ihe36ce  ://download  wgl512_2006-11-12.rar
}

; Jeśli użytkownik posiada wersję gry 1.96 lub starszą

IF_VERSION  <=  1.96
	; Rozpakuj Res\Dta\HWTL\data.pbo (zawiera tekstury do gry) do modfolder\dta\hwtl

	UNPBO  <game>\Res\Dta\HWTL\data.pbo  dta\HWTL
	
	; Skopiuj wszystkie pliki paa i pac z modfolder\newdata do modfolder\dta\hwtl\data

	COPY   <mod>\newdata\*.pa?           dta\HWTL\Data
	
	; Utwórz plik PBO z ostatnio wypakowanego addonu (data.pbo) i usuń źródło

	MAKEPBO
	
	; Rozpakuj Res\Dta\HWTL\data3d.pbo (zawiera modele do gry) do modfolder\dta\hwtl

	UNPBO  <game>\Res\Dta\HWTL\data3d.pbo  dta\HWTL
	
	; Skopiuj wszystkie pliki p3d z modfolder\newdata do modfolder\dta\hwtl\data3d

	COPY   <mod>\newdata\*.p3d             dta\HWTL\data3d
	
	; Utwórz plik PBO z ostatnio wypakowanego addonu (data3d.pbo) i usuń źródło

	MAKEPBO
	
; Jeśli użytkownik posiada grę nowszą od 1.96

ELSE
	; Rozpakuj Dta\data.pbo (zawiera tekstury do gry) do modfolder\dta

	UNPBO  <game>\DTA\Data.pbo  dta
	
	; Skopiuj wszystkie pliki paa i pac z modfolder\newdata do modfolder\dta\data

	COPY   <mod>\newdata\*.pa?  dta\Data
	
	; Utwórz plik PBO z ostatnio wypakowanego addonu (data.pbo) i usuń źródło

	MAKEPBO
	
	; Rozpakuj Dta\HWTL\data3d.pbo (zawiera modele do gry) do modfolder\dta

	UNPBO  <game>\DTA\Data3D.pbo  dta
	
	; Skopiuj wszystkie pliki p3d z modfolder\newdata do modfolder\dta\data3d

	COPY   <mod>\newdata\*.p3d    dta\Data3D
	
	; Utwórz plik PBO z ostatnio wypakowanego addonu (data3d.pbo) i usuń źródło

	MAKEPBO
	
; Zamknij sekcję komend zależnych od wersji gry

ENDIF

; Zamień resource.cpp, żeby obsługiwać szerokie ekrany

UNPACK {
	http://ofp-faguss.com/fwatch/download/ofp_aspect_ratio207.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/ofp_aspect_ratio207.7z
}
MOVE    Files\WGL\Resource.cpp  bin

; Zamień przerywniki filmowe wysp, żeby pojawiła się wiadomość gdy Fwatch jest włączony.

UNPACK {
	http://ofp-faguss.com/fwatch/download/anims_fwatch.7z 
	http://faguss.paradoxstudio.uk/fwatch/download/anims_fwatch.7z
}
MOVE    Files\WGL\Anims.pbo  dta

Testowanie skryptów

Uruchom fwatch\data\addonInstarrer.exe. Instalator przejdzie w tryb testowania.


Sekcja "Edycja Skryptu":

  • napisz tutaj swój skrypt instalacyjny
  • "Zapisz i Przetestuj" (CTRL-S) - zapisuje wpisany tekst do pliku fwatch\data\addonInstaller_test.txt a potem go interpretuje
  • "Załaduj plik" - wczytuje zawartość pliku fwatch\data\addonInstaller_test.txt do pola do wpisywania tekstu
  • "Dokumentacja" - otwiera tą stornę w przeglądarce
  • "Skonwertuj link" - otwiera okienko do przetwarzania linków (z pewnych stron) tak, aby mogły zostać użyte przez instalator
  • "Wstaw szablon DTA" - wkleja kod do modifykacji dta\data.pbo oraz dta\data3d.pbo
  • CTRL-A - zaznacza cały tekst
  • CTRL-D - duplikuje obecnie zaznaczoną linijkę

Sekcja "Testowanie":

  • "Nazwa moda" - ustala folder docelowy; jest także potrzebny do automatycznej instalacji oraz komendy "move"
  • "Nazwa folderu" - użyj tego pola, żeby zainstalować w innym katalogu
  • "Wersja gry" - do testowania warunków

  • "Otwórz mod folder" - otwiera folder docelowy w Eksploratorze Windows. Jeśli nie istenieje to zamiast tego otwiera folder z grą
  • "Otwórz fwatch\tmp\_extracted" - otwiera folder (w Eksploratorze Windows) do którego, instalator wypakowuje archiwa

  • |< - przewija instalację do początku
  • << - przechodzi do poprzedniej komendy
  • >> - wykonuje aktualną komendę
  • > - wykonuje komendy aż do końca. Wciśnij jeszcze raz aby zatrzymać (po wykonaniu aktualnego polecenia)

  • "Komendy" - lista komend ze skryptu instalacyjnego. Wybierz którąś aby wyświetlić o niej więcej informacji
  • "Przejdź to tego kroku" - instalator rozpocznie instalację od wybranej komendy. Jeśli używasz tej opcji aby się cofnąć to instalator cofnie zmiany w plikach
  • "Pokaż w skrypcie" - zaznacza linijkę z wybraną komendą w polu do wpisywania skryptu
  • "Otwórz dokumentację" - otwiera stronę z informacjami o wybranej komendzie w przeglądarce

Sekcja "Zapis czynności":

  • Górne okno pokazuje co instalator zrobił dotychczas
  • Dolne okno pokazuje postęp aktualnego działania

Tryb testowania wymaga więcej wolnego miejsca na dysku:

  • ściągniete pliki nie są usuwane
  • instalator zachowuje większą liczbę plików niż w zwykłym trybie

Instalator utworzy plik fwatch\tmp\__downloadtoken który możesz wykorzystać do znalezienia linków przejściowych:

  • Otwórz go w swojej przeglądarce internetowej
  • Znajdź przycisk Ściągnij, kliknij na niego prawym przyciskiem i wybierz Zbadaj
  • Właściwość href zawiera odsyłacz którego szukasz. Wybierz jego małą część która się nie zmienia
  • Wyszukaj wybraną część aby upewnić się, że nie występuje ona nigdzie indziej w pliku
  • Jeśli nie to możesz ją dodać do swojego skryptu instalacyjnego

Historia zmian
0.61 (13.06.2023)
  • Ask_run - opens directory in Windows Explorer
  • Auto Install - removed subfolder "worlds" from mod detection


0.6 (29.04.2021)
  • Edit - added /timestamp: switch
  • MakePBO - added /timestamp: switch


0.59 (05.03.2021)
  • Auto Install - If "Missions" contains only a single folder inside then that subfolder will be merged with "<mod>\Missions" only if its name matches the mod name. Otherwise it will be moved as a separate subfolder


0.58 (25.02.2021)
  • Added EXIT command
  • Move – added switch /match_dir_only
  • Installer removes previously downloaded file when starting download for a new file except when using GET command
  • Intermediary URL part may contain phrase href=" and installer will read the link following that phrase


0.57 (11.02.2021)
  • Added FILEDATE command


0.56 (05.02.2021)
  • Auto Install - will try to extract .cab files
  • Auto Install - will detect if mission is a wizard template and move it to the "Templates" or "SPTemplates"
  • Auto Install - will detect if "MPMissions" folder contains a single folder inside and move it instead (previously it only did that for "Missions")
  • Auto Install - will not ignore "Res" folder
  • Auto Install - if downloaded archive contains a single folder then that folder won't be ignored (previously it could have been treated as a different mod and skipped)
  • Auto Install - if a folder contains "overview.html" then it will be copied to "Missions"
  • Auto Install - if a directory contains wanted modfolder then installer will move all files and folders from that dir (except for other modfolders). Folder "addons" will be copied as "IslandCutscenes"
  • Auto Install - will try open all executables; will ask user to run it if nothing else was copied (instead of asking about the first encountered)
  • Auto Install - will move directories ending with "anim", "_anim", "_anims" to the "IslandCutscenes" or "IslandCutscenes\_Res" if parent was named "res" or had words "res" and "addons"
  • Auto Install - will move mission directories containing words "demo" or "template" to the "MissionsUsers" or "MPMissionsUsers"
  • Auto Install - will move folders "Templates", "SPTemplates", "MissionsUsers", "MPMissionsUsers", "IslandCutscenes" to the modfolder
  • Auto Install - will scan directories before files (previously it was alphabetic)
  • Auto Install - will move mission folder to the to the "MissionsUsers" or "MPMissionsUsers" if one of the parent folders contained word "user" or words "mission" and "demo/editor/template"
  • MakePBO - renamed switch /no_delete to /keep_source
  • Alias - added alternative name for this command: Merge_With


0.55 (12.01.2021)
  • Removed /mirror switch. Instead there are now url blocks indicated by curly brackets
  • Move – curly brackets are now used (instead of a vertical bar) to separate url arguments from move arguments


0.53 (01.03.2020)
  • Alias – effect now lasts until the end of the script (instead of throughout the entire installation)
  • Added shorter name UnPBO for the command UnpackPBO


0.52 (16.02.2020)
  • Command arguments can now be escaped with custom delimiters (relevant for the Edit command)


0.51 (14.02.2020)
  • Added command: Alias
  • Auto installation - reverted change from 0.31: file name irrelevant for auto installation again (use command Alias instead)
  • Auto installation - now detects if mission is SP or MP and copies it to the correct folder
  • Edit – added /append switch
  • MakePBO – fixed bug where it wouldn't work with files with spaces in their names


0.4 (15.07.2019)
  • Edit – added /newfile switch
  • Edit – switch /insert can now be used to append text at the end


0.31 (06.04.2019)
  • Auto installation - doesn't ignore modfolders if their name is contained in downloaded filename


0.3 (02.04.2019)
  • Download links can now be followed with /mirror switch
  • Download links can now be followed with extra arguments for multi-step downloading

  • Move – wildcard with /match_dir will move modfolder to the game dir but not recursively
  • Move – added vertical bar to separate download arguments from move arguments

  • Ask_Get – doesn't make a request if file already exists
  • Ask_Get – asks user to select download directory and saves its location
  • Ask_Get – automatically moves file to the fwatch\tmp\

  • Ask_Run – executes the file instead of opening folder with it
  • Ask_Run - restores "Aspect_Ratio.hpp" from before executing the file in order to keep user's settings

  • Get - now considered active again
  • Get - cannot pass custom wget arguments anymore

  • added -testdir parameter


0.2 (11.03.2019)
  • added commands: Ask_Download, Delete, Rename, If_version, else, endif, Makepbo, UnpackPBO, Edit
  • renamed command Execute to Ask_Execute
  • renamed command Mdir to Makedir

  • Move – now overwrites by default, added /no_overwrite switch
  • Move – can access modfolder files with >mod> macro
  • Move – can now rename files
  • Move – wildcards will not match folders unless /match_dir switch was added
  • Move – renamed macro DOWNLOADED_FILENAME to <download> and <dl>
  • Move – now source argument can be url

  • Copy – can access game root directory with <game> macro

  • Makedir – could be used to create custom folders in the game root directory – fixed
  • Makedir – now creates modfolder if it’s missing

  • Unpack, Ask_Execute – will work on downloaded file if no argument given
  • Unpack, Ask_Execute – now source argument can be url
  • Unpack – archive within archive was unpacked to the wrong folder – fixed
  • Unpack – added /password: switch

  • Auto Installation – added /password: switch

  • Get – now considered obsolete

  • added -testmod parameter


0.1 (03.03.2017)
First release.