Představení
Obecné
- COMMAND je pole pro výběr příkazu (v tomto případě "new_folder")..
- SOURCE je textové pole pro zadání zdrojové cesty souboru nebo složky.
- TARGET je textové pole pro zadání cílového umístění. Také je používáno pro ukládání proměnných a může být i více v budoucnosti.
- EXTRA (OPTIONAL) je textové pole pro zadání dalších parametrů (treba číslo, atd..). Je dobrovolné jen u některých typů tasků. POZOR: musí se vždy zadávat jako string!
- COMMENT (OPTIONAL) je textové pole pro zadání popisu co ten daný task má dělat.
Dynamické proměnné
Proměnna se definuje a vkládá takto mezi tzv. díry nebo pipe |promenna|
. Tímto tvarem se i čte i zapisuje. Jeto unikatní tvar který jasně identifikuje, že to je dynamická proměnná.
ZÁPIS:
- POZOR: Ukádat proměnné jde pouze v poli TARGET a v současné době má tuhle vlastnost pouze task
search_binary
asize_file
!
ČTENÍ:
- Číst takovou proměnnou může každý
write binary_xxx
task/operace a to pouze z property TARGET v současné době.
Použití tasků a jak na EXTRA detail.
UPOZORNĚNÍ:
-
Pokud chcete pracovat se soubory které jsou relativne k rootu hry, máte 2 možnosti. Buď použijete speciální adresář {GAME_DIR} a nebo můžete také použit
./
(Příklad./PatchData/original.pak
) pred cestou jak u SOURCE, tak i u TARGETU. Systém to vyhodnodí jako relativne ke zvolené cestě hry. -
Property priority je tam pro řazení tasků dle priorit. Čím menší číslo, tím vyšší priorita v provedení.
Popis Tasku
-
run_file:
SOURCE použijete jako cestu k souboru kterých chcete pustit. TARGET slouží k zadání parametrů, pokud je potřebujete.EXTRA je ignorováno.
-
wait_proccess_finnish:
SOURCE použijete jako název procesu který chcete monitorovat. TARGET je ignorován a EXTRA slouží k zadání timeoutu, pokud jej potřebujete. Je v sekundách a opět jako string.
-
search_binary:
(Je to pro čtení ze souboru výsledkem je offset na kterém se daný hledaný pattern nachází a uloží do promenné.)SOURCE použijete jako cestu k soubor ve kterém budete hledat. TARGET název proměnné do které se uloží offset. Nazev proměnné je string bez jakýchkoliv znaků před a za. EXTRA Jsou data které hledate v HEX string formatu (příklad: 48656C6C6F2C20576F726C6421).
-
delete_file:
SOURCE použijte jako cestu na soubor kterých chcete smazat. TARGET a EXTRA je ignorován.
-
new_file:
SOURCE použijte jako cestu k souboru kterých chcete vytvořit. Soubor bude naprosto prázdný.TARGET a EXTRA je ignorován.
-
copy_file:
SOURCE použijte jako cestu k souboru kterých chcete kopírovat. TARGET bude použit jako cesta kam se má kopírovat a EXTRA je ignorován.
-
move_file:
SOURCE použijte jako cestu k souboru kterých chcete přesunout. TARGET bude použit jako cesta kam se má přesunout a EXTRA je ignorován.
-
new_folder:
SOURCE použijte jako cestu k adresáři kterých chcete vytvořit. TARGET a EXTRA je ignorován.
-
delete_folder:
SOURCE použijte jako cestu na složku kterou chcete smazat. TARGET a EXTRA je ignorován.
-
copy_folder:
SOURCE použijte jako cestu ke složce kterou chcete kopírovat. TARGET bude použit jako cesta kam se má kopírovat a EXTRA je ignorován.
-
move_folder:
SOURCE použijte jako cestu ke složce kterých chcete přesunout. TARGET bude použit jako cesta kam se má přesunout a EXTRA je ignorován.
-
wait_task:
Tento task ignoruje SOURCE i TARGET a u EXTRA je potřeba zadat číslo v sekundách a jako string. tudíž do uvozovek.
write_binary_uintXX
SOURCE je cesta k souboru který budeme modifikovat, TARGET je v tomto případě pozice v decimal čísle, je to vlastně offset a EXTRA je potřeba zadat decimal číslo. Tohle platí pro všechny ostatní Uint tasky
write_binary_intXX
SOURCE je cesta k souboru který budeme modifikovat, TARGET je v tomto případě pozice v decimal čísle, je to vlastně offset a EXTRA je potřeba zadat decimal číslo. Tohle platí pro všechny ostatní Int tasky
write_binary_string
SOURCE je cesta k souboru který budeme modifikovat, TARGET je v tomto případě pozice v decimal čísle, je to vlastně offset a EXTRA je potřeba zadat string (ASCII) který budeme vkládat.
write_binary_wstring
SOURCE je cesta k souboru který budeme modifikovat, TARGET je v tomto případě pozice v decimal čísle, je to vlastně offset a EXTRA je potřeba zadat Wide string(UNICODE) který budeme vkládat.
decopress_zip_file
Zde je potřeba použit jak SOURCE tak TARGET a naopak EXTRA se nepoužívá.
write_binary_bytes
SOURCE je cesta k souboru který budeme modifikovat, TARGET je v tomto případě pozice v decimal čísle, je to vlastně offset a do EXTRA je potřeba zadat HEX string, což bude série bytů po sobě.(příklad: 48656C6C6F2C20576F726C6421) - značí "Hello World"
size_file
(task command k zjištování velikosti souboru.)SOURCE je cesta k souboru, TARGET(OPTIONAL) název proměnné do které se uloží velikost.Jinak je ignorován EXTRA je ignorován.
Popis jak na specialní adresáře
{MY_APPLICATION_DATA_LOW}
Uživatelská složka "AppData/LocalLow"
{MY_APPLICATION_DATA_LOCAL}
Uživatelská složka "AppData/Local"
{MY_APPLICATION_DATA_ROAMING}
Uživatelská složka "AppData/Roaming"
{MY_USER_PROFILE}
Root adresář uživatele.
{GAME_DIR}
Adresář hry kterou si uživatel zvolil
{MY_DOCUMENTS}
Adresář kde jsou uživatel dokumenty.
{WINDOWS_DIR}
Root window složky
{MY_FAVORITES}
Cesta do složky kde má uživatel oblíbené.
Příklad použití.
{
"generals": {
"show_readme_after_install": true,
"game_root_data": null
},
"pre_tasks": [
{
"priority": 0,
"command": "new_folder",
"source": "./New_Folder/Data_In",
"target": "",
"extra": null,
"comment": "new folder"
},
{
"priority": 1,
"command": "search_binary",
"source": "{GAME_DIR}/exe/1deep/CZMaker.exe",
"target": "|offset|",
"extra": "106C6962536B696153686172702E646C6C",
"comment": "find offset and save to variable offset"
},
{
"priority": 2,
"command": "write_binary_bytes",
"source": "./exe/1deep/Application.exe",
"target": "|offset|",
"extra": "48656C6C6F2C20576F726C642148656C10",
"comment": "write hellow world to offset"
},
{
"priority": 3,
"command": "run_file",
"source": "./exe/1deep/Application.exe",
"target": "",
"extra": "",
"comment": "run application"
},
{
"priority": 4,
"command": "wait_proccess_finnish",
"source": "Application.exe",
"target": "",
"extra": "300",
"comment": "wait till application is exited or timeouted"
}
],
"post_tasks": [
{
"priority": 0,
"command": "copy_file",
"source": "./PatchData/original.pak",
"target": "d:/original.pak.copied",
"extra": null,
"comment": "copy file"
},
{
"priority": 1,
"command": "wait_task",
"source": "",
"target": "",
"extra": "5",
"comment": "waiting 5s"
},
{
"priority": 2,
"command": "copy_file",
"source": "./PatchData/original.pak",
"target": "./New_Folder/Data_In/original.pak.copied",
"extra": null,
"comment": "copy file relative"
},
{
"priority": 3,
"command": "move_file",
"source": "d:/original.pak.copied",
"target": "./New_Folder/Data_In/texter.pak",
"extra": null,
"comment": "MOVE FILE"
},
{
"priority": 4,
"command": "write_binary_uint64",
"source": "./exe/1deep/Application.exe",
"target": "124",
"extra": "1833358489995488512",
"comment": "write some random int64 by bytes"
},
{
"priority": 5,
"command": "size_file",
"source": "./Application.exe",
"target": "|variable|",
"extra": null,
"comment": "get filesize, return variable or not"
}
],
"modd_files": [
{
"priority": 0,
"name": "DataOther/resources.assets",
"originalMD5": "2C273719BFD8C35358A931070EC39D67",
"modedMD5": "A27E039B7D205CD91242AAF2F8B54EA7",
"installType": "patch",
"optional": false
},
{
"priority": 1,
"name": "PatchData/original.pak",
"originalMD5": "F139A2F2E0FC0D6B997CDC9BE16DA2AC",
"modedMD5": "589AC6491999461E3FD7B6524D7C9686",
"installType": "patch",
"optional": false
},
{
"priority": 2,
"name": "somebinary.pak",
"originalMD5": "",
"modedMD5": "8CFECCBC2168D463C194110486C20DAF",
"installType": "insert",
"optional": false
}
]
}