User Tools

Site Tools


guides:options_for_workplace

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
guides:options_for_workplace [2020/04/23 15:21] vjraymonguides:options_for_workplace [2021/02/23 11:56] (current) – title fix minotorious
Line 1: Line 1:
-====== Options for workplaces ====== +====== Options for Workplaces ====== 
-===== Recall: basics =====+===== Basics =====
  
-This is an example of a simple workplace "MY_BUILDINGwith a worker "MY_BUILDING_JOBproducing "MY_BUILDING_OUTPUT_RESOURCEfrom "MY_BUILDING_INPUT_RESOURCE":+This is an example of a simple workplace ''MY_BUILDING'' with a worker of job ''MY_BUILDING_JOB'' producing ''MY_BUILDING_OUTPUT_RESOURCE'' from ''MY_BUILDING_INPUT_RESOURCE'':
  
 <code lua> <code lua>
     myMod:register({     myMod:register({
- DataType = "BUILDING_PART", +        DataType = "BUILDING_PART", 
- Id = "MY_BUILDING_PART", +        Id = "MY_BUILDING_PART", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, 
- ConstructorData = { +        ConstructorData = { 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +            DataType = "BUILDING_CONSTRUCTOR_DEFAULT", 
- CoreObjectPrefab = "MY_BUILDING_PREFAB" +            CoreObjectPrefab = "MY_BUILDING_PREFAB" 
- }, +        }, 
- AssetBuildingFunction = "MY_BUILDING_FUNCTION"+        AssetBuildingFunction = "MY_BUILDING_FUNCTION"
     })     })
  
     myMod:register({     myMod:register({
- DataType = "BUILDING_FUNCTION_WORKPLACE", +        DataType = "BUILDING_FUNCTION_WORKPLACE", 
-                Id = "MY_BUILDING_FUNCTION", +        Id = "MY_BUILDING_FUNCTION", 
- WorkerCapacity = 1, +        WorkerCapacity = 1, 
-                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, +        RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, 
-                InputInventoryCapacity = { +        InputInventoryCapacity = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } +            { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } 
-                }, +        }, 
-                ResourceListNeeded = { +        ResourceListNeeded = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } +            { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } 
-                }, +        }, 
-                ResourceProduced = { +        ResourceProduced = { 
- { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } +            { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } 
-                }+        }
     })     })
 </code> </code>
Line 35: Line 35:
 ===== Same building for producing and selling ===== ===== Same building for producing and selling =====
  
-This is an example of a simple workplace "MY_BUILDINGwith a worker "MY_BUILDING_JOBproducing "MY_BUILDING_OUTPUT_RESOURCEof type "MY_RESOURCE_TYPEfrom "MY_BUILDING_INPUT_RESOURCE":+This is an example of a simple workplace ''MY_BUILDING'' with a worker of job ''MY_BUILDING_JOB'' producing and selling ''MY_BUILDING_OUTPUT_RESOURCE'' of type ''MY_RESOURCE_TYPE'' (see [[api:resource_type|RESOURCE_TYPE]]) from ''MY_BUILDING_INPUT_RESOURCE'':
  
 <code lua> <code lua>
     myMod:register({     myMod:register({
- DataType = "BUILDING_PART", +        DataType = "BUILDING_PART", 
- Id = "MY_BUILDING_PART", +        Id = "MY_BUILDING_PART", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, 
- ConstructorData = { +        ConstructorData = { 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +            DataType = "BUILDING_CONSTRUCTOR_DEFAULT", 
- CoreObjectPrefab = "MY_BUILDING_PREFAB" +            CoreObjectPrefab = "MY_BUILDING_PREFAB" 
- }, +        }, 
- AssetBuildingFunction = "MY_BUILDING_FUNCTION"+        AssetBuildingFunction = "MY_BUILDING_FUNCTION"
     })     })
  
     myMod:register({     myMod:register({
- DataType = "BUILDING_FUNCTION_MARKET", +        DataType = "BUILDING_FUNCTION_MARKET", 
-                Id = "MY_BUILDING_FUNCTION", +        Id = "MY_BUILDING_FUNCTION", 
-                TypeList = { "MY_RESOURCE_TYPE" }, +        TypeList = { "MY_RESOURCE_TYPE" }, 
- WorkerCapacity = 1, +        WorkerCapacity = 1, 
-                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, +        RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, 
-                InputInventoryCapacity = { +        InputInventoryCapacity = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } +            { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 } 
-                }, +        }, 
-                ResourceListNeeded = { +        ResourceListNeeded = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } +            { Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 } 
-                }, +        }, 
-                ResourceProduced = { +        ResourceProduced = { 
- { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } +            { Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 } 
-                }+        }
     })     })
 </code> </code>
  
