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
Last revisionBoth sides next revision
guides:options_for_workplace [2020/04/23 15:21] vjraymonguides:options_for_workplace [2020/04/23 18:37] – [Workplace with several recipes] vjraymon
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.txt · Last modified: 2021/02/23 11:56 by minotorious

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki