User Tools

Site Tools


guides:options_for_workplace

This is an old revision of the document!


Options for workplaces

Recall: basics

This is an example of a simple workplace “MY_BUILDING” with a worker “MY_BUILDING_JOB” producing “MY_BUILDING_OUTPUT_RESOURCE” from “MY_BUILDING_INPUT_RESOURCE”:

    myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_PREFAB"
	},
	AssetBuildingFunction = "MY_BUILDING_FUNCTION"
    })
 
    myMod:register({
		DataType = "BUILDING_FUNCTION_WORKPLACE",
                Id = "MY_BUILDING_FUNCTION",
		WorkerCapacity = 1,
                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" },
                InputInventoryCapacity = {
			{ Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 }
                },
                ResourceListNeeded = {
			{ Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 }
                },
                ResourceProduced = {
			{ Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 }
                }
    })

Same building for producing and selling

This is an example of a simple workplace “MY_BUILDING” with a worker “MY_BUILDING_JOB” producing “MY_BUILDING_OUTPUT_RESOURCE” of type “MY_RESOURCE_TYPE” from “MY_BUILDING_INPUT_RESOURCE”:

    myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_PREFAB"
	},
	AssetBuildingFunction = "MY_BUILDING_FUNCTION"
    })
 
    myMod:register({
		DataType = "BUILDING_FUNCTION_MARKET",
                Id = "MY_BUILDING_FUNCTION",
                TypeList = { "MY_RESOURCE_TYPE" },
		WorkerCapacity = 1,
                RelatedJob = { Job = "MY_BUILDING_JOB", Behavior = "WORK_BEHAVIOR" },
                InputInventoryCapacity = {
			{ Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 10 }
                },
                ResourceListNeeded = {
			{ Resource = "MY_BUILDING_INPUT_RESOURCE", Quantity = 1 }
                },
                ResourceProduced = {
			{ Resource = "MY_BUILDING_OUTPUT_RESOURCE", Quantity = 1 }
                }
    })

note: “MY_RESOURCE_TYPE”: see RESOURCE_TYPE

Workplace with several recipes

Workplace with 2 recipes:

1) produces “MY_BUILDING_OUTPUT_RESOURCE_1” from “MY_BUILDING_INPUT_RESOURCE_1”,

2) produces “MY_BUILDING_OUTPUT_RESOURCE_2” from “MY_BUILDING_INPUT_RESOURCE_2”:

myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_PREFAB"
	},
        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 }
                }
})

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:

    myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_PREFAB"
	}
    })
 
    myMod:registerAssetId("models/myFbxName.fbx/Prefab/buildingPart/building1Part", "MY_BUILDING_1_PREFAB")
 
    myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_1_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_1_PREFAB"
	},
	AssetBuildingFunction = "MY_BUILDING_1_FUNCTION"
    })
 
    myMod:registerAssetId("models/myFbxName.fbx/Prefab/buildingPart/building2Part", "MY_BUILDING_2_PREFAB")
 
    myMod:register({
	DataType = "BUILDING_PART",
	Id = "MY_BUILDING_2_PART",
	Mover = { DataType = "BUILDING_PART_MOVER_INSTANCE" },
	ConstructorData = {
		DataType = "BUILDING_CONSTRUCTOR_DEFAULT",
		CoreObjectPrefab = "MY_BUILDING_2_PREFAB"
	},
	AssetBuildingFunction = "MY_BUILDING_2_FUNCTION"
    })

Custom soldier's keep

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