-note: "MY_RESOURCE_TYPE": see [[api:resource_type|RESOURCE_TYPE]] +===== Workplace with several recipes =====
- +
-==== Workplace with several recipes ====+
  
 Workplace with 2 recipes: Workplace with 2 recipes:
  
-1) produces "MY_BUILDING_OUTPUT_RESOURCE_1from "MY_BUILDING_INPUT_RESOURCE_1",+1) produces ''MY_BUILDING_OUTPUT_RESOURCE_1'' from ''MY_BUILDING_INPUT_RESOURCE_1'',
  
-2) produces "MY_BUILDING_OUTPUT_RESOURCE_2from "MY_BUILDING_INPUT_RESOURCE_2":+2) produces ''MY_BUILDING_OUTPUT_RESOURCE_2'' from ''MY_BUILDING_INPUT_RESOURCE_2'':
  
 <code lua> <code lua>
-myMod:register({ +    myMod:register({ 
- DataType = "BUILDING_PART", +        DataType = "BUILDING_PART", 
- Id = "MY_BUILDING_PART", +        Id = "MY_BUILDING_PART", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, 
- ConstructorData = { +        ConstructorData = { 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +            DataType = "BUILDING_CONSTRUCTOR_DEFAULT", 
- CoreObjectPrefab = "MY_BUILDING_PREFAB" +            CoreObjectPrefab = "MY_BUILDING_PREFAB" 
- },+        }
 +        AssetBuildingFunction = "MY_BUILDING_FUNCTION_ASSIGNABLE" 
 +    }) 
 + 
 +    myMod:register({ 
 +        DataType = "BUILDING_FUNCTION_ASSIGNABLE", 
 +        Id = "MY_BUILDING_FUNCTION_ASSIGNABLE",
         AuthorizedFunctionList = "MY_BUILDING_FUNCTION_LIST"         AuthorizedFunctionList = "MY_BUILDING_FUNCTION_LIST"
-})+    })
  
