第347页:临时工市场
展开二九七.临时工市场(用噩梦花瓣种临时工市场,雇临时工帮你采摘、收获、砍树、开矿)
用记事本打开游戏目录\data\DLC0001\scripts\prefabs\petals_evil.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
local function createworker(inst)
local pt = inst:GetPosition()
local shopsign = SpawnPrefab("petals_evil")
shopsign.Transform:SetPosition(pt.x, pt.y, pt.z)
shopsign.AnimState:SetBank("sign_home")
shopsign.AnimState:SetBuild("sign_home")
shopsign.AnimState:PlayAnimation("idle")
shopsign.Transform:SetScale(2, 2, 2)
shopsign:AddTag("shopsign")
shopsign:RemoveComponent("stackable")
shopsign:RemoveComponent("tradable")
shopsign:RemoveComponent("fuel")
shopsign:RemoveComponent("inventoryitem")
shopsign:RemoveComponent("edible")
shopsign:RemoveComponent("perishable")
shopsign:RemoveComponent("burnable")
shopsign:RemoveComponent("propagator")
shopsign:RemoveComponent("deployable")
MakeLargeBurnable(shopsign)
MakeLargePropagator(shopsign)
local light = shopsign.entity:AddLight()
light:SetFalloff(1)
light:SetIntensity(.8)
light:SetRadius(5)
light:SetColour(180/255, 195/255, 50/255)
light:Enable(true)
shopsign:DoPeriodicTask(6, function(shopsign)
shopsign.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
shopsign:DoTaskInTime(3, function() shopsign.AnimState:SetBloomEffectHandle("") end )
end )
shopsign.components.inspectable.getstatus = function(shopsign)
local pos = Vector3(shopsign.Transform:GetWorldPosition())
local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, 3000)
for k,v in pairs(ents) do
if v:HasTag("workerman") then
v:Remove()
end
end
local names = {"wilson","wendy","wes","wickerbottom","willow","wolfgang","wx78"}
local worker1 = SpawnPrefab("petals_evil")
worker1.Transform:SetPosition(pt.x+1+3, 0, pt.z+1-3)
worker1.AnimState:SetBank("wilson")
worker1.buildname = names[math.random(#names)]
worker1.AnimState:SetBuild(worker1.buildname)
worker1.Transform:SetFourFaced()
worker1.AnimState:OverrideSymbol("swap_hat", "hat_bee", "swap_hat")
worker1.AnimState:Show("HAT")
worker1.AnimState:Show("HAT_HAIR")
worker1.AnimState:Hide("HAIR_NOHAT")
worker1.AnimState:Hide("HAIR")
worker1.AnimState:Show("ARM_normal")
worker1.AnimState:Hide("ARM_carry")
worker1.AnimState:PlayAnimation("idle")
local minimap = worker1.entity:AddMiniMapEntity()
minimap:SetIcon( "mushroom_tree_med.png" )
local sound = worker1.entity:AddSoundEmitter()
local shadow = worker1.entity:AddDynamicShadow()
MakeCharacterPhysics(worker1, 75, .5)
shadow:SetSize( 1.3, .6 )
worker1:AddComponent("health")
worker1.components.health:SetMaxHealth(1000)
worker1.components.health:SetInvincible(true)
worker1.components.health.nofadeout = true
worker1:AddComponent("combat")
worker1:AddComponent("follower")
worker1:AddComponent("knownlocations")
worker1:AddComponent("locomotor")
worker1.components.locomotor.walkspeed = 5
worker1.components.locomotor.runspeed = 12
worker1:SetStateGraph("SGshadowwaxwell")
worker1:RemoveComponent("stackable")
worker1:RemoveComponent("tradable")
worker1:RemoveComponent("fuel")
worker1:RemoveComponent("inventoryitem")
worker1:RemoveComponent("edible")
worker1:RemoveComponent("perishable")
worker1:RemoveComponent("burnable")
worker1:RemoveComponent("propagator")
worker1:RemoveComponent("deployable")
MakeLargeBurnable(worker1)
MakeLargePropagator(worker1)
worker1:AddTag("workerman")
worker1:AddComponent("trader")
worker1.components.trader:SetAcceptTest(function(worker1, item)
if GetPlayer().components.inventory:Has("goldnugget", 20) then
if item.prefab == "goldnugget" then
return true
end
end
return false
end )
worker1.components.trader.onaccept = function(worker1, giver, item)
worker1:AddTag("myworker")
worker1:RemoveTag("workerman")
worker1:RemoveComponent("burnable")
worker1:RemoveComponent("propagator")
GetPlayer().components.inventory:ConsumeByName("goldnugget", 19)
worker1.task1 = worker1:DoPeriodicTask(0.5, function(worker1)
local target = FindEntity(worker1, 10, function(guy)
return guy.components.pickable and guy.components.pickable:CanBePicked() and guy.prefab ~= "flower" and guy.prefab ~= "red_mushroom" and guy.prefab ~= "green_mushroom" and guy.prefab ~= "blue_mushroom" and guy.prefab ~= "flint"
end )
if target then
worker1.components.locomotor:Stop()
worker1:SetBrain(nil)
worker1.components.follower:SetLeader(nil)
local pt1 = target:GetPosition()
worker1.components.locomotor:GoToPoint(pt1)
worker1.task2 = worker1:DoPeriodicTask(.25, function(worker1)
local target2 = FindEntity(worker1, 0.8, function(guy)
return guy.components.pickable and guy.components.pickable:CanBePicked() and guy.prefab ~= "flower" and guy.prefab ~= "red_mushroom" and guy.prefab ~= "green_mushroom" and guy.prefab ~= "blue_mushroom" and guy.prefab ~= "flint"
end )
if target2 then
worker1.AnimState:PlayAnimation("pickup")
target2.components.pickable:Pick(GetPlayer())
end
end )
else
worker1.components.follower:SetLeader(GetPlayer())
local brain = require "brains/chesterbrain"
worker1:SetBrain(brain)
worker1:RestartBrain()
if worker1.task2 then worker1.task2:Cancel() worker1.task2 = nil end
end
end )
end
worker1:ListenForEvent( "nighttime", function() worker1:Remove() end, GetWorld())
local worker2 = SpawnPrefab("petals_evil")
worker2.Transform:SetPosition(pt.x+1+1, 0, pt.z+1-1)
worker2.AnimState:SetBank("wilson")
worker2.buildname = names[math.random(#names)]
worker2.AnimState:SetBuild(worker2.buildname)
worker2.Transform:SetFourFaced()
worker2.AnimState:OverrideSymbol("swap_hat", "hat_straw", "swap_hat")
worker2.AnimState:Show("HAT")
worker2.AnimState:Show("HAT_HAIR")
worker2.AnimState:Hide("HAIR_NOHAT")
worker2.AnimState:Hide("HAIR")
worker2.AnimState:Show("ARM_normal")
worker2.AnimState:Hide("ARM_carry")
worker2.AnimState:PlayAnimation("idle")
local minimap = worker2.entity:AddMiniMapEntity()
minimap:SetIcon( "mushroom_tree_med.png" )
local sound = worker2.entity:AddSoundEmitter()
local shadow = worker2.entity:AddDynamicShadow()
MakeCharacterPhysics(worker2, 75, .5)
shadow:SetSize( 1.3, .6 )
worker2:AddComponent("health")
worker2.components.health:SetMaxHealth(1000)
worker2.components.health:SetInvincible(true)
worker2.components.health.nofadeout = true
worker2:AddComponent("combat")
worker2:AddComponent("follower")
worker2:AddComponent("knownlocations")
worker2:AddComponent("locomotor")
worker2.components.locomotor.walkspeed = 5
worker2.components.locomotor.runspeed = 12
worker2:SetStateGraph("SGshadowwaxwell")
worker2:RemoveComponent("stackable")
worker2:RemoveComponent("tradable")
worker2:RemoveComponent("fuel")
worker2:RemoveComponent("inventoryitem")
worker2:RemoveComponent("edible")
worker2:RemoveComponent("perishable")
worker2:RemoveComponent("burnable")
worker2:RemoveComponent("propagator")
worker2:RemoveComponent("deployable")
MakeLargeBurnable(worker2)
MakeLargePropagator(worker2)
worker2:AddTag("workerman")
worker2:AddComponent("trader")
worker2.components.trader:SetAcceptTest(function(worker2, item)
if GetPlayer().components.inventory:Has("goldnugget", 20) then
if item.prefab == "goldnugget" then
return true
end
end
return false
end )
worker2.components.trader.onaccept = function(worker2, giver, item)
worker2:AddTag("myworker")
worker2:RemoveTag("workerman")
worker2:RemoveComponent("burnable")
worker2:RemoveComponent("propagator")
GetPlayer().components.inventory:ConsumeByName("goldnugget", 19)
worker2.task1 = worker2:DoPeriodicTask(0.5, function(worker2)
local target = FindEntity(worker2, 10, function(guy)
return guy.components.crop and guy.components.crop.matured
end )
if target then
worker2.components.locomotor:Stop()
worker2:SetBrain(nil)
worker2.components.follower:SetLeader(nil)
local pt1 = target:GetPosition()
worker2.components.locomotor:GoToPoint(pt1)
worker2.task2 = worker2:DoPeriodicTask(.25, function(worker2)
local target2 = FindEntity(worker2, 0.8, function(guy)
return guy.components.crop and guy.components.crop.matured
end )
if target2 then
worker2.AnimState:PlayAnimation("pickup")
target2.components.crop:Harvest(GetPlayer())
end
local target3 = FindEntity(worker2, 0.8, function(guy)
return guy.components.grower and guy.components.grower:IsEmpty()
end )
if target3 then
target3.components.grower.cycles_left = target3.components.grower.max_cycles_left
end
end )
else
worker2.components.follower:SetLeader(GetPlayer())
local brain = require "brains/chesterbrain"
worker2:SetBrain(brain)
worker2:RestartBrain()
if worker2.task2 then worker2.task2:Cancel() worker2.task2 = nil end
if worker2.task3 then worker2.task3:Cancel() worker2.task3 = nil end
end
end )
end
worker2:ListenForEvent( "nighttime", function() worker2:Remove() end, GetWorld())
local worker3 = SpawnPrefab("petals_evil")
worker3.Transform:SetPosition(pt.x+1-1, 0, pt.z+1+1)
worker3.AnimState:SetBank("wilson")
worker3.buildname = names[math.random(#names)]
worker3.AnimState:SetBuild(worker3.buildname)
worker3.Transform:SetFourFaced()
worker3.AnimState:OverrideSymbol("swap_object", "swap_axe", "swap_axe")
worker3.AnimState:Show("ARM_carry")
worker3.AnimState:Hide("ARM_normal")
worker3.AnimState:PlayAnimation("idle")
local minimap = worker3.entity:AddMiniMapEntity()
minimap:SetIcon( "mushroom_tree_med.png" )
local sound = worker3.entity:AddSoundEmitter()
local shadow = worker3.entity:AddDynamicShadow()
MakeCharacterPhysics(worker3, 75, .5)
shadow:SetSize( 1.3, .6 )
worker3:AddComponent("health")
worker3.components.health:SetMaxHealth(1000)
worker3.components.health:SetInvincible(true)
worker3.components.health.nofadeout = true
worker3:AddComponent("combat")
worker3:AddComponent("follower")
worker3:AddComponent("knownlocations")
worker3:AddComponent("locomotor")
worker3.components.locomotor.walkspeed = 5
worker3.components.locomotor.runspeed = 12
worker3:SetStateGraph("SGshadowwaxwell")
worker3:RemoveComponent("stackable")
worker3:RemoveComponent("tradable")
worker3:RemoveComponent("fuel")
worker3:RemoveComponent("inventoryitem")
worker3:RemoveComponent("edible")
worker3:RemoveComponent("perishable")
worker3:RemoveComponent("burnable")
worker3:RemoveComponent("propagator")
worker3:RemoveComponent("deployable")
MakeLargeBurnable(worker3)
MakeLargePropagator(worker3)
worker3:AddTag("workerman")
worker3:AddComponent("trader")
worker3.components.trader:SetAcceptTest(function(worker3, item)
if GetPlayer().components.inventory:Has("goldnugget", 20) then
if item.prefab == "goldnugget" then
return true
end
end
return false
end )
worker3.components.trader.onaccept = function(worker3, giver, item)
worker3:AddTag("myworker")
worker3:RemoveTag("workerman")
worker3:RemoveComponent("burnable")
worker3:RemoveComponent("propagator")
GetPlayer().components.inventory:ConsumeByName("goldnugget", 19)
worker3.task1 = worker3:DoPeriodicTask(0.5, function(worker3)
local target = FindEntity(worker3, 15, function(guy)
return guy:HasTag("tree") and guy.components.workable and guy.components.workable.workleft > 0
end )
if target then
worker3.components.locomotor:Stop()
worker3:SetBrain(nil)
worker3.components.follower:SetLeader(nil)
local pt1 = target:GetPosition()
worker3.components.locomotor:GoToPoint(pt1)
worker3.task2 = worker3:DoPeriodicTask(.25, function(worker3)
local target2 = FindEntity(worker3, 2, function(guy)
return guy:HasTag("tree") and guy.components.workable and guy.components.workable.workleft > 0
end )
if target2 then
worker3.AnimState:PlayAnimation("pickup")
target2.components.workable:Destroy(worker3)
end
end )
else
worker3.components.follower:SetLeader(GetPlayer())
local brain = require "brains/chesterbrain"
worker3:SetBrain(brain)
worker3:RestartBrain()
if worker3.task2 then worker3.task2:Cancel() worker3.task2 = nil end
end
end )
end
worker3:ListenForEvent( "nighttime", function() worker3:Remove() end, GetWorld())
local worker4 = SpawnPrefab("petals_evil")
worker4.Transform:SetPosition(pt.x+1-3, 0, pt.z+1+3)
worker4.AnimState:SetBank("wilson")
worker4.buildname = names[math.random(#names)]
worker4.AnimState:SetBuild(worker4.buildname)
worker4.Transform:SetFourFaced()
worker4.AnimState:OverrideSymbol("swap_hat", "hat_miner", "swap_hat")
worker4.AnimState:Show("HAT")
worker4.AnimState:Show("HAT_HAIR")
worker4.AnimState:Hide("HAIR_NOHAT")
worker4.AnimState:Hide("HAIR")
worker4.AnimState:OverrideSymbol("swap_object", "swap_pickaxe", "swap_pickaxe")
worker4.AnimState:Show("ARM_carry")
worker4.AnimState:Hide("ARM_normal")
worker4.AnimState:PlayAnimation("idle")
local minimap = worker4.entity:AddMiniMapEntity()
minimap:SetIcon( "mushroom_tree_med.png" )
local sound = worker4.entity:AddSoundEmitter()
local shadow = worker4.entity:AddDynamicShadow()
MakeCharacterPhysics(worker4, 75, .5)
shadow:SetSize( 1.3, .6 )
worker4:AddComponent("health")
worker4.components.health:SetMaxHealth(1000)
worker4.components.health:SetInvincible(true)
worker4.components.health.nofadeout = true
worker4:AddComponent("combat")
worker4:AddComponent("follower")
worker4:AddComponent("knownlocations")
worker4:AddComponent("locomotor")
worker4.components.locomotor.walkspeed = 5
worker4.components.locomotor.runspeed = 12
worker4:SetStateGraph("SGshadowwaxwell")
worker4:RemoveComponent("stackable")
worker4:RemoveComponent("tradable")
worker4:RemoveComponent("fuel")
worker4:RemoveComponent("inventoryitem")
worker4:RemoveComponent("edible")
worker4:RemoveComponent("perishable")
worker4:RemoveComponent("burnable")
worker4:RemoveComponent("propagator")
worker4:RemoveComponent("deployable")
MakeLargeBurnable(worker4)
MakeLargePropagator(worker4)
worker4:AddTag("workerman")
worker4:AddComponent("trader")
worker4.components.trader:SetAcceptTest(function(worker4, item)
if GetPlayer().components.inventory:Has("goldnugget", 20) then
if item.prefab == "goldnugget" then
return true
end
end
return false
end )
worker4.components.trader.onaccept = function(worker4, giver, item)
worker4:AddTag("myworker")
worker4:RemoveTag("workerman")
worker4:RemoveComponent("burnable")
worker4:RemoveComponent("propagator")
GetPlayer().components.inventory:ConsumeByName("goldnugget", 19)
worker4.task1 = worker4:DoPeriodicTask(0.5, function(worker4)
local target = FindEntity(worker4, 15, function(guy)
return guy.prefab == "rock1" or guy.prefab == "rock2" or guy.prefab == "rock_flintless" or guy.prefab == "rock_flintless_med" or guy.prefab == "rock_flintless_low" or guy.prefab == "rock_ice"
end )
if target then
worker4.components.locomotor:Stop()
worker4:SetBrain(nil)
worker4.components.follower:SetLeader(nil)
local pt1 = target:GetPosition()
worker4.components.locomotor:GoToPoint(pt1)
worker4.task2 = worker4:DoPeriodicTask(.25, function(worker4)
local target2 = FindEntity(worker4, 2, function(guy)
return guy.prefab == "rock1" or guy.prefab == "rock2" or guy.prefab == "rock_flintless" or guy.prefab == "rock_flintless_med" or guy.prefab == "rock_flintless_low" or guy.prefab == "rock_ice"
end )
if target2 then
worker4.AnimState:PlayAnimation("pickup")
target2.components.workable:Destroy(worker4)
end
end )
else
worker4.components.follower:SetLeader(GetPlayer())
local brain = require "brains/chesterbrain"
worker4:SetBrain(brain)
worker4:RestartBrain()
if worker4.task2 then worker4.task2:Cancel() worker4.task2 = nil end
end
end )
end
worker4:ListenForEvent( "nighttime", function() worker4:Remove() end, GetWorld())
end
local shopsign1 = SpawnPrefab("petals_evil")
shopsign1.Transform:SetPosition(pt.x+2+3, 0, pt.z+2-3)
shopsign1.AnimState:SetBank("sign_home")
shopsign1.AnimState:SetBuild("sign_home")
shopsign1.AnimState:PlayAnimation("idle")
shopsign1.Transform:SetScale(0.5, 0.5, 0.5)
shopsign1:RemoveComponent("stackable")
shopsign1:RemoveComponent("tradable")
shopsign1:RemoveComponent("fuel")
shopsign1:RemoveComponent("inventoryitem")
shopsign1:RemoveComponent("edible")
shopsign1:RemoveComponent("perishable")
shopsign1:RemoveComponent("burnable")
shopsign1:RemoveComponent("propagator")
shopsign1:RemoveComponent("deployable")
MakeLargeBurnable(shopsign1)
MakeLargePropagator(shopsign1)
shopsign1:AddTag("goodbye")
local shopsign2 = SpawnPrefab("petals_evil")
shopsign2.Transform:SetPosition(pt.x+2+1, 0, pt.z+2-1)
shopsign2.AnimState:SetBank("sign_home")
shopsign2.AnimState:SetBuild("sign_home")
shopsign2.AnimState:PlayAnimation("idle")
shopsign2.Transform:SetScale(0.5, 0.5, 0.5)
shopsign2:RemoveComponent("stackable")
shopsign2:RemoveComponent("tradable")
shopsign2:RemoveComponent("fuel")
shopsign2:RemoveComponent("inventoryitem")
shopsign2:RemoveComponent("edible")
shopsign2:RemoveComponent("perishable")
shopsign2:RemoveComponent("burnable")
shopsign2:RemoveComponent("propagator")
shopsign2:RemoveComponent("deployable")
MakeLargeBurnable(shopsign2)
MakeLargePropagator(shopsign2)
shopsign2:AddTag("goodbye")
local shopsign3 = SpawnPrefab("petals_evil")
shopsign3.Transform:SetPosition(pt.x+2-1, 0, pt.z+2+1)
shopsign3.AnimState:SetBank("sign_home")
shopsign3.AnimState:SetBuild("sign_home")
shopsign3.AnimState:PlayAnimation("idle")
shopsign3.Transform:SetScale(0.5, 0.5, 0.5)
shopsign3:RemoveComponent("stackable")
shopsign3:RemoveComponent("tradable")
shopsign3:RemoveComponent("fuel")
shopsign3:RemoveComponent("inventoryitem")
shopsign3:RemoveComponent("edible")
shopsign3:RemoveComponent("perishable")
shopsign3:RemoveComponent("burnable")
shopsign3:RemoveComponent("propagator")
shopsign3:RemoveComponent("deployable")
MakeLargeBurnable(shopsign3)
MakeLargePropagator(shopsign3)
shopsign3:AddTag("goodbye")
local shopsign4 = SpawnPrefab("petals_evil")
shopsign4.Transform:SetPosition(pt.x+2-3, 0, pt.z+2+3)
shopsign4.AnimState:SetBank("sign_home")
shopsign4.AnimState:SetBuild("sign_home")
shopsign4.AnimState:PlayAnimation("idle")
shopsign4.Transform:SetScale(0.5, 0.5, 0.5)
shopsign4:RemoveComponent("stackable")
shopsign4:RemoveComponent("tradable")
shopsign4:RemoveComponent("fuel")
shopsign4:RemoveComponent("inventoryitem")
shopsign4:RemoveComponent("edible")
shopsign4:RemoveComponent("perishable")
shopsign4:RemoveComponent("burnable")
shopsign4:RemoveComponent("propagator")
shopsign4:RemoveComponent("deployable")
MakeLargeBurnable(shopsign4)
MakeLargePropagator(shopsign4)
shopsign4:AddTag("goodbye")
end
local function OnDeploy (inst, pt)
createworker(inst)
inst.components.stackable:Get():Remove()
end
inst:AddComponent("deployable")
inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
if inst:HasTag("shopsign") then
data.shopsign = true
end
if inst:HasTag("workerman") then
data.workerman = true
end
if inst:HasTag("myworker") then
data.myworker = true
end
if inst:HasTag("goodbye") then
data.goodbye = true
end
end
local function onload(inst, data)
if data and data.shopsign then
createworker(inst)
inst:Remove()
end
if data and data.workerman then
inst:Remove()
end
if data and data.myworker then
inst:Remove()
end
if data and data.goodbye then
inst:Remove()
end
end
inst.OnSave = onsave
inst.OnLoad = onload
即可用噩梦花瓣种临时工市场(拿着1个噩梦花瓣对地面点鼠标右键,如果拿着多个噩梦花瓣,则不会种出来),鼠标左键点击大招牌,会有4种临时工来应聘,从左到右分别是采摘工(采摘植物)、农民(收获农田并施肥)、伐木工(砍树)、矿工(开矿),想雇佣什么工种,就拿着黄金对他点鼠标左键,每人每天20个黄金。再次点大招牌,可以换不同的应聘人员供你选择。雇佣临时工后,他会跟随你,把他带到工作场所,会自动开始干活,干完后继续跟随。可打开小地图查询临时工的位置,显示为红色蘑菇树的图标。临时工会在每天黑夜来临时下班,想让你花费的工资更值得,就尽可能早点雇佣他们。如果想提早解雇临时工,就存档退出再读档,他们就被遣散了。不想要临时工市场时,烧掉即可
更多相关内容请关注:饥荒专区
责任编辑:Shy夏夏