{"id":15605203,"url":"https://github.com/ostinelli/scar_ucm","last_synced_at":"2026-02-11T17:03:29.911Z","repository":{"id":66168105,"uuid":"103973688","full_name":"ostinelli/SCAR_UCM","owner":"ostinelli","description":"Utilities Construction Mod for Arma 3.","archived":false,"fork":false,"pushed_at":"2018-01-03T16:23:54.000Z","size":3650,"stargazers_count":10,"open_issues_count":6,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T14:13:46.447Z","etag":null,"topics":["arma3"],"latest_commit_sha":null,"homepage":null,"language":"SQF","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ostinelli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-18T18:03:28.000Z","updated_at":"2024-12-19T03:25:41.000Z","dependencies_parsed_at":"2023-05-07T02:16:44.245Z","dependency_job_id":null,"html_url":"https://github.com/ostinelli/SCAR_UCM","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/ostinelli/SCAR_UCM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ostinelli%2FSCAR_UCM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ostinelli%2FSCAR_UCM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ostinelli%2FSCAR_UCM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ostinelli%2FSCAR_UCM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ostinelli","download_url":"https://codeload.github.com/ostinelli/SCAR_UCM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ostinelli%2FSCAR_UCM/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262950348,"owners_count":23389643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arma3"],"created_at":"2024-10-03T04:03:07.394Z","updated_at":"2026-02-11T17:03:24.875Z","avatar_url":"https://github.com/ostinelli.png","language":"SQF","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Utilities Construction Mod logo](https://cldup.com/jVkD9k4D9t.png)\n\n# Utilities Construction Mod\n\nThe **Utilities Construction Mod** is a module for Arma 3. Quickly add construction areas in your missions for pipelines, railways, electric lines, and such.\n\n\u003e This module is still in early beta. Some changes and bugs are to be expected.\n\n## Video Trailer\n\n[![Click to watch video](https://img.youtube.com/vi/ZIp2BfbvO1E/0.jpg)](https://www.youtube.com/watch?v=ZIp2BfbvO1E)\n\n\n## Video Tutorial\n\n[![Click to watch video](https://img.youtube.com/vi/sbx0QSRaUt4/0.jpg)](https://www.youtube.com/watch?v=sbx0QSRaUt4)\n\n\n## Dependencies\n\n#### Compulsory\n\n  - CBA_A3 ([Steam](https://steamcommunity.com/workshop/filedetails/?id=450814997), [Github](https://github.com/CBATeam/CBA_A3/releases/latest))\n\n#### Optional\n\n  - ACE3 ([Steam](https://steamcommunity.com/sharedfiles/filedetails/?id=463939057), [Github](https://github.com/acemod/ACE3/releases/latest)). UCM does not need ACE to run, but if enabled the Interaction and Cargo functionalities will the the ones of ACE, otherwise they will default to enhanced vanilla ones.\n\n\u003e The presence of ACE on the **server** will set the type of interactions on the clients.\n\n## Example mission\n\nYou can download an example mission from [here](https://github.com/ostinelli/SCAR_UCM/raw/master/resources/ucm_demo.Altis.zip).\n\n## Download\n\nYou can get the module from [Steam](http://steamcommunity.com/sharedfiles/filedetails/?id=1145478729).\n\n## Persistence\n\nUCM has its own Persistence Module. It works by saving data to the `profileNamespace` on the server. You will see the save menu in the standard Arma menu of the Pause screen.\n\nA few important things to note:\n\n  - The Persistence Module saves _only_ UCM data, the rest is left to Arma or other modules you may be using.\n  - If you add / rename the variable names of the UCM Logic modules, your persistence will be lost.\n\n## ALiVE integration\n\nUCM supports ALiVE natively, with some caveats.\n\n#### ALiVE objectives\n\nThe Construction Area is automatically added as a Custom Objective to the hostile OPCOMs. This objective is also moved when the construction moves.\n\n#### ALiVE profiles\n\nThe workers are not profiled by ALiVE [Virtual_AI_System](http://alivemod.com/wiki/index.php/Virtual_AI_System), and therefore they will not be attacked by profiled enemies when they are virtualized. This substantially means that at least one player needs to be next to the workers, which will cause ALiVE profiled enemies to be spawned on the map and hence attack the workers.\n\n#### ALiVE Persistence\n\nUCM integrates with ALiVE save features. Therefore, if you want UCM data to be also saved when you save ALiVE, the only thing you have to do is to drop the UCM Persistent Module in your mission in addition to the ALiVE Data module.\n\n\u003e UCM data will be saved locally, regardless of the ALiVE Data setting.\n\n## Functions\n\n##### SCAR_UCM_fnc_isInitialized\n```\nDescription:\nReturns if the UCM module is initialized.\n\nParameter(s):\n0: OBJECT - The logicModule.\n\nReturn:\nBOOLEAN\n\nExample:\n[_logicModule] call SCAR_UCM_fnc_isInitialized;\n```\n\n##### SCAR_UCM_fnc_getWorkers\n```\nDescription:\nReturns the current workers.\n\nParameter(s):\n0: OBJECT - The logicModule.\n\nReturn:\nARRAY of UNITS\n\nExample:\n[_logicModule] call SCAR_UCM_fnc_getWorkers;\n```\n##### SCAR_UCM_fnc_getMaterials\n```\nDescription:\nReturns the current materials.\n\nParameter(s):\n0: OBJECT - The logicModule.\n\nReturn:\nARRAY of UNITS\n\nExample:\n[_logicModule] call SCAR_UCM_fnc_getMaterials;\n```\n\n##### SCAR_UCM_fnc_getCurrentPiece\n```\nDescription:\nReturns the active piece of the construction.\n\nParameter(s):\n0: OBJECT - The logicModule.\n\nReturn:\nOBJECT or objNull\n\nExample:\n[_logicModule] call SCAR_UCM_fnc_getCurrentPiece;\n```\n\n##### SCAR_UCM_fnc_setCustomVariable\n```\nDescription:\nSets a custom variable on UCM logic's namespace. Will be persisted if persistence is enabled.\n\nParameter(s):\n0: OBJECT - The logicModule.\n1: STRING - The key.\n2: STRING, BOOL, NUMBER, ARRAY, CBA HASH - The value.\n\nReturn:\ntrue\n\nExample:\n[_logicModule, _key, _value] call SCAR_UCM_fnc_setCustomVariable;\n```\n\n##### SCAR_UCM_fnc_getCustomVariable\n```\nDescription:\nGets a custom variable from the UCM logic's namespace. Will be persisted if persistence is enabled.\n\nParameter(s):\n0: OBJECT - The logicModule.\n1: STRING - The key.\n\nReturn:\nSTRING, BOOL, NUMBER, ARRAY, CBA HASH\n\nExample:\n[_logicModule, _key] call SCAR_UCM_fnc_getCustomVariable;\n```\n\n\n## Events\n\n| NAME | DESCRIPTION | PARAMS\n|------|------|------\n| `UCM_ConstructionAreaMoved` | Construction Area was moved. | `_logicModule`, `_currentPiece`\n| `UCM_ConstructionDone` | Construction is completed. | `_logicModule`\n| `UCM_ConstructionNowInProgress` | Construction work is now ongoing. | `_logicModule`, `_currentPiece`\n| `UCM_NoWorkersInConstructionArea` | Construction works are stopped, there are no more workers on the site. | `_logicModule`, `_currentPiece`\n| `UCM_NoMaterialsInConstructionArea` | Construction works are stopped, there are no more materials on the site. | `_logicModule`, `_currentPiece`\n| `UCM_WorkerKilled` | A worker has been killed. | `_logicModule`, `_worker`\n| `UCM_RequestedWorkers` | New workers have been requested. | `_logicModule`, `_vehicle`, `_newWorkers`\n| `UCM_RequestedMaterials` | New materials have been requested. | `_logicModule`, `_vehicle`\n| `UCM_BeforeSave` | Called before the UCM module is saved (if persistence is enabled). This is a good place to set custom variables that need persistence. | `_logicModule`\n\nAll events will be called on the server only.\n\nYou can subscribe to events in your scripts with [`CBA_fnc_addEventHandler`](https://cbateam.github.io/CBA_A3/docs/files/events/fnc_addEventHandler-sqf.html) or [`CBA_fnc_addEventHandlerArgs`](https://cbateam.github.io/CBA_A3/docs/files/events/fnc_addEventHandlerArgs-sqf.html). For instance:\n\n```sqf\nprivate _id = [\"UCM_ConstructionAreaMoved\", {\n\n\tparams [\"_logicModule\", \"_currentPiece\"];\n\n\tprivate _mapPosition = mapGridPosition getPos _currentPiece;\n\tsystemChat format [\"Construction area is now at %1\", _mapPosition];\n\n}] call CBA_fnc_addEventHandler;\n```\n\n## Thank you\n\nThanks to all alpha and beta testers, in particular:\n\n  * 2RGT Hollywood\n  * W4lly63\n\n## Contribute\n\nSo you want to contribute? That's great! Please follow the guidelines below. It will make it easier to get merged in.\n\nBefore implementing a new feature, please submit a ticket to discuss what you intend to do. Your feature might already be in the works, or an alternative implementation might have already been discussed.\n\nDo not commit to master in your fork. Provide a clean branch without merge commits. Every pull request should have its own topic branch. In this way, every additional adjustments to the original pull request might be done easily, and squashed with `git rebase -i`. The updated branch will be visible in the same pull request, so there will be no need to open new pull requests when there are changes to be applied.`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fostinelli%2Fscar_ucm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fostinelli%2Fscar_ucm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fostinelli%2Fscar_ucm/lists"}