-myMod:register({ 
- DataType = "BUILDING_FUNCTION_LIST", 
-                Id = "MY_BUILDING_FUNCTION_LIST", 
-                AssetFunctionList = { 
-                        "MY_BUILDING_RECIPE_1_FUNCTION", 
-                        "MY_BUILDING_RECIPE_2_FUNCTION" 
-                } 
-}) 
- 
-myMod:register({ 
- DataType = "BUILDING_FUNCTION_WORKPLACE", 
-                Id = "MY_BUILDING_RECIPE_1_FUNCTION", 
-                IsOverrideCapacity = true, 
-                CapacityPerSlot = 50, 
- WorkerCapacity = 1, 
-                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, 
-                InputInventoryCapacity = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 50 } 
-                }, 
-                ResourceListNeeded = { 
-                { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 1 } 
-                }, 
-                ResourceProduced = { 
- { Resource = "MY_BUILDING_OUTPUT_RESOURCE_1", Quantity = 1 } 
-                } 
-}) 
- 
-myMod:register({ 
- DataType = "BUILDING_FUNCTION_WORKPLACE", 
-                Id = "MY_BUILDING_RECIPE_2_FUNCTION", 
-                IsOverrideCapacity = true, 
-                CapacityPerSlot = 20, 
- WorkerCapacity = 1, 
-                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" }, 
-                InputInventoryCapacity = { 
- { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 20 } 
-                }, 
-                ResourceListNeeded = { 
-                { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 1 } 
-                }, 
-                ResourceProduced = { 
- { Resource = "MY_BUILDING_OUTPUT_RESOURCE_2", Quantity = 1 } 
-                } 
-}) 
-</code> 
- 
-Note: The IsOverrideCapacity is mandatory to have different CapacityPerSlot per recipe. 
- 
-==== Several workplaces per building ==== 
- 
-(To be checked) 
- 
-In order to have 2 BUILDING_FUNCTION_WORKPLACE ("MY_BUILDING_1_FUNCTION" and "MY_BUILDING_2_FUNCTION") at the same time on the same building: 
- 
-1) In the fbx file, create several empty BuildingPart (building1Part and building2Part) under the main buildingPart 
- 
-2) In the lua file: 
- 
-<code lua> 
     myMod:register({     myMod:register({
- DataType = "BUILDING_PART", +        DataType = "BUILDING_FUNCTION_LIST", 
- Id = "MY_BUILDING_PART", +        Id = "MY_BUILDING_FUNCTION_LIST", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        AssetFunctionList = { 
- ConstructorData = { +            "MY_BUILDING_RECIPE_1_FUNCTION", 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +            "MY_BUILDING_RECIPE_2_FUNCTION
- CoreObjectPrefab = "MY_BUILDING_PREFAB+        }
- }+
     })     })
- 
-    myMod:registerAssetId("models/myFbxName.fbx/Prefab/buildingPart/building1Part", "MY_BUILDING_1_PREFAB") 
  
     myMod:register({     myMod:register({
- DataType = "BUILDING_PART", +        DataType = "BUILDING_FUNCTION_WORKPLACE", 
- Id = "MY_BUILDING_1_PART", +        Id = "MY_BUILDING_RECIPE_1_FUNCTION", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        IsOverrideCapacity = true, 
- ConstructorData = { +        CapacityPerSlot = 50, 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +        WorkerCapacity = 1, 
- CoreObjectPrefab = "MY_BUILDING_1_PREFAB+        RelatedJob = { Job = "MY_BUILDING_JOB_1", Behavior = "WORK_BEHAVIOR" }, 
- }, +        InputInventoryCapacity = { 
- AssetBuildingFunction = "MY_BUILDING_1_FUNCTION"+            { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 50 } 
 +        }, 
 +        ResourceListNeeded = { 
 +            { Resource = "MY_BUILDING_INPUT_RESOURCE_1", Quantity = 1 } 
 +        }, 
 +        ResourceProduced = { 
 +            { Resource = "MY_BUILDING_OUTPUT_RESOURCE_1", Quantity = 1 } 
 +        }
     })     })
- 
-    myMod:registerAssetId("models/myFbxName.fbx/Prefab/buildingPart/building2Part", "MY_BUILDING_2_PREFAB") 
  
     myMod:register({     myMod:register({
- DataType = "BUILDING_PART", +        DataType = "BUILDING_FUNCTION_WORKPLACE", 
- Id = "MY_BUILDING_2_PART", +        Id = "MY_BUILDING_RECIPE_2_FUNCTION", 
- Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" }, +        IsOverrideCapacity = true, 
- ConstructorData = { +        CapacityPerSlot = 20, 
- DataType = "BUILDING_CONSTRUCTOR_DEFAULT", +        WorkerCapacity = 1, 
- CoreObjectPrefab = "MY_BUILDING_2_PREFAB+        RelatedJob = { Job = "MY_BUILDING_JOB_2", Behavior = "WORK_BEHAVIOR" }, 
- }, +        InputInventoryCapacity = { 
- AssetBuildingFunction = "MY_BUILDING_2_FUNCTION"+            { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 20 } 
 +        }, 
 +        ResourceListNeeded = { 
 +            { Resource = "MY_BUILDING_INPUT_RESOURCE_2", Quantity = 1 } 
 +        }, 
 +        ResourceProduced = { 
 +            { Resource = "MY_BUILDING_OUTPUT_RESOURCE_2", Quantity = 1 } 
 +        }
     })     })
 </code> </code>
  
-==== Custom soldier's keep ====+Note: The IsOverrideCapacity is mandatory to have different CapacityPerSlot per recipe. 
 + 
 +===== Several workplaces per building ===== 
 + 
 +The only way I found is to have a monument with different buildingParts, each one having its own workplace. 
 + 
 +===== Custom soldier's keep =====
  
 Waiting for the next game upgrade. Waiting for the next game upgrade.
guides/options_for_workplace.1587669681.txt.gz · Last modified: 2020/04/23 15:21 by vjraymon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki